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

# Report di validazione su database: risposta JSON

> Analizza i report di validazione su database Didit: dati di registro, punteggi di confronto facciale e codici di avviso. Da $0.05 per chiamata.

La funzionalità di [Validazione su database](https://docs.didit.me/it/core-technology/database-validation/overview.md) di Didit confronta i dati di identità di ciascun utente con la fonte autorevole di quel paese — RENAPER (Argentina), Receita Federal (Brasile), Tribunal Electoral (Panama, con confronto facciale biometrico), Junta Central Electoral (Repubblica Dominicana) e altri — fatturata per interrogazione riuscita senza minimi mensili.

Ogni voce in `database_validations[]` corrisponde a un report completo di Validazione su database: una singola esecuzione di un nodo di Validazione su database rispetto a un paese di emissione. Gli esiti dei singoli servizi di registro si trovano all'interno del sotto-array `validations[]` di tale voce. Questa pagina documenta la struttura JSON per consentirti di analizzare gli esiti di corrispondenza, i dati di origine del registro e i punteggi biometrici restituiti da ciascun servizio.

![Report di validazione su database di Didit che mostra i tipi di corrispondenza e i campi di risposta del registro](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/database-validation-report.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=56284966659e33d1c74385647537e5d9)

## Panoramica

Un report di Validazione su database viene generato ogni volta che un nodo del workflow esegue la funzionalità di Validazione su database. Ciascuna voce nell'array `database_validations[]` rappresenta **un'esecuzione del nodo** rispetto a **un paese di emissione**; se il nodo esegue più servizi per quel paese (ad esempio CPF + CNH in Brasile), ciascun servizio compare come elemento separato all'interno del sotto-array `validations[]` della voce. Ciascun report contiene:

* Lo `status` complessivo della funzionalità: un valore di [`FeatureStatusChoices`](https://docs.didit.me/it/reference/data-models#riferimento-agli-enum-di-stato) (`Not Finished`, `Approved`, `Declined`, `In Review`).
* Un `match_type` riepilogativo (`full_match`, `partial_match`, `no_match`, oppure `null` quando nessun servizio ha restituito un risultato utilizzabile) aggregato tra i servizi tramite il [metodo di corrispondenza](https://docs.didit.me/it/core-technology/database-validation/database-validation-matching-methods.md).
* L'`issuing_state` (ISO 3166-1 alpha-3) e il `validation_type` derivato (`one_by_one`, `two_by_two` o `not_enabled` — mai `null`).
* Il blocco `screened_data`: i dati forniti dall'utente che sono stati inviati al registro.
* Un array `validations[]`: una voce per ogni servizio che ha prodotto un risultato, con i campi di catalogo `service_id`/`service_name`, il codice indipendente dal fornitore `outcome_code`, un campo facoltativo `outcome_detail`, la mappa `validation` per singolo campo e i dati ripuliti `source_data` estratti dalla risposta del registro.
* Un array `errors[]`: errori per singolo servizio nel caso in cui una ricerca non sia riuscita o sia stata saltata; la chiave viene **omessa completamente** quando non sono presenti errori.
* Un array `warnings[]`: eventi di rischio generati durante la validazione (vedi [Avvisi di validazione su database](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings.md)).
* Un `node_id` che identifica quale nodo del grafo del workflow ha prodotto il report (solo per le sessioni V3).

## Dove compare nelle risposte API

Il report compare come **`database_validations[]`** in `GET /v3/session/{sessionId}/decision/` — sempre come array JSON, mai come oggetto singolo. L'array contiene una voce per ciascun nodo di Validazione su database nel grafo del workflow; a sua volta, il sotto-array `validations[]` di ciascuna voce contiene un elemento per ciascun servizio di registro che ha prodotto un risultato.

```json theme={null}
{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "status": "Approved",
  "database_validations": [
    { "node_id": "feature_db_validation_1", "status": "Approved", "...": "..." }
  ]
}
```

Un valore `null` indica che non è stato ancora eseguito alcun passaggio di Validazione su database.

## Schema

Lo schema canonico campo per campo è disponibile nella pagina dei [Modelli di dati](https://docs.didit.me/it/reference/data-models.md#validazione-su-database). Viene generato da `DatabaseValidationV3Serializer`.

```typescript theme={null}
interface DatabaseValidation {
  node_id: string | null;
  status: "Not Finished" | "Approved" | "Declined" | "In Review"; // FeatureStatusChoices
  issuing_state: string | null;      // ISO 3166-1 alpha-3, e.g. "ARG"
  validation_type: "one_by_one" | "two_by_two" | "not_enabled"; // derived, never null
  match_type: "full_match" | "partial_match" | "no_match" | null; // null when no service returned a usable result
  screened_data: {                   // What we sent to the registry (varies by country/service)
    tax_number?: string;
    personal_number?: string;
    document_number?: string;
    first_name?: string;
    last_name?: string;
    date_of_birth?: string;          // YYYY-MM-DD
    selfie?: string;                 // Presigned URL (biometric services)
    cnh_qr_code_image?: string;      // Presigned URL (Brazil CNH QR + face match)
    document_image?: string;         // Presigned URL (services that take a document image)
    gender?: string;                 // Biometric registry services (e.g. Argentina RENAPER)
  };
  validations: Array<{
    // Catalog metadata
    service_id?: string;             // e.g. "arg_renaper"
    service_name?: string;           // e.g. "Argentina - DNI verification (RENAPER)"
    // Per-field match outcome — keys vary by service
    // (full_name, first_name, last_name, date_of_birth, identification_number, address, …)
    validation?: Record<string, "full_match" | "partial_match" | "no_match">;
    outcome_code?: string;           // Vendor-neutral outcome, see below
    outcome_detail?: string;         // Raw upstream status detail backing the outcome code
    source_data?: {                  // Cleaned registry record
      identification_number?: string;
      first_name?: string;
      last_name?: string;
      full_name?: string;
      date_of_birth?: string;
      place_of_birth?: string;
      gender?: string;
      nationality?: string;
      issue_date?: string;
      expiration_date?: string;
      photo?: string;                // Pre-signed JPEG URL
      signature?: string;            // Pre-signed JPEG URL
      face_match_score?: number;     // Biometric services only (0-100)
    };
  }>;
  errors?: Array<{                   // Omitted entirely when empty
    service_id: string;
    code?: string;                   // e.g. "invalid_screened_data", "empty_provider_response"
    message?: string;
    missing_required_fields?: string[];
    invalid_format_fields?: string[];
    field_reasons?: Record<string, string>;
  }>;
  warnings: Warning[];               // See /reference/data-models#warning-object
}
```

### Valori di status

`status` utilizza l'enum standard a livello di funzionalità (consulta [Enum di stato](https://docs.didit.me/it/reference/data-models.md#riferimento-agli-enum-di-stato)) — vedi il [Riferimento degli enum di stato](https://docs.didit.me/it/reference/data-models.md#riferimento-agli-enum-di-stato). L'enum definisce anche `Resub Requested`, che nella pratica non viene generato da Validazione su database.

| Status | Significato |
| - | - |
| `Not Finished` | La validazione non ha ancora prodotto un risultato (stato iniziale; registrato anche quando una chiamata autonoma fallisce su tutti i servizi). |
| `Approved` | Nessun rischio attivato, oppure gli unici rischi attivati sono configurati come `NO_ACTION` (il comportamento predefinito per la corrispondenza parziale). |
| `Declined` | Un esito di mancata corrispondenza o corrispondenza parziale la cui azione configurata è `DECLINE`. |
| `In Review` | Un esito di mancata corrispondenza o corrispondenza parziale la cui azione configurata è `REVIEW`, oppure la validazione non è stata eseguita affatto (`COULD_NOT_PERFORM_DATABASE_VALIDATION` — sempre da sottoporre a revisione). |

Le regole di stato personalizzate per singolo nodo vengono applicate al di sopra di questo stato di base. Consulta gli [Avvisi di Validazione su database](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings.md) per le azioni configurabili e i relativi valori predefiniti.

### Codici di esito

Ogni voce in `validations[]` include un `outcome_code` indipendente dal fornitore: uno tra `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`. Nota le differenze: `NO_MATCH` significa che il registro non ha confermato i dati in modo definitivo, `INCONCLUSIVE` significa che il registro non è stato in grado di stabilirlo in alcun modo (instrada verso la revisione, non verso il rifiuto), e `BIOMETRIC_IMAGE_UNUSABLE` è un problema tecnico con il selfie (da ripetere) — a differenza del definitivo `BIOMETRIC_NO_MATCH`. Consulta la tassonomia completa e la gestione consigliata nella pagina dei [Codici di esito](https://docs.didit.me/it/core-technology/database-validation/database-validation-outcome-codes.md).

### Una voce per servizio

L'array `validations[]` contiene **un elemento per ogni servizio che ha prodotto un payload di risultato** (una mappa `validation`, `source_data`, `outcome_code` o `outcome_detail`). Se il tuo workflow esegue più servizi per lo stesso paese (ad esempio CPF Brasile + CNH Brasile), ciascuno compare separatamente con il proprio `service_id`, `outcome_code` e `source_data`. Il riepilogo `match_type` aggrega i risultati di tutti i servizi (qualsiasi corrispondenza completa → `full_match`; altrimenti qualsiasi corrispondenza parziale → `partial_match`; altrimenti `no_match`), mentre `validation_type` viene ricavato dal numero di servizi distinti con corrispondenza completa — consulta [Metodi di corrispondenza](https://docs.didit.me/it/core-technology/database-validation/database-validation-matching-methods.md).

### URL pre-firmati delle immagini

I campi immagine in `source_data` (`photo`, `signature`) e `screened_data` (`selfie`, `cnh_qr_code_image`, `document_image`) vengono restituiti come **URL pre-firmati** che scadono — aggiornali chiamando nuovamente l'endpoint decisionale. Il payload grezzo a monte non viene intenzionalmente esposto tramite l'API.

## Esempi

### Approvata — verifica dello stato del CPF brasiliano (Receita Federal)

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "Approved",
  "issuing_state": "BRA",
  "validation_type": "one_by_one",
  "match_type": "full_match",
  "screened_data": {
    "tax_number": "12345678900",
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1980-01-01"
  },
  "validations": [
    {
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "outcome_code": "MATCH",
      "outcome_detail": "200",
      "validation": {
        "full_name": "full_match",
        "date_of_birth": "full_match",
        "identification_number": "full_match"
      },
      "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": []
}
```

### Approvata — DNI biometrico argentino (RENAPER)

Per l'Argentina, la validazione utilizza RENAPER con un confronto facciale biometrico. La risposta include un `face_match_score` e ulteriori campi di identità restituiti dal registro.

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "Approved",
  "issuing_state": "ARG",
  "validation_type": "one_by_one",
  "match_type": "full_match",
  "screened_data": {
    "document_number": "12345678",
    "selfie": "https://<media-host>/sessions/<session-id>/selfie.jpg?X-Amz-Signature=...",
    "gender": "M",
    "first_name": "John",
    "last_name": "Doe"
  },
  "validations": [
    {
      "service_id": "arg_renaper",
      "service_name": "Argentina - DNI verification (RENAPER)",
      "outcome_code": "MATCH",
      "validation": {
        "full_name": "full_match",
        "identification_number": "full_match"
      },
      "source_data": {
        "identification_number": "12345678",
        "first_name": "John",
        "last_name": "Doe",
        "full_name": "John Doe",
        "date_of_birth": "1990-01-01",
        "tax_id": "20000000019",
        "tax_id_type": "CUIT",
        "face_match_score": 97
      }
    }
  ],
  "warnings": []
}
```

### In revisione — impossibile eseguire la verifica sul registro

Quando nessun servizio restituisce un risultato utilizzabile — campi obbligatori mancanti o non validi, oppure registro non raggiungibile — `match_type` rimane `null`, `validation_type` è `not_enabled`, viene emesso un avviso `COULD_NOT_PERFORM_DATABASE_VALIDATION` e la funzionalità passa a `In Review` finché i dati non vengono corretti. Non viene applicato **alcun addebito** per i servizi saltati.

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "In Review",
  "issuing_state": "PAN",
  "validation_type": "not_enabled",
  "match_type": null,
  "screened_data": {
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1990-01-01",
    "selfie": "https://<media-host>/sessions/<session-id>/selfie.jpg?X-Amz-Signature=..."
  },
  "validations": [],
  "errors": [
    {
      "code": "invalid_screened_data",
      "message": "Database validation was skipped before calling the provider because the screened data has missing required fields: personal_number.",
      "missing_required_fields": ["personal_number"],
      "service_id": "pan_cedula_sib_plus"
    }
  ],
  "warnings": [
    {
      "feature": "DATABASE_VALIDATION",
      "risk": "COULD_NOT_PERFORM_DATABASE_VALIDATION",
      "additional_data": {
        "reason": "Database validation was skipped before any provider request because the screened data is incomplete or invalid.",
        "database_validation_errors": [
          {
            "code": "invalid_screened_data",
            "message": "Database validation was skipped before calling the provider because the screened data has missing required fields: personal_number.",
            "missing_required_fields": ["personal_number"],
            "service_id": "pan_cedula_sib_plus"
          }
        ],
        "missing_required_fields_by_service": { "pan_cedula_sib_plus": ["personal_number"] },
        "invalid_format_fields_by_service": {},
        "field_reasons_by_service": {}
      },
      "log_type": "warning",
      "short_description": "Could not perform database validation",
      "long_description": "The system couldn't perform the database validation, please fill the required fields for this country to automatically proceed with database validation.",
      "node_id": "feature_db_validation_1"
    }
  ]
}
```

Compila il campo mancante nella pagina dei dettagli della sessione nella Console: il salvataggio riattiva automaticamente il controllo e cancella l'avviso in caso di esito positivo.

## Correlati

* [Panoramica di Validazione su database](https://docs.didit.me/it/core-technology/database-validation/overview.md) — funzionamento end-to-end dell'API e registri supportati.
* [Metodi di corrispondenza](https://docs.didit.me/it/core-technology/database-validation/database-validation-matching-methods.md) — come vengono ricavati gli esiti 1×1 / 2×2 (`validation_type: one_by_one` / `two_by_two`).
* [Codici di esito](https://docs.didit.me/it/core-technology/database-validation/database-validation-outcome-codes.md) — tassonomia completa per ciascun risultato con codici di dettaglio specifici per paese.
* [Paesi e servizi supportati](https://docs.didit.me/it/core-technology/database-validation/database-validation-supported-countries.md) — tutti i registri attivi, campi obbligatori e prezzo per chiamata.
* [Avvisi di Validazione su database](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings.md) — cosa segnaliamo quando un servizio non può essere eseguito.
* [Modelli di dati — validazione su database](https://docs.didit.me/it/reference/data-models.md#validazione-su-database) — schema canonico campo per campo.


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