vin atau bank_account_number, sehingga halaman layanan yang mengirimkannya hanya menampilkan cURL.
Instalasi
Konfigurasi
Setiap SDK membaca variabel lingkungan yang sama, sehingga klien yang dibuat tanpa opsi langsung siap digunakan. Runtime edge tidak memiliki lingkungan proses, jadi di sana Anda meneruskan kunci API ke klien Node.js sebagai opsi.
Apa pun yang dapat Anda atur melalui lingkungan juga dapat Anda teruskan ke klien, bersama base URL, timeout, coba lagi, header default, dan HTTP client Anda sendiri. Buat satu klien per proses dan gunakan bersama: klien menyimpan kumpulan koneksi dan aman digunakan oleh beberapa thread atau task secara bersamaan.
Metode
account (registrasi terprogram: mendaftar, masuk, organisasi dan aplikasi) memanggil https://apx.didit.me/auth/v2 dan tidak pernah mengirim kunci API Anda. Masuk dengan account.login, lalu teruskan token akses yang dikembalikan ke klien sebagai token akun.
Yang dilakukan setiap SDK
- Resource dan metode. Panggilan mengikuti resource API:
client.<resource>.<method>(...), misalnyasessions.create,sessions.retrieve_decision, atautransactions.create, dengan penulisan huruf sesuai bahasa masing-masing. Id path berupa argumen posisional; body dan query adalah satu kumpulan kolom bernama. Python, Node.js, PHP, dan Ruby memakai nama kolom API (workflow_id); Go, Java, dan .NET memakai gaya penulisan bahasanya (WorkflowID,workflowId,WorkflowId). - Daftar. Metode daftar menelusuri semua hasil untuk Anda (
limitdanoffsetdi baliknya), dan juga menyediakan setiap halaman dengancount,next,previous, danresults. Di Ruby,auto_paging_eachmenelusuri setiap halaman, dantotal_count,next_url, sertaprevious_urlpada sebuah halaman adalahcount,next, danpreviousdari API. - File. Unggahan (gambar dokumen, swafoto, bukti alamat, impor) menerima path, bytes, atau stream. Unduhan (PDF sesi, laporan) mengembalikan bytes atau stream, tidak pernah JSON yang sudah diurai.
- Kompatibilitas ke depan. Kolom respons atau nilai enum yang belum dikenal oleh versi SDK tetap disimpan dan dapat dibaca, tidak pernah menjadi error, sehingga penambahan pada API tidak merusak integrasi yang sudah berjalan.
- Webhook.
webhooks.verifymemeriksa headerX-Signature-V2danX-Signatureserta timestamp sebuah pengiriman dengan rahasia webhook Anda, lalu mengembalikan event bertipe. Metode ini menerima daftar rahasia selama Anda melakukan rotasi salah satunya. Lihat Webhook untuk skema tanda tangannya. - Autentikasi. Utilitas
Authenticationmemverifikasi access token dan ID token yang ditandatangani penerbit Authentication Anda, serta memanggil endpoint token, sesi, dan step-up-nya. Utilitas ini tidak pernah menggunakan kunci API Anda.
Error, percobaan ulang, dan timeout
Setiap error diturunkan dari
DiditError. Di Go, setiap error mengimplementasikan interface didit.Error dan berupa tipe pointer, misalnya *didit.NotFoundError. Java, PHP, dan .NET menggunakan akhiran Exception yang lazim, dan menulis API sebagai Api: DiditException, ApiStatusException, NotFoundException.
SDK melakukan coba lagi untuk permintaan yang gagal hingga 2 kali, dengan penundaan eksponensial mulai dari 0,5 detik (jitter penuh, paling lama 8 detik) dan menghormati Retry-After. GET, HEAD, PUT, dan DELETE dicoba lagi pada error koneksi, timeout, 408, 429, dan 5xx. POST dan PATCH hanya dicoba lagi pada 429 atau ketika koneksi gagal sebelum permintaan terkirim, sehingga coba lagi tidak pernah membuat sesi atau transaksi kedua. Timeout default adalah 60 detik. Setiap respons juga menampilkan status HTTP mentah, header, dan ID permintaan. Lihat Pembatasan laju untuk batas yang berlaku pada 429.
Versi dan dukungan
- SDK mengikuti penerapan versi semantik, dengan satu aturan untuk perubahan API. Perubahan yang mencerminkan API Didit adalah rilis minor, meskipun dapat merusak kode bertipe (kolom yang tipenya berubah, kolom yang kini dapat bernilai null, atau endpoint, kolom, atau nilai enum yang dihapus): API sudah berperilaku seperti itu untuk setiap pemanggil, sehingga versi SDK yang lebih lama tidak lebih aman. Catatan rilis mencantumkan perubahan semacam itu di bawah “Perubahan API yang dapat merusak kode bertipe”.
- Versi major hanya untuk perubahan pada desain SDK itu sendiri: metode atau sumber daya yang diganti nama atau dihapus padahal API masih menyediakannya, perubahan pada konfigurasi klien, perilaku error, coba lagi, paginasi, atau verifikasi webhook, atau dihentikannya dukungan versi runtime. Ketika sebuah endpoint dihapus dari API atau metodenya diganti nama, metode lama tetap tersedia setidaknya untuk satu rilis minor berikutnya, ditandai sebagai usang, sehingga kode Anda tetap dapat di-build sambil Anda beralih ke yang baru. Setiap bahasa memiliki nomor versinya sendiri: Node.js, PHP, dan Ruby berada di 2.x dan yang lainnya di 1.x, karena ketiganya merilis perubahan API sebagai versi major sebelum aturan ini berlaku.
- SDK dibuat dari kontrak API yang dipublikasikan (
openapi-25.jsondanopenapi-auth.json), dan method Didit Authentication mereka diperiksa terhadapopenapi-authentication.json. Ketiganya diperiksa setiap hari, sehingga endpoint atau kolom baru tersedia dalam rilis rutin semua tujuh SDK. - Setiap SDK mendukung versi runtime minimum pada tabel dan setiap versi yang lebih baru. Pengujiannya dijalankan pada versi minimum dan setiap versi yang lebih baru, atau setiap rilis dukungan jangka panjang untuk Node.js dan Java.
CHANGELOG.mddi setiap repositori mencantumkan perubahan setiap rilis.- Laporkan masalah keamanan secara pribadi melalui advisori keamanan di repositori SDK atau ke support@didit.me.