> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Validasi Database API: Pencocokan ID Nasional

> Didit memvalidasi identitas via POST /v3/database-validation/ ke 100+ sumber nasional & global, pencocokan waterfall 1x1 dan 2x2. Bayar per panggilan.

## Layanan berbasis alamat

Untuk layanan yang memvalidasi alamat tempat tinggal atau alamat utilitas, Anda dapat mengirim satu `address` dan Didit akan memecahnya sebelum memproses pemeriksaan. Untuk tingkat kecocokan terbaik, kirim kolom alamat terstruktur Didit secara langsung:

| Kolom | Arti |
| - | - |
| `address_element_1` | Alamat jalan, termasuk nomor dan jenis jalan |
| `address_element_2` | Opsional: unit, gedung, lantai, atau baris alamat tambahan |
| `address_element_3` | Pinggiran kota, distrik, lokalitas, atau lingkungan |
| `address_element_4` | Kota, kota kecil, negara bagian, provinsi, atau wilayah |
| `address_element_5` | Kode pos |

Kolom terstruktur menggantikan nilai `address` tunggal. `postal_code` diterima sebagai alias untuk `address_element_5`.

## Persetujuan

Beberapa layanan database memerlukan persetujuan eksplisit dari pengguna akhir sebelum penyedia dapat menerima kueri. Katalog layanan menandai baris-baris ini dengan `requires_consent=true`.

Kirim `consent=true` jika persetujuan pengguna berlaku untuk layanan yang dipilih.

Didit menolak permintaan sebelum ada panggilan ke penyedia atau peristiwa penagihan apa pun jika layanan yang dipilih memerlukan persetujuan dan Anda tidak mengirimkannya.

## Unggahan file

Validasi database menggunakan `multipart/form-data`. Layanan biometrik yang memerlukan `selfie` menampilkannya sebagai kolom unggah file di API playground, sehingga Anda dapat memilih gambar secara langsung alih-alih menempelkan jalur atau string base64.

Dalam kode, unggah file dengan sintaks multipart standar:

```bash theme={null}
-F "selfie=@./selfie.jpg"
```

## Kesalahan validasi

Didit memvalidasi kolom wajib, struktur alamat, dan format khusus layanan sebelum memanggil penyedia. Misalnya, layanan registri Tionghoa seperti `chn_national_id` dan `chn_passport_verification` mengharapkan `full_name` dalam aksara Tionghoa asli, dan `chn_national_id` juga memerlukan nomor identitas nasional Tionghoa yang valid dengan 15 atau 18 karakter serta checksum yang benar.

Jika permintaan tidak dapat dijalankan, API mengembalikan kesalahan kolom yang eksplisit dan tidak ada penggunaan yang ditagihkan. Jika penyedia gagal setelah pemeriksaan awal, respons menyertakan `validation_errors`, dan permintaan API yang disimpan mencatat kesalahan tersebut dalam hasil validasi database.

## Input yang ditolak dan hasil yang tidak tersedia

Ketika tidak ada layanan yang mengembalikan hasil yang dapat digunakan, periksa setiap entri `validation_errors` sebelum memutuskan untuk mencoba lagi. Status HTTP saja tidak menentukan apakah mencoba lagi itu tepat.
Respons `400` dengan `code: "provider_rejected_input"` dan `retryable: false` berarti setiap percobaan yang tidak menghasilkan jawaban secara eksplisit menolak input tersebut. Perbaiki data yang dikirim sebelum mencoba lagi. Percobaan ini tidak ditagih.

Respons `502` dengan `code: "empty_provider_response"` dan `retryable: true` berarti layanan tidak dapat menghasilkan hasil yang dapat digunakan karena alasan lain. Ini termasuk input yang ditolak lalu diikuti cadangan yang tidak tersedia, atau cadangan yang tidak memberikan penjelasan. Coba lagi nanti; respons ini tidak menunjukkan bahwa input salah.
Jika database terus gagal, Didit mengirim email sekali kepada organisasi yang baru-baru ini menggunakannya setelah gangguan berlangsung terus-menerus, dan sekali lagi ketika pemeriksaan aktual memastikan database kembali merespons. Lihat [Pemberitahuan ketersediaan](https://docs.didit.me/id/core-technology/database-validation/overview.md#notifikasi-ketersediaan).

Ketika hanya sebagian layanan yang dipilih gagal, permintaan tetap berhasil: respons berupa `200` dan layanan yang gagal dicantumkan di bawah `database_validation.errors[]`, masing-masing dengan kolom `code` dan `retryable` yang sama. `database_validation.status` kemudian mengikuti layanan yang berhasil merespons dan dapat bernilai `Approved`, jadi periksa `errors[]` pada setiap respons, bukan hanya pada respons `4xx` atau `5xx`.
Layanan yang dilaporkan di sana tidak ada dalam `validations` dan `services_used`, dan tidak ditagih. Coba lagi layanan tersebut secara terpisah.

Kesalahan `502` lainnya mungkin memerlukan perbaikan input. Misalnya, `provider_invalid_input` dan `provider_validation_error` menjelaskan input yang ditolak oleh sumber data dan tidak boleh dicoba ulang tanpa perubahan, bahkan ketika respons lama tidak menyertakan `retryable`.
Panduan coba lagi untuk `empty_provider_response` tidak berlaku untuk kode-kode ini. Hasil tanpa kecocokan yang konklusif adalah pemeriksaan yang telah selesai, bukan kegagalan ketersediaan.


## OpenAPI

````yaml id/openapi-25.json POST /v3/database-validation/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/database-validation/:
    post:
      tags:
        - Standalone APIs
      summary: Validasi Database (mandiri)
      description: >-
        Validasi data identitas seseorang terhadap sumber resmi pemerintah dan
        registri — CPF di Brasil, RENAPER di Argentina, registri DNI di Spanyol
        dan Peru, INE di Meksiko, dan 100+ layanan lainnya di 60+ negara.


        **Pemilihan layanan.** Setiap negara mengekspos satu atau beberapa
        layanan katalog yang diidentifikasi oleh `service_id` (misalnya
        `bra_cpf`, `arg_renaper`, `pan_cedula_sib`). Tentukan layanan yang Anda
        inginkan dengan array `services` — jika Anda tidak menyertakannya, tepat
        **satu** layanan default yang akan dijalankan (layanan lingkungan
        produksi yang paling lama beroperasi untuk negara tersebut). Mengirimkan
        `services` juga mengalihkan respons ke format lanjutan dengan
        `services_used` dan `match_score`. Temukan layanan, kolom yang
        diperlukan, dan harga melalui `GET
        /v1/organization/database-validation-countries/` (endpoint katalog yang
        tidak didokumentasikan dalam spesifikasi ini) atau editor alur kerja
        Business Console. Beberapa layanan ditandai `requires_consent=true`
        dalam katalog dan memerlukan `consent=true`; layanan lainnya memerlukan
        onboarding untuk organisasi Anda sebelum dapat dipanggil.


        **Kolom input.** `identification_number` adalah kolom universal yang
        dipetakan ke kolom spesifik negara yang tepat secara otomatis (lihat
        deskripsinya). Aturan format negara diberlakukan sebelum penyedia mana
        pun dipanggil (misalnya CPF BRA harus tepat 11 digit) dan kegagalan
        format tidak pernah ditagih. Layanan biometrik memerlukan unggahan
        `selfie` (hanya multipart); Argentina RENAPER juga memerlukan `gender`.


        **Hasil.** Setiap layanan mengembalikan peta `validation` kolom per
        kolom ditambah `outcome_code` yang netral terhadap vendor (`MATCH`,
        `PARTIAL_MATCH`, `NO_MATCH`, `DOCUMENT_NOT_FOUND`,
        `INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT`, `MINOR_BLOCKED`, `DECEASED`,
        `BIOMETRIC_NO_MATCH`, `BIOMETRIC_IMAGE_UNUSABLE`, `INCONCLUSIVE`,
        `DOCUMENT_SUPERSEDED`, `REGISTRY_UNAVAILABLE`, `REGISTRY_ERROR`).
        Perhatikan perbedaannya: `NO_MATCH` adalah ketidakcocokan pasti,
        `INCONCLUSIVE` berarti registri tidak dapat mengonfirmasi salah satunya
        (perlu ditinjau, bukan ditolak), dan `BIOMETRIC_IMAGE_UNUSABLE` adalah
        masalah swafoto teknis (ambil ulang), berbeda dengan
        `BIOMETRIC_NO_MATCH` yang bersifat pasti. `match_type` keseluruhan
        mengagregasikan di seluruh layanan (apa pun yang penuh → `full_match`,
        jika tidak ada dan ada yang parsial → `partial_match`, selain itu
        `no_match`) dan `no_match_action`/`partial_match_action`
        menerjemahkannya ke dalam `status` akhir. `validation_type` diturunkan:
        `two_by_two` ketika dua atau lebih layanan berbeda menghasilkan
        kecocokan penuh (pada nomor identifikasi, pada nama lengkap + tanggal
        lahir bersamaan, atau pada alamat tanpa kontradiksi), selain itu
        `one_by_one`.


        **Persistensi.** `save_api_request` default-nya adalah **true**:
        hasilnya disimpan sebagai sesi (`request_id` berfungsi dengan `GET
        /v3/session/{sessionId}/decision/`), muncul di konsol, dan memicu
        webhook `status.updated`. Parameter ini juga mengontrol format
        `validations` — objek per layanan saat disimpan, peta gabungan `{field:
        match}` saat tidak disimpan.


        **Penagihan.** Per-layanan: setiap layanan yang mengembalikan hasil yang
        dapat ditagih akan dikenakan harga katalognya masing-masing. Layanan
        yang gagal atau dilewati tidak ditagih, dan permintaan yang ditolak
        dengan `400` tidak dikenakan biaya. Pemeriksaan saldo awal mencakup
        jumlah harga layanan yang dipilih (`403` jika kurang).


        **Kegagalan.** Ketika tidak ada layanan yang dipilih mengembalikan hasil
        yang dapat digunakan, API mengembalikan `400` dengan `validation_errors`
        jika setiap upaya yang tidak terjawab secara eksplisit menolak input
        (`provider_rejected_input`, `retryable: false`). Perbaiki input sebelum
        mencoba lagi. Jika tidak, API mengembalikan `502` dengan
        `validation_errors` (`empty_provider_response`, `retryable: true`),
        termasuk penolakan input campuran dan upaya fallback yang tidak
        tersedia; tidak ada yang ditagih (sesi tetap dicatat dengan status `Not
        Finished` jika `save_api_request=true`). Ketika hanya beberapa layanan
        yang gagal, respons `200` menyertakan kegagalan tersebut dalam
        `database_validation.errors`.


        **Sandbox.** Kunci API dari aplikasi sandbox melewati panggilan registri
        dan penagihan serta mengembalikan respons `full_match` statis — payload
        sandbox selalu menyertakan `services_used` dan `match_score: 100`
        terlepas dari bagaimana `services` dikirimkan, jadi jangan memvalidasi
        logika pengaktifan format lanjutan di lingkungan produksi atau nilai
        pecahan `match_score` 0.0–1.0 terhadap respons sandbox.


        Kirim permintaan sebagai `application/json`, atau sebagai
        `multipart/form-data` saat mengunggah `selfie`.
      operationId: post_v3database-validation
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - issuing_state
              properties:
                issuing_state:
                  type: string
                  description: >-
                    Kode negara ISO 3166-1 **alpha-3** dari registri yang akan
                    divalidasi (misalnya `BRA`, `ESP`, `COL`). Menentukan
                    layanan mana yang tersedia. Kode yang tidak didukung
                    mengembalikan `400` beserta daftar lengkap opsi yang valid.
                  example: BRA
                services:
                  type: array
                  items:
                    type: string
                  description: >-
                    `service_id` katalog yang akan dijalankan untuk negara ini
                    (misalnya `["bra_cpf"]`). Menerima juga string tunggal atau
                    string yang dipisahkan koma/di-encode JSON. **Jika
                    dihilangkan atau kosong, tepat satu layanan default yang
                    akan dijalankan** — layanan aktif yang paling lama tersedia
                    untuk negara tersebut; layanan yang lebih baru, biometrik,
                    dan bayar sesuai penggunaan harus disebutkan secara
                    eksplisit. Mengirim `services` akan mengubah bentuk respons
                    ke format yang diperluas (menambahkan `services_used` dan
                    `match_score`). Setiap id harus ada dan aktif untuk
                    `issuing_state`; layanan yang memerlukan onboarding
                    mengembalikan `400` sampai diaktifkan untuk organisasi Anda.
                    Temukan layanan yang tersedia per negara melalui `GET
                    /v1/organization/database-validation-countries/` (endpoint
                    katalog yang tidak didokumentasikan dalam spesifikasi ini)
                    atau editor alur kerja Business Console.
                  example:
                    - bra_cpf
                validation_type:
                  type: string
                  deprecated: true
                  description: >-
                    USANG. Diterima untuk kompatibilitas mundur tetapi diabaikan
                    — `validation_type` respons sekarang diturunkan dari berapa
                    banyak layanan yang cocok penuh. Gunakan `services` untuk
                    menetapkan layanan tertentu.
                consent:
                  type: boolean
                  default: false
                  description: >-
                    Atur ke `true` jika pengguna akhir telah memberikan
                    persetujuan secara eksplisit untuk layanan validasi yang
                    dipilih. Diperlukan untuk layanan yang ditandai
                    `requires_consent=true` di katalog — tanpanya, layanan
                    tersebut mengembalikan `400` dengan
                    `services_requiring_consent`.
                identification_number:
                  type: string
                  description: >-
                    Nomor identifikasi universal — dipetakan secara otomatis ke
                    kolom spesifik negara yang tepat, sehingga Anda dapat
                    menggunakannya alih-alih
                    `personal_number`/`tax_number`/`document_number`:
                    ARG→document_number (DNI), BOL→document_number (CI),
                    BRA→tax_number (CPF, 11 digit), CHL→personal_number (RUT),
                    COL→personal_number (Cédula), CRI→personal_number (Cédula),
                    DOM→personal_number (Cédula, 11 digit), ECU→personal_number
                    (Cédula, 10 digit), ESP→personal_number (DNI/NIE),
                    GTM→document_number (DPI), HND→document_number (DNI),
                    MEX→personal_number (CURP, 18 karakter), PAN→personal_number
                    (Cédula), PER→personal_number (DNI, 8 digit),
                    PRY→document_number (CI), SLV→document_number (DUI),
                    URY→personal_number (CI), VEN→document_number (Cédula).
                    Nilai ini tidak pernah menimpa kolom spesifik negara yang
                    diberikan secara eksplisit.
                first_name:
                  type: string
                  description: >-
                    Nama depan individu. Diperlukan oleh beberapa
                    layanan/negara.
                  example: John
                last_name:
                  type: string
                  description: >-
                    Nama belakang individu. Diperlukan oleh beberapa
                    layanan/negara.
                  example: Doe
                middle_name:
                  type: string
                  description: >-
                    Nama tengah, digunakan oleh beberapa layanan negara (AUS,
                    NZL, …).
                full_name:
                  type: string
                  description: >-
                    Nama lengkap — beberapa layanan menerima ini sebagai
                    pengganti nama depan/belakang (misalnya layanan CHN, yang
                    mencocokkan nama dalam aksara asli).
                date_of_birth:
                  type: string
                  format: date
                  description: Tanggal lahir, `YYYY-MM-DD`. Diperlukan oleh banyak layanan.
                  example: '1980-01-01'
                personal_number:
                  type: string
                  description: >-
                    Pengenal pribadi unik yang diterbitkan pemerintah. Digunakan
                    oleh: CHL (RUT), COL (Cédula), CRI, DOM, ECU, ESP (DNI/NIE),
                    MEX (CURP), PAN (Cédula), PER (DNI), URY. Pertimbangkan
                    untuk menggunakan `identification_number` sebagai gantinya.
                tax_number:
                  type: string
                  description: >-
                    ID pajak. Digunakan oleh: BRA (CPF, 11 digit). Pertimbangkan
                    untuk menggunakan `identification_number` sebagai gantinya.
                document_number:
                  type: string
                  description: >-
                    Nomor dokumen. Digunakan oleh: ARG (DNI), BOL (CI), GTM
                    (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN (Cédula).
                    Pertimbangkan untuk menggunakan `identification_number`
                    sebagai gantinya.
                document_type:
                  type: string
                  enum:
                    - P
                    - DL
                    - ID
                    - RP
                    - SSC
                    - HIC
                    - WP
                    - TC
                    - VISA
                    - PSC
                    - BC
                    - OTHER
                  description: >-
                    Jenis dokumen yang divalidasi: paspor `P`, SIM `DL`, ID
                    nasional `ID`, izin tinggal `RP` (ditambah `SSC`, `HIC`,
                    `WP`, `TC`, `VISA`, `PSC`, `BC`, `OTHER`). Diperlukan oleh
                    beberapa layanan (misalnya ESP).
                expiration_date:
                  type: string
                  format: date
                  description: >-
                    Tanggal kedaluwarsa dokumen, `YYYY-MM-DD`. Wajib untuk
                    validasi ESP (Spanyol).
                  example: '2030-01-15'
                date_of_issue:
                  type: string
                  format: date
                  description: >-
                    Tanggal penerbitan dokumen, `YYYY-MM-DD` (fecha de
                    expedición). Wajib untuk validasi cédula COL (Kolombia).
                  example: '2015-06-20'
                nationality:
                  type: string
                  description: >-
                    Kewarganegaraan sebagai ISO 3166-1 alpha-3. Diperlukan oleh
                    beberapa layanan.
                gender:
                  type: string
                  enum:
                    - M
                    - F
                    - X
                  description: >-
                    Jenis kelamin: `M`, `F`, atau `X` (lainnya/tidak diketahui).
                    Diperlukan untuk validasi RENAPER Argentina (`arg_renaper`).
                address:
                  description: >-
                    Alamat tempat tinggal. Utamakan objek terstruktur
                    `{"street_1":"123 Main St","street_2":"Apt
                    4B","city":"Springfield","region":"IL","postal_code":"62701","country":"US"}`;
                    string satu baris lengkap masih diterima. Diperlukan oleh
                    layanan verifikasi alamat; jika suatu layanan menentukan
                    persyaratan alamat, bagian yang hilang akan mengembalikan
                    `400` dengan `address_fields_required_by`.
                  oneOf:
                    - type: object
                      properties:
                        street_1:
                          type: string
                        street_2:
                          type: string
                        city:
                          type: string
                        region:
                          type: string
                        postal_code:
                          type: string
                        country:
                          type: string
                    - type: string
                      description: Alamat satu baris lengkap (lama).
                address_element_1:
                  type: string
                  description: >-
                    Alamat jalan termasuk nomor jalan dan jenis jalan. Jika
                    dihilangkan, diturunkan dari `address`.
                address_element_2:
                  type: string
                  description: >-
                    Apartemen, unit, gedung, lantai, atau baris alamat tambahan.
                    Kirimkan hanya jika Anda memilikinya secara eksplisit.
                address_element_3:
                  type: string
                  description: >-
                    Kota, pinggiran kota, distrik, lokalitas, atau lingkungan.
                    Jika dihilangkan, diturunkan dari `address`.
                address_element_4:
                  type: string
                  description: >-
                    Negara bagian, provinsi, wilayah, atau kota. Jika
                    dihilangkan, diambil dari `address`.
                address_element_5:
                  type: string
                  description: Kode pos. `postal_code` diterima sebagai alias.
                postal_code:
                  type: string
                  description: >-
                    Kode pos untuk layanan berbasis alamat (alias dari
                    `address_element_5`).
                driver_license_number:
                  type: string
                  description: >-
                    Nomor surat izin mengemudi untuk layanan verifikasi dokumen
                    pemerintah (AUS, NZL, IND).
                driver_license_card_number:
                  type: string
                  description: >-
                    Nomor kartu fisik surat izin mengemudi, jika diwajibkan
                    secara terpisah dari nomor lisensi (AUS).
                driver_license_state:
                  type: string
                  description: >-
                    Negara bagian atau wilayah penerbitan surat izin mengemudi
                    (AUS).
                driver_license_version:
                  type: string
                  description: Kode versi surat izin mengemudi (NZL).
                passport_number:
                  type: string
                  description: >-
                    Nomor paspor untuk layanan verifikasi paspor pemerintah
                    (AUS, NZL, IND, CHN).
                passport_expiration_date:
                  type: string
                  format: date
                  description: >-
                    Tanggal kedaluwarsa paspor, `YYYY-MM-DD`, untuk layanan
                    verifikasi paspor.
                passport_file_number:
                  type: string
                  description: Nomor berkas paspor (IND).
                passport_issue_country:
                  type: string
                  description: >-
                    Negara penerbit paspor (ISO 3166-1 alpha-3) untuk layanan
                    verifikasi paspor.
                medicare_card_number:
                  type: string
                  description: Nomor kartu Medicare (AUS).
                immi_card_number:
                  type: string
                  description: Nomor ImmiCard Australia.
                immi_card_expiry_date:
                  type: string
                  format: date
                  description: Tanggal kedaluwarsa ImmiCard Australia.
                citizenship_certificate_number:
                  type: string
                  description: Nomor sertifikat kewarganegaraan (AUS).
                birth_registration_number:
                  type: string
                  description: Nomor registrasi akta kelahiran (AUS).
                birth_registration_date:
                  type: string
                  format: date
                  description: Tanggal pendaftaran akta kelahiran (AUS).
                birth_registration_state:
                  type: string
                  description: Negara bagian pendaftaran akta kelahiran (AUS).
                marriage_certificate_number:
                  type: string
                  description: Nomor akta nikah (AUS).
                change_of_name_certificate_number:
                  type: string
                  description: Nomor sertifikat perubahan nama (AUS).
                first_partner_name:
                  type: string
                  description: Nama depan pasangan pada surat nikah (AUS).
                last_partner_name:
                  type: string
                  description: Nama belakang pasangan pada surat nikah (AUS).
                voter_id:
                  type: string
                  description: Nomor pendaftaran pemilih (IND EPIC, IRL).
                epic_card:
                  type: string
                  description: Nomor kartu pemilih EPIC India.
                pan:
                  type: string
                  description: PAN (Permanent Account Number) India.
                national_id:
                  type: string
                  description: Nomor identitas nasional (CHN, MYS, KEN, KHM, NGA, ZAF, …).
                cic:
                  type: string
                  description: >-
                    Código de Identificación de Credencial (CIC) INE/IFE
                    Meksiko, 9 digit. Digunakan oleh layanan validitas
                    kredensial MEX INE (`mex_ine_vigencia`).
                identificador_ciudadano:
                  type: string
                  description: >-
                    INE Identificador del Ciudadano Meksiko (9 digit). Digunakan
                    bersama `cic` untuk model INE modern (E/F/G/H) dalam
                    `mex_ine_vigencia`.
                ocr:
                  type: string
                  description: >-
                    Nomor OCR INE Meksiko (13 digit, bagian belakang kartu).
                    Digunakan bersama `cic` untuk Model D dalam
                    `mex_ine_vigencia`.
                voter_number:
                  type: string
                  description: >-
                    INE Clave de Elector Meksiko (18 karakter). Digunakan
                    bersama `emission_number` untuk model IFE lawas (A/B/C)
                    dalam `mex_ine_vigencia`.
                emission_number:
                  type: string
                  description: >-
                    INE Número de Emisión Meksiko. Digunakan bersama
                    `voter_number` untuk model IFE lawas (A/B/C) dalam
                    `mex_ine_vigencia`.
                bvn:
                  type: string
                  description: Nomor Verifikasi Bank Nigeria.
                bank_card_number:
                  type: string
                  description: Nomor kartu bank (verifikasi kartu bank CHN).
                company_registration_number:
                  type: string
                  description: >-
                    Nomor registrasi perusahaan sebagaimana diterbitkan oleh
                    registri perusahaan: CNPJ di Brasil (mis. `11222333000181`),
                    nomor registrasi di Afrika Selatan (mis. `1936/007721/06`).
                    Diperlukan oleh layanan registri perusahaan dan direktur
                    perusahaan (`bra_company_registry`, `bra_company_directors`,
                    `zaf_company_registry`, `zaf_company_directors`).
                company_name:
                  type: string
                  description: >-
                    Nama perusahaan terdaftar, diperiksa silang terhadap entri
                    registri. Opsional untuk `zaf_company_registry`.
                initials:
                  type: string
                  description: >-
                    Inisial orang tersebut seperti yang tertera pada dokumen.
                    Wajib untuk `zaf_drivers_license`; diterima untuk
                    `zaf_bank_account_holder`.
                licence_number:
                  type: string
                  description: >-
                    Nomor surat izin mengemudi seperti yang tertera pada kartu,
                    untuk `zaf_drivers_license`. Jika dihilangkan,
                    `document_number` yang digunakan.
                refugee_file_number:
                  type: string
                  description: >-
                    Nomor berkas pengungsi yang diterbitkan oleh Departemen
                    Dalam Negeri Afrika Selatan. Wajib untuk `zaf_refugee`.
                bank_name:
                  type: string
                  description: >-
                    Nama bank pemegang rekening. Wajib untuk
                    `zaf_bank_account_holder`.
                bank_account_number:
                  type: string
                  description: >-
                    Nomor rekening bank. Wajib untuk `zaf_bank_account_holder`;
                    diterima oleh `zaf_fraud_prevention`.
                account_type:
                  type: string
                  description: >-
                    Jenis rekening bank untuk `zaf_bank_account_holder`:
                    `current`, `savings`, `transmission`, `subscriptionShare`,
                    atau `notKnown`, tidak peka huruf besar/kecil. Nilai lain
                    apa pun mengembalikan `400`. Abaikan jika Anda tidak
                    mengetahui jenisnya: pemeriksaan silang jenis rekening
                    kemudian dilaporkan sebagai tidak terkonfirmasi.
                phone_number:
                  type: string
                  description: >-
                    Nomor ponsel kontak, untuk layanan yang memeriksa ulang
                    keterjangkauan kontak (`zaf_bank_account_holder`,
                    `zaf_fraud_prevention`, `zaf_refugee`).
                right_thumb:
                  type: string
                  description: >-
                    Sidik jari jempol kanan yang di-encode Base64 untuk
                    `zaf_dha_fingerprint_match`, bersama `left_thumb` atau
                    secara terpisah.
                left_thumb:
                  type: string
                  description: >-
                    Sidik jari jempol kiri yang di-encode Base64 untuk
                    `zaf_dha_fingerprint_match`, bersama `right_thumb` atau
                    secara terpisah.
                score_level:
                  type: integer
                  description: >-
                    Tingkat skor biometrik minimum untuk
                    `zaf_criminal_face_screening`. Defaultnya adalah `3`.
                max_matches:
                  type: integer
                  description: >-
                    Jumlah maksimum kandidat kecocokan yang dikembalikan oleh
                    `zaf_criminal_face_screening`. Defaultnya adalah `1`.
                vehicle_register_number:
                  type: string
                  description: >-
                    Nomor registrasi kendaraan. Wajib diisi, bersama dengan
                    `vehicle_licence_plate` dan `vin`, oleh
                    `zaf_vehicle_ownership`.
                vehicle_licence_plate:
                  type: string
                  description: >-
                    Nomor plat kendaraan. Wajib diisi, bersama dengan
                    `vehicle_register_number` dan `vin`, oleh
                    `zaf_vehicle_ownership`.
                vin:
                  type: string
                  description: >-
                    Nomor Identifikasi Kendaraan (VIN atau nomor rangka). Wajib
                    diisi, bersama dengan `vehicle_register_number` dan
                    `vehicle_licence_plate`, oleh `zaf_vehicle_ownership`.
                ssn:
                  type: string
                  description: Social Security Number (AS).
                phone:
                  type: string
                  description: Nomor telepon untuk layanan verifikasi telepon.
                landline:
                  type: string
                  description: Nomor telepon rumah untuk layanan verifikasi telepon.
                email:
                  type: string
                  format: email
                  description: Alamat email untuk layanan verifikasi identitas.
                country_of_residence:
                  type: string
                  description: >-
                    Negara tempat tinggal ISO 3166-1 alpha-2. Digunakan oleh
                    layanan pengayaan identitas global (misalnya
                    `glb_identity_enrichment`) untuk memfokuskan pencarian.
                  example: US
                partial_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: NO_ACTION
                  description: >-
                    Pengaruh `partial_match` terhadap
                    `database_validation.status`. Default ke `NO_ACTION` (status
                    tetap `Approved`, dengan peringatan).
                no_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    Pengaruh `no_match` terhadap `database_validation.status`.
                    Default ke `DECLINE`.
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    Simpan validasi sebagai sesi (visibilitas konsol, endpoint
                    keputusan, webhook `status.updated`). Tindakan ini juga
                    mengubah bentuk respons `validations`: objek per layanan
                    saat `true` (default), peta kolom gabungan saat `false`.
                vendor_data:
                  type: string
                  description: >-
                    Pengenal Anda untuk pengguna yang divalidasi; dikembalikan
                    dan disimpan bersama sesi.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    JSON bentuk bebas yang disimpan bersama permintaan dan
                    dikembalikan dalam respons.
            example:
              issuing_state: BRA
              services:
                - bra_cpf
              identification_number: '12345678900'
              first_name: John
              last_name: Doe
              date_of_birth: '1980-01-01'
              vendor_data: user-1234
          multipart/form-data:
            schema:
              type: object
              required:
                - issuing_state
              properties:
                issuing_state:
                  type: string
                  description: >-
                    Kode negara ISO 3166-1 **alpha-3** dari registri yang akan
                    divalidasi (misalnya `BRA`, `ESP`, `COL`). Menentukan
                    layanan mana yang tersedia. Kode yang tidak didukung
                    mengembalikan `400` beserta daftar lengkap opsi yang valid.
                  example: BRA
                services:
                  type: array
                  items:
                    type: string
                  description: >-
                    `service_id` katalog yang akan dijalankan untuk negara ini
                    (misalnya `["bra_cpf"]`). Menerima juga string tunggal atau
                    string yang dipisahkan koma/di-encode JSON. **Jika
                    dihilangkan atau kosong, tepat satu layanan default yang
                    akan dijalankan** — layanan aktif yang paling lama tersedia
                    untuk negara tersebut; layanan yang lebih baru, biometrik,
                    dan bayar sesuai penggunaan harus disebutkan secara
                    eksplisit. Mengirim `services` akan mengubah bentuk respons
                    ke format yang diperluas (menambahkan `services_used` dan
                    `match_score`). Setiap id harus ada dan aktif untuk
                    `issuing_state`; layanan yang memerlukan onboarding
                    mengembalikan `400` sampai diaktifkan untuk organisasi Anda.
                    Temukan layanan yang tersedia per negara melalui `GET
                    /v1/organization/database-validation-countries/` (endpoint
                    katalog yang tidak didokumentasikan dalam spesifikasi ini)
                    atau editor alur kerja Business Console.
                  example:
                    - bra_cpf
                validation_type:
                  type: string
                  deprecated: true
                  description: >-
                    USANG. Diterima untuk kompatibilitas mundur tetapi diabaikan
                    — `validation_type` respons sekarang diturunkan dari berapa
                    banyak layanan yang cocok penuh. Gunakan `services` untuk
                    menetapkan layanan tertentu.
                consent:
                  type: boolean
                  default: false
                  description: >-
                    Atur ke `true` jika pengguna akhir telah memberikan
                    persetujuan secara eksplisit untuk layanan validasi yang
                    dipilih. Diperlukan untuk layanan yang ditandai
                    `requires_consent=true` di katalog — tanpanya, layanan
                    tersebut mengembalikan `400` dengan
                    `services_requiring_consent`.
                identification_number:
                  type: string
                  description: >-
                    Nomor identifikasi universal — dipetakan secara otomatis ke
                    kolom spesifik negara yang tepat, sehingga Anda dapat
                    menggunakannya alih-alih
                    `personal_number`/`tax_number`/`document_number`:
                    ARG→document_number (DNI), BOL→document_number (CI),
                    BRA→tax_number (CPF, 11 digit), CHL→personal_number (RUT),
                    COL→personal_number (Cédula), CRI→personal_number (Cédula),
                    DOM→personal_number (Cédula, 11 digit), ECU→personal_number
                    (Cédula, 10 digit), ESP→personal_number (DNI/NIE),
                    GTM→document_number (DPI), HND→document_number (DNI),
                    MEX→personal_number (CURP, 18 karakter), PAN→personal_number
                    (Cédula), PER→personal_number (DNI, 8 digit),
                    PRY→document_number (CI), SLV→document_number (DUI),
                    URY→personal_number (CI), VEN→document_number (Cédula).
                    Nilai ini tidak pernah menimpa kolom spesifik negara yang
                    diberikan secara eksplisit.
                first_name:
                  type: string
                  description: >-
                    Nama depan individu. Diperlukan oleh beberapa
                    layanan/negara.
                  example: John
                last_name:
                  type: string
                  description: >-
                    Nama belakang individu. Diperlukan oleh beberapa
                    layanan/negara.
                  example: Doe
                middle_name:
                  type: string
                  description: >-
                    Nama tengah, digunakan oleh beberapa layanan negara (AUS,
                    NZL, …).
                full_name:
                  type: string
                  description: >-
                    Nama lengkap — beberapa layanan menerima ini sebagai
                    pengganti nama depan/belakang (misalnya layanan CHN, yang
                    mencocokkan nama dalam aksara asli).
                date_of_birth:
                  type: string
                  format: date
                  description: Tanggal lahir, `YYYY-MM-DD`. Diperlukan oleh banyak layanan.
                  example: '1980-01-01'
                personal_number:
                  type: string
                  description: >-
                    Pengenal pribadi unik yang diterbitkan pemerintah. Digunakan
                    oleh: CHL (RUT), COL (Cédula), CRI, DOM, ECU, ESP (DNI/NIE),
                    MEX (CURP), PAN (Cédula), PER (DNI), URY. Pertimbangkan
                    untuk menggunakan `identification_number` sebagai gantinya.
                tax_number:
                  type: string
                  description: >-
                    ID pajak. Digunakan oleh: BRA (CPF, 11 digit). Pertimbangkan
                    untuk menggunakan `identification_number` sebagai gantinya.
                document_number:
                  type: string
                  description: >-
                    Nomor dokumen. Digunakan oleh: ARG (DNI), BOL (CI), GTM
                    (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN (Cédula).
                    Pertimbangkan untuk menggunakan `identification_number`
                    sebagai gantinya.
                document_type:
                  type: string
                  enum:
                    - P
                    - DL
                    - ID
                    - RP
                    - SSC
                    - HIC
                    - WP
                    - TC
                    - VISA
                    - PSC
                    - BC
                    - OTHER
                  description: >-
                    Jenis dokumen yang divalidasi: paspor `P`, SIM `DL`, ID
                    nasional `ID`, izin tinggal `RP` (ditambah `SSC`, `HIC`,
                    `WP`, `TC`, `VISA`, `PSC`, `BC`, `OTHER`). Diperlukan oleh
                    beberapa layanan (misalnya ESP).
                expiration_date:
                  type: string
                  format: date
                  description: >-
                    Tanggal kedaluwarsa dokumen, `YYYY-MM-DD`. Wajib untuk
                    validasi ESP (Spanyol).
                  example: '2030-01-15'
                date_of_issue:
                  type: string
                  format: date
                  description: >-
                    Tanggal penerbitan dokumen, `YYYY-MM-DD` (fecha de
                    expedición). Wajib untuk validasi cédula COL (Kolombia).
                  example: '2015-06-20'
                nationality:
                  type: string
                  description: >-
                    Kewarganegaraan sebagai ISO 3166-1 alpha-3. Diperlukan oleh
                    beberapa layanan.
                gender:
                  type: string
                  enum:
                    - M
                    - F
                    - X
                  description: >-
                    Jenis kelamin: `M`, `F`, atau `X` (lainnya/tidak diketahui).
                    Diperlukan untuk validasi RENAPER Argentina (`arg_renaper`).
                address:
                  description: >-
                    Alamat tempat tinggal. Utamakan objek terstruktur
                    `{"street_1":"123 Main St","street_2":"Apt
                    4B","city":"Springfield","region":"IL","postal_code":"62701","country":"US"}`;
                    string satu baris lengkap masih diterima. Diperlukan oleh
                    layanan verifikasi alamat; jika suatu layanan menentukan
                    persyaratan alamat, bagian yang hilang akan mengembalikan
                    `400` dengan `address_fields_required_by`.
                  oneOf:
                    - type: object
                      properties:
                        street_1:
                          type: string
                        street_2:
                          type: string
                        city:
                          type: string
                        region:
                          type: string
                        postal_code:
                          type: string
                        country:
                          type: string
                    - type: string
                      description: Alamat satu baris lengkap (lama).
                address_element_1:
                  type: string
                  description: >-
                    Alamat jalan termasuk nomor jalan dan jenis jalan. Jika
                    dihilangkan, diturunkan dari `address`.
                address_element_2:
                  type: string
                  description: >-
                    Apartemen, unit, gedung, lantai, atau baris alamat tambahan.
                    Kirimkan hanya jika Anda memilikinya secara eksplisit.
                address_element_3:
                  type: string
                  description: >-
                    Kota, pinggiran kota, distrik, lokalitas, atau lingkungan.
                    Jika dihilangkan, diturunkan dari `address`.
                address_element_4:
                  type: string
                  description: >-
                    Negara bagian, provinsi, wilayah, atau kota. Jika
                    dihilangkan, diambil dari `address`.
                address_element_5:
                  type: string
                  description: Kode pos. `postal_code` diterima sebagai alias.
                postal_code:
                  type: string
                  description: >-
                    Kode pos untuk layanan berbasis alamat (alias dari
                    `address_element_5`).
                driver_license_number:
                  type: string
                  description: >-
                    Nomor surat izin mengemudi untuk layanan verifikasi dokumen
                    pemerintah (AUS, NZL, IND).
                driver_license_card_number:
                  type: string
                  description: >-
                    Nomor kartu fisik surat izin mengemudi, jika diwajibkan
                    secara terpisah dari nomor lisensi (AUS).
                driver_license_state:
                  type: string
                  description: >-
                    Negara bagian atau wilayah penerbitan surat izin mengemudi
                    (AUS).
                driver_license_version:
                  type: string
                  description: Kode versi surat izin mengemudi (NZL).
                passport_number:
                  type: string
                  description: >-
                    Nomor paspor untuk layanan verifikasi paspor pemerintah
                    (AUS, NZL, IND, CHN).
                passport_expiration_date:
                  type: string
                  format: date
                  description: >-
                    Tanggal kedaluwarsa paspor, `YYYY-MM-DD`, untuk layanan
                    verifikasi paspor.
                passport_file_number:
                  type: string
                  description: Nomor berkas paspor (IND).
                passport_issue_country:
                  type: string
                  description: >-
                    Negara penerbit paspor (ISO 3166-1 alpha-3) untuk layanan
                    verifikasi paspor.
                medicare_card_number:
                  type: string
                  description: Nomor kartu Medicare (AUS).
                immi_card_number:
                  type: string
                  description: Nomor ImmiCard Australia.
                immi_card_expiry_date:
                  type: string
                  format: date
                  description: Tanggal kedaluwarsa ImmiCard Australia.
                citizenship_certificate_number:
                  type: string
                  description: Nomor sertifikat kewarganegaraan (AUS).
                birth_registration_number:
                  type: string
                  description: Nomor registrasi akta kelahiran (AUS).
                birth_registration_date:
                  type: string
                  format: date
                  description: Tanggal pendaftaran akta kelahiran (AUS).
                birth_registration_state:
                  type: string
                  description: Negara bagian pendaftaran akta kelahiran (AUS).
                marriage_certificate_number:
                  type: string
                  description: Nomor akta nikah (AUS).
                change_of_name_certificate_number:
                  type: string
                  description: Nomor sertifikat perubahan nama (AUS).
                first_partner_name:
                  type: string
                  description: Nama depan pasangan pada surat nikah (AUS).
                last_partner_name:
                  type: string
                  description: Nama belakang pasangan pada surat nikah (AUS).
                voter_id:
                  type: string
                  description: Nomor pendaftaran pemilih (IND EPIC, IRL).
                epic_card:
                  type: string
                  description: Nomor kartu pemilih EPIC India.
                pan:
                  type: string
                  description: PAN (Permanent Account Number) India.
                national_id:
                  type: string
                  description: Nomor identitas nasional (CHN, MYS, KEN, KHM, NGA, ZAF, …).
                cic:
                  type: string
                  description: >-
                    Código de Identificación de Credencial (CIC) INE/IFE
                    Meksiko, 9 digit. Digunakan oleh layanan validitas
                    kredensial MEX INE (`mex_ine_vigencia`).
                identificador_ciudadano:
                  type: string
                  description: >-
                    INE Identificador del Ciudadano Meksiko (9 digit). Digunakan
                    bersama `cic` untuk model INE modern (E/F/G/H) dalam
                    `mex_ine_vigencia`.
                ocr:
                  type: string
                  description: >-
                    Nomor OCR INE Meksiko (13 digit, bagian belakang kartu).
                    Digunakan bersama `cic` untuk Model D dalam
                    `mex_ine_vigencia`.
                voter_number:
                  type: string
                  description: >-
                    INE Clave de Elector Meksiko (18 karakter). Digunakan
                    bersama `emission_number` untuk model IFE lawas (A/B/C)
                    dalam `mex_ine_vigencia`.
                emission_number:
                  type: string
                  description: >-
                    INE Número de Emisión Meksiko. Digunakan bersama
                    `voter_number` untuk model IFE lawas (A/B/C) dalam
                    `mex_ine_vigencia`.
                bvn:
                  type: string
                  description: Nomor Verifikasi Bank Nigeria.
                bank_card_number:
                  type: string
                  description: Nomor kartu bank (verifikasi kartu bank CHN).
                company_registration_number:
                  type: string
                  description: >-
                    Nomor registrasi perusahaan sebagaimana diterbitkan oleh
                    registri perusahaan: CNPJ di Brasil (mis. `11222333000181`),
                    nomor registrasi di Afrika Selatan (mis. `1936/007721/06`).
                    Diperlukan oleh layanan registri perusahaan dan direktur
                    perusahaan (`bra_company_registry`, `bra_company_directors`,
                    `zaf_company_registry`, `zaf_company_directors`).
                company_name:
                  type: string
                  description: >-
                    Nama perusahaan terdaftar, diperiksa silang terhadap entri
                    registri. Opsional untuk `zaf_company_registry`.
                initials:
                  type: string
                  description: >-
                    Inisial orang tersebut seperti yang tertera pada dokumen.
                    Wajib untuk `zaf_drivers_license`; diterima untuk
                    `zaf_bank_account_holder`.
                licence_number:
                  type: string
                  description: >-
                    Nomor surat izin mengemudi seperti yang tertera pada kartu,
                    untuk `zaf_drivers_license`. Jika dihilangkan,
                    `document_number` yang digunakan.
                refugee_file_number:
                  type: string
                  description: >-
                    Nomor berkas pengungsi yang diterbitkan oleh Departemen
                    Dalam Negeri Afrika Selatan. Wajib untuk `zaf_refugee`.
                bank_name:
                  type: string
                  description: >-
                    Nama bank pemegang rekening. Wajib untuk
                    `zaf_bank_account_holder`.
                bank_account_number:
                  type: string
                  description: >-
                    Nomor rekening bank. Wajib untuk `zaf_bank_account_holder`;
                    diterima oleh `zaf_fraud_prevention`.
                account_type:
                  type: string
                  description: >-
                    Jenis rekening bank untuk `zaf_bank_account_holder`:
                    `current`, `savings`, `transmission`, `subscriptionShare`,
                    atau `notKnown`, tidak peka huruf besar/kecil. Nilai lain
                    apa pun mengembalikan `400`. Abaikan jika Anda tidak
                    mengetahui jenisnya: pemeriksaan silang jenis rekening
                    kemudian dilaporkan sebagai tidak terkonfirmasi.
                phone_number:
                  type: string
                  description: >-
                    Nomor ponsel kontak, untuk layanan yang memeriksa ulang
                    keterjangkauan kontak (`zaf_bank_account_holder`,
                    `zaf_fraud_prevention`, `zaf_refugee`).
                right_thumb:
                  type: string
                  description: >-
                    Sidik jari jempol kanan yang di-encode Base64 untuk
                    `zaf_dha_fingerprint_match`, bersama `left_thumb` atau
                    secara terpisah.
                left_thumb:
                  type: string
                  description: >-
                    Sidik jari jempol kiri yang di-encode Base64 untuk
                    `zaf_dha_fingerprint_match`, bersama `right_thumb` atau
                    secara terpisah.
                score_level:
                  type: integer
                  description: >-
                    Tingkat skor biometrik minimum untuk
                    `zaf_criminal_face_screening`. Defaultnya adalah `3`.
                max_matches:
                  type: integer
                  description: >-
                    Jumlah maksimum kandidat kecocokan yang dikembalikan oleh
                    `zaf_criminal_face_screening`. Defaultnya adalah `1`.
                vehicle_register_number:
                  type: string
                  description: >-
                    Nomor registrasi kendaraan. Wajib diisi, bersama dengan
                    `vehicle_licence_plate` dan `vin`, oleh
                    `zaf_vehicle_ownership`.
                vehicle_licence_plate:
                  type: string
                  description: >-
                    Nomor plat kendaraan. Wajib diisi, bersama dengan
                    `vehicle_register_number` dan `vin`, oleh
                    `zaf_vehicle_ownership`.
                vin:
                  type: string
                  description: >-
                    Nomor Identifikasi Kendaraan (VIN atau nomor rangka). Wajib
                    diisi, bersama dengan `vehicle_register_number` dan
                    `vehicle_licence_plate`, oleh `zaf_vehicle_ownership`.
                ssn:
                  type: string
                  description: Social Security Number (AS).
                phone:
                  type: string
                  description: Nomor telepon untuk layanan verifikasi telepon.
                landline:
                  type: string
                  description: Nomor telepon rumah untuk layanan verifikasi telepon.
                email:
                  type: string
                  format: email
                  description: Alamat email untuk layanan verifikasi identitas.
                country_of_residence:
                  type: string
                  description: >-
                    Negara tempat tinggal ISO 3166-1 alpha-2. Digunakan oleh
                    layanan pengayaan identitas global (misalnya
                    `glb_identity_enrichment`) untuk memfokuskan pencarian.
                  example: US
                partial_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: NO_ACTION
                  description: >-
                    Pengaruh `partial_match` terhadap
                    `database_validation.status`. Default ke `NO_ACTION` (status
                    tetap `Approved`, dengan peringatan).
                no_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    Pengaruh `no_match` terhadap `database_validation.status`.
                    Default ke `DECLINE`.
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    Simpan validasi sebagai sesi (visibilitas konsol, endpoint
                    keputusan, webhook `status.updated`). Tindakan ini juga
                    mengubah bentuk respons `validations`: objek per layanan
                    saat `true` (default), peta kolom gabungan saat `false`.
                vendor_data:
                  type: string
                  description: >-
                    Pengenal Anda untuk pengguna yang divalidasi; dikembalikan
                    dan disimpan bersama sesi.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    JSON bentuk bebas yang disimpan bersama permintaan dan
                    dikembalikan dalam respons.
                selfie:
                  type: string
                  format: binary
                  description: >-
                    Gambar swafoto (`jpg`, `jpeg`, `png`, `webp`; maks 2 MB —
                    gambar dikompresi menjadi ~1.5 MB sebelum diunggah ke
                    registri) untuk layanan validasi biometrik, mis. RENAPER
                    Argentina (`arg_renaper`) dan SIB Panama (`pan_cedula_sib`,
                    `pan_cedula_sib_plus`). Wajib diisi setiap kali layanan yang
                    dipilih mencantumkannya sebagai kolom yang diperlukan. Hanya
                    tersedia melalui `multipart/form-data`.
      responses:
        '200':
          description: >-
            Validasi selesai — setidaknya satu layanan yang dipilih
            mengembalikan hasil yang dapat digunakan. Periksa
            `database_validation.match_type` untuk hasil agregat, `validations`
            untuk perbandingan kolom per layanan dan `outcome_code`s, serta
            `errors` (jika ada) untuk layanan yang gagal.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      ID sesi yang disimpan saat `save_api_request=true` (dapat
                      digunakan dengan `GET /v3/session/{sessionId}/decision/`);
                      jika tidak, berupa UUID korelasi sementara.
                  database_validation:
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - Approved
                          - Declined
                          - In Review
                        description: >-
                          `Declined` ketika `match_type` keseluruhan memicu
                          tindakan `DECLINE` (`no_match_action` default ke
                          `DECLINE`, `partial_match_action` ke `NO_ACTION`); `In
                          Review` ketika tidak ada layanan yang menghasilkan
                          perbandingan yang dapat digunakan, misalnya ketika
                          satu-satunya layanan yang dipilih menghasilkan
                          `REGISTRY_UNAVAILABLE` atau `INCONCLUSIVE`; `Approved`
                          jika tidak. Permintaan yang memilih beberapa layanan
                          dapat bernilai `Approved` berdasarkan kecocokan satu
                          layanan meskipun layanan lainnya tidak tersedia, jadi
                          periksa juga `errors` dan `outcome_code`s per layanan.
                      issuing_state:
                        type: string
                        description: >-
                          Salinan negara ISO 3166-1 alpha-3 yang digunakan
                          sebagai pembanding untuk validasi.
                        example: BRA
                      validation_type:
                        type: string
                        enum:
                          - one_by_one
                          - two_by_two
                        description: >-
                          Diturunkan dari hasil: `two_by_two` jika ≥2 layanan
                          berbeda menghasilkan kecocokan penuh (pada nomor
                          identifikasi, pada nama lengkap + tanggal lahir
                          bersamaan, atau pada alamat tanpa kontradiksi);
                          `one_by_one` jika sebaliknya. (Kolom permintaan dengan
                          nama yang sama sudah usang dan diabaikan.)
                      screened_data:
                        type: object
                        description: >-
                          Menampilkan kembali kolom input yang dikirimkan ke
                          layanan yang dipilih (tanggal dinormalisasi ke
                          `YYYY-MM-DD`; `selfie`, jika dikirimkan, dikembalikan
                          sebagai URL yang telah ditandatangani sebelumnya;
                          `consent_obtained: true` ditambahkan jika persetujuan
                          diberikan).
                      match_type:
                        type: string
                        nullable: true
                        enum:
                          - full_match
                          - partial_match
                          - no_match
                        description: >-
                          Hasil keseluruhan yang diagregasi di seluruh layanan
                          dengan perbandingan tingkat kolom: apa pun
                          `full_match` → `full_match`; jika tidak, apa pun
                          `partial_match` → `partial_match`; jika tidak,
                          `no_match`. Layanan yang hanya menghasilkan hasil
                          akhir, seperti skrining kriminal biometrik, dapat
                          mengembalikan `null`; periksa setiap item di
                          `validations` untuk melihat `outcome_code`-nya.
                      validations:
                        description: >-
                          Bentuk bergantung pada `save_api_request`. **`true`
                          (default):** array objek per layanan (`service_id`,
                          `service_name`, `validation`, `outcome_code`,
                          `outcome_detail`, `source_data`). **`false`:** satu
                          objek datar yang menggabungkan hasil tingkat kolom
                          dari semua layanan (`{"full_name": "full_match",
                          ...}`).
                        oneOf:
                          - type: array
                            items:
                              type: object
                              description: >-
                                Hasil validasi per layanan (dikembalikan ketika
                                `save_api_request=true`, yaitu nilai bawaan).
                              properties:
                                service_id:
                                  type: string
                                  description: >-
                                    ID katalog layanan yang menghasilkan hasil
                                    ini (misalnya `bra_cpf`).
                                  example: bra_cpf
                                service_name:
                                  type: string
                                  description: >-
                                    Nama katalog layanan yang mudah dibaca
                                    manusia.
                                  example: Brazil - CPF status check
                                validation:
                                  type: object
                                  description: >-
                                    Perbandingan kolom demi kolom antara input
                                    Anda dan catatan registri. Kuncinya adalah
                                    nama kolom kanonik (`full_name`,
                                    `date_of_birth`, `identification_number`,
                                    `address`, …); nilainya adalah `full_match`,
                                    `partial_match`, atau `no_match`.
                                  additionalProperties:
                                    type: string
                                    enum:
                                      - full_match
                                      - partial_match
                                      - no_match
                                outcome_code:
                                  type: string
                                  enum:
                                    - MATCH
                                    - PARTIAL_MATCH
                                    - NO_MATCH
                                    - DOCUMENT_NOT_FOUND
                                    - INVALID_DOCUMENT_FORMAT
                                    - INVALID_INPUT
                                    - MINOR_BLOCKED
                                    - DECEASED
                                    - BIOMETRIC_NO_MATCH
                                    - BIOMETRIC_IMAGE_UNUSABLE
                                    - INCONCLUSIVE
                                    - DOCUMENT_SUPERSEDED
                                    - REGISTRY_UNAVAILABLE
                                    - REGISTRY_ERROR
                                  description: >-
                                    Hasil pencarian registri yang netral
                                    terhadap vendor.
                                    `MATCH`/`PARTIAL_MATCH`/`NO_MATCH`
                                    mendeskripsikan perbandingan;
                                    `DOCUMENT_NOT_FOUND` berarti
                                    pengidentifikasi tidak ada di dalam
                                    registri; `INCONCLUSIVE` berarti registri
                                    tidak dapat mengonfirmasi salah satunya
                                    (diarahkan ke peninjauan — BUKAN no-match);
                                    `BIOMETRIC_NO_MATCH` adalah ketidakcocokan
                                    wajah yang pasti sedangkan
                                    `BIOMETRIC_IMAGE_UNUSABLE` adalah masalah
                                    teknis gambar (ambil ulang swafoto);
                                    `DECEASED`/`MINOR_BLOCKED` adalah hasil
                                    kebijakan registri; `DOCUMENT_SUPERSEDED`
                                    berarti identitas cocok tetapi edisi dokumen
                                    yang diberikan bukan yang tercatat (edisi
                                    yang lebih baru telah diterbitkan);
                                    `INVALID_DOCUMENT_FORMAT`/`INVALID_INPUT`
                                    berarti registri itu sendiri menolak data
                                    yang dikirimkan;
                                    `REGISTRY_UNAVAILABLE`/`REGISTRY_ERROR`
                                    menunjukkan kegagalan pada sistem hulu.
                                outcome_detail:
                                  type: string
                                  nullable: true
                                  description: >-
                                    Detail status hulu mentah yang mendasari
                                    kode hasil (misalnya kode status HTTP atau
                                    status registri).
                                source_data:
                                  type: object
                                  nullable: true
                                  description: >-
                                    Tampilan catatan registri yang telah
                                    dibersihkan dan dinormalisasi menggunakan
                                    nama kolom kanonikal
                                    (`identification_number`, `first_name`,
                                    `last_name`, `date_of_birth`, ditambah
                                    penanda khusus registri). Kolom gambar, jika
                                    ada, dikembalikan sebagai pre-signed URL.
                          - type: object
                            additionalProperties:
                              type: string
                              enum:
                                - full_match
                                - partial_match
                                - no_match
                            description: >-
                              Hasil per kolom yang digabungkan (bentuk tanpa
                              status `save_api_request=false`).
                      warnings:
                        type: array
                        items:
                          type: object
                          properties:
                            feature:
                              type: string
                              description: Fitur yang memunculkan peringatan.
                            risk:
                              type: string
                              description: Pengidentifikasi risiko yang dapat dibaca mesin.
                            additional_data:
                              type: object
                              nullable: true
                              description: >-
                                Konteks tambahan untuk peringatan, jika
                                tersedia.
                            log_type:
                              type: string
                              description: >-
                                `warning`, `information`, atau `error` —
                                pengaruh risiko terhadap hasilnya.
                            short_description:
                              type: string
                              description: Ringkasan satu baris yang dapat dibaca manusia.
                            long_description:
                              type: string
                              description: Penjelasan lengkap yang dapat dibaca manusia.
                        description: >-
                          `DATABASE_VALIDATION_NO_MATCH` atau
                          `DATABASE_VALIDATION_PARTIAL_MATCH` jika berlaku;
                          kosong pada kecocokan penuh.
                      errors:
                        type: array
                        description: >-
                          Hadir hanya ketika beberapa (tetapi tidak semua)
                          layanan yang dipilih gagal. Setiap entri memuat
                          `service_id`, `code`, `message`, dan `retryable`.
                          Layanan yang dilaporkan di sini tidak ada di
                          `validations` dan `services_used`, serta tidak
                          ditagih. Array ini adalah satu-satunya tempat
                          kemunculannya, jadi periksa array ini bahkan ketika
                          `status` bernilai `Approved`.
                        items:
                          type: object
                          properties:
                            service_id:
                              type: string
                            code:
                              type: string
                              example: empty_provider_response
                            message:
                              type: string
                            retryable:
                              type: boolean
                              description: >-
                                `true` saat layanan tidak menghasilkan jawaban
                                dan mencobanya lagi nanti dapat berhasil;
                                `false` saat sumber menolak data yang dikirim
                                dan input harus diperbaiki terlebih dahulu.
                              example: true
                      services_used:
                        type: array
                        items:
                          type: string
                        description: >-
                          ID katalog dari layanan yang mengembalikan hasil yang
                          dapat ditagihkan. **Hanya ada jika permintaan secara
                          eksplisit mengirimkan `services`.**
                      match_score:
                        type: number
                        description: >-
                          Fraksi (0.0–1.0) dari layanan yang dicoba yang
                          menghasilkan kecocokan penuh (pada nomor identifikasi,
                          pada nama lengkap + tanggal lahir bersama-sama, atau
                          pada alamat tanpa kontradiksi). **Hanya ada jika
                          permintaan secara eksplisit mengirimkan `services`.**
                  vendor_data:
                    type: string
                    nullable: true
                    description: Menampilkan kembali `vendor_data` yang Anda kirimkan.
                  metadata:
                    type: object
                    nullable: true
                    description: Salinan `metadata` yang Anda kirimkan.
                  created_at:
                    type: string
                    format: date-time
              examples:
                Full match (Approved):
                  summary: >-
                    Default save_api_request=true — objek `validations` per
                    layanan
                  value:
                    request_id: 7f9a1c0e-1f2b-4f6e-9d3a-2b1c0e7f9a1c
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        - validation:
                            full_name: full_match
                            date_of_birth: full_match
                            identification_number: full_match
                          outcome_code: MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          source_data:
                            identification_number: '12345678900'
                            first_name: JOHN
                            last_name: DOE
                            date_of_birth: '1980-01-01'
                            lgpd_minor: false
                            minor_under_16: false
                            minor_under_18: false
                      warnings: []
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-11T10:30:00.000000+00:00'
                Explicit services (extended shape):
                  summary: >-
                    Permintaan dengan `services` dikirim — respons menambahkan
                    `services_used` dan `match_score`
                  value:
                    request_id: b3e7c1a2-9d4f-4f0b-8a6c-5e2d1f0a9b3e
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        - validation:
                            full_name: full_match
                            date_of_birth: full_match
                            identification_number: full_match
                          outcome_code: MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          source_data:
                            identification_number: '12345678900'
                            first_name: JOHN
                            last_name: DOE
                            date_of_birth: '1980-01-01'
                            lgpd_minor: false
                            minor_under_16: false
                            minor_under_18: false
                      warnings: []
                      services_used:
                        - bra_cpf
                      match_score: 1
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-11T10:30:00.000000+00:00'
                No match (Declined):
                  summary: >-
                    Catatan registri tidak cocok — default
                    `no_match_action=DECLINE`
                  value:
                    request_id: 0a1b2c3d-4e5f-6789-abcd-ef0123456789
                    database_validation:
                      status: Declined
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: no_match
                      validations:
                        - validation:
                            full_name: no_match
                            date_of_birth: no_match
                            identification_number: no_match
                          outcome_code: NO_MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          source_data:
                            identification_number: '00987654321'
                            first_name: TOTALLY
                            last_name: DIFFERENT NAME
                            date_of_birth: '1999-01-01'
                            lgpd_minor: false
                            minor_under_16: false
                            minor_under_18: false
                      warnings:
                        - feature: DATABASE_VALIDATION
                          risk: DATABASE_VALIDATION_NO_MATCH
                          additional_data: null
                          log_type: error
                          short_description: Database validation no match
                          long_description: >-
                            The system identified a no match in the database
                            validation, requiring further investigation.
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-11T10:31:00.000000+00:00'
                Stateless (save_api_request=false):
                  summary: >-
                    `validations` diciutkan menjadi pemetaan kolom gabungan;
                    tidak ada yang disimpan
                  value:
                    request_id: c4d5e6f7-8901-2345-6789-abcdef012345
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        full_name: full_match
                        date_of_birth: full_match
                        identification_number: full_match
                      warnings: []
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-11T10:32:00.000000+00:00'
        '400':
          description: >-
            Kesalahan validasi - tidak ada yang ditagih. Kesalahan kolom
            preflight terjadi sebelum panggilan eksternal apa pun. Jika setiap
            percobaan yang belum terjawab secara eksplisit menolak input,
            respons akan menyertakan `validation_errors` dengan `code:
            provider_rejected_input` dan `retryable: false`; perbaiki input
            sebelum mencoba lagi. Masalah tingkat kolom menggunakan envelope
            standar DRF; masalah katalog mengembalikan array `services`
            (ditambah `requires_onboarding` atau `services_requiring_consent`
            jika relevan); kesalahan kolom yang hilang menyertakan
            `fields_required_by` yang memetakan setiap kolom yang hilang ke
            layanan yang membutuhkannya; layanan yang memerlukan setidaknya satu
            pengidentifikasi tambahan (misalnya `usa_states_credit_bureau`, yang
            tidak dapat memverifikasi nama saja) mengembalikan
            `any_field_required_by` yang memetakan setiap layanan ke kolom yang
            setidaknya salah satunya harus ada; masalah format yang diperiksa
            per layanan mengembalikan `invalid_fields_by_service`.
          content:
            application/json:
              examples:
                Invalid issuing_state:
                  summary: >-
                    Negara tidak didukung — pesan mencantumkan setiap kode
                    alpha-3 yang valid
                  value:
                    error:
                      - >-
                        Invalid issuing state. Valid options are: ARE, ARG, AUS,
                        AUT, BEL, BGD, BOL, BRA, CAN, CHE, CHL, CHN, CIV, COL,
                        CRI, CZE, DEU, DNK, DOM, ECU, ESP, FIN, FRA, GBR, GHA,
                        GLB, GRC, GTM, HKG, HND, IDN, IND, IRL, ITA, KEN, KHM,
                        MAR, MEX, MYS, NGA, NLD, NOR, NZL, OMN, PAN, PER, PHL,
                        POL, PRT, PRY, QAT, SGP, SLV, SVK, SWE, THA, UGA, URY,
                        USA, VEN, ZAF, ZMB, ZWE
                Missing required fields:
                  summary: >-
                    Gabungan kolom yang wajib diisi di seluruh layanan yang
                    dipilih, dengan petunjuk kolom universal
                  value:
                    error:
                      - >-
                        Missing required fields: tax_number (or use
                        'identification_number' which maps to 'tax_number' for
                        BRA)
                    fields_required_by:
                      tax_number:
                        - bra_cpf
                Unknown service id:
                  summary: '`services` memuat id yang tidak ada di dalam katalog'
                  value:
                    services:
                      - 'Unknown service_id(s): [''bogus_service'']'
                Service not live for country:
                  summary: >-
                    `services` menyebutkan layanan dari negara lain (atau entri
                    sementara)
                  value:
                    services:
                      - >-
                        Services not currently live for PER: ['bra_cpf'].
                        Available services: ['per_dni', 'per_residential',
                        'per_tax_registration']
                Service requires onboarding:
                  summary: Layanan ada tetapi belum diaktifkan untuk organisasi Anda
                  value:
                    services:
                      - >-
                        Services require onboarding before they can be enabled
                        for AUS: ['aus_australia_driver_licence']. Contact Didit
                        support to activate them.
                    requires_onboarding:
                      - aus_australia_driver_licence
                Consent missing:
                  summary: >-
                    Layanan yang dipilih ditandai requires_consent=true dan
                    `consent` tidak bernilai `true`
                  value:
                    consent:
                      - >-
                        Explicit end-user consent is required for these database
                        validation services: ['chn_national_id']. Send
                        `consent=true`.
                    services_requiring_consent:
                      - chn_national_id
                Country format rule violation:
                  summary: >-
                    Pengenal tidak memenuhi aturan format negara
                    (panjang/digit/regex)
                  value:
                    tax_number:
                      - >-
                        Invalid tax number for BRA: Brazilian CPF (exactly 11
                        digits). Must be exactly 11 characters long (got 10).
                Service-specific format violation:
                  summary: >-
                    Kolom tidak memenuhi persyaratan format dari layanan yang
                    dipilih
                  value:
                    error:
                      - >-
                        One or more fields do not match the format required by
                        the selected service.
                    invalid_fields_by_service:
                      chn_national_id:
                        - national_id_format
                Input refused by every attempt:
                  summary: Koreksi input sebelum mencoba lagi
                  value:
                    error: >-
                      The source refused to run this query with the supplied
                      input.
                    validation_errors:
                      - service_id: bra_cpf
                        code: provider_rejected_input
                        message: >-
                          The source refused to run this query with the supplied
                          input.
                        retryable: false
              schema:
                type: object
                additionalProperties: true
                properties:
                  error:
                    description: >-
                      Penjelasan pada tingkat permintaan atau kesalahan kolom
                      pra-pemeriksaan.
                    oneOf:
                      - type: string
                      - type: array
                        items:
                          type: string
                  validation_errors:
                    type: array
                    description: >-
                      Hadir ketika setiap upaya yang tidak terjawab menolak
                      input setelah preflight.
                    items:
                      type: object
                      properties:
                        service_id:
                          type: string
                        code:
                          type: string
                        message:
                          type: string
                        retryable:
                          type: boolean
                          description: >-
                            Menentukan apakah mencoba lagi nanti dapat
                            menyelesaikan kegagalan layanan ini. False berarti
                            perbaiki input yang diberikan terlebih dahulu.
        '403':
          description: >-
            Izin ditolak. Dikembalikan ketika header `x-api-key` tidak ada, dan
            juga ketika saldo organisasi pemanggil tidak dapat mencukupi biaya
            panggilan tersebut; kunci yang salah, dicabut, atau kedaluwarsa
            mengembalikan `401`. Kunci yang tidak ada mengembalikan `403` dengan
            `{"detail": ...}`; kunci yang salah, dicabut, atau kedaluwarsa
            mengembalikan `401`. Kekurangan kredit mengembalikan `403` dengan
            `{"error": ...}` sebelum skrining atau panggilan penyedia apa pun
            terjadi.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: >-
                    Tidak ada header `x-api-key`, atau kuncinya tidak
                    valid/dicabut
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: Saldo organisasi tidak mencukupi untuk panggilan ini
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            Batas laju terlampaui. Endpoint POST/PATCH/DELETE berbagi anggaran
            300 permintaan penulisan per menit per kunci API (pembuatan
            transaksi dan ingesti event memiliki anggaran terpisah sebesar 600).
            Respons menyertakan header `X-RateLimit-Limit`,
            `X-RateLimit-Remaining`, `X-RateLimit-Reset`, dan `Retry-After`.
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: Lebih dari 300 permintaan tulis pada menit ini
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
              schema:
                type: object
                properties:
                  detail:
                    type: string
        '502':
          description: >-
            Tidak ada layanan yang dipilih mengembalikan hasil yang dapat
            digunakan. Periksa setiap entri validation_errors sebelum mencoba
            lagi; HTTP 502 saja tidak menunjukkan kegagalan sementara.
            empty_provider_response dengan retryable: true menunjukkan hasil
            yang tidak tersedia atau tidak dapat dijelaskan, termasuk layanan
            utama yang ditolak diikuti oleh fallback yang tidak tersedia. Entri
            lama provider_invalid_input dan provider_validation_error justru
            memerlukan input yang dikoreksi dan mungkin tidak menyertakan
            retryable. Tidak ada yang ditagihkan. Jika save_api_request=true,
            upaya yang gagal dicatat sebagai sesi dengan status Not Finished.
            Kegagalan parsial mengembalikan 200 dengan
            database_validation.errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  validation_errors:
                    type: array
                    items:
                      type: object
                      properties:
                        service_id:
                          type: string
                        code:
                          type: string
                        message:
                          type: string
                        retryable:
                          type: boolean
                          description: >-
                            Menentukan apakah mencoba lagi nanti dapat
                            menyelesaikan kegagalan layanan ini. False berarti
                            perbaiki input yang diberikan terlebih dahulu.
              examples:
                Provider returned no result:
                  summary: Setiap layanan yang dipilih gagal
                  value:
                    error: >-
                      Database validation could not be performed. The external
                      validation service did not return a result. Please try
                      again later.
                    validation_errors:
                      - service_id: bra_cpf
                        code: empty_provider_response
                        message: >-
                          The provider did not return a database validation
                          result.
                        retryable: true
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/database-validation/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "issuing_state": "BRA",
                "services": ["bra_cpf"],
                "identification_number": "12345678900",
                "first_name": "John",
                "last_name": "Doe",
                "date_of_birth": "1980-01-01",
                "vendor_data": "user-1234"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.database_validation.validate(
                issuing_state="BRA",
                services=["bra_cpf"],
                identification_number="12345678900",
                first_name="John",
                last_name="Doe",
                date_of_birth="1980-01-01",
                vendor_data="user-1234",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.databaseValidation.validate({
              issuing_state: "BRA",
              services: ["bra_cpf"],
              identification_number: "12345678900",
              first_name: "John",
              last_name: "Doe",
              date_of_birth: "1980-01-01",
              vendor_data: "user-1234",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{\n\tIssuingState:         \"BRA\",\n\tServices:             didit.Some([]string{\"bra_cpf\"}),\n\tIdentificationNumber: didit.String(\"12345678900\"),\n\tFirstName:            didit.String(\"John\"),\n\tLastName:             didit.String(\"Doe\"),\n\tDateOfBirth:          didit.String(\"1980-01-01\"),\n\tVendorData:           didit.String(\"user-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.time.LocalDate;

            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.DatabaseValidationValidateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
                    .issuingState("BRA")
                    .services(List.of("bra_cpf"))
                    .identificationNumber("12345678900")
                    .firstName("John")
                    .lastName("Doe")
                    .dateOfBirth(LocalDate.parse("1980-01-01"))
                    .vendorData("user-1234")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->databaseValidation->validate([
                'issuing_state' => 'BRA',
                'services' => ['bra_cpf'],
                'identification_number' => '12345678900',
                'first_name' => 'John',
                'last_name' => 'Doe',
                'date_of_birth' => '1980-01-01',
                'vendor_data' => 'user-1234',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.database_validation.validate(
              issuing_state: "BRA",
              services: ["bra_cpf"],
              identification_number: "12345678900",
              first_name: "John",
              last_name: "Doe",
              date_of_birth: "1980-01-01",
              vendor_data: "user-1234"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.DatabaseValidation.ValidateAsync(new
            DatabaseValidationValidateParams

            {
                IssuingState = "BRA",
                Services = new string[] { "bra_cpf" },
                IdentificationNumber = "12345678900",
                FirstName = "John",
                LastName = "Doe",
                DateOfBirth = "1980-01-01",
                VendorData = "user-1234",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.