Dapatkan Dokumen yang Dapat Digunakan Kembali
Gunakan endpoint ini untuk memeriksa apakah pengguna sudah memiliki dokumen yang tersedia untuk digunakan kembali sebelum memulai alur pengambilan Dokumen baru. Jika dokumen ditemukan, documentId-nya dapat langsung diteruskan ke POST /processes/v1 (tipe Document) untuk melewati langkah pengambilan gambar.
Endpoint
| Lingkungan | URL |
|---|---|
| Produksi | GET https://api.idcloud.unico.app/documents/v1 |
| Sandbox | GET https://api.idcloud.uat.unico.app/documents/v1 |
Permintaan
| Header | Nilai |
|---|---|
Authorization | Bearer <access_token> (lihat Autentikasi) |
APIKEY | API key yang disediakan dengan Pengambilan Dokumen dan Penggunaan Kembali diaktifkan. |
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
code | string | ya | Identifier pengguna (CPF atau CURP, tanpa format). |
type | string | ya | Tipe dokumen yang di-query. Nilai yang diterima: BR_RG, BR_CNH, BR_CIN, BR_PASSPORT. |
Nilai type di atas spesifik untuk endpoint ini. Jangan menyamakannya dengan:
subject.duiTypepada permintaan POST — menggunakan prefiksDUI_TYPE_*dan mengidentifikasi orang, bukan tipe dokumen (misalnya,DUI_TYPE_BR_CPF).documentTypepada respons — menggunakan path registry lengkap (misalnya,unico.moja.dictionary.br.cnh.v2.Cnh).
Contoh
- cURL
- Node.js
curl -X GET "https://api.idcloud.unico.app/documents/v1?code=12345678909&type=BR_CNH" \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY"
import fetch from 'node-fetch';
const params = new URLSearchParams({ code: '12345678909', type: 'BR_CNH' });
const res = await fetch(
`https://api.idcloud.unico.app/documents/v1?${params}`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
APIKEY: apiKey
}
}
);
const data = await res.json();
// data.items[0].documentId → teruskan ke POST /processes/v1 untuk digunakan kembali
Respons
{
"items": [
{
"documentType": "unico.moja.dictionary.br.cnh.v2.Cnh",
"documentId": "doc-abc-123"
}
]
}
| Field | Tipe | Deskripsi |
|---|---|---|
items | array | Daftar dokumen yang dapat digunakan kembali yang ditemukan untuk pengguna. Array kosong jika tidak ada dokumen yang dapat digunakan kembali ditemukan untuk code dan type yang diberikan. |
items[].documentType | string | Identifier tipe dokumen. Nilai yang memungkinkan: unico.moja.dictionary.br.rg.v2.Rg, unico.moja.dictionary.br.cnh.v2.Cnh, unico.moja.dictionary.br.cin.v1.Cin, unico.moja.dictionary.br.passaporte.v1.Passaporte. |
items[].documentId | string | Identifier dokumen. Teruskan nilai ini di document.documentId pada POST /processes/v1 untuk menggunakan kembali dokumen. |
Menggunakan documentId untuk penggunaan kembali
Setelah Anda memiliki documentId, teruskan nilai tersebut dalam permintaan proses Document untuk melewati pengambilan gambar:
{
"subject": {
"code": "12345678909",
"name": "Luke Skywalker"
},
"document": {
"purpose": "onboarding",
"authProcessId": "<biometric-process-id>",
"documentId": "doc-abc-123"
}
}
| Field | Deskripsi |
|---|---|
document.purpose | Tujuan bisnis untuk proses Document ini. Nilai yang diterima: creditprocess, carpurchase, paybypaycheck, onboarding, fgts. Nilai-nilai ini spesifik untuk Document API dan berbeda dari enum purpose pada SDK biometrik. |
document.authProcessId | ID proses biometrik yang sebelumnya dibuat untuk pengguna ini (dari POST /processes/v1). |
document.documentId | ID dokumen yang diperoleh dari respons endpoint ini. Jika disediakan, document.files dapat dihilangkan — platform akan mengambil dokumen yang sebelumnya diambil secara otomatis. |
Kode Error
- 400 Bad Request
- 403 Forbidden
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| Code | Message | Description |
|---|---|---|
20507 | O parâmetro subject.code é inválido. | Nilai identifier yang salah format atau tidak ada (CPF atau CURP). |
20002 | O parâmetro APIKey não foi informado. | Header APIKEY tidak ada. |
20001 | O parâmetro authtoken não foi informado. | Header token autentikasi tidak ada. |
Bearer token atau APIKEY tidak ada, sudah kedaluwarsa, atau tidak valid.
| Code | Message | Description |
|---|---|---|
30020 | The provided authorization token does not have permission to perform this action. | Token tidak memiliki izin untuk mengakses selfie dokumen. |
30017 | User does not have permission to perform this action. | JWT salah format atau pengguna tidak memiliki izin untuk melakukan operasi ini. |
10502 | O token informado está expirado. | Access token sudah kedaluwarsa. |
10501 | O token informado é inválido. | Token autentikasi tidak valid. |
10201 | O AppKey informado é inválido. | APIKEY tidak ada atau tidak ditemukan. |
| Code | Message | Description |
|---|---|---|
99987 | Attachment not found. | Attachment yang terkait dengan dokumen tidak ditemukan. |
50001 | The process is not found. | Tidak ada dokumen yang ditemukan untuk parameter yang diberikan. |
Batas rate tercapai. Ketika sistem Anda menerima error HTTP 429, Anda harus mengimplementasikan mekanisme untuk mencegah kegagalan berantai dan menghindari memperburuk pembatasan.
Praktik terbaik:
- Periode pendinginan (backoff): Segera hentikan atau kurangi permintaan berikutnya dari sistem Anda. Jangan terus-menerus mencoba ulang permintaan yang gagal dalam loop yang ketat.
- Antrean & pembatasan (Queueing & throttling): Buffer atau antrean permintaan keluar dari sisi Anda untuk mengontrol aliran lalu lintas sebelum mengirimnya kembali.
- Exponential backoff dengan jitter: Saat mencoba ulang, tingkatkan waktu tunggu secara eksponensial antar percobaan (misalnya, 1 s, 2 s, 4 s, 8 s) dan tambahkan penundaan acak kecil ("jitter") untuk mencegah efek kawanan di mana semua permintaan yang diantrean mencoba ulang pada milidetik yang sama persis.
Terus-menerus mengirim permintaan ke endpoint yang dibatasi rate tanpa menerapkan backoff dapat memperpanjang periode pembatasan dan sangat memengaruhi throughput operasional sistem Anda. Membatasi permintaan dengan benar dari sisi Anda memastikan integrasi yang lebih lancar dan lebih tangguh.
Untuk batas default, peningkatan permintaan, dan detail tambahan, lihat Batas Rate.
| Code | Message | Description |
|---|---|---|
99999 | Internal failure! Try again later. | Error pemrosesan di sisi server. |