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

# Verifica patente di guida Sudafrica - API Didit

> Verifica della patente di guida sudafricana su database ufficiale con Didit. Da $0.80 a chiamata, senza contratti né minimi.

Verifica una patente di guida sudafricana rispetto al registro NATIS / del Dipartimento dei Trasporti. Didit espone questo servizio tramite `POST /v3/database-validation/` per confrontare i dati inviati con la fonte ufficiale e ricevere risultati di corrispondenza normalizzati.

## Copertura

* **Copertura:** —
* **Paese:** Sudafrica
* **ID servizio:** `zaf_drivers_license`
* **Dominio dei dati:** Identità
* **Categoria:** DriverLicence

## Input

| Campo | Obbligatorio | Esempio |
| - | -: | - |
| `national_id` | Sì | `SAMPLE-NID-12345` |
| `last_name` | Sì | `Doe` |
| `initials` | Sì | `JD` |
| `licence_number` | Sì | `LIC123456` |
| `first_name` | No | `John` |
| `date_of_birth` | No | `1990-01-01` |
| `vendor_data` | No | `user-1234` |

* **Input obbligatori:** `national_id`, `last_name`, `initials`, `licence_number`
* **Input facoltativi:** `first_name`, `date_of_birth`, `vendor_data`
* **Consenso:** non richiesto
* **Disponibilità nel workflow:** disponibile nel workflow con mappatura dei campi
* **Copertura:** —
* **Prezzo:** \$0.80 per query riuscita

In un workflow, `initials` e `licence_number` non sono stampati su un documento di identità, quindi nessun passaggio li produce da solo. Raccoglili da una risposta a un Questionario, da un campo estratto tramite Document AI, oppure da un valore che invii al momento della creazione della sessione, e mappa ciascuno di essi nel passaggio di Validazione su database. Finché non sono mappati, l'editor del workflow mostra questo servizio disabilitato e indica l'input mancante. In fase di esecuzione, un input mancante fa sì che il controllo venga saltato prima di qualsiasi query, quindi non ti viene mai addebitato alcun costo per un database che non è stato possibile interrogare.

## Parametri del corpo

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

Codice paese ISO 3166-1 alpha-3 per questo servizio di database.

Esempio: `ZAF`

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

Array che contiene l'ID di questo servizio. Fissare il servizio mantiene la richiesta limitata a questo specifico database.

Esempio: `zaf_drivers_license`

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

Numero di identità nazionale per questo servizio.

Esempio: `SAMPLE-NID-12345`

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

Cognome da validare.

Esempio: `Doe`

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

Valore di `initials` richiesto da questo servizio di database.

Esempio: `JD`

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

Valore di `licence_number` richiesto da questo servizio di database.

Esempio: `LIC123456`

**first\_name** `string`

Nome da validare.

Esempio: `John`

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

Data di nascita nel formato `YYYY-MM-DD`.

Esempio: `1990-01-01`

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

Il tuo riferimento stabile per questa persona, ad esempio il tuo ID utente interno. Didit lo usa per collegare i controlli autonomi allo stesso utente finale e ridurre il rumore nel rilevamento dei duplicati.

Esempio: `user-1234`

## Regole sugli input e note di validazione

* Invia i campi elencati sopra esattamente come sono stati acquisiti dall'utente o dal documento.
* Didit valida i campi obbligatori prima di interrogare il database. Le richieste rifiutate prima della ricerca nella fonte non vengono addebitate.

## Come effettuare la chiamata

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

Ogni chiamata riuscita restituisce HTTP `200`. Il campo **`outcome_code`** indica cosa è effettivamente successo, distinguendo ad esempio una vera mancata corrispondenza biometrica (`BIOMETRIC_NO_MATCH`) da un selfie non leggibile (`BIOMETRIC_IMAGE_UNUSABLE`). Lo `status` mostrato è lo stato predefinito della funzionalità; le [azioni configurate per la corrispondenza parziale / la mancata corrispondenza](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings.md) possono sostituirlo.

**`MATCH`**: il registro ha restituito un record della patente per questo numero di patente e i dati inviati corrispondono.

```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`**: il registro ha cercato la patente e l'ha segnalata come non valida. Si applica la tua azione per la mancata corrispondenza.

```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`**: il registro ha accettato la query ma non ha restituito alcun record della patente con cui confrontare i dati inviati, quindi nulla della patente è confermato e il controllo viene inviato in revisione, anche quando un altro servizio della stessa richiesta ha dato una corrispondenza con la persona.

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

## Dati restituiti

I campi esatti esposti in `source_data` dipendono da ciò che restituisce il registro. Lo schema generato per `zaf_drivers_license` documenta attualmente questa struttura normalizzata:

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

## Prezzi e SLA

Le query di verifica della patente di guida sudafricana vengono fatturate solo quando Didit riceve un risultato conclusivo dalla fonte di validazione.

* **Prezzo per chiamata:** \$0.80 USD.
* **Fatturazione:** per query riuscita. Non ti viene addebitato nulla quando il registro non è raggiungibile, quando mancano campi obbligatori o quando la richiesta viene rifiutata prima di raggiungere la fonte.
* **Latenza:** p95 tipico \< 2 s.
* **Disponibilità:** 99.9% per trimestre da parte di Didit; la disponibilità della fonte a valle varia in base al paese e al dataset.

## Significato di ciascun esito

Questo controllo interroga il registro delle patenti di guida con il numero di patente che invii, insieme al numero di identità sudafricano, al cognome e alle iniziali. L'esito dipende da ciò che restituisce il registro:

* **`MATCH`** - il registro ha restituito un record della patente per questo numero di patente e i dati inviati corrispondono. `source_data` contiene il record: `identification_number` (il numero di patente), `first_name` e `last_name`, `vehicle_codes` (le categorie della patente, ad esempio `EB`, `C1`) e `expiration_date` (la data di scadenza della tessera della patente).
* **`INCONCLUSIVE`** - il registro ha accettato la richiesta ma non ha restituito alcun record della patente, quindi non c'era nulla con cui confrontare i dati inviati. `source_data.licence_valid` è `true`, `validation` è vuoto e `match_type` è `null`. Non viene confermato alcun aspetto della patente, quindi il controllo viene inviato a revisione, anche quando un altro servizio nella stessa richiesta, come il controllo del documento d'identità nazionale, ha trovato una corrispondenza per la persona, perché questo conferma la persona e non la patente.
* **`NO_MATCH`** - il registro ha cercato la patente e l'ha segnalata come non valida (`source_data.licence_valid: false`). Si applica la tua azione per il caso di mancata corrispondenza.
* **`REGISTRY_ERROR`** - il registro non ha eseguito la ricerca, quindi nulla è stato accertato sulla patente. Il controllo viene inviato a revisione e non viene fatturato.

**Cosa non viene mai restituito.** Non esiste alcun campo per sospensione, revoca, ritiro, annotazioni o punti di penalizzazione, quindi anche un `MATCH` non deve essere presentato agli utenti come "la patente è valida e in regola". `expiration_date`, quando il registro lo restituisce, è l'unico dato che ottieni rilevante ai fini dello stato della patente: confrontalo con la data della sessione per stabilire se la patente è scaduta, e considera questa verifica una regola tua e non parte dell'esito di corrispondenza.

Se devi indicarlo nei termini e condizioni, formulalo così: Didit verifica i dati della patente nel registro nazionale e, quando il registro restituisce un record della patente, le sue categorie e la data di scadenza, non che Didit confermi che il titolare sia abilitato a guidare oggi.

## Continua a leggere

* [Panoramica della Validazione su database per il Sudafrica](https://docs.didit.me/api-reference/database-validation/south-africa.md)
* [Panoramica della Validazione su database](https://docs.didit.me/it/core-technology/database-validation/overview.md)
* [Codici di esito](https://docs.didit.me/it/core-technology/database-validation/database-validation-outcome-codes.md)


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