Akses akun dan dokumen
Unduh lampiran yang sudah ada dari proyek portabilitas nomor milik akun API Anda. Gunakan akun API yang diaktifkan melalui HTTPS dari alamat IP yang diizinkan. Proyek tersebut tidak boleh sudah dihapus. ID dokumen dicari di dalam proyek tersebut; ID itu bukan tautan unduhan publik yang berlaku secara global.
Identifikasi dokumen
Baca respons detail proyek dan gunakan salah satu entri dalam daftar uploads di dalamnya. Entri tersebut mencakup nilai numerik id, nama file asli, ekstensi yang disimpan, dan nilai relatif download_url. Gunakan nilai proyek uniqueid dan ID unggahan tersebut, bukan ID baris numerik proyek atau ID baris nomor telepon.
Ubah URL relatif yang dikembalikan menjadi URL lengkap hanya dengan menggunakan host API tepercaya yang telah Anda konfigurasikan. Unduhan memerlukan autentikasi akun yang sama; metadata dokumen tidak memberikan akses tanpa autentikasi.
Kirim permintaan dan simpan respons
Tetapkan PROJECT_ID dan DOCUMENT_ID ke nilai dari proyek milik akun Anda. Lakukan pengodean URL pada ID proyek. Contoh ini menyimpan byte dan header respons secara terpisah, menggunakan nama keluaran lokal yang tetap alih-alih mengandalkan nama file lampiran.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--dump-header document-headers.txt \
--output porting-document.bin \
"https://api.multitel.net/v3/lnp/project/$PROJECT_ID/document/$DOCUMENT_ID"Permintaan menggunakan GET tanpa isi permintaan. Permintaan ini membaca satu lampiran secara utuh, tanpa paginasi khusus endpoint, pembungkus JSON, atau kontrak unduhan rentang byte yang terdokumentasi.
Respons biner dan header
Jika berhasil, isi respons berupa byte lampiran yang disimpan setelah tahap pendekodean penyimpanan lama, bukan base64 dan bukan objek respons JSON. Metode ini mengirim Content-Disposition yang menandakan lampiran dengan menggunakan nama file tersimpan setelah tanda kutip ganda dihapus. Header tersebut tidak dijamin dikodekan sesuai standar atau merupakan jalur file lokal yang aman; tentukan sendiri nama file tujuan Anda.
| Ekstensi yang disimpan | Content-Type |
|---|---|
| application/pdf | |
| png | image/png |
| jpg, jpeg | image/jpeg |
| doc | application/msword |
| Nilai lainnya | application/octet-stream |
Pencocokan ekstensi tidak membedakan huruf besar dan kecil. Jenis MIME dipilih berdasarkan ekstensi yang disimpan, bukan melalui pemeriksaan isi, dan bukan jaminan bahwa dokumen tersebut valid.
Verifikasi file yang diunduh
- Periksa status HTTP dan header respons. Kesalahan autentikasi atau pencarian dapat mengembalikan respons berformat JSON dari API sebagai pengganti file. Jangan menganggap setiap isi respons yang tidak kosong atau file keluaran yang tersimpan sebagai unduhan PDF yang berhasil.
- Jika isi respons berupa kesalahan JSON, periksa
status.codedanstatus.msg. Pisahkan keluaran kesalahan dari dokumen yang diharapkan. - Pastikan file yang dihasilkan tidak kosong dan dapat dibuka sebagai jenis file yang diharapkan. Jika Anda masih menyimpan file aslinya, bandingkan nilai checksum keduanya sebelum mengandalkan salinan tersebut.
- Jika hasilnya kosong, tidak valid, atau berbeda dari aslinya, hentikan dan minta tim dukungan memeriksa lampiran yang disimpan. Mengunduh berulang kali tidak memperbaiki penyimpanan.
Kompatibilitas penyimpanan lama
Jalur unggah API saat ini dan proses penulisan unggahan portal/sistem lama yang telah ditinjau menyimpan byte dokumen dengan pengodean escape. Unduhan ini membalikkan pengodean escape tersebut. Dalam pengujian luring terhadap penangan yang sebenarnya, semua nilai byte dan garis miring terbalik literal pada format penyimpanan tersebut tetap dipertahankan.
Hal ini bukan jaminan untuk setiap rekaman historis atau rekaman yang diimpor dari luar. Penangan selalu mendekode blob yang disimpan dan tidak mendeteksi apakah suatu rekaman diimpor tanpa pengodean escape yang diharapkan. Penangan juga tidak menggunakan jalur file sebagai alternatif ketika rekaman tidak memiliki blob tersimpan. Rekaman semacam itu dapat menghasilkan byte yang berubah atau hasil kosong. Verifikasi hasilnya dan minta tim dukungan menyelidiki lampiran yang terdampak, alih-alih mengubah dokumen pelanggan atau menganggap metadatanya membuktikan bahwa file tersedia.
Portal saat ini menggunakan rute API ini terlebih dahulu dan memiliki penanganan alternatif lokal tambahan. Unduhan yang berhasil melalui portal tidak membuktikan bahwa setiap rekaman lama dapat diunduh langsung melalui API ini.
Kesalahan dan dampak
Proyek yang tidak ada, sudah dihapus, atau bukan milik akun Anda mengembalikan kode API 404 dengan pesan bahwa proyek tidak ditemukan. Unggahan yang tidak ada di dalam proyek milik akun Anda mengembalikan kode API 404 dengan pesan bahwa dokumen tidak ditemukan. Baca isi respons kesalahan API serta status HTTP. Untuk rekaman yang ada tetapi tidak memiliki byte tersimpan yang dapat digunakan, penangan ini tidak menyediakan respons khusus yang andal untuk menyatakan bahwa data tidak ditemukan.
Endpoint yang ditinjau membaca satu lampiran. Endpoint ini tidak mengunggah, mengubah, atau menghapus dokumen, tidak mengajukan permintaan portabilitas nomor, dan tidak mendebit akun. Lampiran portabilitas nomor dapat memuat informasi identitas, penagihan, atau otorisasi: gunakan dan simpan lampiran hanya dalam alur kerja akun yang berwenang serta jangan masukkan ke log publik, analitik, atau tangkapan layar dokumentasi.