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

# 南アフリカ運転免許証認証API

> Diditで南アフリカの公的データベースを照会し、運転免許証を認証できます。従量課金で$0.80から。契約不要、最低利用額なし。

南アフリカの運転免許証を、NATIS / Department of Transportの登録簿と照合して検証します。Diditはこのサービスを`POST /v3/database-validation/`で提供しており、送信されたデータを公式の情報源と照合して、正規化された照合結果を受け取れます。

## 対象範囲

* **対象範囲：** -
* **国：** 南アフリカ
* **サービスID：** `zaf_drivers_license`
* **データドメイン：** アイデンティティ
* **カテゴリ：** DriverLicence

## 入力

| フィールド | 必須 | 例 |
| - | -: | - |
| `national_id` | はい | `SAMPLE-NID-12345` |
| `last_name` | はい | `Doe` |
| `initials` | はい | `JD` |
| `licence_number` | はい | `LIC123456` |
| `first_name` | いいえ | `John` |
| `date_of_birth` | いいえ | `1990-01-01` |
| `vendor_data` | いいえ | `user-1234` |

* **必須入力：** `national_id`、`last_name`、`initials`、`licence_number`
* **任意入力：** `first_name`、`date_of_birth`、`vendor_data`
* **同意：** 不要
* **ワークフローでの利用：** フィールドマッピングを設定すればワークフローで利用可能
* **対象範囲：** -
* **料金：** 成功したクエリ1件あたり\$0.80

ワークフローでは、`initials`と`licence_number`は身分証明書に記載されていないため、これらを自動的に取得するステップはありません。アンケートの回答、Document AIの抽出フィールド、またはセッション作成時に送信する値から取得し、データベース検証ステップでそれぞれをマッピングしてください。マッピングが完了するまで、ワークフローエディターではこのサービスが無効と表示され、不足している入力が示されます。実行時に入力が不足している場合は、クエリを送る前にチェックがスキップされるため、照会できなかったデータベースについて請求されることはありません。

## ボディパラメーター

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

このデータベースサービスのISO 3166-1 alpha-3形式の国コードです。

例: `ZAF`

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

このサービスIDを含む配列です。サービスを固定することで、リクエストの対象をこのデータベースだけに限定できます。

例: `zaf_drivers_license`

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

このサービスで使用する国民識別番号です。

例: `SAMPLE-NID-12345`

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

検証する姓です。

例: `Doe`

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

このデータベースサービスで必須の`initials`の値です。

例: `JD`

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

このデータベースサービスで必須の`licence_number`の値です。

例: `LIC123456`

**first\_name** `string`

検証する名です。

例: `John`

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

`YYYY-MM-DD`形式の生年月日です。

例: `1990-01-01`

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

社内のユーザーIDなど、この人物を一貫して識別するユーザー参照値です。Diditはこの値を使って単体のチェックを同じエンドユーザーに紐付け、重複検知のノイズを減らします。

例: `user-1234`

## 入力ルールと検証に関する注意事項

* 上記のフィールドは、ユーザーまたは書類から取得したとおりに送信してください。
* Diditはデータベースに照会する前に必須フィールドを検証します。情報源への照会前に拒否されたリクエストは課金されません。

## 呼び出し方法

```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"
```

成功した呼び出しはすべてHTTP `200`を返します。実際に何が起きたかは**`outcome_code`**フィールドでわかります。たとえば、実際の生体認証の不一致（`BIOMETRIC_NO_MATCH`）と、読み取れなかったセルフィー（`BIOMETRIC_IMAGE_UNUSABLE`）を区別できます。表示される`status`はデフォルトの機能ステータスであり、設定した[部分一致/不一致時のアクション](https://docs.didit.me/ja/core-technology/database-validation/database-validation-warnings.md)によって上書きされる場合があります。

**`MATCH`**：登録簿がこの免許証番号に該当する免許証の記録を返し、送信された詳細情報がその記録と一致しました。

```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`**：登録簿が免許証を検索し、有効ではないと報告しました。不一致時のアクションが適用されます。

```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`**：登録簿はクエリを受け付けましたが、送信された詳細情報と比較できる免許証の記録を返しませんでした。そのため免許証について確認できた事項はなく、チェックはレビューに回されます。同じリクエスト内の別のサービスで本人が一致した場合も同様です。

```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": {}
    }
  ]
}
```

## 返却されるデータ

`source_data`に含まれる具体的なフィールドは、登録機関が返す内容によって異なります。`zaf_drivers_license`の生成例では、現在次の正規化された形式が記載されています。

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

## 料金とSLA

南アフリカ - 運転免許証検証のクエリは、Diditが検証元から確定的な結果を受け取った場合にのみ課金されます。

* **1回あたりの料金：** \$0.80 USD。
* **請求：** 成功したクエリ1件ごと。登録機関に接続できない場合、必須フィールドが不足している場合、またはリクエストが情報源に到達する前に拒否された場合は課金されません。
* **レイテンシ：** 通常、p95は2秒未満。
* **可用性：** Didit側で四半期あたり99.9%。下流の情報源の可用性は国やデータセットによって異なります。

## 各結果の意味

このチェックでは、送信された免許証番号を、南アフリカのID番号、姓、イニシャルとともに運転免許登録簿に照会します。結果は登録簿が返す内容によって決まります。

* **`MATCH`**：登録簿がこの免許証番号の免許記録を返し、送信された情報がその記録と一致しました。`source_data`には次の記録が含まれます。`identification_number`（免許証番号）、`first_name`と`last_name`、`vehicle_codes`（免許の種別。例：`EB`、`C1`）、`expiration_date`（免許証カードの有効期限）。
* **`INCONCLUSIVE`**：登録簿は照会を受け付けましたが、免許記録を返さなかったため、送信された情報と比較する対象がありませんでした。`source_data.licence_valid`は`true`、`validation`は空、`match_type`は`null`です。免許については何も確認されていないため、チェックはレビューに回されます。同じリクエスト内の別のサービス（国民IDチェックなど）が本人を確認できた場合も同様です。それは本人を確認するものであり、免許を確認するものではないためです。
* **`NO_MATCH`**：登録簿が免許を検索し、有効でないと報告しました（`source_data.licence_valid: false`）。不一致時のアクションが適用されます。
* **`REGISTRY_ERROR`**：登録簿が検索を実行しなかったため、免許について何も確定していません。チェックはレビューに回され、請求は発生しません。

**返されない情報**：停止、取消、撤回、裏書、減点に関するフィールドはありません。そのため、`MATCH`であっても、ユーザーに「免許は有効で、問題のない状態です」と伝えてはいけません。登録簿が`expiration_date`を返す場合、それが免許の状態に関連して得られる唯一の情報です。セッションの日付と比較して免許の有効期限が切れているかを判断し、それを一致結果の一部ではなく、独自のルールとして扱ってください。

利用規約でこの点を記載する必要がある場合は、次のように表現してください。Diditは免許情報を国の登録簿と照合し、登録簿が免許記録を返した場合はその種別と有効期限も確認します。「Diditが保有者に現時点で運転する資格があることを確認する」という表現は使わないでください。

## 関連ページ

* [南アフリカのデータベース検証の概要](https://docs.didit.me/api-reference/database-validation/south-africa.md)
* [データベース検証の概要](https://docs.didit.me/ja/core-technology/database-validation/overview.md)
* [結果コード](https://docs.didit.me/ja/core-technology/database-validation/database-validation-outcome-codes.md)


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