> ## 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.

# Verifikasi SIM Afrika Selatan - API Validasi Database

> Verifikasi SIM Afrika Selatan lewat Didit: pencarian database resmi, mulai $0.80 per panggilan. Tanpa kontrak, tanpa minimum.

Memverifikasi lisensi mengemudi Afrika Selatan terhadap register NATIS / Department of Transport. Didit menyediakan layanan ini melalui `POST /v3/database-validation/` agar Anda dapat memverifikasi data yang dikirim terhadap sumber resmi dan menerima hasil kecocokan yang sudah dinormalisasi.

## Cakupan

* **Cakupan:** —
* **Negara:** Afrika Selatan
* **ID layanan:** `zaf_drivers_license`
* **Domain data:** Identitas
* **Kategori:** DriverLicence

## Input

| Kolom | Wajib | Contoh |
| - | -: | - |
| `national_id` | Ya | `SAMPLE-NID-12345` |
| `last_name` | Ya | `Doe` |
| `initials` | Ya | `JD` |
| `licence_number` | Ya | `LIC123456` |
| `first_name` | Tidak | `John` |
| `date_of_birth` | Tidak | `1990-01-01` |
| `vendor_data` | Tidak | `user-1234` |

* **Input wajib:** `national_id`, `last_name`, `initials`, `licence_number`
* **Input opsional:** `first_name`, `date_of_birth`, `vendor_data`
* **Persetujuan:** Tidak diperlukan
* **Ketersediaan di alur kerja:** Tersedia di alur kerja dengan pemetaan kolom
* **Cakupan:** —
* **Harga:** \$0.80 per kueri yang berhasil

Dalam alur kerja, `initials` dan `licence_number` tidak tercetak pada dokumen identitas, sehingga tidak ada langkah yang menghasilkannya sendiri. Kumpulkan keduanya dari jawaban Kuesioner, kolom hasil ekstraksi Document AI, atau nilai yang Anda kirim saat membuat sesi, lalu petakan masing-masing pada langkah Validasi Database. Sampai keduanya dipetakan, editor alur kerja menonaktifkan layanan ini dan menyebutkan input yang belum ada. Saat dijalankan, input yang hilang membuat pemeriksaan dilewati sebelum kueri apa pun, sehingga Anda tidak pernah ditagih untuk database yang tidak dapat dikueri.

## Parameter body

**issuing\_state** `string` *required* (default: ZAF)

Kode negara ISO 3166-1 alpha-3 untuk layanan database ini.

Contoh: `ZAF`

**services** `string` *required* (default: zaf\_drivers\_license)

Array yang berisi ID layanan ini. Menyematkan layanan menjaga permintaan tetap terbatas pada database yang tepat ini.

Contoh: `zaf_drivers_license`

**national\_id** `string` *required* (default: SAMPLE-NID-12345)

Nomor identitas nasional untuk layanan ini.

Contoh: `SAMPLE-NID-12345`

**last\_name** `string` *required* (default: Doe)

Nama keluarga yang akan divalidasi.

Contoh: `Doe`

**initials** `string` *required* (default: JD)

Nilai `initials` yang diwajibkan oleh layanan database ini.

Contoh: `JD`

**licence\_number** `string` *required* (default: LIC123456)

Nilai `licence_number` yang diwajibkan oleh layanan database ini.

Contoh: `LIC123456`

**first\_name** `string`

Nama depan yang akan divalidasi.

Contoh: `John`

**date\_of\_birth** `string`

Tanggal lahir dalam format `YYYY-MM-DD`.

Contoh: `1990-01-01`

**vendor\_data** `string` (default: user-1234)

Referensi pengguna tetap Anda untuk orang ini, misalnya ID pengguna internal Anda. Didit menggunakannya untuk menautkan pemeriksaan terpisah ke pengguna akhir yang sama dan mengurangi gangguan deteksi duplikat.

Contoh: `user-1234`

## Aturan input & catatan validasi

* Kirimkan kolom yang tercantum di atas persis seperti yang diambil dari pengguna atau dokumen.
* Didit memvalidasi kolom wajib sebelum memanggil database. Permintaan yang ditolak sebelum pencarian ke sumber tidak dikenai biaya.

## Cara memanggil

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=ZAF" \
  -F "services=zaf_drivers_license" \
  -F "vendor_data=user-1234" \
  -F "national_id=SAMPLE-NID-12345" \
  -F "last_name=Doe" \
  -F "initials=JD" \
  -F "licence_number=LIC123456"
```

Setiap panggilan yang berhasil mengembalikan HTTP `200`. Kolom **`outcome_code`** menunjukkan apa yang sebenarnya terjadi, misalnya membedakan ketidakcocokan biometrik nyata (`BIOMETRIC_NO_MATCH`) dari swafoto yang tidak dapat dibaca (`BIOMETRIC_IMAGE_UNUSABLE`). `status` yang ditampilkan adalah status fitur default; [tindakan Partial Match / No Match](https://docs.didit.me/id/core-technology/database-validation/database-validation-warnings.md) yang Anda konfigurasi dapat menggantinya.

**`MATCH`**: Register mengembalikan catatan lisensi untuk nomor lisensi ini dan detail yang dikirim cocok dengannya.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "ZAF",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "zaf_drivers_license",
      "service_name": "South Africa - Driving License Verification",
      "source_data": {
        "expiration_date": "2030-05-31",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "vehicle_codes": "EB"
      },
      "validation": {
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: Register mencari lisensi tersebut dan melaporkannya sebagai tidak berlaku. Tindakan no-match Anda berlaku.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "ZAF",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "zaf_drivers_license",
      "service_name": "South Africa - Driving License Verification",
      "source_data": {
        "licence_valid": false
      },
      "validation": {}
    }
  ]
}
```

**`INCONCLUSIVE`**: Register menerima kueri tetapi tidak mengembalikan catatan lisensi yang dapat digunakan untuk membandingkan detail yang dikirim, sehingga tidak ada informasi lisensi yang terkonfirmasi dan pemeriksaan dikirim ke peninjauan, termasuk ketika layanan lain dalam permintaan yang sama mencocokkan orang tersebut.

```json 200 OK — INCONCLUSIVE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "ZAF",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "INCONCLUSIVE",
      "service_id": "zaf_drivers_license",
      "service_name": "South Africa - Driving License Verification",
      "source_data": {
        "licence_valid": true
      },
      "validation": {}
    }
  ]
}
```

## Data yang dikembalikan

Kolom yang ditampilkan secara tepat dalam `source_data` bergantung pada apa yang dikembalikan registri. Contoh yang dihasilkan untuk `zaf_drivers_license` saat ini mendokumentasikan bentuk ternormalisasi berikut:

* `expiration_date`
* `first_name`
* `identification_number`
* `last_name`
* `licence_valid`
* `vehicle_codes`

## Harga & SLA

Kueri Verifikasi Lisensi Mengemudi Afrika Selatan hanya ditagih ketika Didit menerima hasil yang pasti dari sumber validasi.

* **Harga per panggilan:** \$0.80 USD.
* **Penagihan:** per kueri yang berhasil. Anda tidak ditagih ketika registri tidak dapat dijangkau, ketika kolom wajib hilang, atau ketika permintaan ditolak sebelum mencapai sumber.
* **Latensi:** p95 tipikal \< 2 s.
* **Ketersediaan:** 99.9% per kuartal di sisi Didit; ketersediaan sumber hilir bervariasi menurut negara dan dataset.

## Arti setiap hasil

Pemeriksaan ini meminta registri lisensi mengemudi untuk mencari nomor lisensi yang Anda kirim, beserta nomor ID Afrika Selatan, nama belakang, dan inisial. Hasilnya bergantung pada apa yang dikembalikan registri:

* **`MATCH`** - registri mengembalikan catatan lisensi untuk nomor lisensi ini, dan detail yang Anda kirim cocok dengannya. `source_data` berisi catatan tersebut: `identification_number` (nomor lisensi), `first_name` dan `last_name`, `vehicle_codes` (kelas lisensi, misalnya `EB`, `C1`), dan `expiration_date` (tanggal kedaluwarsa kartu lisensi).
* **`INCONCLUSIVE`** - registri menerima kueri tetapi tidak mengembalikan catatan lisensi, sehingga tidak ada yang bisa dibandingkan dengan detail yang Anda kirim. `source_data.licence_valid` bernilai `true`, `validation` kosong, dan `match_type` bernilai `null`. Tidak ada aspek lisensi yang terkonfirmasi, sehingga pemeriksaan dikirim untuk peninjauan. Hal ini juga berlaku ketika layanan lain dalam permintaan yang sama, misalnya pemeriksaan ID nasional, mencocokkan orangnya, karena itu hanya mengonfirmasi orangnya, bukan lisensinya.
* **`NO_MATCH`** - registri mencari lisensi tersebut dan melaporkannya sebagai tidak valid (`source_data.licence_valid: false`). Tindakan no-match Anda berlaku.
* **`REGISTRY_ERROR`** - registri tidak menjalankan pencarian, sehingga tidak ada yang bisa dipastikan tentang lisensi. Pemeriksaan dikirim untuk peninjauan dan tidak ditagih.

**Yang tidak pernah dikembalikan.** Tidak ada kolom untuk penangguhan, pembatalan, penarikan, catatan tambahan, atau poin pelanggaran. Karena itu, bahkan `MATCH` tidak boleh disampaikan kepada pengguna Anda dengan kalimat "lisensinya valid dan dalam kondisi baik". `expiration_date`, jika dikembalikan oleh registri, adalah satu-satunya fakta yang berkaitan dengan status lisensi yang Anda terima. Bandingkan dengan tanggal sesi untuk menentukan apakah lisensi sudah kedaluwarsa, dan perlakukan itu sebagai aturan Anda sendiri, bukan bagian dari hasil pencocokan.

Jika Anda perlu mencantumkan ini dalam syarat dan ketentuan, tulis seperti ini: Didit memeriksa detail lisensi terhadap registri nasional dan, ketika registri mengembalikan catatan lisensi, kelas serta tanggal kedaluwarsanya - bukan bahwa Didit memastikan pemegang lisensi berhak mengemudi saat ini.

## Lanjut membaca

* [Ikhtisar Validasi Database Afrika Selatan](https://docs.didit.me/api-reference/database-validation/south-africa.md)
* [Ikhtisar Validasi Database](https://docs.didit.me/id/core-technology/database-validation/overview.md)
* [Kode Hasil](https://docs.didit.me/id/core-technology/database-validation/database-validation-outcome-codes.md)


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