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

# Recupero sessione API: decisioni KYC e KYB

> Recupera le decisioni KYC o KYB di Didit: identità, liveness, AML, registro e OCR in un'unica risposta. Inferenza sotto 2s, a consumo.



Recupera il prompt della decisione di sessione
        Copia il prompt negli appunti



      
      

\<pre>

\``Fetch the full decision for a Didit verification session.

Endpoint:
GET https://verification.didit.me/v3/session/{session_id}/decision/

Authentication:
Use the x-api-key header with your Didit API key. The key must hold the read:sessions privilege.

Path parameter:
\- session_id (UUID) — returned by POST /v3/session/. Didit resolves it as a User Verification session first, then as a Business Verification session — you do not need to know the kind in advance.

curl example:
curl https://verification.didit.me/v3/session/<SESSION_ID>/decision/ \
-H "x-api-key: <API_KEY>"

Response — top-level keys (both kinds share these):
\- session_id (UUID)
\- session_kind ("user" | "business") — discriminator, ALWAYS branch on this.
\- session_number (int)
\- session_url (string) — hosted URL.
\- status (string) — "Approved", "Declined", "In Review", "In Progress", "Not Started", "Expired", "Abandoned", "Kyc Expired", "Resubmitted", "Awaiting User".
\- workflow_id (workflow_version, workflow_type and workflow_version_id come only with ?include=events)
\- vendor_data, metadata, callback
\- features (string or array) — feature list the workflow runs.
\- expected_details — what you sent on create, if any.
\- created_at, expires_at (ISO 8601).
\- contact_details — { email, email_lang, send_notification_emails, phone }.
\- reviews — array of manual-review activity.
\- status_override ({ overridden_at, automatic_status } | null) — set when a reviewer changed the status by hand.
\- decision_trace — how the status was reached: status, decided_by (manual | automatic | investigator), decided_at, automatic_status, terminal_node_id, actor, warning_counts, status_warnings.
\- linked_records — same_face, earlier_verifications and networks summaries, or null.
\- biometric_retention ({ jurisdictions, deletes_at }) — the date the live biometric data of the session is deleted.
\- assignee, waiting_since, sla_due_at — the Console reviewer holding the session and its review clock; null unless the session is In Review.
\- database_validation_not_performed_reason — why a configured database validation produced no result, when database_validations is null.
\- geolocation_checks, geolocation_attempts — Location verification results and every attempt (see /core-technology/location-verification/report-location-verification).
\- shared_from_session, shared_from_session_number, sandbox_scenario, fraud_check — set only for imported sessions, sandbox scenarios and Fraud Check sessions.
\- full_session_video, full_session_video_recorded_at — only when your organization records full-session video.

Feature arrays — KYC only (session_kind: "user"):
\- id_verifications, liveness_checks, face_matches, nfc_verifications, poa_verifications, database_validations
\- `id_verifications[].barcodes` is always an array. Each entry preserves the reader output, including `type`, `position`, `data`, `data_raw`, and `side`; documents without barcode output return `[]`.
\- nfc_verifications[] items carry is_nfc_skipped (boolean) and skip_reason (string | null) alongside status/chip_data/authenticity — read the reason from the report when one exists. chip_protocol is "icao" or "jpki"; a Japan My Number Card read ("jpki") has its evidence under jpki (chain_valid, signature_valid, revocation_status, attributes, attributes_match_ocr) and null ICAO fields.
\- nfc_skip_reason (string | null), top level — why NFC did not run (USER_SKIPPED, DOCUMENT_WITHOUT_CHIP, CHIP_CERTIFICATE_UNAVAILABLE, DEVICE_WITHOUT_NFC, INTEGRATION_WITHOUT_NFC_ACCESS, MRZ_KEY_UNAVAILABLE, JPKI_UNAVAILABLE), including when the step was bypassed and nfc_verifications stays null.

Feature arrays — KYB only (session_kind: "business"):
\- registry_checks (includes company + officers + beneficial_owners + ownership_structure)
\- document_verifications
\- key_people_checks (officers + beneficial_owners + submitted parties + ubo_kyc_summary)

Shared by both kinds:
\- aml_screenings, phone_verifications, email_verifications, questionnaire_responses, ip_analyses, document_ai_documents
\- bank_verifications: Bank Verification results, one item per Bank Verification step. Read method: "open_banking" (bank sign-in) or "account_lookup" (account check), or a "microdeposits" or "statement" fallback; null until an account is evaluated. "none" when the person chose Continue without your bank before any attempt was evaluated. continued_without_bank: true when the person chose Continue without your bank, also after an evaluated attempt, whose verdict stands; continuation.reason says why (no_route, institution_unsupported, attempts_exhausted, person_choice). financial_data.not_collected lists the data an account check could not collect. See /core-technology/bank-verification/verification-methods and /core-technology/bank-verification/fallbacks.
\- signatures: E-signature results, one item per signer. Present only when the workflow has an E-signature step. Read status ("signed" means signed), verdict, signer, confirmation, certificate, timestamp, documents[] (sha256_original, sha256_signed, signed_file, fields[]) and evidence_file. See /core-technology/electronic-signature/report-electronic-signature.

V3 contract: feature arrays are ALWAYS plural arrays. If a feature was not run on the session, the field is absent or null — never a placeholder.

See /reference/data-models for the full schema (every nested field).

Handler pattern:
const decision = await (await fetch(url, { headers: { "x-api-key": API_KEY } })).json();
switch (decision.session_kind) {
case "user": return handleUserDecision(decision);
case "business": return handleBusinessDecision(decision);
}

Failure modes:
\- 404 — { "detail": "Not found." } when the session does not exist (both session types are checked) or belongs to a different application.
\- 403 — { "detail": "You do not have permission to perform this action." } when the key lacks read:sessions.
\- 401 — invalid API key.

When to call:
\- Eagerly after receiving a status.updated webhook (recommended pattern — see /integration/webhooks).
\- On-demand when your support agent or analyst opens the session in your dashboard.

Caching:
Decision payloads are mutable until the session reaches a terminal status. Cache only if you also subscribe to data.updated and status.updated webhooks.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.``

\</pre>



      
      

Incolla in

## Supporto KYC e KYBQuesto endpoint funziona sia per le sessioni di **Verifica degli utenti (KYC)** sia per quelle di **Verifica aziendale (KYB)**. La risposta contiene sempre un campo di primo livello `session_kind`:- `"user"`: sessione di Verifica degli utenti (KYC). La risposta contiene `id_verifications`, `liveness_checks`, `face_matches`, `nfc_verifications`, `poa_verifications`, `database_validations`.
- `"business"`: sessione di Verifica aziendale (KYB). La risposta contiene `registry_checks`, `document_verifications`, `key_people_checks`.Entrambi i tipi condividono `aml_screenings`, `phone_verifications`, `email_verifications`, `questionnaire_responses`, `ip_analyses`, `document_ai_documents`, `bank_verifications`, `reviews`, `contact_details`, oltre ai campi comuni di primo livello (`session_id`, `session_number`, `session_url`, `status`, `workflow_id`, `vendor_data`, `metadata`, `callback`, `features`, `expected_details`, `created_at`, `expires_at`).Didit cerca il `session_id` in entrambi i tipi di sessione (prima Verifica degli utenti, poi Verifica aziendale) e restituisce quella che corrisponde. Gli UUID sono univoci per applicazione, quindi non c'è ambiguità.Consulta la [panoramica delle sessioni](https://docs.didit.me/it/sessions-api/overview.md) per la matrice completa delle funzionalità specifiche per tipo.## Esempi> [tab] Verifica degli utenti (KYC)
>
> ```bash theme={null}
> curl https://verification.didit.me/v3/session/4c5c7f3a-1f82-4f3b-8d8e-1a8d2d2f9b7a/decision/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> **Risposta (troncata):**
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-1f82-4f3b-8d8e-1a8d2d2f9b7a",
>   "session_kind": "user",
>   "session_number": 1024,
>   "session_url": "https://verify.didit.me/...",
>   "status": "APPROVED",
>   "workflow_id": "wf_kyc_standard",
>   "vendor_data": "user-42",
>   "features": "ID_VERIFICATION,LIVENESS,FACE_MATCH,AML",
>   "id_verifications": [
>     { "node_id": "feature_ocr_1", "status": "Approved", "document_type": "Passport", "full_name": "John Doe", "barcodes": [], "...": "..." }
>   ],
>   "liveness_checks": [
>     { "node_id": "feature_liveness_1", "status": "Approved", "score": 0.98 }
>   ],
>   "face_matches": [
>     { "node_id": "feature_face_match_1", "status": "Approved", "score": 0.94 }
>   ],
>   "aml_screenings": [
>     { "node_id": "feature_aml_1", "status": "Approved", "total_hits": 0, "score": 0 }
>   ],
>   "phone_verifications": [],
>   "email_verifications": [],
>   "questionnaire_responses": [],
>   "ip_analyses": [],
>   "reviews": [],
>   "contact_details": { "email": "alex.sample@example.com", "phone": null },
>   "expected_details": null,
>   "metadata": {},
>   "callback": null,
>   "created_at": "2026-04-16T10:00:00Z",
>   "expires_at": "2026-04-23T10:00:00Z"
> }
> ```> [tab] Verifica aziendale (KYB)
>
> ```bash theme={null}
> curl https://verification.didit.me/v3/session/bs-01HJX1.../decision/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> **Risposta (troncata):**
>
> ```json theme={null}
> {
>   "session_id": "bs-01HJX1...",
>   "session_kind": "business",
>   "session_number": 89,
>   "session_url": "https://verify.didit.me/...",
>   "status": "APPROVED",
>   "workflow_id": "wf_kyb_standard",
>   "vendor_data": "biz-acme-001",
>   "features": ["KYB_REGISTRY", "KYB_COMPANY_AML", "KYB_DOCUMENTS", "KYB_KEY_PEOPLE"],
>   "registry_checks": [
>     {
>       "status": "Approved",
>       "node_id": "feature_kyb_registry",
>       "data_resolved": true,
>       "company": {
>         "uuid": "...",
>         "node_id": "feature_kyb_registry",
>         "status": "Approved",
>         "registry_status": "active",
>         "company_name": "Acme Corporation Limited",
>         "registration_number": "12345678",
>         "country_code": "GBR",
>         "company_type": "Private Limited",
>         "incorporation_date": "2010-05-14",
>         "registered_address": "1 Main Street, London EC1A 1AA, United Kingdom",
>         "tax_number": "SAMPLE-TAX-12345",
>         "risk_level": "LOW",
>         "verification_status": "verified",
>         "is_from_registry": true,
>         "fetch_status": "resolved",
>         "alternative_names": ["Acme Ltd"],
>         "nature_of_business": "Software publishing",
>         "registered_capital": "100000 GBP",
>         "website": "https://acme.example",
>         "email": "alex.sample@example.com",
>         "phone": "+15550101000",
>         "legal_entity_identifier": "529900XXXXXXXXXXXXX",
>         "financial_summary": {},
>         "officers": [
>           { "uuid": "...", "name": "Jane Doe", "role": "director", "nationality": "USA", "is_active": true, "kyc_status": "Approved", "kyc_session_url": "https://verify.didit.me/..." }
>         ],
>         "beneficial_owners": [
>           { "uuid": "...", "name": "John Smith", "entity_type": "person", "roles": ["ubo"], "ownership_min_shares": 40, "ownership_max_shares": 40, "kyc_status": "Pending", "effective_ownership_percent": 40.0 }
>         ],
>         "addresses": [],
>         "industries": [],
>         "accounts": [],
>         "registry_data": { },
>         "user_provided_data": { },
>         "confirmed_by_user_at": "2026-04-16T10:10:00Z",
>         "is_editable": false
>       },
>       "ownership_structure": { },
>       "warnings": []
>     }
>   ],
>   "aml_screenings": [
>     {
>       "node_id": "feature_kyb_company_aml",
>       "status": "Approved",
>       "total_hits": 0,
>       "score": 0,
>       "entity_type": "COMPANY",
>       "hits": []
>     }
>   ],
>   "document_verifications": [
>     {
>       "status": "Approved",
>       "node_id": "feature_kyb_documents",
>       "items": [
>         { "uuid": "...", "document_type": "certificate_of_incorporation", "status": "Approved", "file_url": "https://...", "ocr_data": { } }
>       ],
>       "groups": { "legal_presence": { "approved": 1, "pending": 0, "missing": 0 } },
>       "required_groups": ["legal_presence", "ownership_structure"],
>       "warnings": []
>     }
>   ],
>   "key_people_checks": [
>     {
>       "status": "Approved",
>       "node_id": "feature_kyb_key_people",
>       "officers": [
>         { "uuid": "...", "name": "Jane Doe", "role": "director", "kyc_status": "Approved", "kyc_session_url": "..." }
>       ],
>       "beneficial_owners": [
>         { "uuid": "...", "name": "John Smith", "roles": ["ubo"], "ownership_min_shares": 40, "ownership_max_shares": 40, "kyc_status": "Pending" }
>       ],
>       "registry": {
>         "officers": [
>           { "uuid": "...", "name": "Jane Doe", "role": "director", "kyc_status": "Approved" }
>         ],
>         "beneficial_owners": [
>           { "uuid": "...", "name": "John Smith", "roles": ["ubo"], "ownership_min_shares": 40, "kyc_status": "Pending" }
>         ]
>       },
>       "submitted": {
>         "parties": [
>           { "uuid": "...", "entity_type": "person", "name": "Alice Chen", "role": "ubo", "ownership_percent": 35.0, "requires_verification": true, "kyc_session_status": "Not Started", "kyc_session_url": "https://verify.didit.me/..." }
>         ]
>       },
>       "ubo_kyc_summary": {
>         "total": 2,
>         "approved": 1,
>         "flagged": 0,
>         "pending": 1
>       },
>       "warnings": []
>     }
>   ],
>   "phone_verifications": null,
>   "email_verifications": null,
>   "questionnaire_responses": null,
>   "ip_analyses": null,
>   "reviews": [],
>   "contact_details": { "email": "alex.sample@example.com", "email_lang": "en", "send_notification_emails": true, "phone": null },
>   "expected_details": null,
>   "metadata": {},
>   "callback": null,
>   "created_at": "2026-04-16T10:00:00Z",
>   "expires_at": "2026-04-23T10:00:00Z"
> }
> ```## Come gestire la risposta dal tuo lato```typescript theme={null}
const res = await fetch(`${BASE}/v3/session/${sessionId}/decision/`, {
  headers: { "x-api-key": API_KEY },
});
const decision = await res.json();

switch (decision.session_kind) {
  case "user":
    handleUserDecision(decision);
    break;
  case "business":
    handleBusinessDecision(decision);
    break;
}
```## Stato, tracciamento della decisione e campi di revisioneOgni decisione spiega come è stato raggiunto il suo `status`.| Campo | Cosa leggere |
| - | - |
| `status_override` | `null` quando lo stato è quello automatico. Dopo che un revisore ha impostato lo stato manualmente, il campo è `{ overridden_at, automatic_status }`, dove `automatic_status` è il risultato dei controlli. Usalo per distinguere un'approvazione manuale da una automatica. |
| `decision_trace` | `status`, `decided_by` (`manual`, `automatic` o `investigator`; `null` finché la sessione non è decisa), `decided_at`, `automatic_status`, `terminal_node_id`, `actor` (il revisore responsabile di una decisione manuale), `warning_counts` per `log_type` più `total`, e `status_warnings`, gli avvisi che impostano uno stato `Declined` o `In Review`. |
| `linked_records` | Un riepilogo di ciò a cui la verifica è collegata: `same_face` (altre persone il cui volto corrisponde, e la corrispondenza più vicina), `earlier_verifications` (un conteggio per la stessa persona) e `networks`. `null` quando non c'è nulla da mostrare. |
| `assignee`, `waiting_since`, `sla_due_at` | Il revisore della Console a cui è assegnata la sessione, da quando è in attesa e quando scade la revisione. `waiting_since` e `sla_due_at` sono `null` a meno che la sessione non sia `In Review` e la tua applicazione imposti una scadenza per la revisione. |
| `database_validation_not_performed_reason` | `{ code, message }` che spiega perché una validazione su database configurata non ha prodotto alcun risultato. Distingue «il registro ha confermato» da «non è stato eseguito nulla» quando `database_validations` è `null`. |
| `shared_from_session`, `shared_from_session_number` | La sessione di origine quando questa è stata importata con `POST /v3/session/import-shared/`; altrimenti `null`. |
| `sandbox_scenario` | Lo scenario con cui è stata creata una sessione sandbox. |
| `full_session_video`, `full_session_video_recorded_at` | Un URL della registrazione con scadenza e la data in cui è stata effettuata. Restituito solo quando la tua organizzazione registra il video dell'intera sessione. |## Conservazione dei dati biometrici`biometric_retention` è sempre presente. `deletes_at` è la data in cui vengono eliminati i dati biometrici attivi della sessione, e `jurisdictions` elenca gli stati USA le cui norme biometriche impongono un limite di cancellazione per la persona (`US` quando lo stato è sconosciuto). `deletes_at` è `null` quando non si applica ancora alcuna data.## Verifica della posizioneQuando il workflow contiene un passaggio di [Verifica della posizione](https://docs.didit.me/it/core-technology/location-verification/overview.md), la decisione include due array. `geolocation_checks[]` ha un elemento per passaggio: il tentativo accettato, con l'esito, le coordinate e la loro precisione, i controlli rispetto alla posizione IP e all'indirizzo registrato, e gli `warnings` del passaggio. `geolocation_attempts[]` elenca ogni tentativo di ogni passaggio, dal più vecchio, con la data di ricezione di ciascuno. I workflow senza il passaggio restituiscono entrambi come `null`. Ogni campo ed esito è descritto nel [report di verifica della posizione](https://docs.didit.me/it/core-technology/location-verification/report-location-verification.md).## Eventi di instradamento del workflow`?include=events` aggiunge la timeline degli eventi della sessione. Oltre alle variazioni di passaggio e di stato, un workflow che instrada attraverso nodi di ramificazione lascia un evento per ogni decisione di instradamento. In questo modo un'integrazione (o la timeline della Console) può spiegare perché una sessione si è conclusa con un determinato esito senza che tu debba ripercorrere a mano il grafo del workflow:| `event_type` | Quando viene scritto | `details` |
| - | - | - |
| `WORKFLOW_BRANCH_EVALUATED` | Un nodo con condizioni di ramo è stato valutato mentre la sessione avanzava (nodi di ramificazione, e nodi di funzionalità o webhook con rami) | `node_id`, `node_label`, `node_type`, `matched_branch_id` (il ramo corrispondente, o `null` se nessun ramo corrisponde), `fallback` (`true` quando nessuna condizione è stata soddisfatta e si è seguito l'arco predefinito del nodo), `next_node_id`, `next_node_label` |
| `WORKFLOW_STATUS_NODE_REACHED` | È stato eseguito un nodo di stato | `node_id`, `node_label`, `session_status` (il valore configurato, incluso `Determine`), `resolved_session_status` (il valore risolto), `feature_statuses` (`[{target, status}]`) |Entrambi gli eventi includono `sent_at` in millisecondi, come ogni altro evento, e non hanno `component`, `feature_step` né `step`: provengono dal motore del workflow, non dal dispositivo dell'utente. Un ramo "else" (un ramo senza condizioni) conta come ramo corrispondente; `fallback` è `true` solo quando nulla ha corrisposto. I nodi con un unico arco in uscita non prendono alcuna decisione e non lasciano alcun evento.Lo stesso schema riporta anche `workflow_terminal_node_id`: il `node_id` dell'ultimo nodo di stato del workflow registrato che ha impostato uno stato della sessione, oppure `null` se non è stato registrato alcun ID di nodo di questo tipo. Si tratta di una traccia storica del workflow. Approvazioni, rifiuti e ripresentazioni manuali non lo cancellano; un successivo nodo di stato del workflow lo sostituisce. Ad esempio, se un workflow manda una sessione a un nodo *In revisione* e un revisore la approva in seguito, lo `status` attuale è `Approved` mentre `workflow_terminal_node_id` continua a identificare il nodo *In revisione*. Il campo può anche restare valorizzato mentre è in corso una ripresentazione. Leggi lo `status` attuale e le timeline degli eventi e di `activity_reviews` per distinguere gli esiti del workflow dalle decisioni manuali successive.```json theme={null}
{
  "event_type": "WORKFLOW_BRANCH_EVALUATED",
  "sent_at": 1789336414007,
  "details": {
    "node_id": "branch-d57da8aa",
    "node_label": "Credential required?",
    "node_type": "branch",
    "matched_branch_id": null,
    "fallback": true,
    "next_node_id": "status-6ba0bd0d",
    "next_node_label": "In Review"
  }
}
```## Ripresentazioni precedenti (`?include=resubmissions`)Una ripresentazione riporta l'utente ai passaggi che selezioni e conserva ciò che quei passaggi avevano restituito in precedenza.
`?include=resubmissions` aggiunge un array `resubmissions`, dal più vecchio al più recente, con una voce per ogni richiesta di ripresentazione. Ogni voce riporta i risultati che la richiesta ha sostituito, così puoi sempre leggere ciò che l'utente ha inviato in precedenza.
Funziona per le sessioni utente (KYC) e aziendali (KYB), e puoi combinarlo con gli eventi (`?include=events,resubmissions`).
Senza il parametro la risposta non cambia.| Campo | Descrizione |
| - | - |
| `number` | 1 per la prima ripresentazione della sessione, 2 per la seconda, e così via. |
| `created_at` | Quando è stata richiesta la ripresentazione. |
| `previous_status` | Lo stato della sessione immediatamente prima della richiesta. |
| `nodes` | I passaggi del workflow rimandati all'utente (`[{node_id, feature}]`). |
| `reasons` | Il motivo indicato per ogni passaggio, con chiave `node_id`, oppure `null`. |
| `requested_by` | Chi l'ha richiesta (`name`, `email`, `type`), oppure `null`. |
| `results` | Ciò che quei passaggi avevano restituito prima della richiesta, con le stesse chiavi e la stessa struttura dei risultati attuali (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `phone_verifications`, `email_verifications`, `aml_screenings`, `ip_analyses`, `database_validations`, `questionnaire_responses`, `document_ai_documents`, `geolocation_checks`; per le sessioni aziendali anche `document_verifications`). Compaiono solo le chiavi dei passaggi rimandati. |I risultati attuali (`id_verifications` e gli altri al primo livello) descrivono sempre l'ultimo invio. I passaggi che non sono stati rimandati mantengono lì un unico risultato.```json theme={null}
{
  "status": "In Review",
  "id_verifications": [{ "node_id": "feature_ocr", "status": "Approved" }],
  "resubmissions": [
    {
      "number": 1,
      "created_at": "2026-10-01T08:31:04.512Z",
      "previous_status": "In Review",
      "nodes": [{ "node_id": "feature_ocr", "feature": "OCR" }],
      "reasons": { "feature_ocr": "Passport photo too blurry" },
      "requested_by": { "name": "<reviewer name>", "email": "<reviewer email>", "type": "USER" },
      "results": {
        "id_verifications": [
          {
            "node_id": "feature_ocr",
            "status": "Declined",
            "warnings": [{ "risk": "IMAGE_TOO_BLURRY", "log_type": "error" }]
          }
        ]
      }
    }
  ]
}
```Eliminare una sessione elimina i risultati di ogni invio che ne fa parte.## Metodi di verifica dell'identitàOgni elemento di `id_verifications[]` indica quale dei tre [metodi di verifica dell'identità](https://docs.didit.me/it/core-technology/id-verification/verification-methods.md) lo ha prodotto. Così puoi distinguere una lettura di documento da una consultazione di un registro o da un accesso con wallet senza dover intuire dai campi che risultano valorizzati:| Campo | Valore |
| - | - |
| `verification_method` | `document`, `id_lookup` o `wallet` |
| `assurance` | `documentary`, `data_match` o `cryptographic` |
| `wallet_provider` | ID del wallet del catalogo quando a produrre il risultato è stato un wallet, altrimenti `null` |
| `id_lookup` | Evidenze del registro (fonte, tentativi, confronto per campo, ritratto dal registro), oppure `null` |
| `wallet_verification` | Evidenze della credenziale (provider, autorità emittente, livello di garanzia, validità della firma, attributi condivisi), oppure `null` |
| `fallback_from` | Perché un metodo diverso dal documento non ha concluso il passaggio di ID: il metodo, il motivo e se l'utente è passato alla cattura del documento o è stato rifiutato |Una sessione con documento riporta `document` e `documentary` e lascia gli altri campi a `null`, quindi le integrazioni esistenti non richiedono modifiche. I tipi di ogni campo sono in [Modelli dati](https://docs.didit.me/it/reference/data-models.md#verifica-dell’identità).## Consenso biometricoLe decisioni di Verifica degli utenti contengono un oggetto `biometric_consent`: se la sessione richiedeva un consenso biometrico esplicito, il `trigger` che lo ha richiesto, lo `status` della risposta e le sue evidenze. Due valori indicano che il consenso non è stato raccolto:| Campo | Valore | Significato |
| - | - | - |
| `status` + `reason` | `pending` + `BIOMETRIC_CONSENT_UNSUPPORTED_SDK` | Un SDK nativo precedente alla 4.10.0, oppure uno che non ha riportato la propria versione, ha acquisito un volto senza il passaggio di consenso. La sessione è proseguita come prima. |
| `status` + `reason` | `declined` + `BIOMETRIC_CONSENT_DECLINED` | È stato registrato un rifiuto. La sessione è `Declined` e i suoi dati del volto sono stati eliminati. Nessuna schermata di Didit consente oggi di rifiutare. |Quando compare il passaggio e cosa significa ciascun valore sono descritti in [Consenso biometrico](https://docs.didit.me/it/getting-started/biometric-consent.md); ogni campo è in [Modelli dati](https://docs.didit.me/it/reference/data-models.md#consenso-biometrico).## Verifica bancariaQuando il workflow include un passaggio di [Bank Verification](https://docs.didit.me/it/core-technology/bank-verification/verification-methods.md), la decisione contiene `bank_verifications[]`, per entrambi i tipi di sessione: un elemento per ogni passaggio, `null` finché un passaggio non produce un risultato.| Campo | Cosa leggere |
| - | - |
| `status` | L'esito del passaggio: `Approved`, `In Review`, `Declined`, `Not Finished` o `Expired`. |
| `method` | Come è stato verificato il conto: `open_banking` (accesso alla banca), `account_lookup` (verifica del conto), `microdeposits` o `statement`. `null` finché non viene valutato un conto, e `none` quando la persona ha continuato senza banca prima che fosse valutato un tentativo. |
| `continued_without_bank`, `continuation` | Se la persona ha scelto **Continua senza la tua banca** e il motivo: `continuation.reason` è `no_route`, `institution_unsupported`, `attempts_exhausted` o `person_choice`. Per `institution_unsupported`, `continuation.institution_name` indica la banca che la persona non ha potuto usare. |
| `ownership` | Come il titolare del conto si confronta con l'identità verificata: `result` è `match`, `partial_match` (una corrispondenza molto vicina), `no_match`, `not_verifiable` o `unknown`. |
| `account` | Il conto verificato, mascherato. |
| `financial_data` | Saldi, transazioni e reddito, letti solo tramite accesso alla banca. `not_collected` elenca i dati richiesti dal passaggio che il metodo non ha raccolto, per esempio dopo una verifica del conto. |
| `connection` | Il tentativo più recente: il suo stato, la banca, i tentativi utilizzati e un `reason_code`. |Per distinguere l'accesso alla banca dalla verifica del conto leggi `method`, non `ownership.method`: `ownership.method` è il confronto del nome che ha prodotto il punteggio. Ogni campo è presente nello schema `BankVerificationResult` della risposta di questo endpoint.## Firma elettronicaQuando il workflow include un passaggio di [E-signature](https://docs.didit.me/it/core-technology/electronic-signature/overview.md), la decisione contiene `signatures[]`, per entrambi i tipi di sessione. Contiene un elemento per firmatario: uno per una Verifica degli utenti, uno per ogni persona chiave che firma in una Verifica aziendale (KYB). I workflow senza questo passaggio non restituiscono affatto la chiave.| Campo | Cosa leggere |
| - | - |
| `status` | `signed` quando i documenti sono firmati. Qualsiasi altro valore significa che non c'è ancora una firma. |
| `verdict` | `Approved`, `In Review`, `Declined` o `Not Finished`, stabiliti dalle regole del passaggio. |
| `signer`, `identity_used` | Chi ha firmato e l'identità verificata associata. |
| `confirmation`, `certificate`, `timestamp` | La conferma con codice monouso e le prove crittografiche. |
| `documents[]` | Gli hash di ciascun documento, il suo stato, il percorso `signed_file` e i suoi `fields[]` con i valori. |
| `evidence_file` | Percorso del PDF delle prove del firmatario. |Scarica i file dai percorsi con la tua chiave API. Consulta il [report sulla firma elettronica](https://docs.didit.me/it/core-technology/electronic-signature/report-electronic-signature.md) per tutti i campi.## Errori| Stato | Motivo |
| - | - |
| `404` | Non esiste alcuna sessione con quel `session_id` per questa applicazione (vengono controllati entrambi i tipi di sessione). |
| `403` | Manca il privilegio `read:sessions`. |
| `401` | Chiave API non valida. |## Correlati- [Panoramica delle sessioni](https://docs.didit.me/it/sessions-api/overview.md) — distinzione per tipo e matrice delle funzionalità.
- [Schema di risposta KYB](https://docs.didit.me/it/business-verification/response-schema.md) — riferimento campo per campo della decisione aziendale.
- [Stati della verifica](https://docs.didit.me/it/integration/verification-statuses.md) — macchina a stati condivisa da entrambi i tipi.
- [Webhook](https://docs.didit.me/it/integration/webhooks.md) — iscriviti a `status.updated` per le sessioni di Verifica degli utenti e Verifica aziendale (KYB) (filtra su `session_kind`).
- [Metodi di verifica dell'identità](https://docs.didit.me/it/core-technology/id-verification/verification-methods.md) — acquisizione del documento, ricerca senza documento e wallet di identità digitali, e cosa ciascuno inserisce nella sessione.
- [Consenso biometrico](https://docs.didit.me/it/getting-started/biometric-consent.md): quando il flusso richiede un consenso biometrico esplicito e l'oggetto `biometric_consent`.
- [Report sulla firma elettronica](https://docs.didit.me/it/core-technology/electronic-signature/report-electronic-signature.md): `signatures[]`, i PDF firmati e le prove.
- [Metodi di verifica bancaria](https://docs.didit.me/it/core-technology/bank-verification/verification-methods.md): `bank_verifications[]` e il suo `method`.
- [Quando la persona non può verificare la propria banca](https://docs.didit.me/it/core-technology/bank-verification/fallbacks.md): `continued_without_bank`, `continuation` e l'esito di ciascun motivo.


## OpenAPI

````yaml it/openapi-25.json GET /v3/session/{sessionId}/decision/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/decision/:
    get:
      tags:
        - Sessions
      summary: Recupera la decisione completa per una sessione di verifica
      description: >-
        Recupera il report completo della decisione per una sessione di
        verifica: lo `status` complessivo della sessione più un report per ogni
        funzionalità di verifica eseguita dal workflow. Questo è l'endpoint
        canonico di lettura sia per le sessioni di Verifica degli utenti (KYC)
        sia per quelle di Verifica aziendale (KYB): lo stesso percorso gestisce
        entrambe, e il discriminatore di primo livello `session_kind` indica
        quale struttura hai ricevuto (`"user"` o `"business"`).


        **Ogni report di funzionalità è un array con nome al plurale.** I
        workflow V3 sono grafi che possono eseguire la stessa funzionalità più
        di una volta, quindi ciascun blocco (`id_verifications`,
        `nfc_verifications`, `liveness_checks`, `face_matches`,
        `poa_verifications`, `document_ai_documents`, `phone_verifications`,
        `email_verifications`, `aml_screenings`, `ip_analyses`,
        `database_validations`, `questionnaire_responses`) è un array JSON i cui
        elementi contengono ciascuno un `node_id` che identifica il nodo del
        grafo del workflow che li ha prodotti. Leggi NFC come
        `response.nfc_verifications[0]`, mai come campo singolare `nfc`. Un
        blocco è `null` finché il workflow non ha eseguito quella funzionalità
        almeno una volta; le funzionalità non incluse nel workflow non compaiono
        mai con dati. I risultati della Firma elettronica si trovano in
        `signatures`, presente solo quando il workflow include un passaggio di
        Firma elettronica.


        **Quando chiamare.** Il pattern consigliato è basato su eventi: attendi
        il webhook `status.updated` che viene attivato quando la sessione
        raggiunge una decisione (`Approved`, `Declined`, `In Review`), quindi
        chiama questo endpoint una volta per recuperare il report completo.
        Anche il polling funziona (l'endpoint può essere chiamato in qualsiasi
        momento del ciclo di vita della sessione e restituisce i dati prodotti
        fino a quel punto), ma l'approccio basato su webhook e successivo
        recupero è più economico e veloce. Gli URL dei file multimediali nella
        risposta (immagini di documenti, video, PDF) sono link pre-firmati di
        breve durata: scaricali tempestivamente o richiedi nuovamente la
        decisione per ottenerne di nuovi, e non memorizzarli come riferimenti a
        lungo termine.


        **Stati.** Lo `status` di primo livello è lo stato del ciclo di vita
        della sessione (`Not Started`, `In Progress`, `Awaiting User`, `In
        Review`, `Approved`, `Declined`, `Resubmitted`, `Expired`, `Kyc
        Expired`, `Abandoned`). Ogni elemento della funzionalità include inoltre
        il proprio `status` a livello di funzionalità (`Not Finished`,
        `Approved`, `Declined`, `In Review`, ...). Una sessione può essere
        complessivamente `Approved` mentre una singola funzionalità è `In
        Review`, a seconda delle regole decisionali del workflow.


        **Autenticazione e visibilità.** Esegui l'autenticazione con la chiave
        API dell'applicazione nell'intestazione `x-api-key` (funziona anche un
        token Bearer di un utente della console con l'autorizzazione
        `read:sessions`). Sono visibili solo le sessioni di proprietà
        dell'applicazione autenticata. Se il tuo workflow limita gli attributi
        di risposta, i campi non consentiti all'interno degli elementi delle
        funzionalità vengono restituiti come `null`, mentre `status`, `warnings`
        e `node_id` vengono sempre conservati.


        **Limiti di frequenza.** Le richieste GET sono limitate a 600 al minuto
        per chiave API. Il superamento del limite restituisce `429` con le
        intestazioni `Retry-After` e `X-RateLimit-*`.
      operationId: get_v3_session_decision
      parameters:
        - name: sessionId
          in: path
          required: true
          description: >-
            UUID della sessione di verifica di cui vuoi recuperare la decisione.
            Corrisponde al `session_id` restituito da `POST /v3/session/`. Lo
            stesso percorso funziona sia per le sessioni di Verifica degli
            utenti (KYC) sia per quelle di Verifica aziendale (KYB): il server
            risolve l'ID per entrambi i tipi di sessione.


            **Deve essere un UUID valido.** La route trova corrispondenza solo
            con UUID corretti, pertanto un valore non conforme viene rifiutato
            dal router degli URL prima dell'esecuzione del codice
            dell'applicazione e la risposta è una pagina **HTML** `404` anziché
            il wrapper JSON `{"detail": ...}` mostrato di seguito. Valida il
            formato dell'UUID lato client per distinguere un errore di input da
            un autentico `404` per sessione mancante.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - name: include
          in: query
          required: false
          description: >-
            Elenco separato da virgole di sezioni di payload aggiuntive. Valori
            supportati: `events` e `resubmissions`, singolarmente o insieme
            (`events,resubmissions`). Quando viene passato `include=events`, la
            risposta contiene inoltre la cronologia degli eventi della sessione
            (`events`, compresi gli eventi di routing
            `WORKFLOW_BRANCH_EVALUATED` / `WORKFLOW_STATUS_NODE_REACHED`
            descritti nella pagina Recupera sessione), il registro completo
            delle attività (`activity_reviews`), i flag di blocklist
            (`blocklisted`), un `cost_breakdown` per sessione, i metadati del
            workflow (`workflow_type`, `workflow_version`, `workflow_version_id`
            e `workflow_terminal_node_id` - l'ultimo nodo di stato del workflow
            registrato che ha impostato uno stato della sessione, o `null` se
            non ne è stato registrato alcuno; provenienza storica che non viene
            cancellata da approvazioni, rifiuti o nuovi invii manuali ed è
            sostituita da un nodo di stato del workflow successivo) e i metadati
            della sessione (`api_service` — stringa o `null`, impostato solo per
            le sessioni API autonome; `session_type` — `API`, `HOSTED` o
            `MIGRATED`; `has_device_nfc_support` — booleano). Due campi cambiano
            rispetto alla struttura standard: il discriminatore di primo livello
            `session_kind` viene **omesso** (la struttura degli eventi esiste
            solo per le sessioni utente) e l'array `features` passa da stringhe
            semplici a oggetti `{feature, node_id}` — dove la funzionalità email
            viene indicata come `EMAIL` invece di `EMAIL_VERIFICATION`. Questa
            struttura estesa è utilizzata principalmente dalla Console Didit; la
            maggior parte delle integrazioni API dovrebbe omettere il parametro.
            **Limitazione KYB:** `include=events` si applica solo alle sessioni
            utente (KYC). Le sessioni aziendali (`session_kind = "business"`)
            restituiscono sempre la struttura standard della decisione aziendale
            — `events`, `activity_reviews`, `blocklisted`, `cost_breakdown` e i
            metadati aggiuntivi `workflow_*`/della sessione non vengono mai
            restituiti per le sessioni aziendali, e il loro array `features`
            rimane un semplice array di stringhe. Con `include=resubmissions`
            (sia per le sessioni utente che aziendali), la risposta contiene
            anche `resubmissions`: una voce per ciascuna richiesta di nuovo
            invio, dalla più vecchia alla più recente, ciascuna con `number`,
            `created_at`, `previous_status`, `nodes`, `reasons`, `requested_by`
            e `results` (ciò che i passaggi reinviati hanno restituito prima
            della richiesta, sotto le stesse chiavi e nella stessa struttura dei
            risultati attuali). Ciascun elemento di `cost_breakdown` include
            `usage_type`, `price`, `details` e `created_at`: un passaggio
            reinviato che viene eseguito nuovamente viene fatturato come nuovo
            elemento.
          schema:
            type: string
            enum:
              - events
              - resubmissions
              - events,resubmissions
            example: events
      responses:
        '200':
          description: >-
            Report di decisione completo. `session_kind` distingue le due
            strutture: le sessioni `user` contengono gli array di funzionalità
            KYC mostrati di seguito; le sessioni `business` contengono invece
            `registry_checks`, `document_verifications` e `key_people_checks`
            insieme agli array condivisi. Gli array delle funzionalità sono
            `null` finché il workflow non ha eseguito tale funzionalità; gli URL
            dei contenuti multimediali sono link pre-firmati di breve durata.
          content:
            application/json:
              examples:
                Example:
                  summary: Esempio completo
                  value:
                    session_id: 11111111-2222-3333-4444-555555555555
                    session_kind: user
                    session_number: 43762
                    session_url: >-
                      https://verify.didit.me/session/11111111-2222-3333-4444-555555555555
                    status: In Review
                    environment: live
                    workflow_id: 11111111-2222-3333-4444-555555555555
                    features:
                      - ID_VERIFICATION
                      - NFC
                      - LIVENESS
                      - FACE_MATCH
                      - POA
                      - PHONE
                      - DATABASE_VALIDATION
                      - AML
                      - IP_ANALYSIS
                    vendor_data: 11111111-1111-1111-1111-111111111111
                    metadata:
                      user_type: premium
                      account_id: ABC123
                    expected_details:
                      first_name: Carmen
                      last_name: Española Española
                    contact_details:
                      email: carmen@example.com
                      email_lang: es
                      send_notification_emails: false
                      phone: null
                    callback: https://verify.didit.me/
                    id_verifications:
                      - node_id: feature_ocr_1
                        status: Approved
                        document_type: Identity Card
                        document_subtype: ID_CARD_GENERIC
                        document_number: CAA000000
                        personal_number: 99999999R
                        portrait_image: https://<media-host>/portrait.jpg
                        front_image: https://<media-host>/front.jpg
                        front_video: https://<media-host>/front.mp4
                        back_image: https://<media-host>/back.jpg
                        back_video: https://<media-host>/back.mp4
                        full_front_image: https://<media-host>/full_front.jpg
                        full_back_image: https://<media-host>/full_back.jpg
                        front_image_camera_front: https://<media-host>/front_camera_front.jpg
                        back_image_camera_front: https://<media-host>/back_camera_front.jpg
                        date_of_birth: '1980-01-01'
                        age: 45
                        expiration_date: '2031-06-02'
                        date_of_issue: '2021-06-02'
                        issuing_state: ESP
                        issuing_state_name: Spain
                        first_name: Carmen
                        last_name: Española Española
                        full_name: Carmen Española Española
                        gender: F
                        address: Avda de Madrid 34, Madrid, Madrid
                        formatted_address: Avda de Madrid 34, Madrid, Madrid 28822, Spain
                        place_of_birth: Madrid
                        marital_status: Single
                        nationality: ESP
                        extra_fields:
                          dl_categories: []
                          blood_group: null
                        mrz:
                          surname: ESPANOLA ESPANOLA
                          name: CARMEN
                          country: ESP
                          nationality: ESP
                          birth_date: '800101'
                          expiry_date: '310602'
                          sex: F
                          document_type: ID
                          document_number: CAA000000
                          optional_data: 99999999R
                          optional_data_2: ''
                          birth_date_hash: '4'
                          expiry_date_hash: '8'
                          document_number_hash: '4'
                          final_hash: '1'
                          personal_number: 99999999R
                          warnings: []
                          errors: []
                          mrz_type: TD1
                          mrz_string: |-
                            IDESPCAA000000499999999R<<<<<<
                            8001014F3106028ESP<<<<<<<<<<<1
                            ESPANOLA<ESPANOLA<<CARMEN<<<<<
                          mrz_key: CAA000000480010143106028
                        parsed_address:
                          city: Madrid
                          label: Spain ID Card Address
                          region: Madrid
                          country: ES
                          category: Residential
                          street_1: Avda de Madrid 34
                          street_2: null
                          is_verified: true
                          postal_code: '28822'
                          raw_results:
                            types:
                              - street_address
                            geometry:
                              location:
                                lat: 37.4222804
                                lng: -122.0843428
                              viewport:
                                northeast:
                                  lat: 37.4237349802915
                                  lng: -122.083183169709
                                southwest:
                                  lat: 37.4210370197085
                                  lng: -122.085881130292
                              location_type: ROOFTOP
                            place_id: ChIJN1t_tDeuEmsRUsoyG83frY4
                            formatted_address: Avda de Madrid 34, 28822 Madrid, Spain
                            navigation_points:
                              - location:
                                  latitude: 37.4222804
                                  longitude: -122.0843428
                            address_components:
                              - types:
                                  - street_number
                                long_name: '34'
                                short_name: '34'
                              - types:
                                  - route
                                long_name: Avda de Madrid
                                short_name: Avda de Madrid
                              - types:
                                  - locality
                                  - political
                                long_name: Madrid
                                short_name: Madrid
                              - types:
                                  - country
                                  - political
                                long_name: Spain
                                short_name: ES
                              - types:
                                  - postal_code
                                long_name: '28822'
                                short_name: '28822'
                          address_type: Avda
                          document_location:
                            latitude: 37.4222804
                            longitude: -122.0843428
                          formatted_address: Avda de Madrid 34, 28822 Madrid, Spain
                        front_image_camera_front_face_match_score: 95.5
                        back_image_camera_front_face_match_score: 93.2
                        document_selfie_face_matches:
                          - session_id: 3f0c9a52-7b1e-4d68-a2c4-5e9d8b7f1a20
                            session_number: 1180
                            similarity_percentage: 97.4
                            vendor_data: user_ref_001
                            vendor_user_id: null
                            biometric_template_id: null
                            verification_date: '2026-09-02T09:15:00Z'
                            user_details:
                              full_name: Jane Doe
                            match_image_url: https://<media-host>/match_face.jpg
                            status: Approved
                            is_blocklisted: false
                            is_allowlisted: false
                            api_service: null
                            source: session
                        front_image_quality_score:
                          focus_score: 85.3
                          brightness_score: 92.1
                          brightness_issue: ok
                          is_document_fully_visible: true
                          resolution_score: 72.4
                          overall_score: 88.7
                        back_image_quality_score:
                          focus_score: 79.1
                          brightness_score: 90.5
                          brightness_issue: ok
                          is_document_fully_visible: true
                          resolution_score: 72.4
                          overall_score: 85.2
                        extra_files:
                          - https://<media-host>/extra_id_verification.jpg
                        matches:
                          - session_id: 7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f
                            session_number: 1234
                            vendor_data: user_ref_001
                            verification_date: '2024-06-15T10:30:00Z'
                            user_details:
                              name: John Smith
                              document_type: ID
                              document_number: CLM148418
                            status: Approved
                            is_blocklisted: false
                            api_service: null
                            front_image_url: https://<media-host>/document_front.jpg
                          - session_id: b2c8e4d1-6a3f-4e7b-95c0-1d8f2a6b4c9e
                            session_number: 1235
                            vendor_data: null
                            verification_date: '2024-05-20T14:45:00Z'
                            user_details:
                              name: John Smith
                              document_type: ID
                              document_number: CLM148418
                            status: Declined
                            is_blocklisted: true
                            api_service: ID_VERIFICATION
                            front_image_url: https://<media-host>/document_front_2.jpg
                        warnings:
                          - feature: ID_VERIFICATION
                            risk: QR_NOT_DETECTED
                            additional_data: null
                            log_type: information
                            short_description: QR not detected
                            long_description: >-
                              The system couldn't find or read the QR code on
                              the document, which is necessary for document
                              verification. This could be due to poor image
                              quality or an unsupported document type.
                            node_id: feature_ocr_1
                        verification_method: document
                        assurance: documentary
                        wallet_provider: null
                        fallback_from: null
                        id_lookup: null
                        wallet_verification: null
                        document_liveness:
                          portrait_replace:
                            score: 96.46
                            front: 96.46
                            back: 98.2
                            decline_threshold: 35
                            review_threshold: 70
                            bucket: approve
                          printed_copy:
                            score: 91.2
                            front: 91.2
                            back: 93.7
                            decline_threshold: 35
                            review_threshold: 77
                            bucket: approve
                          screen_replay:
                            score: 99.9
                            front: 99.9
                            back: 99.5
                            decline_threshold: 30
                            review_threshold: 70
                            bucket: approve
                      - node_id: feature_ocr_2
                        status: Approved
                        issuing_state: ZAF
                        issuing_state_name: South Africa
                        first_name: Thabo
                        last_name: Mokoena
                        full_name: Thabo Mokoena
                        date_of_birth: '1991-06-15'
                        personal_number: '9106155043088'
                        verification_method: id_lookup
                        assurance: data_match
                        wallet_provider: null
                        fallback_from: null
                        id_lookup:
                          source: Department of Home Affairs
                          checked_at: '2026-09-04T09:12:44Z'
                          attempts: 1
                          max_attempts: 2
                          outcome: match
                          comparison:
                            - field: identification_number
                              label: ID number
                              provided: '9106155043088'
                              record: '9106155043088'
                              result: match
                            - field: full_name
                              label: Full name
                              provided: Thabo Mokoena
                              record: Thabo Mokoena
                              result: match
                            - field: date_of_birth
                              label: Date of birth
                              provided: '1991-06-15'
                              record: '1991-06-15'
                              result: match
                          registry_portrait: https://<media-host>/registry_portrait.jpg
                          face_match_score: 96.4
                          source_errors: []
                        wallet_verification: null
                        warnings: []
                      - node_id: feature_ocr_3
                        status: Approved
                        issuing_state: DNK
                        issuing_state_name: Denmark
                        first_name: Freja
                        last_name: Nielsen
                        full_name: Freja Nielsen
                        date_of_birth: '1988-03-02'
                        verification_method: wallet
                        assurance: cryptographic
                        wallet_provider: mitid
                        fallback_from: null
                        id_lookup: null
                        wallet_verification:
                          provider: mitid
                          provider_name: MitID
                          issuing_authority: Danish Agency for Digital Government
                          issuing_country: DNK
                          credential_type: person_identification
                          level_of_assurance: substantial
                          verified_at: '2026-09-04T09:12:44Z'
                          signature_valid: true
                          attributes:
                            full_name: Freja Nielsen
                            date_of_birth: '1988-03-02'
                            cpr_alias: b0f1c2d3-e4f5-4678-9abc-def012345678
                          portrait: null
                          face_match_score: null
                        warnings: []
                    nfc_verifications:
                      - node_id: feature_nfc_1
                        status: In Review
                        is_nfc_skipped: false
                        skip_reason: null
                        chip_protocol: icao
                        jpki: null
                        portrait_image: https://<media-host>/portrait.jpg
                        signature_image: https://<media-host>/signature.jpg
                        chip_data:
                          document_type: ID
                          issuing_country: ESP
                          document_number: '123456789'
                          expiration_date: '2030-01-01'
                          first_name: John
                          last_name: Smith
                          birth_date: '1990-05-15'
                          gender: M
                          nationality: ESP
                          address: CALLE MAYOR 123 4B, MADRID, MADRID
                          place_of_birth: MADRID, MADRID
                        authenticity:
                          sod_integrity: true
                          dg_integrity: true
                        certificate_summary:
                          issuer: >-
                            Common Name: CSCA SPAIN, Serial Number: 3,
                            Organization: DIRECCION GENERAL DE LA POLICIA,
                            Country: ES
                          subject: >-
                            Common Name: DS n-eID SPAIN 2, Organizational Unit:
                            PASSPORT, Organization: DIRECCION GENERAL DE LA
                            POLICIA, Country: ES
                          serial_number: '118120836164494130086420187336801405660'
                          not_valid_after: '2031-02-18 10:21:11'
                          not_valid_before: '2020-11-18 10:21:11'
                        warnings:
                          - feature: NFC
                            risk: DATA_INCONSISTENT
                            additional_data: null
                            log_type: warning
                            short_description: OCR and NFC mrz code extracted are not the same
                            long_description: >-
                              The Optical Character Recognition (OCR) data and
                              the NFC chip data don't match, indicating
                              potential document tampering or data
                              inconsistency.
                            node_id: feature_nfc_1
                    liveness_checks:
                      - node_id: feature_liveness_1
                        status: Approved
                        method: ACTIVE_3D
                        score: 89.92
                        reference_image: https://<media-host>/reference.jpg
                        video_url: https://<media-host>/video.mp4
                        age_estimation: 24.3
                        matches:
                          - session_id: 7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f
                            session_number: 1234
                            vendor_data: user_ref_001
                            verification_date: '2024-06-15T10:30:00Z'
                            user_details:
                              full_name: John Smith
                              document_type: ID
                              document_number: CLM148418
                            status: Approved
                            is_blocklisted: false
                            is_allowlisted: false
                            api_service: null
                            source: session
                            match_image_url: https://<media-host>/face_match.jpg
                            similarity_percentage: 98.5
                          - session_id: 3e9a7c21-5b48-4f0e-9c6a-8d2f4b1e0a35
                            session_number: 1100
                            vendor_data: customer_xyz
                            verification_date: '2024-04-10T09:15:00Z'
                            user_details:
                              full_name: John Smith
                              document_type: P
                              document_number: DZ8375806
                            status: Approved
                            is_blocklisted: false
                            is_allowlisted: false
                            api_service: PASSIVE_LIVENESS
                            source: session
                            match_image_url: https://<media-host>/face_match_2.jpg
                            similarity_percentage: 95.2
                        warnings:
                          - feature: LIVENESS
                            risk: LOW_LIVENESS_SCORE
                            additional_data: null
                            log_type: information
                            short_description: Low liveness score
                            long_description: >-
                              The liveness check resulted in a low score,
                              indicating potential use of non-live facial
                              representations or poor-quality biometric data.
                            node_id: feature_liveness_1
                        face_quality: null
                        face_luminance: null
                    face_matches:
                      - node_id: feature_face_match_1
                        status: In Review
                        score: 65.43
                        source_image_session_id: null
                        source_image: https://<media-host>/source-image.jpg
                        target_image: https://<media-host>/target-image.jpg
                        warnings:
                          - feature: FACEMATCH
                            risk: LOW_FACE_MATCH_SIMILARITY
                            additional_data: null
                            log_type: warning
                            short_description: Low face match similarity
                            long_description: >-
                              The facial features of the provided image don't
                              closely match the reference image, suggesting a
                              potential identity mismatch.
                            node_id: feature_face_match_1
                    phone_verifications:
                      - node_id: feature_phone_1
                        status: Approved
                        phone_number_prefix: '+34'
                        phone_number: '600600600'
                        full_number: '+34600600600'
                        country_code: ES
                        country_name: Spain
                        carrier:
                          name: Orange
                          type: mobile
                        is_disposable: false
                        is_virtual: false
                        verification_method: sms
                        verification_attempts: 1
                        verified_at: '2024-07-28T06:47:35.654321Z'
                        lifecycle:
                          - type: PHONE_VERIFICATION_MESSAGE_SENT
                            timestamp: '2025-08-24T09:12:39.580554+00:00'
                            details:
                              status: Success
                              reason: null
                              channel: sms
                              actual_channel: sms
                            fee: 0.1
                          - type: VALID_CODE_ENTERED
                            timestamp: '2025-08-24T09:12:39.662157+00:00'
                            details:
                              code_tried: '123456'
                              status: Approved
                            fee: 0
                          - type: PHONE_VERIFICATION_APPROVED
                            timestamp: '2025-08-24T09:12:39.684292+00:00'
                            details: null
                            fee: 0
                        warnings: []
                        matches:
                          - session_id: null
                            session_number: null
                            vendor_data: null
                            verification_date: null
                            phone_number: '+34600000000'
                            status: null
                            is_blocklisted: true
                            api_service: null
                            source: list_entry
                    email_verifications:
                      - node_id: feature_email_1
                        status: Approved
                        email: test@example.com
                        is_breached: true
                        breaches:
                          - name: TAPAirPortugal
                            domain: flytap.com
                            logo_path: https://logos.example.com/TAPAirPortugal.png
                            breach_date: '2022-08-25'
                            description: >-
                              In August 2022, the Portuguese airline <a
                              href="https://www.bleepingcomputer.com/news/security/ragnar-locker-ransomware-claims-attack-on-portugals-flag-airline/"
                              target="_blank" rel="noopener">TAP Air Portugal
                              was the target of a ransomware attack perpetrated
                              by the Ragnar Locker gang</a> who later leaked the
                              compromised data via a public dark web site. Over
                              5M unique email addresses were exposed alongside
                              other personal data including names, genders,
                              DoBs, phone numbers and physical addresses.
                            is_verified: true
                            data_classes:
                              - dates_of_birth
                              - email_addresses
                              - genders
                              - names
                              - nationalities
                              - phone_numbers
                              - physical_addresses
                              - salutations
                              - spoken_languages
                            breach_emails_count: 6083479
                        is_disposable: false
                        is_undeliverable: false
                        verification_attempts: 1
                        verified_at: '2025-09-15T17:36:19.963451Z'
                        warnings:
                          - feature: EMAIL
                            risk: BREACHED_EMAIL_DETECTED
                            additional_data: null
                            log_type: information
                            short_description: Breached email detected
                            long_description: >-
                              This email address was found in one or more known
                              data breaches.
                            node_id: feature_email_1
                        lifecycle:
                          - type: EMAIL_VERIFICATION_MESSAGE_SENT
                            timestamp: '2025-09-15T17:36:19.792684+00:00'
                            details:
                              status: Success
                              reason: null
                            fee: 0.02
                          - type: VALID_CODE_ENTERED
                            timestamp: '2025-09-15T17:36:19.963427+00:00'
                            details:
                              code_tried: '123456'
                              status: Approved
                            fee: 0
                          - type: EMAIL_VERIFICATION_DECLINED
                            timestamp: '2025-09-15T17:36:20.081471+00:00'
                            details:
                              reason: BREACHED_EMAIL_DETECTED
                            fee: 0
                        matches:
                          - session_id: null
                            session_number: null
                            vendor_data: null
                            verification_date: null
                            email: test@example.com
                            status: null
                            is_blocklisted: true
                            api_service: null
                            source: list_entry
                    poa_verifications:
                      - node_id: feature_poa_1
                        status: Declined
                        document_file: https://<media-host>/poa_document.pdf
                        issuing_state: AR
                        document_type: UTILITY_BILL
                        document_subtype: null
                        document_language: es
                        document_metadata:
                          file_size: 1000
                          content_type: application/pdf
                          creation_date: '2021-01-01'
                          modified_date: '2021-01-01'
                          overlay_manipulation: null
                          creator: null
                          producer: PDF Generator
                          software: null
                          encryption: null
                          is_signed: false
                          is_tampered: false
                          signature_info: null
                          exif_original_date: null
                          exif_digitized_date: null
                          processed_by_known_editor: false
                          has_different_creation_mod_date: true
                        issuer: Aguas del Norte
                        issue_date: '2021-02-01'
                        expiration_date: null
                        poa_address: AVDA. MONSEÑOR TAVELLA N° 3396, SALTA
                        poa_formatted_address: Av. Monseñor Tavella 3396, A4400 Salta, Argentina
                        poa_parsed_address:
                          address_type: Avenida
                          street_1: Avenida Monseñor Tavella 3396
                          street_2: null
                          city: Salta
                          region: Salta
                          country: AR
                          postal_code: A4400
                          document_location:
                            latitude: -24.8208664
                            longitude: -65.4131
                        name_on_document: Fernando De Lima
                        name_match_score_expected_details: null
                        name_match_score_id_verification: 38.5
                        expected_details_address: null
                        expected_details_formatted_address: null
                        expected_details_parsed_address: {}
                        extra_fields:
                          bank_account_number: '1234567890'
                          bank_iban: null
                          bank_sort_code: null
                          bank_routing_number: null
                          bank_swift_bic: null
                          bank_branch_name: null
                          bank_branch_address: null
                          document_phone_number: '+5491112345678'
                          additional_names: []
                        extra_files:
                          - https://<media-host>/extra_poa.pdf
                        detected_codes:
                          - type: QR_CODE
                            page_number: 1
                            position:
                              - - 820
                                - 1120
                              - - 1002
                                - 1120
                              - - 1002
                                - 1302
                              - - 820
                                - 1302
                            x: 820
                            'y': 1120
                            width: 182
                            height: 182
                            page_width: 1190
                            page_height: 1684
                            raw_payload: >-
                              aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==
                            parsed_payload: https://aguasdelnorte.com/factura/998811
                          - type: CODE_128
                            page_number: 1
                            position:
                              - - 112
                                - 1480
                              - - 560
                                - 1480
                              - - 560
                                - 1540
                              - - 112
                                - 1540
                            x: 112
                            'y': 1480
                            width: 448
                            height: 60
                            page_width: 1190
                            page_height: 1684
                            raw_payload: MDA5OTg4MTEwMDA0Mg==
                            parsed_payload: '0099881100042'
                        warnings: []
                    document_ai_documents:
                      - status: Approved
                        node_id: feature_document_ai_1
                        items:
                          - uuid: c1a2b3c4-d5e6-7f80-9a1b-2c3d4e5f6071
                            node_id: feature_document_ai_1
                            document_key: proof_of_funds
                            original_filename: bank_statement.pdf
                            file_size: 184320
                            file_url: >-
                              https://<media-host>/document_ai/proof_of_funds.pdf
                            status: Approved
                            extracted_data:
                              account_holder: John Doe
                              balance: 15230.55
                              currency: EUR
                              statement_date: '2026-05-31'
                            detected_codes:
                              - type: QR_CODE
                                page_number: 2
                                position:
                                  - - 124
                                    - 86
                                  - - 306
                                    - 86
                                  - - 306
                                    - 268
                                  - - 124
                                    - 268
                                x: 124
                                'y': 86
                                width: 182
                                height: 182
                                page_width: 1190
                                page_height: 1684
                                raw_payload: SU5WLTIwMjYtMDA0Mg==
                                parsed_payload: INV-2026-0042
                            fields:
                              - key: account_holder
                                name: Account holder
                                instruction: Extract the full name of the account holder.
                                type: text
                                required: true
                              - key: balance
                                name: Closing balance
                                instruction: Extract the closing balance amount.
                                type: number
                                required: true
                            document_metadata:
                              is_tampered: false
                            cross_check_result: null
                            created_at: '2026-06-01T12:34:56Z'
                        warnings: []
                    questionnaire_responses:
                      - node_id: feature_questionnaire_1
                        questionnaire_id: 9f7485e0-b00b-4d56-9d3e-7859b68d1213
                        title: Source of Funds
                        description: >-
                          Reply to this questionnaire to help us understand the
                          source of funds.
                        languages:
                          - en
                        default_language: en
                        is_active: true
                        is_simple_questionnaire: true
                        questionnaire_group_id: 2b6a9d40-13a8-4b1e-9a6c-3f1d2e4b5a60
                        version: 1
                        published_at: '2025-11-02T09:14:55.000000Z'
                        sections:
                          - title: null
                            description: null
                            items:
                              - uuid: 618636d9-7d5c-41ce-b8d0-1ab2a4be20db
                                value: question_1
                                element_type: DROPDOWN
                                is_required: true
                                title: What is your primary source of funds?
                                description: null
                                placeholder: null
                                choices:
                                  - label: Salary
                                    value: salary
                                  - label: Business Income
                                    value: business_income
                                  - label: Savings
                                    value: savings
                                  - label: Investments
                                    value: investments
                                  - label: Sale of Asset
                                    value: sale_of_asset
                                  - label: Inheritance/Gift
                                    value: inheritance_gift
                                  - label: Pension
                                    value: pension
                                  - label: Crypto Proceeds
                                    value: crypto_proceeds
                                  - label: Other
                                    value: other
                                    requires_text_input: true
                                max_files: 1
                                answer:
                                  value: salary
                                required_if: null
                                repeatable_config: null
                              - uuid: 2d16b527-72be-42e0-8e96-b164b818386c
                                value: question_2
                                element_type: LONG_TEXT
                                is_required: true
                                title: Provide details of the primary source.
                                description: null
                                placeholder: null
                                choices: null
                                max_files: 1
                                answer:
                                  value: Test answer
                                required_if: null
                                repeatable_config: null
                              - uuid: a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0
                                value: question_3
                                element_type: DROPDOWN
                                is_required: true
                                title: What is your annual income range (pre-tax)?
                                description: null
                                placeholder: null
                                choices:
                                  - label: Less than $25,000
                                    value: <25k
                                  - label: $25,000 - $50,000
                                    value: 25k-50k
                                  - label: $50,001 - $100,000
                                    value: 50k-100k
                                  - label: $100,001 - $250,000
                                    value: 100k-250k
                                  - label: More than $250,000
                                    value: '>250k'
                                max_files: 1
                                answer:
                                  value: <25k
                                required_if: null
                                repeatable_config: null
                              - uuid: 93dede62-6d0c-4a7f-934d-42175eb94011
                                value: question_4
                                element_type: DROPDOWN
                                is_required: true
                                title: What is your approximate net worth (range)?
                                description: null
                                placeholder: null
                                choices:
                                  - label: Less than $50,000
                                    value: <50k
                                  - label: $50,000 - $250,000
                                    value: 50k-250k
                                  - label: $250,001 - $1,000,000
                                    value: 250k-1m
                                  - label: $1,000,001 - $5,000,000
                                    value: 1m-5m
                                  - label: More than $5,000,000
                                    value: '>5m'
                                max_files: 1
                                answer:
                                  value: <50k
                                required_if: null
                                repeatable_config: null
                              - uuid: 2af60d6f-6961-4692-9ee7-24b3033610a6
                                value: question_5
                                element_type: LONG_TEXT
                                is_required: true
                                title: >-
                                  For your initial deposit/funding, indicate the
                                  exact source and amount.
                                description: null
                                placeholder: null
                                choices: null
                                max_files: 1
                                answer:
                                  value: Test answer
                                required_if: null
                                repeatable_config: null
                              - uuid: 0ad9d1aa-736f-46cf-947b-9e1241b53e40
                                value: question_6
                                element_type: LONG_TEXT
                                is_required: true
                                title: Breakdown of sources by percentage.
                                description: null
                                placeholder: null
                                choices: null
                                max_files: 1
                                answer:
                                  value: Test answer
                                required_if: null
                                repeatable_config: null
                              - uuid: 1bf8a2a3-14ee-48a8-bb3d-175481aae4aa
                                value: question_7
                                element_type: SINGLE_CHOICE
                                is_required: true
                                title: >-
                                  Will any funds originate from third parties?
                                  If yes, please provide details.
                                description: null
                                placeholder: null
                                choices:
                                  - label: 'Yes'
                                    value: 'yes'
                                    requires_text_input: true
                                  - label: 'No'
                                    value: 'no'
                                max_files: 1
                                answer:
                                  text: Additional details
                                  value: 'yes'
                                required_if: null
                                repeatable_config: null
                              - uuid: e18d4dd3-b7bf-4883-ba18-d6046adbe313
                                value: question_8
                                element_type: SINGLE_CHOICE
                                is_required: true
                                title: >-
                                  Do you hold or plan to use virtual assets
                                  (e.g., crypto) to fund this account? If yes,
                                  please provide details.
                                description: null
                                placeholder: null
                                choices:
                                  - label: 'Yes'
                                    value: 'yes'
                                    requires_text_input: true
                                  - label: 'No'
                                    value: 'no'
                                max_files: 1
                                answer:
                                  text: Additional details
                                  value: 'yes'
                                required_if: null
                                repeatable_config: null
                              - uuid: a90a073d-e098-404c-bbce-5130d8b12a13
                                value: question_9
                                element_type: FILE_UPLOAD
                                is_required: true
                                title: Upload a proof of funds document
                                description: >-
                                  You can upload your three (3) most recent bank
                                  statements, three (3) most recent payslips,
                                  your most recent tax return, proof of company
                                  ownership, trading exchange statement, sale of
                                  property, or proof of inheritance.
                                placeholder: null
                                choices: null
                                max_files: 3
                                answer:
                                  files:
                                    - /media/ocr/
                                    - /media/ocr/
                                required_if: null
                                repeatable_config: null
                              - uuid: 9503b486-7cb8-4c3b-a97d-4b64926a5a47
                                value: question_10
                                element_type: LONG_TEXT
                                is_required: false
                                title: >-
                                  Would you like to add any details to help us
                                  expedite our review of the documents you
                                  submitted?
                                description: null
                                placeholder: null
                                choices: null
                                max_files: 1
                                answer:
                                  value: Test answer
                                required_if: null
                                repeatable_config: null
                        status: Approved
                    aml_screenings:
                      - node_id: feature_aml_1
                        status: In Review
                        total_hits: 1
                        entity_type: person
                        hits:
                          - id: hit_7c1e9a40b2d35f86e0a4c912
                            url: https://news.example.org/articles/sample
                            match: false
                            score: 0.73
                            target: null
                            caption: Javier Ejemplo Modelo
                            datasets:
                              - PEP
                            features: null
                            rca_name: ''
                            last_seen: '2025-06-13T00:00:00'
                            risk_view:
                              crimes:
                                score: 0
                                weightage: 20
                                risk_level: Low
                                risk_scores: {}
                              countries:
                                score: 0
                                weightage: 30
                                risk_level: Low
                                risk_scores: {}
                              categories:
                                score: 100
                                weightage: 50
                                risk_level: High
                                risk_scores:
                                  PEP: 100
                              custom_list: {}
                            first_seen: '2025-01-18T00:00:00'
                            properties:
                              name:
                                - Javier Ejemplo Modelo
                              alias:
                                - Javier Ejemplo Modelo
                                - David Azagra
                              notes:
                                - Spanish orchestra conductor
                              title: null
                              gender:
                                - male
                              height: null
                              topics: null
                              weight: null
                              address: null
                              country: null
                              website: null
                              eyeColor: null
                              keywords: null
                              lastName:
                                - Ejemplo
                                - Modelo
                              position: null
                              religion: null
                              birthDate:
                                - '1974'
                              education:
                                - Tokyo Arts and Space (2012-2012)
                                - Saint Petersburg Conservatory (-2010)
                                - Comillas Pontifical University
                              ethnicity: null
                              firstName:
                                - David
                              hairColor: null
                              weakAlias: null
                              birthPlace:
                                - Madrid
                              modifiedAt: null
                              wikidataId: null
                              citizenship: null
                              nationality: null
                            match_score: 98
                            risk_score: 73
                            review_status: Unreviewed
                            score_breakdown:
                              name_score: 95
                              name_weight: 60
                              name_weight_normalized: 70.59
                              name_contribution: 67.06
                              dob_score: 100
                              dob_weight: 25
                              dob_weight_normalized: 29.41
                              dob_contribution: 29.41
                              country_score: 0
                              country_weight: 15
                              country_weight_normalized: 0
                              country_contribution: 0
                              document_number_match_type: NEUTRAL
                              document_number_effect: No document number provided for screening
                              total_score: 98
                            pep_matches:
                              - aliases:
                                  - Javier Ejemplo Modelo
                                  - David Azagra
                                education:
                                  - Tokyo Arts and Space (2012-2012)
                                  - Saint Petersburg Conservatory (-2010)
                                  - Comillas Pontifical University
                                list_name: Wikidata
                                publisher: Wikidata
                                source_url: https://news.example.org/articles/sample
                                description: >-
                                  Wikidata is the structured data project of the
                                  Wikipedia community, providing fact-based
                                  information edited by humans and machines
                                matched_name: Javier Ejemplo Modelo
                                pep_position: ''
                                date_of_birth: '1974'
                                other_sources: []
                                place_of_birth: Madrid
                            linked_entities:
                              - name:
                                  - Antonio Ejemplo
                                active: []
                                status: []
                                details: []
                                relation: []
                            warning_matches: []
                            sanction_matches: []
                            adverse_media_details:
                              sentiment: Moderately Negative
                              entity_type: person
                              sentiment_score: -2
                              adverse_keywords:
                                fraud: 3
                                juicio: 1
                                delitos: 2
                                imputado: 1
                                impunidad: 1
                                corruption: 2
                                favoritism: 2
                                privilegio: 1
                                corrupción: 1
                                persecution: 2
                                desconfianza: 1
                                desprestigio: 1
                                fraude de ley: 2
                                manipulación: 1
                                investigación: 3
                                prevaricación: 8
                                trato de favor: 1
                                irregularidades: 2
                                crisis de confianza: 1
                                tráfico de influencias: 8
                            adverse_media_matches:
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in legal
                                  violations related to favoritism and influence
                                  trafficking, leading to a negative portrayal
                                  in the article.
                                headline: >-
                                  La Diputación de Villaejemplo consolida la
                                  plaza a medida para el ex asesor de Moncloa
                                  amigo del "hermanito" de Ejemplo
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - fraud
                                  - prevaricación
                                  - tráfico de influencias
                                  - irregularidades
                                  - imputado
                                sentiment_score: -2
                                publication_date: '2025-06-10T20:46:38'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in legal issues
                                  regarding favoritism and corruption, leading
                                  to a negative portrayal in the article.
                                headline: >-
                                  La Diputación de Villaejemplo consolida la
                                  plaza a medida para el ex asesor de Moncloa
                                  amigo del "hermanito" de Ejemplo
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - fraud
                                  - prevaricación
                                  - tráfico de influencias
                                  - irregularidades
                                  - trato de favor
                                sentiment_score: -2
                                publication_date: '2025-06-10T20:46:38'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is mentioned in
                                  connection with Carlos Ficticio's corruption
                                  case, indicating his involvement in alleged
                                  influence peddling.
                                headline: España, paraíso del aforado
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                  - corrupción
                                  - impunidad
                                  - privilegio
                                  - desconfianza
                                  - manipulación
                                  - fraude de ley
                                sentiment_score: -2
                                publication_date: '2025-06-10T05:05:34'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is implicated in the
                                  same investigation as Ficticio, which raises
                                  questions about his conduct and political
                                  ethics.
                                headline: 'Aforamientos: esa figura incómoda'
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                  - investigación
                                  - juicio
                                  - fraude de ley
                                  - desprestigio
                                  - crisis de confianza
                                  - delitos
                                sentiment_score: -2
                                publication_date: '2025-06-08T06:01:00'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in a legal
                                  investigation regarding irregularities in his
                                  hiring, which raises serious concerns about
                                  his conduct.
                                headline: >-
                                  La jueza del 'caso Javier Ejemplo' denuncia un
                                  «fraude de ley» en el aforamiento de Ficticio
                                  (Partido Ejemplo)
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - fraud
                                  - irregularities
                                  - prevaricación
                                  - tráfico de influencias
                                sentiment_score: -2
                                publication_date: '2025-06-09T10:19:10'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is mentioned in
                                  connection with legal allegations of
                                  corruption, contributing to a negative
                                  perception.
                                headline: >-
                                  'Caso aforamiento': la letrada mayor de la
                                  Asamblea certifica a la juez que Ficticio es
                                  diputado desde antes de prometer su cargo en
                                  el Pleno
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                sentiment_score: -2
                                publication_date: '2025-06-09T08:08:30'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is implicated in the
                                  same investigation as Ficticio, raising
                                  concerns about political corruption and
                                  influence.
                                headline: 'Aforamientos: esa figura incómoda'
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                  - investigación
                                sentiment_score: -2
                                publication_date: '2025-06-08T06:01:00'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is implicated in the
                                  same investigation as Ficticio, which raises
                                  concerns about political misconduct.
                                headline: 'Aforamientos: esa figura incómoda'
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                  - investigación
                                  - delitos
                                sentiment_score: -2
                                publication_date: '2025-06-08T06:00:59'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in a case of
                                  favoritism and corruption, which casts a
                                  negative light on his character and actions.
                                headline: >-
                                  'Caso Javier Ejemplo': las asociaciones
                                  judiciales salen en defensa de la juez Luisa
                                  Inventada ante las "presiones externas" que
                                  sufre
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - favoritism
                                  - corruption
                                  - persecution
                                sentiment_score: -2
                                publication_date: '2025-06-06T10:08:15'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in a case of
                                  alleged favoritism and corruption, which casts
                                  a negative light on his character and actions.
                                headline: >-
                                  'Caso Javier Ejemplo': las asociaciones
                                  judiciales salen en defensa de la juez Luisa
                                  Inventada ante las "presiones externas" que
                                  sufre
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - favoritism
                                  - corruption
                                  - persecution
                                sentiment_score: -2
                                publication_date: '2025-06-06T08:08:15'
                            additional_information: {}
                        score: 80
                        screened_data:
                          full_name: Javier Ejemplo Modelo
                          nationality: ES
                          date_of_birth: '1974-01-01'
                          document_number: null
                        is_ongoing_monitoring_enabled: true
                        next_ongoing_monitoring_bill_date: '2026-07-24'
                        last_ongoing_screening_at: '2026-09-12T04:03:11Z'
                        last_ongoing_screening_datasets_updated_at: '2026-09-11T06:00:00Z'
                        warnings:
                          - feature: AML
                            risk: POSSIBLE_MATCH_FOUND
                            additional_data: null
                            log_type: warning
                            short_description: Possible match found in AML screening
                            long_description: >-
                              The Anti-Money Laundering (AML) screening process
                              identified potential matches with watchlists or
                              high-risk databases, requiring further review.
                            node_id: feature_aml_1
                    ip_analyses:
                      - node_id: feature_ip_1
                        status: Approved
                        device_brand: Apple
                        device_model: iPhone
                        browser_family: Mobile Safari
                        os_family: iOS
                        platform: mobile
                        device_fingerprint: didit-fp-a1b2c3d4e5f6g7h8
                        ip_country: Spain
                        ip_country_code: ES
                        ip_state: Barcelona
                        ip_city: Barcelona
                        latitude: 41.4022
                        longitude: 2.1407
                        ip_address: 83.50.226.71
                        isp: null
                        organization: null
                        is_vpn_or_tor: false
                        is_data_center: false
                        time_zone: Europe/Madrid
                        time_zone_offset: '+0100'
                        ip:
                          location:
                            latitude: 40.2206327
                            longitude: 1.5770097
                          distance_from_id_document: 23.4
                          distance_from_poa_document: 12.3
                        id_document:
                          location:
                            latitude: 41.2706327
                            longitude: 1.9770097
                          distance_from_ip: 23.4
                          distance_from_poa_document: 18.7
                        poa_document:
                          location:
                            latitude: 41.2706327
                            longitude: 1.9770097
                          distance_from_ip: 12.3
                          distance_from_id_document: 18.7
                        warnings: []
                        matches:
                          - session_id: 99999999-8888-7777-6666-555555555555
                            session_number: 41205
                            vendor_data: 22222222-2222-2222-2222-222222222222
                            verification_date: '2024-07-20T10:15:30Z'
                            match_type: ip_address
                            match_source: ip_address
                            matched_value: 83.50.226.71
                            status: Approved
                            is_blocklisted: false
                            api_service: null
                            source: session
                            device_info:
                              device_brand: Apple
                              device_model: iPhone
                              browser_family: Mobile Safari
                              os_family: iOS
                              platform: mobile
                              device_fingerprint: didit-fp-f9e8d7c6b5a40312
                            location_info:
                              ip_address: 83.50.226.71
                              ip_country: Spain
                              ip_country_code: ES
                              ip_state: Barcelona
                              ip_city: Barcelona
                              is_vpn_or_tor: false
                              is_data_center: false
                            confidence: 0
                            match_mode: co_occurrence
                          - session_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                            session_number: 42830
                            vendor_data: 33333333-3333-3333-3333-333333333333
                            verification_date: '2024-06-30T18:22:05Z'
                            match_type: device_fingerprint
                            match_source: recovered_high
                            matched_value: f47ac10b-58cc-4372-a567-0e02b2c3d479
                            status: Declined
                            is_blocklisted: false
                            api_service: null
                            source: session
                            device_info:
                              device_brand: Samsung
                              device_model: SM-G991B
                              browser_family: Chrome Mobile
                              os_family: Android
                              platform: mobile
                              device_fingerprint: null
                            location_info:
                              ip_address: 83.50.231.18
                              ip_country: Spain
                              ip_country_code: ES
                              ip_state: Madrid
                              ip_city: Madrid
                              is_vpn_or_tor: false
                              is_data_center: false
                            confidence: 1
                            match_mode: deterministic
                            recovery_similarity: 0.9874
                            tls_ja4_corroborated: true
                            recovery_gate_reason: hardware_root_match
                    database_validations:
                      - node_id: feature_db_validation_1
                        issuing_state: BRA
                        validation_type: one_by_one
                        screened_data:
                          last_name: De Lima
                          first_name: Fernando
                          tax_number: '01234567890'
                          date_of_birth: '1980-01-01'
                          document_type: ID
                          expiration_date: '2030-01-01'
                        validations:
                          - service_id: bra_cpf
                            service_name: Brazil - CPF status check
                            outcome_code: MATCH
                            validation:
                              full_name: full_match
                              date_of_birth: full_match
                              identification_number: full_match
                            source_data:
                              identification_number: '01234567890'
                              first_name: FERNANDO
                              last_name: DE LIMA
                              date_of_birth: '1980-01-01'
                              gender: M
                              nationality: BRA
                        match_type: full_match
                        status: Approved
                        warnings: []
                    reviews:
                      - user: compliance@example.com
                        new_status: Declined
                        comment: Possible match found in AML screening
                        created_at: '2024-07-18T13:29:00.366811Z'
                    created_at: '2024-07-24T08:54:25.443172Z'
                    expires_at: '2025-07-24T08:54:25.443172Z'
                    biometric_consent:
                      required: false
                      trigger: null
                      status: not_required
                      given_at: null
                      declined_at: null
                      text_version: null
                      text_hash: null
                      locale: null
                      policy_url: null
                      step: null
                      node_id: null
                      ip_address: null
                      ip_country_code: null
                      ip_state: null
                      ip_city: null
                      user_agent: null
                      detected_ip_address: 83.50.226.71
                      detected_country_code: ES
                      detected_state: ES-B
                      detected_city: Barcelona
                      declared_state: null
                      document_state: null
                      jurisdictions: []
                      retention_months: null
                      reason: null
                      decline_reason: null
                      face_data_deleted_at: null
                BusinessExample:
                  summary: Esempio di sessione aziendale (KYB)
                  description: >-
                    Una decisione con `session_kind = "business"`: le sessioni
                    KYB sostituiscono gli array delle funzionalità KYC con
                    `registry_checks`, `document_verifications` e
                    `key_people_checks`, condividendo al contempo
                    `aml_screenings`, `phone_verifications`,
                    `email_verifications`, `questionnaire_responses`,
                    `ip_analyses`, `reviews` e l'involucro della sessione.
                  value:
                    session_id: 66666666-7777-8888-9999-000000000000
                    session_kind: business
                    session_number: 31415
                    session_url: https://verify.didit.me/session/business123
                    status: In Review
                    environment: live
                    workflow_id: abababab-cdcd-efef-0101-232323232323
                    features:
                      - KYB_REGISTRY
                      - KYB_DOCUMENTS
                      - KYB_KEY_PEOPLE
                    vendor_data: merchant-001234
                    metadata: null
                    callback: https://example.com/verification/callback
                    registry_checks:
                      - status: Approved
                        node_id: feature_kyb_registry_1
                        data_resolved: true
                        company:
                          uuid: dddd4444-eeee-5555-ffff-666677778888
                          node_id: feature_kyb_registry_1
                          status: Approved
                          registry_status: active
                          data_resolved: true
                          company_name: ACME HOLDINGS LTD
                          registration_number: '12345678'
                          country_code: GB
                          region: null
                          company_type: Private Limited Company
                          incorporation_date: '2015-03-12'
                          registered_address: 1 Example Street, London, EC1A 1AA
                          tax_number: null
                          risk_level: null
                          verification_status: verified
                          is_from_registry: true
                          fetch_status: resolved
                          alternative_names: null
                          nature_of_business: 62012 - Business and domestic software development
                          registered_capital: 100 GBP
                          registered_capital_amount: '100.00'
                          registered_capital_currency: GBP
                          website: null
                          email: null
                          phone: null
                          legal_entity_identifier: null
                          location_of_registration: England and Wales
                          financial_summary: null
                          officers:
                            - uuid: aaaa1111-bbbb-2222-cccc-333344445555
                              name: Jane Smith
                              designation: Director
                              role: director
                              nationality: British
                              is_active: true
                              kyc_status: Approved
                              kyc_session_url: https://verify.didit.me/session/abc123def456
                          beneficial_owners:
                            - uuid: bbbb2222-cccc-3333-dddd-444455556666
                              name: John Doe
                              first_name: John
                              last_name: Doe
                              entity_type: person
                              roles:
                                - ubo
                                - shareholder
                              ownership_min_shares: '50'
                              ownership_max_shares: '75'
                              is_active: true
                              kyc_status: Pending
                              kyc_session_url: https://verify.didit.me/session/def456ghi789
                              effective_ownership_percent: 75
                          addresses:
                            - type: registered
                              address: 1 Example Street, London, EC1A 1AA
                              country: GB
                          industries:
                            - code: '62012'
                              description: Business and domestic software development
                          accounts: null
                          registry_data: {}
                          user_provided_data:
                            company_name: ACME HOLDINGS
                            registration_number: '12345678'
                          confirmed_by_user_at: '2026-06-10T12:01:30.000000Z'
                          last_console_edit_at: null
                          is_editable: false
                        ownership_structure:
                          shareholders:
                            - name: John Doe
                              first_name: John
                              last_name: Doe
                              date_of_birth: null
                              country_of_birth: null
                              company_name: null
                              registration_number: null
                              entity_type: person
                              nationality: null
                              designation: null
                              roles:
                                - shareholder
                              ownership_min_shares: '75'
                              ownership_max_shares: '75'
                              voting_min_shares: null
                              voting_max_shares: null
                              appointment_date: null
                              is_active: true
                              shareholding:
                                share_class: ORDINARY
                                number_of_shares: 750
                                currency: GBP
                                nominal_value: 1
                                total_value: null
                                percentage: 75
                          beneficial_owners: []
                        warnings: []
                    aml_screenings: null
                    document_verifications:
                      - status: In Review
                        node_id: feature_kyb_documents_1
                        items:
                          - uuid: eeee5555-ffff-6666-0000-777788889999
                            document_type: LEGAL_PRESENCE
                            document_subtype: CERTIFICATE_OF_INCORPORATION
                            document_group: LEGAL_PRESENCE
                            file_url: >-
                              https://<media-host>/kyb/certificate-of-incorporation.pdf
                            original_filename: certificate_of_incorporation.pdf
                            file_size: 482133
                            status: Approved
                            created_at: '2026-06-10T12:03:11.000000Z'
                            cross_check_result:
                              critical:
                                company_name:
                                  document: ACME HOLDINGS LTD
                                  registry: ACME HOLDINGS LTD
                                  score: 1
                                  match: true
                                registration_number:
                                  document: '12345678'
                                  registry: '12345678'
                                  match: true
                              non_critical: {}
                              people: {}
                            document_metadata:
                              file_size: 482133
                              content_type: application/pdf
                              creation_date: '2015-03-12T09:00:00'
                              modified_date: '2015-03-12T09:00:00'
                              creator: null
                              producer: null
                              software: null
                              encryption: null
                              is_signed: true
                              is_tampered: false
                              signature_info: null
                              exif_original_date: null
                              exif_digitized_date: null
                              processed_by_known_editor: false
                              has_different_creation_mod_date: false
                              overlay_manipulation: null
                            description: null
                            is_requested: false
                            ocr_data:
                              company_name: ACME HOLDINGS LTD
                              registration_number: '12345678'
                              incorporation_date: '2015-03-12'
                            is_console_upload: false
                            is_confirmed: true
                          - uuid: ffff6666-0000-7777-1111-888899990000
                            document_type: OWNERSHIP_STRUCTURE
                            document_subtype: null
                            document_group: OWNERSHIP_STRUCTURE
                            file_url: null
                            original_filename: null
                            file_size: null
                            status: Not Finished
                            created_at: '2026-06-10T15:40:02.000000Z'
                            cross_check_result: null
                            document_metadata: null
                            description: Please upload an up-to-date shareholder registry
                            is_requested: true
                            ocr_data: null
                            is_console_upload: false
                            is_confirmed: true
                        groups:
                          LEGAL_PRESENCE:
                            total: 1
                            approved: 1
                            pending: 0
                            declined: 0
                            in_review: 0
                            other: 0
                            missing: 0
                          OWNERSHIP_STRUCTURE:
                            total: 1
                            approved: 0
                            pending: 0
                            declined: 0
                            in_review: 0
                            other: 0
                            missing: 1
                        required_groups:
                          - LEGAL_PRESENCE
                          - OWNERSHIP_STRUCTURE
                        warnings: []
                    key_people_checks:
                      - status: In Review
                        node_id: feature_kyb_key_people_1
                        registry:
                          officers:
                            - uuid: aaaa1111-bbbb-2222-cccc-333344445555
                              name: Jane Smith
                              designation: Director
                              role: director
                              nationality: British
                              appointment_date: '2015-03-12'
                              termination_date: null
                              is_active: true
                              address: 1 Example Street, London, EC1A 1AA
                              aml_status: Approved
                              kyc_status: Approved
                              kyc_session_url: https://verify.didit.me/session/abc123def456
                              kyc_session_id: 77777777-8888-9999-aaaa-bbbbbbbbbbbb
                              verification_workflow_type: kyc
                              verification_workflow_id: 12121212-3434-5656-7878-909090909090
                              verification_workflow_label: Key People KYC
                              verification_workflow_features:
                                - feature: ID_VERIFICATION
                                  status: Approved
                                - feature: LIVENESS
                                  status: Approved
                                - feature: AML
                                  status: Approved
                              didit_internal_id: 99999999-0000-1111-2222-333333333333
                              kyc_document_type: P
                              kyc_nationality: GBR
                              kyc_liveness_passed: true
                              kyc_verified_at: '2026-06-10T14:22:31.123456Z'
                              kyc_aml_categories:
                                sanctions: clear
                                pep: clear
                                adverse_media: clear
                                warnings: clear
                              kyc_notification_sent_at: '2026-06-09T09:00:00.000000Z'
                          beneficial_owners:
                            - uuid: bbbb2222-cccc-3333-dddd-444455556666
                              name: John Doe
                              first_name: John
                              last_name: Doe
                              date_of_birth: '1980-05-04'
                              country_of_birth: null
                              email: null
                              company_name: null
                              registration_number: null
                              entity_type: person
                              nationality: British
                              designation: null
                              roles:
                                - ubo
                                - shareholder
                              ownership_min_shares: '50'
                              ownership_max_shares: '75'
                              is_active: true
                              aml_status: null
                              kyc_status: In Progress
                              kyc_session_url: https://verify.didit.me/session/def456ghi789
                              kyc_session_id: 88888888-9999-aaaa-bbbb-cccccccccccc
                              verification_workflow_type: kyc
                              verification_workflow_id: 12121212-3434-5656-7878-909090909090
                              verification_workflow_label: Key People KYC
                              verification_workflow_features:
                                - feature: ID_VERIFICATION
                                  status: Not Finished
                                - feature: LIVENESS
                                  status: Not Finished
                                - feature: AML
                                  status: Not Finished
                              didit_internal_id: null
                              kyc_document_type: null
                              kyc_nationality: null
                              kyc_liveness_passed: null
                              kyc_verified_at: null
                              kyc_aml_categories: null
                              kyc_notification_sent_at: null
                              child_beneficial_owners: []
                              effective_ownership_percent: 75
                        submitted:
                          parties:
                            - uuid: cccc3333-dddd-4444-eeee-555566667777
                              entity_type: person
                              source: USER
                              name: John Doe
                              first_name: John
                              last_name: Doe
                              company_name: null
                              registration_number: null
                              email: john.doe@example.com
                              nationality: GBR
                              phone_number: '+447700900123'
                              date_of_birth: '1980-05-04'
                              position: Chief Executive Officer
                              custom_fields: {}
                              is_active: true
                              is_skipped: false
                              requires_verification: true
                              roles:
                                - role: ubo
                                  ownership_percent: 75
                                  voting_percent: 75
                                - role: director
                                  ownership_percent: null
                                  voting_percent: null
                              kyc_session_id: 88888888-9999-aaaa-bbbb-cccccccccccc
                              kyc_session_status: In Progress
                              kyc_session_url: https://verify.didit.me/session/def456ghi789
                              kyb_sub_session_id: null
                              kyb_sub_session_status: null
                              kyb_sub_session_url: null
                              verification_workflow_type: kyc
                              verification_workflow_id: 12121212-3434-5656-7878-909090909090
                              verification_workflow_label: Key People KYC
                              verification_workflow_features:
                                - feature: ID_VERIFICATION
                                  status: Not Finished
                                - feature: LIVENESS
                                  status: Not Finished
                                - feature: AML
                                  status: Not Finished
                              didit_internal_id: null
                        ubo_kyc_summary:
                          total: 1
                          approved: 0
                          flagged: 0
                          pending: 1
                        warnings: []
                    phone_verifications: null
                    email_verifications: null
                    questionnaire_responses: null
                    ip_analyses: null
                    reviews: []
                    contact_details: null
                    expected_details:
                      company_name: Tesco PLC
                      registry_country: GB
                      registration_number: '00445790'
                    created_at: '2026-06-10T11:58:04.000000Z'
                    expires_at: '2026-06-24T11:58:04.000000Z'
              schema:
                $ref: '#/components/schemas/SessionDecision'
        '403':
          description: >-
            Autenticazione o autorizzazione non riuscita. Una chiave mancante
            restituisce `403`; una chiave errata, revocata o scaduta restituisce
            `401`. Due stringhe `detail` distinguono le modalità di errore:


            - `"Authentication credentials were not provided or are invalid."` —
            nessuna intestazione `x-api-key` (e nessun token `Authorization:
            Bearer`), oppure la credenziale fornita non ha superato
            l'introspezione (revocata, scaduta o malformata).

            - `"You do not have permission to perform this action."` — la
            credenziale è valida ma non è autorizzata a leggere questa sessione:
            a un token Bearer dell'utente della console manca l'autorizzazione
            `read:sessions` o non può accedere all'applicazione proprietaria,
            oppure una chiave API appartiene a un'organizzazione diversa
            rispetto alla sessione.


            Tieni presente che per un `sessionId` completamente sconosciuto
            l'endpoint risolve l'applicazione proprietaria prima di convalidare
            le credenziali, quindi una sessione mancante restituisce `404` anche
            quando la credenziale è mancante o non valida.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: >-
                      Authentication credentials were not provided or are
                      invalid.
              examples:
                Missing or invalid credentials:
                  summary: >-
                    Nessuna intestazione x-api-key, oppure introspezione della
                    chiave non riuscita
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Insufficient permissions:
                  summary: >-
                    Credenziale valida priva di read:sessions o dell'accesso
                    all'applicazione proprietaria
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Sessione non trovata. Restituito quando nessuna sessione attiva
            corrisponde al `sessionId` fornito come sessione di Verifica degli
            utenti (KYC) o Verifica aziendale (KYB) — viene restituito anche per
            una sessione che è stata eliminata. Il body è il wrapper standard
            `{"detail": ...}`.


            **Due diverse stringhe `detail`.** Se il `sessionId` è sconosciuto
            sia come sessione KYC che KYB, la ricerca del proprietario
            pre-autenticazione fallisce e ricevi `{"detail": "Not found."}` —
            questo avviene prima della validazione delle credenziali, quindi
            viene restituito anche per chiamate non autenticate. Se la sessione
            esiste ma non può essere recuperata nell'ambito dell'applicazione
            autenticata (ad esempio un record obsoleto o appena eliminato), la
            vista restituisce `{"detail": "Session not found."}`. Entrambi
            indicano lo stesso risultato — la sessione non è accessibile —
            quindi effettua la verifica sul codice di stato `404` piuttosto che
            sulla stringa.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: Not found.
              examples:
                Unknown session id:
                  summary: sessionId non è noto a questa applicazione
                  value:
                    detail: Not found.
                Session not retrievable:
                  summary: >-
                    La sessione esiste ma non è recuperabile per questa
                    applicazione
                  value:
                    detail: Session not found.
        '429':
          description: >-
            Limite di frequenza superato. Le richieste GET sono limitate a **600
            al minuto per credenziale** (chiave API, token Bearer o indirizzo IP
            di origine se non autenticato). Esamina `Retry-After` /
            `X-RateLimit-Reset` e attendi prima di riprovare. Se raggiungi
            questo limite durante il polling delle decisioni, passa al webhook
            `status.updated` e recupera la decisione una sola volta per ciascun
            cambio di stato.
          headers:
            Retry-After:
              description: Secondi da attendere prima di riprovare la richiesta.
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: >-
                Numero massimo di richieste consentite nella finestra temporale
                corrente (600 per le richieste GET).
              schema:
                type: integer
                example: 600
            X-RateLimit-Remaining:
              description: Richieste rimanenti nell'intervallo corrente.
              schema:
                type: integer
                example: 0
            X-RateLimit-Reset:
              description: Timestamp Unix (secondi) in cui la finestra corrente si azzera.
              schema:
                type: integer
                example: 1750000000
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: >-
                      Spiegazione di facile lettura del superamento del limite
                      di frequenza.
                    example: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
              examples:
                Throttled:
                  summary: >-
                    Più di 600 richieste GET in un minuto dalla stessa
                    credenziale
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/decision/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Accept: application/json'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.retrieve_decision(
                "11111111-2222-3333-4444-555555555555",
            )
            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.sessions.retrieveDecision("11111111-2222-3333-4444-555555555555");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.RetrieveDecision(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsRetrieveDecisionParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().retrieveDecision("11111111-2222-3333-4444-555555555555");

            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->sessions->retrieveDecision('11111111-2222-3333-4444-555555555555');

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result =
            didit.sessions.retrieve_decision("11111111-2222-3333-4444-555555555555")

            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.Sessions.RetrieveDecisionAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDecision:
      type: object
      properties:
        session_id:
          type: string
          format: uuid
          description: L'identificatore univoco della sessione.
        session_kind:
          type: string
          enum:
            - user
            - business
          description: >-
            Discriminatore che indica se si tratta di una sessione di Verifica
            degli utenti (KYC) o di Verifica aziendale (KYB). Quando è `user`,
            si applicano gli array di funzionalità KYC (`id_verifications`,
            `nfc_verifications`, `liveness_checks`, `face_matches`,
            `poa_verifications`, `document_ai_documents`,
            `database_validations`, ...) e gli array aziendali sono assenti.
            Quando è `business`, il payload contiene invece `registry_checks`,
            `document_verifications`, `key_people_checks` oltre agli array
            condivisi (`aml_screenings`, `phone_verifications`,
            `email_verifications`, `ip_analyses`, `questionnaire_responses`).
            **Omesso quando viene passato `include=events`** — il formato degli
            eventi esiste solo per le sessioni utente, quindi il discriminatore
            viene rimosso da quella variante.
        shared_from_session:
          type: string
          format: uuid
          nullable: true
          description: >-
            Per una sessione clonata con `POST /v3/session/import-shared/`: il
            `session_id` della sessione originale nell'applicazione di origine.
            `null` per qualsiasi altra sessione. Omesso quando viene passato
            `include=events`.
        shared_from_session_number:
          type: integer
          nullable: true
          description: >-
            `session_number` della sessione di origine quando questa sessione è
            stata importata da un'altra applicazione della tua organizzazione.
            `null` altrimenti.
        session_number:
          type: integer
          description: Il numero della sessione.
          nullable: true
        session_url:
          type: string
          format: uri
          description: L'URL della sessione.
          nullable: true
        status:
          type: string
          enum:
            - Not Started
            - In Progress
            - Awaiting User
            - In Review
            - Approved
            - Declined
            - Resubmitted
            - Expired
            - Kyc Expired
            - Abandoned
          description: >-
            Stato complessivo del ciclo di vita della sessione — il risultato
            aggregato del workflow. I valori finali sono `Approved`, `Declined`,
            `In Review`, `Expired`, `Kyc Expired` e `Abandoned`; `Not Started`,
            `In Progress`, `Awaiting User` e `Resubmitted` indicano che la
            sessione è ancora in corso nel workflow.
        status_override:
          type: object
          nullable: true
          description: >-
            Presente quando un revisore ha impostato manualmente lo `status`.
            `null` quando lo stato è quello automatico. Utilizzalo per
            distinguere un'approvazione manuale da una automatica.
          properties:
            overridden_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: Lo stato determinato dai controlli della piattaforma.
        decision_trace:
          type: object
          description: >-
            Come è stato raggiunto lo stato: chi lo ha impostato e quali avvisi
            lo hanno determinato.
          properties:
            status:
              type: string
              description: Lo stato della sessione.
            decided_by:
              type: string
              nullable: true
              enum:
                - manual
                - automatic
                - investigator
                - null
              description: >-
                Chi ha impostato lo stato. `null` finché non viene presa una
                decisione sulla sessione.
            decided_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: >-
                Cosa concludono i controlli interni della piattaforma, che
                differisce da `status` dopo una decisione manuale.
            terminal_node_id:
              type: string
              nullable: true
              description: >-
                Il nodo di stato del workflow che ha terminato la sessione, se
                presente.
            actor:
              type: object
              nullable: true
              description: Il revisore autore di una decisione manuale.
              properties:
                user:
                  type: string
                  nullable: true
                actor_type:
                  type: string
                  nullable: true
            warning_counts:
              type: object
              description: >-
                Avvisi per `log_type` (`error`, `warning`, `information`) e
                `total`.
              additionalProperties:
                type: integer
            status_warnings:
              type: array
              description: Gli avvisi che impostano uno stato `Declined` o `In Review`.
              items:
                type: object
                properties:
                  risk:
                    type: string
                  feature:
                    type: string
                    nullable: true
                  node_id:
                    type: string
                    nullable: true
                  log_type:
                    type: string
                    nullable: true
                  check_status:
                    type: string
                    nullable: true
                  source:
                    type: string
                    description: >-
                      L'elenco del payload da cui proviene l'avviso, ad esempio
                      `id_verifications`.
                  short_description:
                    type: string
                    nullable: true
        linked_records:
          type: object
          nullable: true
          description: >-
            Un riepilogo di altri record collegati alla sessione. `null` quando
            non c'è nulla da mostrare e per i workflow che dichiarano uno
            standard di verifica dell'età.
          properties:
            same_face:
              type: object
              nullable: true
              description: >-
                Altre persone il cui volto corrisponde a una delle ricerche
                facciali di questa sessione.
              properties:
                count:
                  type: integer
                best_match:
                  type: object
                  nullable: true
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                    similarity_percentage:
                      type: number
                      nullable: true
            earlier_verifications:
              type: object
              nullable: true
              properties:
                count:
                  type: integer
                vendor_user_id:
                  type: string
                  format: uuid
                  nullable: true
            networks:
              type: object
              nullable: true
              properties:
                count:
                  type: integer
                open:
                  type: integer
                dismissed:
                  type: integer
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      network_id:
                        type: string
                        format: uuid
                      display_number:
                        type: integer
                        nullable: true
                      name:
                        type: string
                      status:
                        type: string
                      risk_score:
                        type: number
                        nullable: true
        workflow_id:
          type: string
          format: uuid
          description: >-
            Identificatore stabile del gruppo di workflow che ha prodotto questa
            sessione. I workflow sono versionati: questo valore identifica il
            workflow stesso, non la versione specifica.
          nullable: true
        features:
          type: array
          items:
            type: string
            description: La funzionalità della sessione.
          description: >-
            Elenco delle funzionalità di verifica configurate per questa
            sessione, come nomi visualizzati: `ID_VERIFICATION`, `NFC`,
            `LIVENESS`, `FACE_MATCH`, `POA`, `PHONE`, `EMAIL_VERIFICATION`,
            `AML`, `IP_ANALYSIS`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`,
            `AGE_ESTIMATION`, `FACE_SEARCH`, `GEOLOCATION` (Verifica della
            posizione) (le sessioni di Verifica aziendale utilizzano il set di
            funzionalità KYB: `KYB_REGISTRY`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`,
            `AML`, `PHONE`, `EMAIL_VERIFICATION`, `IP_ANALYSIS`,
            `QUESTIONNAIRE`). Con `include=events` ogni voce diventa un oggetto
            `{feature, node_id}` invece di una semplice stringa, e la
            funzionalità email viene rinominata: compare come `EMAIL` in
            modalità eventi invece dell'`EMAIL_VERIFICATION` utilizzato qui.
        vendor_data:
          type: string
          description: I dati del vendor della sessione.
          nullable: true
        metadata:
          type: object
          description: I metadati della sessione.
          nullable: true
        expected_details:
          type: object
          description: >-
            Dettagli previsti forniti al momento della creazione della sessione
            — utilizzati per la convalida incrociata rispetto ai dati estratti
            (KYC) o per precompilare la ricerca nel registro delle imprese
            (KYB). Restituisce esattamente le chiavi fornite; `null` se non ne è
            stata fornita alcuna. Le sessioni KYC contengono i campi della
            persona; le sessioni aziendali (KYB) contengono `company_name`,
            `registry_country` e `registration_number`.
          properties:
            first_name:
              type: string
              description: Nome dell'utente. Ad esempio, `John`.
            last_name:
              type: string
              description: Cognome dell'utente. Ad esempio, `Doe`.
            date_of_birth:
              type: string
              format: date
              description: >-
                Data di nascita dell'utente nel formato: YYYY-MM-DD. Ad esempio,
                `1990-05-15`.
            gender:
              type: string
              nullable: true
              enum:
                - M
                - F
              default: null
              description: Genere dell'utente. Deve essere 'M', 'F' o null.
            nationality:
              type: string
              description: >-
                Codice paese ISO 3166-1 alpha-3 che rappresenta il paese di
                origine del richiedente. Ad esempio, `USA`.
            country:
              type: string
              description: >-
                Codice paese ISO 3166-1 alpha-3 che rappresenta il paese del
                documento di Prova di residenza o il paese del documento
                d'identità del richiedente, che può differire dalla nazionalità.
                Ad esempio, `GBR`.
            address:
              type: string
              description: >-
                L'indirizzo in un formato leggibile, includendo quante più
                informazioni possibili. Ad esempio, `123 Main St, San Francisco,
                CA 94105, USA`.
            identification_number:
              type: string
              description: >-
                Il numero del documento, il codice personale o il codice fiscale
                dell'utente. Ad esempio, `123456789`.
            ip_address:
              type: string
              format: ipv4
              description: >-
                Indirizzo IP previsto per la sessione. Se l'indirizzo IP
                effettivo differisce da questo valore, verrà registrato un
                avviso. Ad esempio, `192.168.1.100`.
            expected_document_types:
              type: array
              description: >-
                Tipi di documento a cui è stato limitato il passaggio di
                verifica dell'identità al momento della creazione della
                sessione. Vuoto/non impostato indica nessuna restrizione.
                Codici: `P` (passaporto), `ID` (carta d'identità), `DL` (patente
                di guida), `RP` (permesso di soggiorno), `HIC` (tessera
                sanitaria), `TC` (tessera fiscale), `SSC` (tessera di previdenza
                sociale).
              items:
                type: string
                enum:
                  - P
                  - ID
                  - DL
                  - RP
                  - HIC
                  - TC
                  - SSC
            id_country:
              type: string
              nullable: true
              description: >-
                Paese di emissione previsto del documento d'identità (ISO 3166-1
                alpha-3), se limitato al momento della creazione.
              example: ESP
            poa_country:
              type: string
              nullable: true
              description: >-
                Paese previsto del documento di prova di residenza (ISO 3166-1
                alpha-3), se limitato al momento della creazione.
              example: ESP
            company_name:
              type: string
              description: >-
                Ragione sociale prevista dell'azienda. Solo per sessioni
                aziendali (KYB).
            registry_country:
              type: string
              description: >-
                Paese del registro previsto nel formato `XX` o `XX-YY` (ISO
                3166-1 alpha-2, facoltativamente con una suddivisione ISO 3166-2
                per i registri a livello statale, ad es. `US-CA`). Solo per
                sessioni aziendali (KYB).
            registration_number:
              type: string
              description: >-
                Numero di registrazione dell'azienda previsto. Solo sessioni
                aziendali (KYB).
          nullable: true
        contact_details:
          type: object
          description: >-
            Dati di contatto forniti al momento della creazione della sessione
            (utilizzati per le email di notifica, la verifica precompilata di
            telefono/email e la lingua di comunicazione). `null` quando non sono
            stati forniti né un'email né un numero di telefono.
          properties:
            email:
              type: string
              description: >-
                Indirizzo email dell'utente (ad es. "john.doe@example.com") che
                verrà utilizzato durante il passaggio di Verifica email. Se non
                fornito, l'utente dovrà inserirlo durante il flusso di verifica.
            email_lang:
              type: string
              description: >-
                Codice lingua (ISO 639-1) per le notifiche email. Controlla la
                lingua di tutte le comunicazioni via email (es. "en", "es",
                "fr").
            send_notification_emails:
              type: boolean
              default: false
              description: >-
                Se true e viene fornita un'email, Didit invia l'email iniziale
                "Verifica la tua identità" in modo asincrono quando viene creata
                la sessione di Verifica degli utenti (KYC) o Verifica aziendale
                (KYB). Didit invia inoltre le notifiche sullo stato della
                verifica per le sessioni che richiedono la revisione manuale
                all'indirizzo email fornito.
            phone:
              type: string
              nullable: true
              description: >-
                Numero di telefono dell'utente in formato E.164 se disponibile
                (ad es. +14155552671). `null` quando alla creazione della
                sessione è stata fornita solo un'email. Nota: questo campo
                restituisce il numero di telefono originale fornito durante la
                creazione della sessione. Se il numero non era valido, potrebbe
                non essere in formato E.164.
          nullable: true
        callback:
          type: string
          format: uri
          description: L'URL di callback della sessione.
          nullable: true
        id_verifications:
          type: array
          nullable: true
          description: >-
            **Array di report di verifica dell'identità (OCR)** prodotti dai
            passaggi dei documenti di identità nel grafo del workflow. Sempre un
            array JSON — leggi `id_verifications[0]` e itera se il tuo workflow
            può eseguire più di un controllo dell'identità (ad esempio un
            controllo primario più uno step-up). `null` fino a quando almeno un
            passaggio di verifica dell'identità non ha prodotto dati. Ciascun
            elemento è il report completo, inclusi `node_id`, `status` a livello
            di funzionalità, campi estratti del documento, URL delle immagini,
            punteggi di qualità, MRZ, analisi dell'indirizzo, corrispondenze
            cross-sessione e `warnings[]`.
          items:
            type: object
            description: >-
              Un report di verifica dell'identità: il report completo per un
              singolo passaggio di Verifica dell'identità. `verification_method`
              indica quale dei tre metodi lo ha prodotto (acquisizione del
              documento, ricerca non documentale o accesso tramite wallet) e il
              blocco delle prove specifico del metodo viene popolato di
              conseguenza.
            properties:
              node_id:
                type: string
                description: >-
                  ID del nodo del grafo del workflow del passaggio OCR che ha
                  generato questo report.
              verification_method:
                type: string
                enum:
                  - document
                  - id_lookup
                  - wallet
                description: >-
                  Quale metodo di Verifica dell'identità ha prodotto questo
                  report. `document`: l'utente ha fotografato un documento
                  d'identità fisico (impostazione predefinita e valore presente
                  in ogni sessione creata prima dell'introduzione degli altri
                  metodi). `id_lookup`: l'utente ha inserito il proprio numero
                  di documento d'identità nazionale, verificato rispetto a un
                  registro governativo o a un'altra fonte autorevole per quel
                  paese (`id_lookup.source` ne indica il nome). `wallet`:
                  l'utente ha effettuato l'accesso con un'identità digitale
                  governativa o bancaria.
              assurance:
                type: string
                enum:
                  - documentary
                  - data_match
                  - cryptographic
                description: >-
                  Livello di garanzia derivato da `verification_method`:
                  `documentary` per un documento acquisito e verificato,
                  `data_match` per dettagli che corrispondono a un record
                  conservato dalla fonte interrogata, `cryptographic` per
                  attributi autenticati e firmati da un provider di identità.
              wallet_provider:
                type: string
                nullable: true
                description: >-
                  Id del wallet di catalogo quando `verification_method` è
                  `wallet` (`mitid`, `bankid_se`, `itsme`, ...). `null`
                  altrimenti.
              fallback_from:
                type: object
                nullable: true
                description: >-
                  Il motivo per cui un metodo non basato su documenti non ha
                  concluso il passaggio di identificazione. Impostato quando una
                  ricerca o un accesso tramite wallet è fallito: sulla verifica
                  del documento con cui l'utente ha proseguito quando lo switch
                  di fallback del paese era `fallback_to_document` (`action` è
                  `fallback_to_document`), oppure sul report rifiutato quando
                  era `decline`. `null` altrimenti.
                properties:
                  method:
                    type: string
                    enum:
                      - id_lookup
                      - wallet
                    description: Il metodo che ha fallito.
                  reason:
                    type: string
                    description: >-
                      L'esito che ne ha determinato la conclusione, ad es.
                      `no_match`, `provider_error`, `cancelled`, `timeout`.
                  action:
                    type: string
                    enum:
                      - fallback_to_document
                      - decline
                    description: >-
                      L'azione configurata che è stata eseguita:
                      `fallback_to_document` o `decline`.
              id_lookup:
                type: object
                nullable: true
                description: >-
                  Prova dal registro delle imprese. Presente solo quando
                  `verification_method` è `id_lookup`; `null` altrimenti.
                properties:
                  source:
                    type: string
                    description: >-
                      Nome visibile al cliente della fonte interrogata, ad es.
                      `Department of Home Affairs` (un registro governativo) o
                      `UK credit bureau and financial services records` (non un
                      registro governativo). Questa è l'unica dichiarazione di
                      provenienza per la ricerca; non dare per scontata una
                      fonte governativa.
                  checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: Quando il registro ha risposto.
                  attempts:
                    type: integer
                    description: >-
                      Numero progressivo del tentativo, a partire da 1, da cui
                      proviene questo report.
                  max_attempts:
                    type: integer
                    description: >-
                      Budget di tentativi configurato per il paese (da 1 a 5,
                      predefinito 1).
                  outcome:
                    type: string
                    enum:
                      - match
                      - partial_match
                      - no_match
                      - provider_error
                      - format_rejected
                    nullable: true
                    description: >-
                      Cosa ha risposto il registro. Solo `match`,
                      `partial_match` e `no_match` vengono conteggiati ai fini
                      del budget di tentativi e della fatturazione.
                  comparison:
                    type: array
                    description: >-
                      Una riga per ogni campo confrontabile per cui la fonte ha
                      risposto, più una riga per ogni errore della fonte. Le
                      righe di confronto utilizzano i nomi di campo normalizzati
                      indicati di seguito anziché le chiavi dei campi di
                      richiesta del paese, poiché diversi campi di richiesta
                      (nome e cognome, o uno qualsiasi degli alias
                      dell'identificatore) confluiscono in un unico confronto.
                      Una fonte che ha fallito aggiunge una riga con `field:
                      "provider"` e `result: "error"`, quindi verifica `result`
                      prima di considerare una riga come esito del campo.
                    items:
                      type: object
                      required:
                        - field
                        - label
                        - provided
                        - record
                        - result
                      properties:
                        field:
                          type: string
                          enum:
                            - identification_number
                            - full_name
                            - date_of_birth
                            - address
                            - provider
                          description: >-
                            Campo di confronto normalizzato. `provider` non è un
                            campo utente: contrassegna una riga di errore della
                            sorgente.
                        label:
                          type: string
                          description: >-
                            Etichetta visualizzata per la riga, ad es. `ID
                            number`, `Full name`, `Provider`.
                        provided:
                          type: string
                          nullable: true
                          description: >-
                            Cosa ha digitato l'utente. `null` su una riga di
                            errore `provider`.
                        record:
                          type: string
                          nullable: true
                          description: >-
                            Cosa conteneva la fonte. In una riga di errore
                            `provider`, contiene invece il messaggio di errore.
                        result:
                          type: string
                          enum:
                            - match
                            - partial
                            - no_match
                            - error
                          description: >-
                            Risultato del confronto per singolo campo. `error`
                            compare solo su una riga `provider` e indica che
                            tale fonte non ha risposto; consideralo come
                            informazione sulla query, mai come una mancata
                            corrispondenza di un campo.
                  registry_portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL pre-firmato di breve durata per il ritratto restituito
                      dalla fonte. Solo per i quattro registri governativi che
                      ne restituiscono uno (Sudafrica, Nigeria, Argentina,
                      Panama).
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      Selfie rispetto alla foto del registro, 0-100. Solo se il
                      registro restituisce una foto.
              wallet_verification:
                type: object
                nullable: true
                description: >-
                  Evidenza della credenziale. Presente solo quando
                  `verification_method` è `wallet`; altrimenti `null`.
                properties:
                  provider:
                    type: string
                    description: Id del wallet di catalogo, ad es. `mitid`.
                  provider_name:
                    type: string
                    nullable: true
                    description: Nome del wallet noto all'utente finale, ad es. `MitID`.
                  issuing_authority:
                    type: string
                    nullable: true
                    description: >-
                      L'autorità responsabile del wallet, ad es. `Danish Agency
                      for Digital Government`.
                  issuing_country:
                    type: string
                    description: Paese ISO 3166-1 alpha-3 in cui è stato offerto il wallet.
                  credential_type:
                    type: string
                    nullable: true
                    description: >-
                      Credenziale presentata dal wallet, ad es.
                      `person_identification`.
                  level_of_assurance:
                    type: string
                    enum:
                      - low
                      - substantial
                      - high
                    nullable: true
                    description: >-
                      Il livello di garanzia attestato dal wallet. Un accesso
                      che attesta un livello inferiore a quello richiesto
                      fallisce invece di effettuare un downgrade.
                  verified_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: L'istante di autenticazione del wallet.
                  signature_valid:
                    type: boolean
                    nullable: true
                    description: >-
                      Indica se l'attestazione firmata restituita dal wallet è
                      stata convalidata.
                  attributes:
                    type: object
                    additionalProperties: true
                    description: >-
                      Gli attributi condivisi dal wallet, associati alle chiavi
                      corrispondenti a quelle indicate nella voce di catalogo
                      del wallet.
                  portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL pre-firmato di breve durata per il ritratto condiviso
                      dal wallet, laddove ne condivida uno.
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      Selfie rispetto alla foto del wallet, 0-100, se il wallet
                      ne condivide una.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
                description: >-
                  Stato a livello di funzionalità di questo passaggio di
                  verifica dell'identità. Indipendente dallo `status` della
                  sessione di primo livello: una sessione può raggiungere la sua
                  decisione complessiva mentre una singola funzionalità rimane
                  in `In Review`.
              document_type:
                type: string
                description: Tipo di documento d'identità
              document_subtype:
                type: string
                nullable: true
                description: >-
                  Codice del sottotipo di documento accettato dalle impostazioni
                  dei documenti del workflow, inclusa la regione del documento
                  ove applicabile. Esempi: `ID_CARD_GENERIC`,
                  `QUEENSLAND_DRIVER_LICENSE_GENERIC`.
              document_number:
                type: string
                description: Numero identificativo del documento
              personal_number:
                type: string
                description: Numero di identificazione personale
              portrait_image:
                type: string
                format: uri
                description: URL dell'immagine del ritratto
              front_image:
                type: string
                format: uri
                description: URL dell'immagine del fronte del documento
              front_video:
                type: string
                format: uri
                description: URL del video del fronte del documento
              back_image:
                type: string
                format: uri
                description: URL dell'immagine del retro del documento
              back_video:
                type: string
                format: uri
                description: URL del video del retro del documento
              full_front_image:
                type: string
                format: uri
                description: URL dell'immagine completa del fronte del documento
              full_back_image:
                type: string
                format: uri
                description: URL dell'immagine completa del retro del documento
              front_image_camera_front:
                type: string
                format: uri
                description: >-
                  URL dell'immagine del fronte del documento acquisita dalla
                  fotocamera frontale
              back_image_camera_front:
                type: string
                format: uri
                description: >-
                  URL dell'immagine del retro del documento acquisita dalla
                  fotocamera frontale
              date_of_birth:
                type: string
                format: date
                description: Data di nascita dal documento
              age:
                type: integer
                description: Età calcolata dalla data di nascita
              expiration_date:
                type: string
                format: date
                description: Data di scadenza del documento
              date_of_issue:
                type: string
                format: date
                description: Data di emissione del documento
              issuing_state:
                type: string
                description: Codice ISO dello stato di emissione
              issuing_state_name:
                type: string
                description: Nome completo dello stato emittente
              first_name:
                type: string
                description: Nome dal documento
              last_name:
                type: string
                description: Cognome dal documento
              full_name:
                type: string
                description: Nome completo dal documento
              gender:
                type: string
                description: Genere dal documento
              address:
                type: string
                description: Indirizzo non elaborato dal documento
              formatted_address:
                type: string
                description: Indirizzo completo formattato
              place_of_birth:
                type: string
                description: Luogo di nascita dal documento
              marital_status:
                type: string
                description: Stato civile dal documento
              nationality:
                type: string
                description: Codice ISO della nazionalità
              extra_fields:
                type: object
                description: >-
                  Campi aggiuntivi del documento. Include attributi specifici
                  del documento (ad es. `dl_categories`, `blood_group`,
                  `sponsor`, `employer`, `dl_class_code_b_from`,
                  `dl_class_code_b_to`). Le date di validità delle categorie
                  della patente di guida vengono restituite come
                  `dl_class_code_<class>_from` e `dl_class_code_<class>_to`, e i
                  codici di restrizione/informazione per categoria (ad es.
                  colonna 12 delle patenti del Regno Unito) come
                  `dl_class_code_<class>_notes`. Quando il documento riporta
                  nomi, indirizzo o luogo di nascita in più sistemi di
                  scrittura, questo oggetto include anche le versioni in sistemi
                  di scrittura alternativi di tali campi. L'impostazione del
                  workflow `preferred_characters` (`latin` o `non_latin`)
                  controlla quale sistema di scrittura popola i campi di primo
                  livello (`first_name`, `last_name`, `full_name`, `address`,
                  `place_of_birth`); il sistema di scrittura opposto viene
                  inserito qui come `first_name_non_latin` /
                  `last_name_non_latin` / `full_name_non_latin` /
                  `middle_name_non_latin` / `address_non_latin` /
                  `place_of_birth_non_latin` (quando `preferred_characters` è
                  `latin`) o con suffisso `_latin` (quando
                  `preferred_characters` è `non_latin`). Le chiavi compaiono
                  solo quando l'OCR estrae effettivamente un valore reale in un
                  sistema di scrittura alternativo: un campo il cui valore
                  alternativo è nello stesso sistema di scrittura del set
                  preferito (ad esempio, un campo etichettato in cirillico il
                  cui valore OCR è tornato in omoglifi latini) viene ignorato.
                  Quando `preferred_characters` è `latin` ma il documento
                  contiene solo testo non latino, Didit traslittera i valori
                  estratti ed espone `first_name_latin` / `last_name_latin` /
                  ecc. come fallback.
                additionalProperties: true
                properties:
                  dl_categories:
                    type: array
                    items:
                      type: string
                  blood_group:
                    type: string
                    nullable: true
                  first_name_non_latin:
                    type: string
                    description: >-
                      Nome nel sistema di scrittura non latino quando
                      `preferred_characters=latin` ed è presente una versione
                      non latina sul documento (ad es. `Айна` per un documento
                      d'identità kirghiso).
                  last_name_non_latin:
                    type: string
                    description: >-
                      Cognome nel sistema di scrittura non latino quando
                      `preferred_characters=latin` ed è presente una versione
                      non latina sul documento.
                  middle_name_non_latin:
                    type: string
                    description: >-
                      Secondo nome / patronimico nel sistema di scrittura non
                      latino quando `preferred_characters=latin` e sul documento
                      è presente una versione non latina.
                  full_name_non_latin:
                    type: string
                    description: >-
                      Nome completo composto nel sistema di scrittura non
                      latino. Ricostruito dai singoli componenti quando sia il
                      nome che il cognome sono disponibili.
                  address_non_latin:
                    type: string
                    description: >-
                      Indirizzo nel sistema di scrittura non latino quando
                      `preferred_characters=latin` ed è presente una versione
                      non latina sul documento.
                  place_of_birth_non_latin:
                    type: string
                    description: >-
                      Luogo di nascita nel sistema di scrittura non latino
                      quando `preferred_characters=latin` e una versione non
                      latina è presente sul documento.
                  first_name_latin:
                    type: string
                    description: >-
                      Nome in caratteri latini. Popolato quando
                      `preferred_characters=non_latin` ed è presente una
                      versione in caratteri latini sul documento oppure — come
                      fallback di traslitterazione — quando
                      `preferred_characters=latin` ma il documento contiene solo
                      testo non latino.
                  last_name_latin:
                    type: string
                    description: >-
                      Cognome in caratteri latini. Stesse regole di
                      `first_name_latin`.
                  middle_name_latin:
                    type: string
                    description: >-
                      Secondo nome / patronimico in sistema di scrittura latino.
                      Stesse regole di `first_name_latin`.
                  full_name_latin:
                    type: string
                    description: >-
                      Nome completo composto in caratteri latini. Sempre
                      ricostruito dai singoli componenti quando sia il nome che
                      il cognome sono disponibili.
                  address_latin:
                    type: string
                    description: >-
                      Indirizzo nel sistema di scrittura latino. Stesse regole
                      di `first_name_latin`.
                  place_of_birth_latin:
                    type: string
                    description: >-
                      Luogo di nascita in caratteri latini. Stesse regole di
                      `first_name_latin`.
              mrz:
                type: object
                nullable: true
                description: >-
                  Campi della zona a lettura ottica (MRZ) analizzati ed estratti
                  dal documento. `null` se non è stata rilevata alcuna MRZ.
                properties:
                  surname:
                    type: string
                    example: MARTINEZ<SANCHEZ
                  name:
                    type: string
                    example: ELENA
                  country:
                    type: string
                    example: ESP
                  nationality:
                    type: string
                    example: ESP
                  birth_date:
                    type: string
                    example: '850315'
                  expiry_date:
                    type: string
                    example: '220821'
                  sex:
                    type: string
                    example: F
                  document_type:
                    type: string
                    example: ID
                  document_number:
                    type: string
                    example: YZA123456
                  optional_data:
                    type: string
                    example: X9876543L
                  optional_data_2:
                    type: string
                    example: ''
                  birth_date_hash:
                    type: string
                    example: '7'
                  expiry_date_hash:
                    type: string
                    example: '4'
                  document_number_hash:
                    type: string
                    example: '9'
                  final_hash:
                    type: string
                    example: '2'
                  personal_number:
                    type: string
                    example: X9876543L
                  warnings:
                    type: array
                    items:
                      type: string
                  errors:
                    type: array
                    items:
                      type: string
                  mrz_type:
                    type: string
                    example: TD1
                  mrz_string:
                    type: string
                    example: |-
                      IDESPMARTINEZ<SANCHEZ<<<<<<<<<<
                      YZA123456<9ESP8503157F3208214<X9876543L<<<<<<<2
                      MARTINEZ<SANCHEZ<<ELENA<<<<<<<<<<
                  mrz_key:
                    type: string
                    example: YZA123456985031573208214
              parsed_address:
                type: object
                description: Dettagli strutturati dell'indirizzo
                properties:
                  city:
                    type: string
                  label:
                    type: string
                  region:
                    type: string
                  country:
                    type: string
                    description: Codice paese a due lettere
                  category:
                    type: string
                    description: >-
                      Categoria dell'indirizzo (ad es. Residenziale,
                      Commerciale)
                  street_1:
                    type: string
                  street_2:
                    type: string
                    nullable: true
                  is_verified:
                    type: boolean
                    description: Indica se l'indirizzo è stato verificato
                  postal_code:
                    type: string
                  raw_results:
                    type: object
                    properties:
                      types:
                        type: array
                        items:
                          type: string
                      geometry:
                        type: object
                        properties:
                          location:
                            type: object
                            properties:
                              lat:
                                type: number
                              lng:
                                type: number
                          viewport:
                            type: object
                            properties:
                              northeast:
                                type: object
                                properties:
                                  lat:
                                    type: number
                                  lng:
                                    type: number
                              southwest:
                                type: object
                                properties:
                                  lat:
                                    type: number
                                  lng:
                                    type: number
                          location_type:
                            type: string
                      place_id:
                        type: string
                      formatted_address:
                        type: string
                      navigation_points:
                        type: array
                        items:
                          type: object
                          properties:
                            location:
                              type: object
                              properties:
                                latitude:
                                  type: number
                                longitude:
                                  type: number
                      address_components:
                        type: array
                        items:
                          type: object
                          properties:
                            types:
                              type: array
                              items:
                                type: string
                            long_name:
                              type: string
                            short_name:
                              type: string
                  address_type:
                    type: string
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                      longitude:
                        type: number
                  formatted_address:
                    type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: File aggiuntivi di verifica del documento
              front_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  Punteggio di confronto facciale tra la fototessera estratta
                  dall'immagine del fronte del documento e l'immagine della
                  fotocamera anteriore
              back_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  Punteggio di confronto facciale tra la fototessera estratta
                  dall'immagine del retro del documento e l'immagine della
                  fotocamera anteriore
              document_selfie_face_matches:
                type: array
                description: >-
                  Sessioni precedenti o voci della blocklist facciale il cui
                  volto corrisponde al selfie scattato dalla fotocamera
                  anteriore durante l'acquisizione del documento (Silent Capture
                  Face Search). Stesso formato delle voci di
                  `liveness_checks[].matches`. `null` per le sessioni create
                  prima dell'esistenza di questo campo o quando la ricerca non è
                  stata eseguita; un array vuoto se è stata eseguita e non ha
                  trovato nulla. `match_image_url` è un URL prefirmato soggetto
                  a scadenza.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID sessione del volto corrispondente. `null` quando
                        `source` è `imported`, `list_entry` o
                        `retained_template`.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: >-
                        Somiglianza facciale tra le due immagini, limitata
                        all'intervallo 0–100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` della sessione corrispondente o
                        dell'utente collegato per i volti importati e con
                        modello conservato.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID dell'utente collegato per le corrispondenze
                        `imported` e `retained_template`, nonché per le
                        corrispondenze di sessione collegate a un utente. `null`
                        per le voci della lista e per le sessioni senza un
                        utente.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID del modello biometrico conservato. Impostato solo
                        quando `source` è `retained_template`; `null`
                        altrimenti.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Quando il volto corrispondente è stato acquisito o
                        quando è stato creato un modello conservato. `null` per
                        le voci della lista.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        Dati di identità della sessione corrispondente o del
                        profilo Utente importato. Sempre `null` per le
                        corrispondenze di tipo `retained_template` e
                        `list_entry`.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Immagine di riferimento per i confronti basati su
                        immagini. Sempre `null` per i confronti
                        `retained_template` poiché i modelli conservati non
                        contengono immagini.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        Stato del ciclo di vita della sessione corrispondente.
                        `null` per le origini diverse dalle sessioni.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Indica se il volto corrispondente è presente in una
                        blocklist.
                    is_allowlisted:
                      type: boolean
                      description: >-
                        Indica se il volto corrispondente è presente in una
                        allowlist.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Servizio API autonomo della sessione corrispondente (es.
                        `PASSIVE_LIVENESS`, `FACE_MATCH`); `null` per le
                        sessioni di workflow e le origini non legate a sessioni.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        Origine del volto corrispondente: `session`, `imported`
                        (caricamento del volto dell'utente), `list_entry`
                        (allowlist/blocklist) o `retained_template` (un modello
                        biometrico privo di immagini associato a un utente,
                        elencato sotto `/v3/biometric-templates/`).
                nullable: true
              front_image_quality_score:
                type: object
                nullable: true
                description: >-
                  Metriche di qualità per l'immagine del fronte del documento.
                  Ciascun sotto-punteggio varia da 0 a 100.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      Nitidezza dell'immagine misurata tramite la varianza
                      laplaciana locale del 10% superiore. Robusta per documenti
                      con ampi sfondi uniformi. Valori più alti indicano
                      un'immagine più nitida e meno sfocata.
                  brightness_score:
                    type: number
                    description: >-
                      Livello di illuminazione dell'immagine. Penalizza le
                      immagini troppo scure o sovraesposte, con una luminosità
                      ideale intorno ai valori intermedi.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      Indica la direzione del problema di luminosità quando
                      brightness_score è basso. 'ok' indica che la luminosità è
                      accettabile, 'too_dark' indica che l'immagine è
                      sottoesposta, 'too_bright' indica che l'immagine è
                      sovraesposta.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true se tutti e quattro gli angoli del documento sono
                      completamente visibili all'interno dell'inquadratura
                      dell'immagine, false se un angolo è tagliato. Null quando
                      le coordinate degli angoli non sono disponibili.
                  resolution_score:
                    type: number
                    description: >-
                      Risoluzione effettiva dell'immagine basata sul numero
                      totale di pixel.
                  overall_score:
                    type: number
                    description: >-
                      Punteggio composito ponderato dei sottopunteggi (messa a
                      fuoco 45%, luminosità 30%, risoluzione 25%).
              back_image_quality_score:
                type: object
                nullable: true
                description: >-
                  Metriche di qualità per l'immagine del retro del documento.
                  Stessa struttura di front_image_quality_score.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      Nitidezza dell'immagine misurata tramite la varianza
                      laplaciana locale del 10% superiore. Robusta per documenti
                      con ampi sfondi uniformi. Valori più alti indicano
                      un'immagine più nitida e meno sfocata.
                  brightness_score:
                    type: number
                    description: >-
                      Livello di illuminazione dell'immagine. Penalizza le
                      immagini troppo scure o sovraesposte, con una luminosità
                      ideale intorno ai valori intermedi.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      Indica la direzione del problema di luminosità quando
                      brightness_score è basso. 'ok' indica che la luminosità è
                      accettabile, 'too_dark' indica che l'immagine è
                      sottoesposta, 'too_bright' indica che l'immagine è
                      sovraesposta.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true se tutti e quattro gli angoli del documento sono
                      completamente visibili all'interno dell'inquadratura
                      dell'immagine, false se un angolo è tagliato. Null quando
                      le coordinate degli angoli non sono disponibili.
                  resolution_score:
                    type: number
                    description: >-
                      Risoluzione effettiva dell'immagine basata sul numero
                      totale di pixel.
                  overall_score:
                    type: number
                    description: >-
                      Punteggio composito ponderato dei sottopunteggi (messa a
                      fuoco 45%, luminosità 30%, risoluzione 25%).
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso (es.
                        `ID_VERIFICATION`, `NFC`, `LIVENESS`). Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al
                        rispettivo modulo, ma l'enum riportato sopra fa fede per
                        tutti gli avvisi delle funzionalità presenti nel payload
                        della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                      description: Dati contestuali aggiuntivi sull'avviso
                    log_type:
                      type: string
                      description: 'Tipo di log: informazione, avviso o errore'
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso (per workflow basati su grafi)
                description: Avvisi di verifica del documento
              matches:
                type: array
                description: >-
                  Documenti corrispondenti trovati durante il rilevamento di
                  duplicati o blocklist (fino a 5 corrispondenze)
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: ID sessione del documento corrispondente
                    session_number:
                      type: integer
                      description: Numero di sessione del documento corrispondente
                    vendor_data:
                      type: string
                      nullable: true
                      description: Dati vendor associati alla sessione corrispondente
                    verification_date:
                      type: string
                      format: date-time
                      description: >-
                        Data in cui la sessione corrispondente è stata
                        verificata
                    user_details:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Nome completo dal documento corrispondente
                        document_type:
                          type: string
                          description: Tipo del documento corrispondente
                        document_number:
                          type: string
                          description: Numero del documento corrispondente
                    status:
                      type: string
                      description: Stato della sessione corrispondente
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Indica se il documento corrispondente è presente nella
                        blocklist
                    api_service:
                      type: string
                      nullable: true
                      description: Tipo di servizio API della sessione corrispondente
                    front_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        URL dell'immagine del fronte del documento
                        corrispondente
              document_liveness:
                type: object
                nullable: true
                description: >-
                  Punteggi di rilevamento della vitalità del documento per tipo
                  di frode, riportati indipendentemente dal fatto che sia
                  scattato un avviso, in modo che un documento approvato possa
                  comunque essere sottoposto ad audit. `null` quando il
                  controllo non è stato eseguito.
                properties:
                  portrait_replace:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Probabilità che il documento sia autentico per questa
                          tipologia di frode, da 0 a 100 (un valore più alto
                          indica una maggiore probabilità di autenticità). Il
                          valore più basso tra i due lati, ossia il valore
                          impiegato per la decisione. `null` quando nessuno dei
                          due lati ha generato un punteggio utilizzabile.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Punteggio per il fronte; `null` se non acquisito o se
                          il punteggio è stato scartato.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Punteggio per il retro; `null` se non acquisito o se
                          il punteggio è stato scartato.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          La soglia di rifiuto salvata al momento della
                          valutazione di questo documento. Le modifiche
                          successive al workflow non la cambiano. Null quando le
                          prove storiche di valutazione non sono disponibili.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          La soglia di revisione salvata al momento della
                          valutazione di questo documento. Eventuali modifiche
                          successive al workflow non la cambiano. Null quando le
                          prove storiche della valutazione non sono disponibili.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Il raggruppamento per tipologia di frode salvato al
                          momento della valutazione. Null quando non è
                          disponibile un punteggio utilizzabile, il controllo
                          non è stato applicato o le prove storiche della
                          valutazione non sono disponibili. Le successive
                          modifiche al workflow non lo cambiano.
                  printed_copy:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Probabilità che il documento sia autentico per questa
                          tipologia di frode, da 0 a 100 (un valore più alto
                          indica una maggiore probabilità di autenticità). Il
                          valore più basso tra i due lati, ossia il valore
                          impiegato per la decisione. `null` quando nessuno dei
                          due lati ha generato un punteggio utilizzabile.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Punteggio per il fronte; `null` se non acquisito o se
                          il punteggio è stato scartato.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Punteggio per il retro; `null` se non acquisito o se
                          il punteggio è stato scartato.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          La soglia di rifiuto salvata al momento della
                          valutazione di questo documento. Le modifiche
                          successive al workflow non la cambiano. Null quando le
                          prove storiche di valutazione non sono disponibili.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          La soglia di revisione salvata al momento della
                          valutazione di questo documento. Eventuali modifiche
                          successive al workflow non la cambiano. Null quando le
                          prove storiche della valutazione non sono disponibili.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Il raggruppamento per tipologia di frode salvato al
                          momento della valutazione. Null quando non è
                          disponibile un punteggio utilizzabile, il controllo
                          non è stato applicato o le prove storiche della
                          valutazione non sono disponibili. Le successive
                          modifiche al workflow non lo cambiano.
                  screen_replay:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Probabilità che il documento sia autentico per questa
                          tipologia di frode, da 0 a 100 (un valore più alto
                          indica una maggiore probabilità di autenticità). Il
                          valore più basso tra i due lati, ossia il valore
                          impiegato per la decisione. `null` quando nessuno dei
                          due lati ha generato un punteggio utilizzabile.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Punteggio per il fronte; `null` se non acquisito o se
                          il punteggio è stato scartato.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Punteggio per il retro; `null` se non acquisito o se
                          il punteggio è stato scartato.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          La soglia di rifiuto salvata al momento della
                          valutazione di questo documento. Le modifiche
                          successive al workflow non la cambiano. Null quando le
                          prove storiche di valutazione non sono disponibili.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          La soglia di revisione salvata al momento della
                          valutazione di questo documento. Eventuali modifiche
                          successive al workflow non la cambiano. Null quando le
                          prove storiche della valutazione non sono disponibili.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Il raggruppamento per tipologia di frode salvato al
                          momento della valutazione. Null quando non è
                          disponibile un punteggio utilizzabile, il controllo
                          non è stato applicato o le prove storiche della
                          valutazione non sono disponibili. Le successive
                          modifiche al workflow non lo cambiano.
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  Validazione dell'indirizzo stampato su questo documento: se
                  esiste e quale sia la sua forma normalizzata, così come letta
                  dal documento (una correzione successiva di `address` non la
                  esegue nuovamente). Presente quando questo passaggio di
                  verifica dell'identità ha abilitato il componente aggiuntivo
                  Validazione indirizzo; `null` altrimenti.
              region:
                type: string
                nullable: true
                description: >-
                  Regione o stato del paese di emissione del documento, qualora
                  il documento ne indichi uno.
              extracted_data:
                type: object
                nullable: true
                additionalProperties: true
                description: >-
                  Istantanea dei dati estratti dal documento che sono stati
                  mostrati alla persona per la revisione, conservati accanto ai
                  valori confermati per consentirti di confrontare quanto letto
                  con quanto confermato dalla persona. `null` quando alla
                  persona non è stato chiesto di effettuare la revisione.
              barcodes:
                type: array
                items:
                  type: object
                  additionalProperties: true
                description: >-
                  Dati letti dai codici a barre del documento. Vuoto quando il
                  documento non ne ha o nessuno è stato letto.
        nfc_skip_reason:
          type: string
          nullable: true
          enum:
            - USER_SKIPPED
            - DOCUMENT_WITHOUT_CHIP
            - CHIP_CERTIFICATE_UNAVAILABLE
            - DEVICE_WITHOUT_NFC
            - INTEGRATION_WITHOUT_NFC_ACCESS
            - MRZ_KEY_UNAVAILABLE
            - JPKI_UNAVAILABLE
          description: >-
            Il motivo per cui la verifica del chip NFC non è stata eseguita,
            valorizzato ogni volta che il workflow include un passaggio NFC.
            `null` mentre l'NFC è in attesa o quando il chip è stato
            effettivamente letto. Valori: `USER_SKIPPED` - l'utente ha scelto di
            saltare su un dispositivo compatibile con NFC (consentito da
            `allow_nfc_skip`); `DOCUMENT_WITHOUT_CHIP` - il documento non ha un
            chip NFC leggibile (non è un documento elettronico ICAO 9303);
            `CHIP_CERTIFICATE_UNAVAILABLE` - il certificato di firma del paese
            di emissione (CSCA) che copre il periodo di emissione del documento
            non è disponibile, quindi la firma del chip non può essere
            verificata; `DEVICE_WITHOUT_NFC` - il dispositivo ha segnalato
            l'assenza di un lettore NFC; `INTEGRATION_WITHOUT_NFC_ACCESS` - la
            verifica è stata eseguita senza un SDK nativo (ad es. in un browser
            web), che non ha accesso al lettore NFC del telefono;
            `MRZ_KEY_UNAVAILABLE` - non è stato possibile derivare la chiave di
            accesso al chip dall'MRZ del documento; `JPKI_UNAVAILABLE` - il
            documento è una My Number Card giapponese, il cui chip viene letto
            tramite JPKI, e JPKI non era disponibile per questa verifica: non è
            abilitato, oppure l'SDK nativo dell'app non può leggere le My Number
            Card.
        nfc_verifications:
          type: array
          nullable: true
          description: >-
            **Array di report NFC / passaporto elettronico** prodotti dai
            passaggi NFC nel grafo del workflow. **Questo è sempre un array
            JSON, mai un singolo oggetto `nfc`** — leggi `nfc_verifications[0]`
            e itera se il tuo workflow può eseguire l'NFC più di una volta.
            `null` fino a quando almeno un passaggio NFC non ha prodotto dati.
            Ciascun elemento è il report completo, inclusi `node_id`, `status` a
            livello di funzionalità, `chip_protocol`, `chip_data`,
            `authenticity` (integrità SOD + DG), `certificate_summary` e
            `warnings[]`. Una Japan My Number Card viene letta tramite JPKI
            anziché ICAO 9303: il relativo elemento ha `chip_protocol: "jpki"`,
            contiene le prove sotto `jpki` e lascia i campi ICAO `null`. Quando
            il passaggio NFC è stato ignorato prima ancora di poter essere
            proposto (documento senza chip, certificato mancante, nessuna
            funzionalità NFC segnalata, chiave MRZ illeggibile, JPKI non
            disponibile per una My Number Card), questo rimane `null` e
            `nfc_skip_reason` ne spiega il motivo; se viene ignorato durante il
            passaggio stesso (l'utente ha toccato il pulsante «Ignora» o il
            lettore è risultato non disponibile al momento della scansione)
            viene comunque prodotto un report con `is_nfc_skipped: true`.
          items:
            type: object
            description: >-
              Un report NFC: il report completo per una singola lettura del chip
              (un chip ePassport o eID ICAO 9303, oppure una Japan My Number
              Card letta tramite JPKI).
            properties:
              node_id:
                type: string
                description: >-
                  ID del nodo del grafo del workflow del passaggio NFC che ha
                  generato questo report. Utilizzalo per correlare il report
                  alla definizione del workflow.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Stato a livello di funzionalità di questo passaggio NFC.
                  Indipendente dallo `status` della sessione di primo livello:
                  una sessione può raggiungere la sua decisione complessiva
                  mentre una singola funzionalità rimane in `In Review`.
              is_nfc_skipped:
                type: boolean
                description: >-
                  `true` quando questo passaggio NFC è stato esplicitamente
                  saltato anziché letto; `skip_reason` ne indica il motivo.
              skip_reason:
                type: string
                nullable: true
                enum:
                  - USER_SKIPPED
                  - DOCUMENT_WITHOUT_CHIP
                  - CHIP_CERTIFICATE_UNAVAILABLE
                  - DEVICE_WITHOUT_NFC
                  - INTEGRATION_WITHOUT_NFC_ACCESS
                  - MRZ_KEY_UNAVAILABLE
                  - JPKI_UNAVAILABLE
                description: >-
                  Il motivo per cui questo passaggio NFC è stato saltato.
                  Impostato solo quando `is_nfc_skipped` è `true`. Stessa
                  tassonomia di `nfc_skip_reason` a livello di sessione, che
                  copre inoltre i casi in cui l'NFC non ha prodotto alcun
                  report.
              chip_protocol:
                type: string
                enum:
                  - icao
                  - jpki
                description: >-
                  In che modo il passaggio NFC legge il chip. `icao`: chip di
                  passaporto elettronico o carta d'identità elettronica ICAO
                  9303, aperto con la chiave di accesso ricavata dalla MRZ.
                  `jpki`: My Number Card giapponese, in cui la carta firma una
                  challenge monouso dopo che il titolare ha inserito il PIN
                  della carta in un SDK nativo; il risultato è presente sotto
                  `jpki`. Viene impostato anche sui passaggi saltati, così da
                  poter distinguere una lettura saltata della My Number Card.
              jpki:
                type: object
                nullable: true
                description: >-
                  Cosa ha dimostrato la lettura di una My Number Card giapponese
                  tramite JPKI. Presente quando `chip_protocol` è `jpki` e la
                  carta è stata letta. `null` per i chip ICAO, per i passaggi
                  saltati e quando il passaggio NFC si è chiuso senza alcuna
                  lettura della carta (in questo caso viene generato
                  `JPKI_SIGNATURE_INVALID`). Non include mai i certificati, i
                  loro numeri di serie, le firme o il My Number a 12 cifre.
                properties:
                  certificate_types:
                    type: array
                    items:
                      type: string
                      enum:
                        - user_authentication
                        - signature
                    description: >-
                      I certificati della carta letti. `user_authentication`
                      (PIN a 4 cifre) viene sempre letto; `signature` (PIN della
                      firma) viene letto quando l'impostazione
                      `jpki_request_attributes` del nodo NFC è attiva.
                  chain_valid:
                    type: boolean
                    description: >-
                      `true` quando ogni certificato letto forma una catena fino
                      all'autorità di certificazione JPKI, rientra nel proprio
                      periodo di validità ed è un certificato My Number Card del
                      relativo tipo.
                  signature_valid:
                    type: boolean
                    description: >-
                      `true` quando ogni firma effettuata dalla carta sulla
                      challenge monouso risulta verificata. La carta firma solo
                      dopo l'inserimento del relativo PIN, dimostrando così il
                      possesso della carta e la conoscenza del PIN.
                  revocation_status:
                    type: string
                    enum:
                      - good
                      - revoked
                      - unchecked
                    description: >-
                      `good` quando il controllo di revoca ha confermato che
                      ogni certificato è valido, `revoked` quando un certificato
                      è revocato (ad esempio una carta segnalata come smarrita),
                      `unchecked` quando non era disponibile alcuna risposta di
                      revoca. `unchecked` non viene mai trattato come `good`:
                      `jpki_revocation_unchecked_action` del nodo NFC decide
                      l'esito (valore predefinito `REVIEW`).
                  ca_generation:
                    type: string
                    nullable: true
                    description: >-
                      Generazione dell'autorità di certificazione JPKI che ha
                      emesso i certificati, ad esempio `2023`. `null` quando
                      nessun certificato fa capo a una di esse.
                  certificate_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: La scadenza più ravvicinata tra i certificati letti.
                  certificates:
                    type: array
                    items:
                      type: object
                      description: >-
                        Cosa ha dimostrato un certificato letto dalla carta. Mai
                        il certificato stesso o il suo numero di serie.
                      properties:
                        type:
                          type: string
                          enum:
                            - user_authentication
                            - signature
                          description: Quale certificato della carta descrive questa voce.
                        chain_valid:
                          type: boolean
                          description: >-
                            `true` quando il certificato forma una catena fino
                            all'autorità di certificazione JPKI del relativo
                            tipo, rientra nel proprio periodo di validità ed è
                            un certificato My Number Card di quel tipo.
                        signature_valid:
                          type: boolean
                          description: >-
                            `true` quando la firma della carta sulla challenge
                            monouso può essere verificata rispetto a questo
                            certificato.
                        ca_generation:
                          type: string
                          nullable: true
                          description: >-
                            Generazione dell'autorità di certificazione JPKI che
                            ha emesso il certificato, ad esempio `2023`. `null`
                            quando non è stato trovato alcun emittente
                            attendibile.
                        not_valid_before:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Inizio del periodo di validità del certificato.
                            `null` se non è stato possibile leggere il
                            certificato.
                        not_valid_after:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Fine del periodo di validità del certificato. `null`
                            se non è stato possibile leggere il certificato.
                        failure:
                          type: string
                          nullable: true
                          enum:
                            - unreadable_certificate
                            - untrusted_issuer
                            - expired
                            - not_yet_valid
                            - wrong_policy
                            - key_usage
                            - null
                          description: >-
                            Il motivo per cui `chain_valid` è `false`:
                            `unreadable_certificate`, `untrusted_issuer` (non
                            rilasciato dall'autorità di certificazione JPKI del
                            suo tipo), `expired`, `not_yet_valid`,
                            `wrong_policy` (non è un certificato My Number Card
                            di quel tipo) o `key_usage` (la chiave non può
                            firmare). `null` quando la catena è valida.
                    description: >-
                      Risultati per singolo certificato, una voce per ogni
                      certificato letto.
                  attributes:
                    type: object
                    nullable: true
                    description: >-
                      I dati del titolare ricavati dal certificato di firma, una
                      volta verificata la validità della catena. `null` se il
                      certificato di firma non è stato richiesto o non si
                      concatena all'autorità di certificazione JPKI.
                    properties:
                      full_name:
                        type: string
                        nullable: true
                        description: >-
                          Nome così come registrato, solitamente nel sistema di
                          scrittura giapponese.
                      date_of_birth:
                        type: string
                        format: date
                        nullable: true
                        description: >-
                          Data di nascita, `YYYY-MM-DD`. `null` quando la data
                          registrata è incompleta.
                      gender:
                        type: string
                        nullable: true
                        enum:
                          - M
                          - F
                          - null
                        description: '`M`, `F` o `null` quando non registrato.'
                      address:
                        type: string
                        nullable: true
                        description: Sede legale.
                      name_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          Stringa di posizioni che contrassegna i caratteri di
                          `full_name` che sono stati sostituiti perché il
                          carattere originale non rientra nel set di caratteri
                          standard. `null` quando nessuno è stato sostituito.
                      address_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          Stringa di posizioni che contrassegna i caratteri
                          sostitutivi in `address`, come per
                          `name_substitute_characters`.
                  attributes_match_ocr:
                    type: boolean
                    nullable: true
                    description: >-
                      `true` quando gli attributi corrispondono ai dati letti
                      dalla foto della stessa carta, `false` quando un qualsiasi
                      attributo differisce (`JPKI_AND_OCR_DATA_NOT_SAME`),
                      `null` quando non è stato possibile confrontare nulla,
                      anche quando `attributes` è `null`.
                  mismatched_attributes:
                    type: array
                    items:
                      type: string
                      enum:
                        - full_name
                        - date_of_birth
                        - gender
                        - address
                    description: >-
                      Nomi degli attributi che differiscono dai dati della foto,
                      mai i loro valori. Vuoto quando tutti gli elementi
                      confrontati corrispondono.
              portrait_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  URL prefirmato del ritratto letto dal chip (ICAO DG2). `null`
                  per una lettura JPKI (`chip_protocol: "jpki"`) e per i
                  passaggi saltati.
              signature_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  URL prefirmato dell'immagine della firma del titolare letta
                  dal chip (ICAO DG7), se memorizzata nel chip. `null` per una
                  lettura JPKI (`chip_protocol: "jpki"`) e per i passaggi
                  saltati.
              chip_data:
                type: object
                nullable: true
                description: >-
                  Dati personali estratti dai Data Group del chip ICAO. `null`
                  per una lettura JPKI (`chip_protocol: "jpki"`) e per i
                  passaggi saltati.
                properties:
                  document_type:
                    type: string
                  issuing_country:
                    type: string
                  document_number:
                    type: string
                  expiration_date:
                    type: string
                    format: date
                  first_name:
                    type: string
                  last_name:
                    type: string
                  birth_date:
                    type: string
                    format: date
                  gender:
                    type: string
                  nationality:
                    type: string
                  address:
                    type: string
                  place_of_birth:
                    type: string
              authenticity:
                type: object
                nullable: true
                description: >-
                  Autenticazione passiva ICAO: firma SOD (`sod_integrity`) e
                  hash dei Data Group (`dg_integrity`). `null` per una lettura
                  JPKI, che riporta la relativa prova sotto `jpki`.
                properties:
                  sod_integrity:
                    type: boolean
                  dg_integrity:
                    type: boolean
              certificate_summary:
                type: object
                nullable: true
                description: >-
                  Riepilogo dell'ICAO Document Signer Certificate. `null` per
                  una lettura JPKI (`chip_protocol: "jpki"`) e per i passaggi
                  saltati.
                properties:
                  issuer:
                    type: string
                  subject:
                    type: string
                  serial_number:
                    type: string
                  not_valid_after:
                    type: string
                    format: date-time
                  not_valid_before:
                    type: string
                    format: date-time
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso. Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al proprio
                        modulo (es. `PHONE` all'interno di
                        `phone_verifications[].warnings`), ma l'enum riportato
                        sopra fa fede per tutti gli avvisi delle funzionalità
                        presenti nel payload della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso
        liveness_checks:
          type: array
          nullable: true
          description: >-
            **Array di report di rilevamento della vitalità** prodotti dai
            passaggi di rilevamento della vitalità nel grafo del workflow.
            Sempre un array JSON — mai un singolo oggetto `liveness`. `null`
            fino a quando almeno un passaggio di rilevamento della vitalità non
            ha prodotto dati. Ciascun elemento è il report completo, inclusi
            `node_id`, `status` a livello di funzionalità, `method`, `score`,
            `reference_image`, `video_url`, `age_estimation` opzionale,
            `matches[]` cross-sessione e `warnings[]`.
          items:
            type: object
            description: >-
              Un report di rilevamento della vitalità — il report completo per
              un singolo passaggio di rilevamento della vitalità.
            properties:
              node_id:
                type: string
                description: >-
                  ID del nodo del grafo del workflow del passaggio di
                  rilevamento della vitalità che ha generato questo report.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Stato a livello di funzionalità di questo passaggio di
                  rilevamento della vitalità. Indipendente dallo `status` della
                  sessione di primo livello: una sessione può raggiungere la sua
                  decisione complessiva mentre una singola funzionalità rimane
                  in `In Review`.
              method:
                type: string
                description: Metodo utilizzato per il rilevamento della vitalità
              score:
                type: number
                description: Punteggio di affidabilità del controllo di vitalità
              reference_image:
                type: string
                format: uri
                description: URL dell'immagine di riferimento utilizzata
              video_url:
                type: string
                format: uri
                description: URL del video del controllo di vitalità
              age_estimation:
                type: number
                description: Età stimata della persona
              matches:
                type: array
                description: >-
                  Volti simili trovati dalla ricerca di volti duplicati
                  (migliori corrispondenze, con le voci in blocklist/allowlist
                  per prime). Il campo `source` di ciascuna voce indica da dove
                  proviene il volto corrispondente: `session` (un'altra sessione
                  di verifica), `imported` (un volto caricato per un utente
                  fornitore), `list_entry` (un volto in una allowlist/blocklist
                  gestita dall'organizzazione) o `retained_template` (un modello
                  biometrico privo di immagini memorizzato per un utente,
                  elencato sotto `/v3/biometric-templates/`). `session_id`,
                  `session_number`, `status` e `api_service` sono `null` per le
                  origini diverse dalle sessioni. Le corrispondenze `imported`
                  popolano comunque `vendor_data`, `verification_date` e —
                  quando l'utente fornitore ha un nome registrato —
                  `user_details` (solo con `full_name`) dal record dell'utente
                  fornitore; le corrispondenze `retained_template` popolano
                  `vendor_user_id`, `vendor_data`, `biometric_template_id` e
                  `verification_date`, mentre i relativi campi immagine e
                  identità sono `null`; le corrispondenze `list_entry`
                  restituiscono tutti questi valori come `null`.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID sessione del volto corrispondente. `null` quando
                        `source` è `imported`, `list_entry` o
                        `retained_template`.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: >-
                        Somiglianza facciale tra le due immagini, limitata
                        all'intervallo 0–100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` della sessione corrispondente o
                        dell'utente collegato per i volti importati e con
                        modello conservato.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID dell'utente collegato per le corrispondenze
                        `imported` e `retained_template`, nonché per le
                        corrispondenze di sessione collegate a un utente. `null`
                        per le voci della lista e per le sessioni senza un
                        utente.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID del modello biometrico conservato. Impostato solo
                        quando `source` è `retained_template`; `null`
                        altrimenti.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Quando il volto corrispondente è stato acquisito o
                        quando è stato creato un modello conservato. `null` per
                        le voci della lista.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        Dati di identità della sessione corrispondente o del
                        profilo Utente importato. Sempre `null` per le
                        corrispondenze di tipo `retained_template` e
                        `list_entry`.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Immagine di riferimento per i confronti basati su
                        immagini. Sempre `null` per i confronti
                        `retained_template` poiché i modelli conservati non
                        contengono immagini.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        Stato del ciclo di vita della sessione corrispondente.
                        `null` per le origini diverse dalle sessioni.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Indica se il volto corrispondente è presente in una
                        blocklist.
                    is_allowlisted:
                      type: boolean
                      description: >-
                        Indica se il volto corrispondente è presente in una
                        allowlist.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Servizio API autonomo della sessione corrispondente (es.
                        `PASSIVE_LIVENESS`, `FACE_MATCH`); `null` per le
                        sessioni di workflow e le origini non legate a sessioni.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        Origine del volto corrispondente: `session`, `imported`
                        (caricamento del volto dell'utente), `list_entry`
                        (allowlist/blocklist) o `retained_template` (un modello
                        biometrico privo di immagini associato a un utente,
                        elencato sotto `/v3/biometric-templates/`).
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso. Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al proprio
                        modulo (es. `PHONE` all'interno di
                        `phone_verifications[].warnings`), ma l'enum riportato
                        sopra fa fede per tutti gli avvisi delle funzionalità
                        presenti nel payload della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso
              face_quality:
                type: number
                nullable: true
                description: >-
                  Punteggio di qualità dell'immagine del volto (0-100%).
                  Disponibile solo per il rilevamento della vitalità passivo.
              face_luminance:
                type: number
                nullable: true
                description: >-
                  Punteggio di luminanza/luminosità del volto (0-100%).
                  Disponibile solo per il rilevamento passivo della vitalità.
        face_matches:
          type: array
          nullable: true
          description: >-
            **Array di report di confronto facciale** prodotti dai passaggi di
            confronto facciale nel grafo del workflow. Sempre un array JSON —
            mai un singolo oggetto `face_match`. `null` fino a quando almeno un
            passaggio di confronto facciale non ha prodotto dati. Ciascun
            elemento è il report completo, inclusi `node_id`, `status` a livello
            di funzionalità, lo `score` di similarità, `source_image`,
            `target_image` e `warnings[]`.
          items:
            type: object
            description: Un report di confronto facciale — il report completo.
            properties:
              node_id:
                type: string
                description: >-
                  ID del nodo del grafo del workflow del passaggio di confronto
                  facciale che ha generato questo report.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Stato a livello di funzionalità di questo passaggio di
                  confronto facciale. Indipendente dallo `status` della sessione
                  di primo livello: una sessione può raggiungere la sua
                  decisione complessiva mentre una singola funzionalità rimane
                  in `In Review`.
              score:
                type: number
                description: Punteggio di affidabilità del confronto facciale
              source_image_session_id:
                type: string
                format: uuid
                nullable: true
                description: >-
                  ID della sessione in cui è archiviato il ritratto sorgente (di
                  riferimento). Nei flussi di autenticazione biometrica questo è
                  l'ID della sessione stessa (il ritratto inviato viene
                  archiviato nella nuova sessione). `null` quando l'immagine
                  sorgente è il ritratto del documento della stessa sessione.
              source_image:
                type: string
                format: uri
                description: URL dell'immagine di origine utilizzata per il confronto
              target_image:
                type: string
                format: uri
                description: URL dell'immagine di destinazione utilizzata per il confronto
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso. Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al proprio
                        modulo (es. `PHONE` all'interno di
                        `phone_verifications[].warnings`), ma l'enum riportato
                        sopra fa fede per tutti gli avvisi delle funzionalità
                        presenti nel payload della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso
                description: Avvisi di verifica del confronto facciale
              face_coverage:
                type: object
                nullable: true
                description: >-
                  Indica se gli occhi, la bocca e il viso sono coperti
                  nell'immagine acquisita. Restituito solo da `GET
                  /v3/session/{sessionId}/decision/`; non fa parte dei payload
                  dei webhook. `null` quando non esiste alcuna lettura della
                  copertura.
                properties:
                  eyes:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` significa che la lettura è una prova di sola
                          osservazione e nessun avviso viene attivato da essa.
                      visibility_score:
                        type: number
                        nullable: true
                  mouth:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` significa che la lettura è una prova di sola
                          osservazione e nessun avviso viene attivato da essa.
                      visibility_score:
                        type: number
                        nullable: true
                  face:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` significa che la lettura è una prova di sola
                          osservazione e nessun avviso viene attivato da essa.
                      visibility_score:
                        type: number
                        nullable: true
        phone_verifications:
          type: array
          nullable: true
          description: >-
            **Array di report di verifica telefonica** — sempre un array JSON,
            mai un singolo oggetto `phone`. `null` fino a quando almeno un
            passaggio telefonico non ha prodotto dati. Ciascun elemento è il
            report completo, inclusi `node_id`, `status` a livello di
            funzionalità, il numero di telefono e i metadati del paese,
            `lifecycle[]`, `matches[]` e `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificativo univoco per questo passaggio di verifica
                  telefonica nel grafo del workflow.
              status:
                type: string
                description: >-
                  Stato a livello di funzionalità di questo passaggio di
                  verifica telefonica. Indipendente dallo `status` della
                  sessione di primo livello: una sessione può raggiungere la sua
                  decisione complessiva mentre una singola funzionalità rimane
                  in `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              phone_number_prefix:
                type: string
                description: Prefisso telefonico internazionale del paese
              phone_number:
                type: string
                description: Numero di telefono senza prefisso internazionale
              full_number:
                type: string
                description: Numero di telefono completo di prefisso internazionale
              country_code:
                type: string
                description: Codice paese a due lettere (ISO 3166-1 alpha-2)
              country_name:
                type: string
                description: Nome completo del paese
              carrier:
                type: object
                properties:
                  name:
                    type: string
                    description: Nome dell'operatore telefonico
                  type:
                    type: string
                    description: Tipo di linea telefonica (cellulare, fissa, ecc.)
              is_disposable:
                type: boolean
                description: >-
                  Indica se il numero di telefono appartiene a un servizio usa e
                  getta
              is_virtual:
                type: boolean
                description: Indica se il numero di telefono è virtuale
              verification_method:
                type: string
                description: Metodo utilizzato per verificare il numero di telefono
              verification_attempts:
                type: integer
                description: Numero di tentativi di verifica effettuati
              verified_at:
                type: string
                format: date-time
                description: Timestamp della verifica del telefono
              lifecycle:
                type: array
                description: >-
                  Elenco cronologico degli eventi nel ciclo di vita della
                  verifica telefonica.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        Payload specifico dell'evento. Gli eventi di invio
                        contengono `status`, `reason`, `channel`,
                        `actual_channel`; gli eventi di consegna contengono
                        `channel`, `status`; gli eventi di verifica del codice
                        contengono `code_tried`, `status`; gli eventi di stato
                        finale contengono `reason` — o `null` quando non c'è
                        alcun motivo da segnalare (ad es.
                        `PHONE_VERIFICATION_APPROVED`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        channel:
                          type: string
                          nullable: true
                        actual_channel:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              warnings:
                type: array
                description: Elenco di avvisi relativi alla verifica telefonica
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso. Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al proprio
                        modulo (es. `PHONE` all'interno di
                        `phone_verifications[].warnings`), ma l'enum riportato
                        sopra fa fede per tutti gli avvisi delle funzionalità
                        presenti nel payload della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso
              matches:
                type: array
                description: >-
                  Corrispondenze trovate per questo numero di telefono. Ogni
                  corrispondenza ha una `source`: `session` (un'altra sessione
                  di verifica nella tua applicazione ha trovato corrispondenza
                  sullo stesso numero, restituita con
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  o `list_entry` (il numero è presente in una lista di elementi
                  consentiti/bloccati gestita dall'organizzazione — vedi
                  `/management-api/lists/overview`). Le corrispondenze tra
                  sessioni diverse usano `vendor_data` differenti e sono
                  limitate a un massimo di 5.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    phone_number:
                      type: string
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        Origine di questa corrispondenza. `session` indica che
                        un'altra sessione di verifica nella tua applicazione ha
                        trovato una corrispondenza su questo valore.
                        `list_entry` indica che il valore è stato rilevato
                        rispetto a un elenco gestito dall'organizzazione
                        (allowlist/blocklist) — consulta la panoramica degli
                        elenchi della management API all'indirizzo
                        `/management-api/lists/overview` per informazioni su
                        come gestire tali elenchi.
              phone_intelligence:
                allOf:
                  - $ref: '#/components/schemas/PhoneIntelligence'
                description: >-
                  Segnali di intelligence telefonica. Presenti solo se l'add-on
                  di intelligence telefonica è stato eseguito per questo numero.
              phone_social:
                allOf:
                  - $ref: '#/components/schemas/PhoneSocialFootprint'
                description: >-
                  Impronta social del numero. Presente solo quando il componente
                  aggiuntivo per l'impronta social è stato eseguito per questo
                  numero.
        email_verifications:
          type: array
          nullable: true
          description: >-
            **Array di report di verifica email** — sempre un array JSON, mai un
            singolo oggetto `email`. `null` fino a quando almeno un passaggio
            email non ha prodotto dati. Ciascun elemento è il report completo,
            inclusi `node_id`, `status` a livello di funzionalità, l'indirizzo
            email, i dati sulle violazioni, `lifecycle[]`, `matches[]` e
            `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificativo univoco per questo passaggio di verifica email
                  nel grafo del workflow.
              status:
                type: string
                description: >-
                  Stato a livello di funzionalità di questo passaggio di
                  verifica email. Indipendente dallo `status` della sessione di
                  primo livello: una sessione può raggiungere la sua decisione
                  complessiva mentre una singola funzionalità rimane in `In
                  Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              email:
                type: string
                description: L'indirizzo email in corso di verifica
              is_breached:
                type: boolean
                description: Indica se l'email è stata trovata in violazioni di dati note
              breaches:
                type: array
                description: >-
                  Elenco delle violazioni note in cui è stata trovata questa
                  email
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Nome della violazione
                    domain:
                      type: string
                      description: Dominio interessato dalla violazione
                    logo_path:
                      type: string
                      description: URL del logo del servizio violato
                    breach_date:
                      type: string
                      format: date
                      description: Data in cui si è verificata la violazione
                    description:
                      type: string
                      description: Descrizione della violazione
                    is_verified:
                      type: boolean
                      description: Indica se la violazione è verificata
                    data_classes:
                      type: array
                      description: Tipi di dati esposti nella violazione
                      items:
                        type: string
                    breach_emails_count:
                      type: integer
                      description: Numero di indirizzi email interessati dalla violazione
              is_disposable:
                type: boolean
                description: Indica se l'email proviene da un provider monouso
              is_undeliverable:
                type: boolean
                description: Indica se l'indirizzo email non è recapitabile
              verification_attempts:
                type: integer
                description: Numero di tentativi di verifica per questa email
              verified_at:
                type: string
                format: date-time
                description: Timestamp della verifica dell'email
              warnings:
                type: array
                description: Elenco di avvisi relativi alla verifica email
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso. Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al proprio
                        modulo (es. `PHONE` all'interno di
                        `phone_verifications[].warnings`), ma l'enum riportato
                        sopra fa fede per tutti gli avvisi delle funzionalità
                        presenti nel payload della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso
              lifecycle:
                type: array
                description: >-
                  Elenco cronologico degli eventi nel ciclo di vita della
                  verifica email.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        Payload specifico dell'evento. Gli eventi di invio
                        contengono `status`, `reason`; gli eventi di verifica
                        del codice contengono `code_tried`, `status`; gli eventi
                        di stato finale contengono `reason` — o `null` quando
                        non c'è alcun motivo da segnalare (ad es.
                        `EMAIL_VERIFICATION_APPROVED`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              matches:
                type: array
                description: >-
                  Corrispondenze trovate per questo indirizzo email. Ogni
                  corrispondenza ha una `source`: `session` (un'altra sessione
                  di verifica nella tua applicazione ha trovato corrispondenza
                  sulla stessa email, restituita con
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  o `list_entry` (l'email è presente in una lista di elementi
                  consentiti/bloccati gestita dall'organizzazione — vedi
                  `/management-api/lists/overview`). Le corrispondenze tra
                  sessioni diverse usano `vendor_data` differenti e sono
                  limitate a un massimo di 5.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    email:
                      type: string
                      format: email
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        Origine di questa corrispondenza. `session` indica che
                        un'altra sessione di verifica nella tua applicazione ha
                        trovato una corrispondenza su questo valore.
                        `list_entry` indica che il valore è stato rilevato
                        rispetto a un elenco gestito dall'organizzazione
                        (allowlist/blocklist) — consulta la panoramica degli
                        elenchi della management API all'indirizzo
                        `/management-api/lists/overview` per informazioni su
                        come gestire tali elenchi.
              email_intelligence:
                allOf:
                  - $ref: '#/components/schemas/EmailIntelligence'
                description: >-
                  Segnali di intelligence sulle email. Presenti solo quando
                  l'add-on di intelligence sulle email è stato eseguito per
                  questo indirizzo.
              email_social:
                allOf:
                  - $ref: '#/components/schemas/EmailSocialFootprint'
                description: >-
                  Impronta social dell'indirizzo. Presente solo quando il
                  componente aggiuntivo per l'impronta social è stato eseguito
                  per questo indirizzo.
        poa_verifications:
          type: array
          nullable: true
          description: >-
            **Array di report di Prova di residenza (POA)** — sempre un array
            JSON, mai un singolo oggetto `poa`. `null` fino a quando almeno un
            passaggio POA non ha prodotto dati. Ciascun elemento è il report
            completo, inclusi `node_id`, `status` a livello di funzionalità,
            l'URL del file del documento, l'ente emittente, le date, l'indirizzo
            analizzato e `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificatore univoco per questo passaggio POA nel grafo del
                  workflow.
              status:
                type: string
                description: >-
                  Stato a livello di funzionalità di questo passaggio di Prova
                  di residenza. Indipendente dallo `status` della sessione di
                  primo livello: una sessione può raggiungere la sua decisione
                  complessiva mentre una singola funzionalità rimane in `In
                  Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              document_file:
                type: string
                format: uri
                description: URL del documento di prova di residenza
              issuing_state:
                type: string
                description: Codice paese a due lettere dello stato di emissione
              document_type:
                type: string
                description: Tipo di documento di prova di residenza
              document_subtype:
                type: string
                nullable: true
                description: >-
                  Classificazione più specifica del documento POA all'interno
                  del suo `document_type`, se ne è stata rilevata una. `null` in
                  caso contrario.
              document_language:
                type: string
                description: Codice lingua del documento
              document_metadata:
                type: object
                properties:
                  file_size:
                    type: integer
                    description: Dimensione del documento
                  content_type:
                    type: string
                    description: Tipo di contenuto del documento
                  creation_date:
                    type: string
                    format: date
                    description: Data di creazione del documento
                  modified_date:
                    type: string
                    format: date
                    description: Data di modifica del documento
                  overlay_manipulation:
                    type: object
                    nullable: true
                    description: >-
                      Analisi forense del PDF per sospetta manipolazione del
                      testo sovrapposto. Null se non è stata trovata alcuna
                      prova di manipolazione del testo sovrapposto o se il
                      documento non era un PDF.
                    properties:
                      detected:
                        type: boolean
                        description: >-
                          Indica se sono state rilevate prove di manipolazione
                          del testo sovrapposto.
                      analyzed:
                        type: boolean
                        description: Indica se è stato possibile analizzare il PDF.
                      analysis_incomplete:
                        type: boolean
                        description: >-
                          Presente e vero solo quando il file non ha potuto
                          essere verificato per intero. Ciò che è stato
                          verificato mantiene i propri risultati dove possibile,
                          e il documento genera l'avviso di sostituzione del
                          testo non comprovata.
                      signals:
                        type: array
                        items:
                          type: string
                        description: >-
                          Segnali forensi rilevati, come duplicate_font_subset o
                          glyph_fragmentation.
                      manipulated_regions:
                        type: array
                        description: >-
                          Aree sospette di manipolazione nelle coordinate della
                          pagina PDF.
                        items:
                          type: object
                          properties:
                            page:
                              type: integer
                            x:
                              type: number
                            'y':
                              type: number
                            width:
                              type: number
                            height:
                              type: number
                            page_width:
                              type: number
                            page_height:
                              type: number
                  creator:
                    type: string
                    nullable: true
                    description: >-
                      Applicazione di creazione registrata nei metadati del
                      documento.
                  producer:
                    type: string
                    nullable: true
                    description: Software del produttore registrato nei metadati del PDF.
                  software:
                    type: string
                    nullable: true
                    description: >-
                      Software di modifica/elaborazione registrato nei metadati
                      del file.
                  encryption:
                    type: string
                    nullable: true
                    description: Schema di crittografia del documento, se crittografato.
                  is_signed:
                    type: boolean
                    nullable: true
                    description: Indica se il PDF contiene una firma digitale.
                  is_tampered:
                    type: boolean
                    nullable: true
                    description: >-
                      Indica se la convalida della firma segnala che il file è
                      stato modificato dopo la sottoscrizione.
                  signature_info:
                    type: object
                    nullable: true
                    description: Dettagli della firma o delle firme digitali, se presenti.
                  exif_original_date:
                    type: string
                    nullable: true
                    description: >-
                      Data di acquisizione originale EXIF, per i caricamenti di
                      immagini.
                  exif_digitized_date:
                    type: string
                    nullable: true
                    description: >-
                      Data di digitalizzazione EXIF, per i caricamenti di
                      immagini.
                  processed_by_known_editor:
                    type: boolean
                    nullable: true
                    description: >-
                      Indica se i metadati del file mostrano un'elaborazione da
                      parte di un editor di documenti noto.
                  has_different_creation_mod_date:
                    type: boolean
                    nullable: true
                    description: >-
                      Indica se le date di creazione e di modifica differiscono
                      — un comune segnale di manipolazione.
                description: >-
                  Metadati di analisi forense del file estratti dal documento
                  POA caricato. Contiene sempre le chiavi seguenti (i valori
                  sono `null` quando non applicabili, ad es. le date EXIF per i
                  PDF). `null` quando non è stato possibile estrarre alcun
                  metadato.
                nullable: true
              issuer:
                type: string
                description: Nome dell'emittente del documento
              issue_date:
                type: string
                format: date
                description: Data di emissione del documento
              expiration_date:
                type: string
                format: date
                nullable: true
                description: Data di scadenza del documento, se disponibile
              poa_address:
                type: string
                description: Indirizzo non elaborato dal documento di prova di residenza
              poa_formatted_address:
                type: string
                description: Indirizzo formattato dal documento di prova di residenza
              poa_parsed_address:
                type: object
                properties:
                  address_type:
                    type: string
                    description: Tipo di indirizzo (Via, Viale, ecc.)
                  street_1:
                    type: string
                    description: Indirizzo civico principale
                  street_2:
                    type: string
                    nullable: true
                    description: Indirizzo stradale secondario
                  city:
                    type: string
                    description: Nome della città
                  region:
                    type: string
                    description: Nome della regione o dello stato
                  country:
                    type: string
                    description: Codice paese a due lettere
                  postal_code:
                    type: string
                    description: Codice postale
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                        description: Coordinata di latitudine
                      longitude:
                        type: number
                        description: Coordinata di longitudine
              name_on_document:
                type: string
                nullable: true
                description: >-
                  Nome del titolare del conto / destinatario estratto dal
                  documento POA, utilizzato per la corrispondenza del nome.
                  `null` se non è stato possibile estrarre alcun nome.
              name_match_score_expected_details:
                type: number
                nullable: true
                description: >-
                  Punteggio di somiglianza (0-100) tra `name_on_document` e il
                  nome previsto fornito alla creazione della sessione. `null`
                  quando manca uno dei due valori.
              name_match_score_id_verification:
                type: number
                nullable: true
                description: >-
                  Punteggio di somiglianza (0-100) tra `name_on_document` e il
                  nome estratto dal passaggio di verifica dell'identità. `null`
                  quando manca uno dei due valori.
              expected_details_address:
                type: string
                nullable: true
                description: Indirizzo non elaborato previsto per la verifica
              expected_details_formatted_address:
                type: string
                nullable: true
                description: Indirizzo formattato previsto per la verifica
              expected_details_parsed_address:
                type: object
                description: Dettagli dell'indirizzo analizzato previsti per la verifica
              extra_fields:
                type: object
                description: >-
                  Ulteriori dettagli bancari e di contatto estratti dal
                  documento.
                properties:
                  bank_account_number:
                    type: string
                    nullable: true
                  bank_iban:
                    type: string
                    nullable: true
                  bank_sort_code:
                    type: string
                    nullable: true
                  bank_routing_number:
                    type: string
                    nullable: true
                  bank_swift_bic:
                    type: string
                    nullable: true
                  bank_branch_name:
                    type: string
                    nullable: true
                  bank_branch_address:
                    type: string
                    nullable: true
                  document_phone_number:
                    type: string
                    nullable: true
                  additional_names:
                    type: array
                    items:
                      type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: File aggiuntivi di prova di residenza
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso. Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al proprio
                        modulo (es. `PHONE` all'interno di
                        `phone_verifications[].warnings`), ma l'enum riportato
                        sopra fa fede per tutti gli avvisi delle funzionalità
                        presenti nel payload della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso
              detected_codes:
                type: array
                description: >-
                  Codici QR e codici a barre rilevati in ogni pagina elaborata
                  del documento. Vuoto se non ne viene trovato nessuno. Un
                  codice QR individuato ma non decodificabile ha
                  `parsed_payload: null`.
                items:
                  $ref: '#/components/schemas/DocumentAIDetectedCode'
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  Validazione dell'indirizzo presente su questa prova di
                  residenza: se esiste e quale sia la sua forma normalizzata,
                  così come letta dal documento (una correzione successiva di
                  `poa_address` non la esegue nuovamente). Presente quando
                  questo passaggio di Prova di residenza ha abilitato il
                  componente aggiuntivo Validazione indirizzo e il caricamento
                  ha superato i controlli del documento; `null` altrimenti.
        document_ai_documents:
          type: array
          nullable: true
          description: >-
            **Report di Document AI raggruppati per nodo del workflow** — sempre
            un array JSON, mai un singolo oggetto. `null` finché almeno un
            passaggio di Document AI non ha prodotto dati. Presente solo quando
            `session_kind = user`. Ogni elemento è un gruppo di nodi con uno
            `status` aggregato, il `node_id`, un array `items[]` dei risultati
            per documento (dati estratti indicizzati dalla chiave di campo
            configurata) e `warnings`.
          items:
            type: object
            description: Risultati di Document AI raggruppati per nodo del workflow.
            properties:
              status:
                type: string
                description: >-
                  Stato aggregato di Document AI per questo nodo, aggregato a
                  partire dai suoi `items[]`.
                enum:
                  - Approved
                  - Declined
                  - In Review
                  - Not Finished
              node_id:
                type: string
                nullable: true
                description: >-
                  Identificatore univoco per questo passaggio di Document AI nel
                  grafo del workflow.
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    node_id:
                      type: string
                      nullable: true
                      description: >-
                        Nodo del grafo del workflow che ha generato questo
                        documento.
                    document_key:
                      type: string
                      description: >-
                        Chiave del documento Document AI configurato a cui
                        corrisponde questo file.
                    original_filename:
                      type: string
                      nullable: true
                      description: Nome del file caricato dall'utente.
                    file_size:
                      type: integer
                      nullable: true
                      description: Dimensione del file in byte.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: Link pre-firmato di breve durata al file caricato.
                    status:
                      type: string
                      enum:
                        - Approved
                        - Declined
                        - In Review
                        - Not Finished
                      description: Stato di Document AI per singolo documento.
                    extracted_data:
                      type: object
                      additionalProperties: true
                      nullable: true
                      description: >-
                        Valori estratti da Document AI, indicizzati tramite la
                        `key` del campo configurato. Ciascun valore è una
                        stringa, un numero o `null`.
                    detected_codes:
                      type: array
                      description: >-
                        Codici QR e codici a barre rilevati in ogni pagina
                        elaborata. Vuoto se non ne viene trovato nessuno. Un
                        codice QR individuato ma non decodificabile ha
                        `parsed_payload: null`.
                      items:
                        $ref: '#/components/schemas/DocumentAIDetectedCode'
                    fields:
                      type: array
                      description: I campi di estrazione configurati per questo documento.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: >-
                              Chiave di campo stabile utilizzata come chiave in
                              `extracted_data`.
                          name:
                            type: string
                            description: Nome del campo di facile lettura.
                          instruction:
                            type: string
                            description: Istruzione di estrazione mostrata al modello.
                          type:
                            type: string
                            enum:
                              - text
                              - number
                              - date
                            description: Tipo di valore previsto del campo estratto.
                          required:
                            type: boolean
                            description: Whether this field is required.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        Metadati di analisi forense del file estratti dal
                        documento caricato (ad es. `is_tampered`). `null` quando
                        non è stato possibile estrarre nulla.
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        Verifica incrociata dei campi estratti dal documento
                        rispetto ad altri dati della sessione. `null` quando non
                        è stato eseguito alcun controllo incrociato.
                    created_at:
                      type: string
                      format: date-time
              warnings:
                type: array
                nullable: true
                items:
                  type: object
                description: Log degli avvisi generati per questo nodo Document AI.
        questionnaire_responses:
          type: array
          nullable: true
          description: >-
            **Array di report delle risposte ai questionari** — sempre un array
            JSON, mai un singolo oggetto `questionnaire`. `null` fino a quando
            almeno un passaggio con questionario non ha prodotto dati. Ciascun
            elemento è il report completo, inclusi `node_id`, i metadati del
            questionario, le sezioni con gli elementi del modulo e le risposte
            dell'utente.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificativo univoco per questo passaggio di questionario
                  nel grafo del workflow.
              questionnaire_id:
                type: string
                description: Identificatore univoco per il questionario
              title:
                type: string
                description: Titolo del questionario
              description:
                type: string
                description: Descrizione del questionario
              languages:
                type: array
                items:
                  type: string
                description: Lingue supportate
              default_language:
                type: string
                description: Lingua predefinita
              is_active:
                type: boolean
                description: Indica se il questionario è attivo
              is_simple_questionnaire:
                type: boolean
                description: >-
                  Indica se il questionario è un modulo lineare semplice (senza
                  grafo con diramazioni).
              questionnaire_group_id:
                type: string
                format: uuid
                nullable: true
                description: >-
                  Identificatore stabile del gruppo di questionari tra le
                  versioni.
              version:
                type: integer
                nullable: true
                description: Numero di versione del questionario a cui si è risposto.
              published_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Timestamp in cui è stata pubblicata questa versione del
                  questionario.
              sections:
                type: array
                items:
                  type: object
                  properties:
                    title:
                      type: string
                      nullable: true
                      description: Titolo della sezione
                    description:
                      type: string
                      nullable: true
                      description: Descrizione della sezione
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          uuid:
                            type: string
                            description: Identificatore univoco per l'elemento
                          value:
                            type: string
                            nullable: true
                            description: >-
                              Identificatore di nodo stabile di questo elemento
                              del modulo all'interno del grafo del questionario.
                          element_type:
                            type: string
                            description: Tipo dell'elemento del questionario
                          is_required:
                            type: boolean
                            description: Indica se l'elemento è obbligatorio
                          title:
                            type: string
                            description: Titolo dell'elemento
                          description:
                            type: string
                            nullable: true
                            description: Descrizione dell'elemento
                          placeholder:
                            type: string
                            nullable: true
                            description: Testo segnaposto
                          choices:
                            type: array
                            nullable: true
                            items:
                              type: object
                              properties:
                                label:
                                  type: string
                                value:
                                  type: string
                                requires_text_input:
                                  type: boolean
                                  description: >-
                                    Indica se questa scelta richiede
                                    l'inserimento di testo aggiuntivo
                                  nullable: true
                              required:
                                - label
                                - value
                            description: >-
                              Scelte per elementi a menu a discesa o a scelta
                              singola
                          max_files:
                            type: integer
                            description: Numero massimo di file consentiti
                            nullable: true
                          answer:
                            type: object
                            description: Risposta fornita per l'elemento
                            properties:
                              value:
                                type: string
                                nullable: true
                              text:
                                type: string
                                nullable: true
                              files:
                                type: array
                                items:
                                  type: string
                                nullable: true
                          required_if:
                            type: object
                            nullable: true
                            description: >-
                              Regola di obbligatorietà condizionale, quando
                              l'elemento è richiesto solo per determinate
                              risposte.
                          repeatable_config:
                            type: object
                            nullable: true
                            description: >-
                              Configurazione per gruppi di elementi ripetibili,
                              se applicabile.
                        required:
                          - uuid
                          - value
                          - element_type
                          - is_required
                          - title
              status:
                type: string
                description: Stato del questionario
        bank_verifications:
          type: array
          nullable: true
          description: >-
            Risultati della verifica bancaria, un elemento per ciascun passaggio
            di verifica bancaria, per la Verifica degli utenti e la Verifica
            aziendale. `null` finché un passaggio non ne produce uno. Il
            parametro `method` di ciascun elemento indica come è stato
            verificato il conto: `open_banking` (accesso bancario) o
            `account_lookup` (controllo del conto), oppure un'alternativa
            tramite `statement` o `microdeposits`, e `none` quando la persona ha
            proseguito senza una banca prima della valutazione di qualsiasi
            tentativo (`continued_without_bank`). Consulta [Metodi di verifica
            bancaria](/it/core-technology/bank-verification/verification-methods).
          items:
            $ref: '#/components/schemas/BankVerificationResult'
        signatures:
          type: array
          description: >-
            Risultati di Firma elettronica, un elemento per ciascun firmatario e
            passaggio di firma, per la Verifica degli utenti e la Verifica
            aziendale (KYB). Presente solo quando il workflow ha un passaggio di
            Firma elettronica; un array vuoto finché un firmatario non lo
            raggiunge. Consulta il [report di Firma
            elettronica](/it/core-technology/electronic-signature/report-electronic-signature).
          items:
            $ref: '#/components/schemas/SignatureResult'
        aml_screenings:
          type: array
          nullable: true
          description: >-
            **Array di report di screening AML** — sempre un array JSON, mai un
            singolo oggetto `aml`. `null` finché almeno un passaggio AML non ha
            prodotto dati. Ciascun elemento è il report completo, inclusi
            `node_id`, `status` a livello di funzionalità, `total_hits`,
            `entity_type`, `hits[]`, `score`, `screened_data`,
            `is_ongoing_monitoring_enabled` e `warnings[]`.
          items:
            $ref: '#/components/schemas/AMLScreening'
        ip_analyses:
          type: array
          nullable: true
          description: >-
            **Array di report di Analisi dispositivo e IP** — sempre un array
            JSON, mai un singolo oggetto `ip_analysis`. `null` fino a quando
            almeno un passaggio di analisi IP non ha prodotto dati. Ciascun
            elemento è il report completo, inclusi `node_id`, `status` a livello
            di funzionalità, dati IP e di geolocalizzazione, fingerprint del
            dispositivo e `warnings[]`. Le voci con `(node_id, ip_address,
            device_fingerprint)` duplicati vengono deduplicate lato server.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificatore univoco per questo passaggio di Analisi
                  dispositivo e IP nel grafo del workflow.
              status:
                type: string
                description: >-
                  Stato a livello di funzionalità di questa voce di Analisi
                  dispositivo e IP. Indipendente dallo `status` della sessione
                  di primo livello: una sessione può raggiungere la sua
                  decisione complessiva mentre una singola funzionalità rimane
                  in `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              device_brand:
                type: string
                description: Marca del dispositivo utilizzato
              device_model:
                type: string
                description: Modello del dispositivo utilizzato
              browser_family:
                type: string
                description: Famiglia del browser utilizzata
              os_family:
                type: string
                description: Famiglia del sistema operativo
              platform:
                type: string
                description: Tipo di piattaforma (mobile, desktop, ecc.)
              device_fingerprint:
                type: string
                nullable: true
                description: Identificatore univoco dell'impronta digitale del dispositivo
              ip_country:
                type: string
                description: Paese rilevato dall'IP
              ip_country_code:
                type: string
                description: Codice paese a due lettere ricavato dall'IP
              ip_state:
                type: string
                description: Stato/regione rilevati dall'IP
              ip_city:
                type: string
                description: Città rilevata dall'IP
              latitude:
                type: number
                description: Coordinata di latitudine della posizione dell'IP
              longitude:
                type: number
                description: Coordinata di longitudine della posizione IP
              ip_address:
                type: string
                description: Indirizzo IP
              isp:
                type: string
                nullable: true
                description: Provider di servizi Internet
              organization:
                type: string
                nullable: true
                description: Organizzazione associata all'IP
              is_vpn_or_tor:
                type: boolean
                description: Indica se l'indirizzo IP proviene da una rete VPN o Tor
              is_data_center:
                type: boolean
                description: Indica se l'indirizzo IP proviene da un data center
              time_zone:
                type: string
                description: Fuso orario rilevato dall'IP
              time_zone_offset:
                type: string
                description: Offset del fuso orario
              ip:
                type: object
                description: >-
                  Geolocalizzazione IP di questa voce più distanze ortodromiche
                  (km) rispetto all'indirizzo del documento d'identità e
                  all'indirizzo del documento di prova di residenza (POA). Le
                  distanze sono `null` quando uno dei due lati non dispone di
                  una posizione risolvibile.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Coordinate, o `null` se non disponibili.
                  distance_from_id_document:
                    type: number
                    nullable: true
                    example: 23.4
                  distance_from_poa_document:
                    type: number
                    nullable: true
                    example: 12.3
              id_document:
                type: object
                description: >-
                  Posizione estratta dall'indirizzo del documento di identità
                  più le distanze (km) rispetto alla geolocalizzazione IP e
                  all'indirizzo del documento di prova di residenza (POA).
                  `location` è `null` se non è stato possibile geocodificare
                  alcun indirizzo del documento.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Coordinate, o `null` se non disponibili.
                  distance_from_ip:
                    type: number
                    nullable: true
                    example: 23.4
                  distance_from_poa_document:
                    type: number
                    nullable: true
                    example: 18.7
              poa_document:
                type: object
                description: >-
                  Posizione estratta dal documento di Prova di residenza più le
                  distanze (km) rispetto alla geolocalizzazione IP e
                  all'indirizzo del documento di identità. `location` è `null`
                  se la sessione non ha un passaggio POA o se non è stato
                  possibile geocodificare l'indirizzo.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Coordinate, o `null` se non disponibili.
                  distance_from_ip:
                    type: number
                    nullable: true
                    example: 12.3
                  distance_from_id_document:
                    type: number
                    nullable: true
                    example: 18.7
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso. Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al proprio
                        modulo (es. `PHONE` all'interno di
                        `phone_verifications[].warnings`), ma l'enum riportato
                        sopra fa fede per tutti gli avvisi delle funzionalità
                        presenti nel payload della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso
              matches:
                type: array
                description: >-
                  Corrispondenze tra sessioni trovate per l'indirizzo IP o
                  l'identità del dispositivo di questa voce. Ogni corrispondenza
                  è un'altra sessione di verifica nella tua applicazione
                  (`source` è sempre `session`) che condivide lo stesso valore,
                  appartenente sempre a un utente vendor / `vendor_data` diverso
                  da quello della sessione corrente, con un limite massimo di 5
                  per collettore (`device_fingerprint` somma due collettori con
                  limiti indipendenti, quindi sono possibili fino a 10 voci).
                  Ciascun elemento include `match_source`, `confidence`,
                  `match_mode`, `device_info` e `location_info`; le chiavi
                  `recovery_similarity`, `tls_ja4_corroborated` e
                  `recovery_gate_reason` sono presenti solo quando
                  `match_source` è `recovered_high`.
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: ID sessione della sessione corrispondente.
                    session_number:
                      type: integer
                      description: Numero sequenziale della sessione corrispondente.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` della sessione corrispondente — sempre
                        diverso dall'utente del fornitore della sessione
                        corrente.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Data di creazione della sessione corrispondente
                        (`YYYY-MM-DDTHH:MM:SSZ`).
                    match_type:
                      type: string
                      enum:
                        - ip_address
                        - device_fingerprint
                      description: >-
                        Indica se la corrispondenza riguardava l'indirizzo IP o
                        il fingerprint del dispositivo
                    match_source:
                      type: string
                      enum:
                        - ip_address
                        - persistent_id
                        - legacy_fp
                        - recovered_high
                      description: >-
                        Come è stata determinata questa corrispondenza:
                        `ip_address` (indirizzo IP condiviso — co-locazione di
                        rete, non una prova di identità del dispositivo),
                        `persistent_id` (identificativo persistente esatto del
                        dispositivo memorizzato), `legacy_fp` (hash precedente
                        dell'impronta del dispositivo `didit-fp-*`) o
                        `recovered_high` (riscontro di recupero dell'impronta
                        approssimativa ad alta affidabilità). I candidati di
                        recupero a minore affidabilità compaiono esclusivamente
                        come avvisi di rischio, mai in questo array.
                    matched_value:
                      type: string
                      nullable: true
                      description: >-
                        Il valore corrispondente: l'indirizzo IP condiviso,
                        l'identificatore persistente del dispositivo o l'hash
                        dell'impronta legacy oppure — per `recovered_high` —
                        l'UUID del dispositivo recuperato.
                    status:
                      type: string
                      description: Stato del ciclo di vita della sessione corrispondente.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Indica se il valore corrispondente è presente in una
                        blocklist. Attualmente è sempre `false` per le
                        corrispondenze basate su dispositivo/IP.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Servizio API autonomo della sessione corrispondente;
                        `null` per le sessioni di workflow.
                    source:
                      type: string
                      enum:
                        - session
                      description: >-
                        Sempre `session` per le corrispondenze dispositivo/IP —
                        ogni corrispondenza è un'altra sessione di verifica
                        nella tua applicazione.
                    device_info:
                      type: object
                      description: >-
                        Dettagli del dispositivo rilevati nella sessione
                        corrispondente.
                      properties:
                        device_brand:
                          type: string
                          nullable: true
                        device_model:
                          type: string
                          nullable: true
                        browser_family:
                          type: string
                          nullable: true
                        os_family:
                          type: string
                          nullable: true
                        platform:
                          type: string
                          nullable: true
                        device_fingerprint:
                          type: string
                          nullable: true
                    location_info:
                      type: object
                      description: >-
                        Dettagli di rete e geolocalizzazione rilevati nella
                        sessione corrispondente.
                      properties:
                        ip_address:
                          type: string
                          nullable: true
                        ip_country:
                          type: string
                          nullable: true
                        ip_country_code:
                          type: string
                          nullable: true
                        ip_state:
                          type: string
                          nullable: true
                        ip_city:
                          type: string
                          nullable: true
                        is_vpn_or_tor:
                          type: boolean
                        is_data_center:
                          type: boolean
                    confidence:
                      type: number
                      minimum: 0
                      maximum: 1
                      description: >-
                        Affidabilità dell'identificazione lato server, calcolata
                        come `1 - P(false positive)`: `1.0` per corrispondenze
                        deterministiche (`persistent_id`, o `recovered_high`
                        basato su hardware), `0.5` per `legacy_fp`, `0.0` per
                        `ip_address` (solo co-localizzazione), e un valore
                        corretto per corroborazione inferiore a `1.0` per
                        corrispondenze probabilistiche recuperate (più alto
                        quando l'impronta JA4 TLS e il paese dell'IP concordano
                        in modo indipendente).
                    match_mode:
                      type: string
                      enum:
                        - deterministic
                        - probabilistic
                        - co_occurrence
                      description: >-
                        Classe di evidenza della corrispondenza: `deterministic`
                        (identificatore esatto memorizzato o basato su hardware
                        che non può entrare in conflitto tra dispositivi
                        fisici), `probabilistic` (evidenza basata su fingerprint
                        probabilistico) o `co_occurrence` (solo rete condivisa,
                        nessuna asserzione sull'identità del dispositivo).
                    recovery_similarity:
                      type: number
                      description: >-
                        Similarità del coseno della corrispondenza del recupero
                        dell'impronta, arrotondata a 4 decimali. Presente solo
                        quando `match_source` è `recovered_high`.
                    tls_ja4_corroborated:
                      type: boolean
                      description: >-
                        Indica se i fingerprint TLS JA4 delle due osservazioni
                        coincidono — un segnale osservato dal server che il
                        browser non può contraffare. Presente solo quando
                        `match_source` è `recovered_high`.
                    recovery_gate_reason:
                      type: string
                      description: >-
                        Il motivo per cui la corrispondenza di recupero ha
                        superato il controllo rigoroso anti falsi positivi:
                        `hardware_root_match` (un identificativo del dispositivo
                        radicato nell'hardware ha trovato una corrispondenza
                        esatta) o, sulle configurazioni che ammettono prove
                        ottenute esclusivamente tramite probe,
                        `exact_composite_plus_<n>_families` /
                        `very_high_similarity_plus_<n>_families`. Presente solo
                        quando `match_source` è `recovered_high`.
              browser_version:
                type: string
                nullable: true
              os_version:
                type: string
                nullable: true
              user_agent:
                type: string
                nullable: true
                description: La stringa user agent del browser.
              accept_language:
                type: string
                nullable: true
                description: L'intestazione `Accept-Language` inviata dal browser.
              session_identifier:
                type: string
                nullable: true
                description: >-
                  Identificatore della sessione di navigazione in cui è stata
                  eseguita la verifica.
              session_age_ms:
                type: integer
                nullable: true
                description: >-
                  Età di quella sessione di navigazione in millisecondi al
                  momento dell'esecuzione del passaggio.
              coords_accuracy:
                type: number
                nullable: true
                description: >-
                  Raggio di accuratezza, in metri, delle coordinate segnalate
                  dal dispositivo.
              raw_device_data:
                type: object
                nullable: true
                additionalProperties: true
                description: >-
                  Segnali del dispositivo non elaborati raccolti per il
                  passaggio.
        geolocation_checks:
          type: array
          nullable: true
          description: >-
            **Array di risultati della verifica della posizione**, uno per
            ciascun passaggio di verifica della posizione: il tentativo
            accettato di quel passaggio. `null` fino a quando un passaggio di
            verifica della posizione non ha prodotto dati. I tentativi
            precedenti dello stesso passaggio si trovano in
            `geolocation_attempts`.
          items:
            $ref: '#/components/schemas/GeolocationCheck'
        geolocation_attempts:
          type: array
          nullable: true
          description: >-
            Ogni tentativo di ciascun passaggio di verifica della posizione di
            questa sessione, dal più vecchio al più recente. I tentativi
            sostituiti da un nuovo invio vengono omessi. Un workflow che esclude
            `geolocation_checks` tramite i propri attributi di risposta esclude
            anche questo elenco.
          items:
            $ref: '#/components/schemas/GeolocationAttempt'
        database_validations:
          type: array
          nullable: true
          description: >-
            **Array di report di Validazione su database** — sempre un array
            JSON, mai un singolo oggetto `database_validation`. `null` finché
            almeno un passaggio di validazione su DB non ha prodotto dati.
            Ciascun elemento è il report completo, inclusi `node_id`, lo
            `status` a livello di funzionalità, `screened_data`, i
            `validations[]` per servizio (ciascuno con i relativi `source_data`
            del registro) e `warnings[]`. I campi `screened_data` e
            `source_data` variano in base al paese:


            **ARG (Argentina)**: screened_data: {document_number, selfie,
            gender, first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, date_of_death,
            tax_id, tax_id_type, face_match_score, sit_1_since, banks,
            last_position, highest_position, rejected_checks}. Utilizza la
            validazione biometrica di confronto facciale RENAPER. Il genere
            viene dedotto automaticamente dall'analisi del volto o dal nome
            proprio quando non è presente nel documento (es. patenti di guida)


            **BOL (Bolivia)**: screened_data: {document_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, gender}


            **BRA (Brasile)**: screened_data: {tax_number, first_name,
            last_name, date_of_birth}. source_data include sempre
            {identification_number, first_name, last_name, date_of_birth,
            lgpd_minor, minor_under_18, minor_under_16} per corrispondenze CPF
            riuscite. Le ricerche riuscite per adulti impostano tali flag su
            false. Il servizio Consulta CPF della Receita Federal può restituire
            HTTP 422 (minore di 18 anni) o 451 (minore di 16 anni) con dati
            omessi in conformità alla LGPD; in tali casi source_data imposta i
            flag per minori su true come opportuno, include il codice di stato
            HTTP del servizio upstream e la validazione a livello di campo è
            no_match. Consulta la sezione Brasile del riferimento Database
            Validation Outcome Codes per l'elenco completo dei codici.


            **CHL (Cile)**: screened_data: {personal_number, first_name,
            last_name, date_of_birth}. source_data: {identification_number,
            first_name, last_name, date_of_birth, gender}


            **COL (Colombia)**: screened_data: {document_number, document_type,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, document_type}


            **CRI (Costa Rica)**: screened_data: {personal_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **DOM (Repubblica Dominicana)**: screened_data: {personal_number}.
            source_data: {identification_number} (restituisce solo
            valid/invalid)


            **ECU (Ecuador)**: screened_data: {personal_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, street, formatted_address, gender, nationality,
            education, marital_status, spouse, mother_name, father_name,
            profession}


            **ESP (Spagna)**: screened_data: {personal_number, document_type,
            expiration_date, first_name, last_name}. source_data:
            {identification_number, first_name, last_name, full_name,
            document_type, expiration_date}


            **GTM (Guatemala)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **HND (Honduras)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **MEX (Messico)**: screened_data: {personal_number (CURP),
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, gender,
            nationality, curp_status, state_of_birth, doc_probatorio,
            registration_year, registration_state, registration_municipality,
            num_acta, crip, issuing_state_code, foreign_registry_number,
            folio_carta, folio_certificado}. Utilizza il registro civile RENAPO.
            È inoltre disponibile un servizio separato di controllo validità INE
            per MEX come validazione aggiuntiva una per volta.


            **PAN (Panama)**: screened_data: {personal_number, selfie}.
            source_data: {identification_number}. Utilizza la validazione
            biometrica SIB


            **PER (Perù)**: screened_data: {personal_number (DNI), first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, paternal_name, maternal_name, verification_number,
            verification_letter}


            **PRY (Paraguay)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **SLV (El Salvador)**: screened_data: {document_number,
            date_of_birth, first_name, last_name}. source_data:
            {identification_number, first_name, last_name, full_name}


            **URY (Uruguay)**: screened_data: {personal_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name}


            **VEN (Venezuela)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name, gender, date_of_birth, document_type}
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificativo univoco per questo passaggio di validazione su
                  database nel grafo del workflow.
              issuing_state:
                type: string
                description: >-
                  Codice ISO 3166-1 alpha-3 del paese le cui fonti
                  governative/di registro sono state interrogate (ad es. `BRA`,
                  `MEX`, `ESP`, `NGA`, `IDN`). La Validazione su database copre
                  60+ paesi nelle Americhe, in Europa, in Africa, in Medio
                  Oriente e in Asia-Pacifico, oltre a fonti multinazionali
                  globali — la copertura si espande regolarmente, quindi
                  considera il valore come un insieme aperto anziché come
                  un'enumerazione fissa.
              validation_type:
                type: string
                enum:
                  - one_by_one
                  - two_by_two
                  - not_enabled
                description: >-
                  In che modo è stato corroborato il risultato: `one_by_one`
                  (esito da singolo servizio), `two_by_two` (due o più servizi
                  distinti hanno trovato in modo indipendente una corrispondenza
                  esatta con il numero identificativo) o `not_enabled` (salvato
                  quando nessun servizio ha prodotto una corrispondenza
                  utilizzabile). Il valore non è mai `null`. Le modalità di
                  validazione biometrica 2x2 dedicate sono attualmente
                  disponibili per `ECU` e `PER`.
              screened_data:
                type: object
                description: >-
                  I dati di input utilizzati per la validazione. I campi variano
                  in base al paese: consulta la documentazione di Validazione su
                  database (`/core-technology/database-validation/overview`) per
                  i formati specifici per paese.
                properties:
                  last_name:
                    type: string
                  first_name:
                    type: string
                  tax_number:
                    type: string
                    description: 'Brasile: CPF (11 cifre)'
                  personal_number:
                    type: string
                    description: >-
                      Cile: RUT, DOM: Cédula (11 cifre), ECU: Cédula (10 cifre),
                      ESP: DNI/NIE, MEX: CURP (18 caratteri), PER: DNI (8
                      cifre), URY: CI
                  document_number:
                    type: string
                    description: >-
                      ARG: DNI, BOL: CI, COL: Cédula, GTM: DPI, HND: DNI, PAN:
                      Cédula, PRY: CI, SLV: DUI, VEN: Cédula
                  date_of_birth:
                    type: string
                    format: date
                  document_type:
                    type: string
                    description: 'COL: CC/CE/TI/NIT, ESP: ID/PASSPORT'
                  expiration_date:
                    type: string
                    format: date
                    description: Obbligatorio per ESP
              validations:
                type: array
                description: >-
                  Una voce per ciascun servizio di registro che ha restituito un
                  payload di validazione. Ciascuna voce identifica il servizio
                  (`service_id`, `service_name`) e contiene il confronto di
                  `validation` per campo, `outcome_code` / `outcome_detail` del
                  servizio quando segnalato, e il record di registro
                  normalizzato in `source_data`.
                items:
                  type: object
                  properties:
                    service_id:
                      type: string
                      description: >-
                        Identificatore del servizio di registro che ha prodotto
                        questo risultato di validazione.
                      example: bra_cpf
                    service_name:
                      type: string
                      description: Nome di facile lettura del servizio di registro.
                      example: Brazil - CPF status check
                    validation:
                      type: object
                      description: I risultati delle validazioni dei campi.
                      properties:
                        full_name:
                          type: string
                          description: >-
                            Risultato del confronto per il nome completo (ad
                            es., 'full_match', 'partial_match', 'no_match').
                        date_of_birth:
                          type: string
                          description: Risultato del confronto per la data di nascita.
                        identification_number:
                          type: string
                          description: >-
                            Risultato di corrispondenza per il numero di
                            identificazione.
                    outcome_code:
                      type: string
                      nullable: true
                      description: >-
                        Esito leggibile dalla macchina della ricerca nel
                        registro (ad es. `MATCH`, `NO_MATCH`, `PARTIAL_MATCH`,
                        `INCONCLUSIVE`, codici specifici della sorgente).
                        Presente quando il servizio ne segnala uno.
                    outcome_detail:
                      type: string
                      nullable: true
                      description: >-
                        Spiegazione di facile lettura di `outcome_code`, se
                        fornita dal servizio.
                    source_data:
                      type: object
                      description: >-
                        I dati restituiti dal database governativo. Campi
                        comuni: identification_number, first_name, last_name,
                        full_name, date_of_birth, gender. Campi aggiuntivi per
                        paese: BRA include sempre lgpd_minor, minor_under_18 e
                        minor_under_16 in caso di corrispondenze CPF riuscite;
                        include anche lo stato HTTP upstream quando i dati CPF
                        vengono trattenuti ai sensi dell'LGPD (HTTP 422/451).
                        ECU aggiunge street, formatted_address, nationality,
                        education, marital_status, spouse, mother_name,
                        father_name, profession. PER aggiunge paternal_name,
                        maternal_name, verification_number, verification_letter.
                        ESP aggiunge document_type, expiration_date. VEN/COL
                        aggiungono document_type.
                      additionalProperties: true
              errors:
                type: array
                description: >-
                  Errori restituiti dai servizi del registro durante la
                  validazione, ciascuno contrassegnato con il `service_id` che
                  lo ha generato. **Questa chiave viene omessa completamente in
                  assenza di errori.**
                items:
                  type: object
                  description: >-
                    L'oggetto di errore del servizio upstream propagato così
                    com'è — le sue chiavi variano in base al servizio
                    (solitamente un messaggio/codice ed eventuali dettagli
                    specifici del provider) — oltre a `service_id` che
                    identifica il servizio che ha generato l'errore.
                  properties:
                    service_id:
                      type: string
                      nullable: true
                      description: >-
                        Identificatore del servizio di registro che ha generato
                        l'errore.
                  additionalProperties: true
              match_type:
                type: string
                enum:
                  - no_match
                  - partial_match
                  - full_match
                nullable: true
                description: >-
                  L'esito aggregato della corrispondenza tra i servizi
                  interrogati. `null` finché la validazione non è stata
                  valutata.
              status:
                type: string
                description: >-
                  Stato a livello di funzionalità di questa validazione su
                  database. Indipendente dallo `status` della sessione di primo
                  livello: una sessione può raggiungere la sua decisione
                  complessiva mentre una singola funzionalità rimane in `In
                  Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        La funzionalità che ha generato questo avviso. Il valore
                        identifica il blocco della funzionalità a cui appartiene
                        l'avviso. L'array degli avvisi di ciascun modulo
                        utilizza in genere il valore corrispondente al proprio
                        modulo (es. `PHONE` all'interno di
                        `phone_verifications[].warnings`), ma l'enum riportato
                        sopra fa fede per tutti gli avvisi delle funzionalità
                        presenti nel payload della decisione.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        L'ID del nodo del grafo del workflow che ha generato
                        questo avviso
                description: Avvisi relativi alla validazione su database.
        database_validation_not_performed_reason:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Il motivo per cui una validazione su database configurata non ha
            prodotto alcun risultato, sotto forma di `{code, message}` più i
            campi di contesto. Presente solo quando `database_validations` è
            `null` per un workflow che include il passaggio, consentendoti di
            distinguere "il registro ha confermato" da "non è stato eseguito
            nulla". `null` altrimenti.
          properties:
            code:
              type: string
              description: Motivo stabile leggibile da macchina.
            message:
              type: string
              description: Spiegazione di facile lettura.
        reviews:
          type: array
          items:
            type: object
            properties:
              user:
                type: string
                description: >-
                  Chi ha eseguito la revisione. Di solito l'identificativo del
                  revisore della console (la sua email), ma il valore è `"API
                  Client"` per gli aggiornamenti di stato effettuati con una
                  chiave API e `"Unknown"` quando non è stato possibile
                  risolvere alcun attore; pertanto non analizzare questo campo
                  come un indirizzo email.
              new_status:
                type: string
              comment:
                type: string
              created_at:
                type: string
                format: date-time
        assignee:
          type: object
          nullable: true
          description: >-
            Il revisore della Console a cui è assegnata la sessione, oppure
            `null` se non è assegnata a nessuno.
          properties:
            email:
              type: string
              format: email
            assigned_at:
              type: string
              format: date-time
              nullable: true
        waiting_since:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando la sessione ha iniziato l'attesa per la revisione. `null` a
            meno che la sessione non sia `In Review` e la tua applicazione
            imposti una scadenza di revisione.
        sla_due_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Termine entro cui la revisione deve essere completata. `null` a meno
            che la sessione non sia `In Review` e la tua applicazione imposti
            una scadenza di revisione.
        created_at:
          type: string
          format: date-time
          description: Timestamp di creazione della sessione (ISO 8601, UTC).
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Timestamp in cui è prevista la scadenza di questa sessione.
            Impostato sulle sessioni di Verifica degli utenti (KYC) quando è
            stata configurata una scadenza al momento della creazione (o una
            volta che lo stato `Approved` attiva il calcolo della scadenza del
            KYC). `null` per le sessioni senza una scadenza configurata e per le
            tipologie che non utilizzano la scadenza (ad es. sessioni di
            Verifica aziendale (KYB) che non hanno mai ricevuto un
            `expires_at`).
        registry_checks:
          type: array
          nullable: true
          description: >-
            Controlli del registro delle imprese. Presente solo quando
            `session_kind = business`. Ciascun elemento include l'intero payload
            del registro delle imprese.
          items:
            type: object
            description: >-
              Un controllo del registro delle imprese — il payload completo del
              registro delle imprese arricchito con l'assetto proprietario e gli
              avvisi. Presente solo quando `session_kind = business`.
            properties:
              status:
                type: string
                description: Stato del ciclo di vita della funzionalità.
              node_id:
                type: string
                nullable: true
              data_resolved:
                type: boolean
              company:
                type: object
                description: >-
                  Payload completo del registro delle imprese per l'azienda
                  (record di registro unito a eventuali dati forniti dall'utente
                  o modificati dalla console).
                properties:
                  uuid:
                    type: string
                    format: uuid
                  node_id:
                    type: string
                    nullable: true
                  status:
                    type: string
                  registry_status:
                    type: string
                    nullable: true
                  data_resolved:
                    type: boolean
                  company_name:
                    type: string
                  registration_number:
                    type: string
                    nullable: true
                  country_code:
                    type: string
                    description: >-
                      Paese di costituzione (ISO 3166-1 alpha-2, ad es. `GB`,
                      `DE`, `US`).
                  region:
                    type: string
                    nullable: true
                    description: >-
                      Codice di suddivisione ISO 3166-2, se applicabile (ad es.
                      `CA`, `NY` per gli stati degli Stati Uniti).
                  company_type:
                    type: string
                    nullable: true
                  incorporation_date:
                    type: string
                    format: date
                    nullable: true
                  registered_address:
                    type: string
                    nullable: true
                  tax_number:
                    type: string
                    nullable: true
                  risk_level:
                    type: string
                    enum:
                      - LOW
                      - MEDIUM
                      - HIGH
                    nullable: true
                  verification_status:
                    type: string
                    nullable: true
                  is_from_registry:
                    type: boolean
                  fetch_status:
                    type: string
                    nullable: true
                  alternative_names:
                    type: string
                    nullable: true
                    description: >-
                      Denominazioni aziendali alternative, commerciali,
                      precedenti o nella lingua originale sotto forma di testo,
                      se segnalate.
                  nature_of_business:
                    type: string
                    nullable: true
                  registered_capital:
                    type: string
                    nullable: true
                  registered_capital_amount:
                    type: string
                    format: decimal
                    nullable: true
                    description: >-
                      Importo del capitale sociale/registrato sotto forma di
                      stringa decimale (ad es. `"100.00"`), estratto dal
                      deposito presso il registro delle imprese. `null` se non
                      disponibile.
                  registered_capital_currency:
                    type: string
                    nullable: true
                    description: >-
                      Codice valuta ISO 4217 di `registered_capital_amount` (ad
                      es. `"GBP"`). `null` quando non disponibile.
                  website:
                    type: string
                    nullable: true
                  email:
                    type: string
                    format: email
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  legal_entity_identifier:
                    type: string
                    nullable: true
                  location_of_registration:
                    type: string
                    nullable: true
                  vat_number:
                    type: string
                    nullable: true
                    description: >-
                      Partita IVA UE, se raccolta durante il passaggio del
                      registro ospitato o modificata successivamente.
                  vat_validation_status:
                    type: string
                    enum:
                      - valid
                      - invalid
                      - format_valid
                      - invalid_format
                      - could_not_validate
                      - not_applicable
                    description: >-
                      Risultato della validazione della partita IVA o, qualora
                      non presente, del `tax_number`, al momento dell'invio al
                      registro. `valid` / `invalid`: stabilito dal registro
                      ufficiale del paese (VIES UE, Norvegia, Svizzera, Brasile,
                      Colombia, Costa Rica, Ecuador, Paraguay; per la Polonia
                      anche dal registro IVA nazionale). `format_valid` /
                      `invalid_format`: stabilito dalle regole di formato e
                      cifra di controllo del paese laddove non sia possibile
                      interrogare alcun registro. `could_not_validate`: il
                      registro non era disponibile. `not_applicable`: nessun
                      numero, paese privo di registro o regole, oppure sessione
                      sandbox.
                  vat_validated_number:
                    type: string
                    nullable: true
                    description: >-
                      Il numero verificato, così come noto alla fonte (ad
                      esempio la partita IVA derivata da un SIREN francese o un
                      RSIN olandese). `null` quando non è stato eseguito alcun
                      controllo.
                  vat_validation_source:
                    type: string
                    nullable: true
                    enum:
                      - eu_vies
                      - pl_vat_white_list
                      - no_brreg
                      - ch_uid_register
                      - br_receita_federal
                      - co_rues
                      - cr_hacienda
                      - ec_sri
                      - py_dnit
                      - format_rules
                      - null
                    description: >-
                      La fonte che ha stabilito `vat_validation_status`: un
                      registro ufficiale, oppure `format_rules`. `null` se non è
                      stato eseguito alcun controllo.
                  vat_validated_name:
                    type: string
                    nullable: true
                    description: >-
                      Nome registrato presso la fonte che ha validato il numero,
                      quando ne fornisce uno. Impostato solo quando lo stato è
                      `valid`.
                  vat_validated_address:
                    type: string
                    nullable: true
                    description: >-
                      Indirizzo registrato presso la fonte che ha convalidato il
                      numero, quando ne comunica uno. Impostato solo quando lo
                      stato è `valid`.
                  vat_checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Timestamp del controllo. `null` se non è stato eseguito
                      alcun controllo.
                  financial_summary:
                    type: object
                    nullable: true
                  officers:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        designation:
                          type: string
                          nullable: true
                        role:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            Nome quando esplicitamente riportato dal registro;
                            non dedotto dal nome completo.
                        last_name:
                          type: string
                          nullable: true
                          description: >-
                            Cognome quando esplicitamente riportato dal
                            registro.
                        address:
                          type: string
                          nullable: true
                          description: >-
                            Indirizzo dell'amministratore riportato dal
                            registro.
                        appointment_date:
                          type: string
                          nullable: true
                          description: Data di nomina dell'amministratore.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: Data di fine dell'incarico, quando indicata.
                          format: date
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            Data di nascita completa comunicata dal registro
                            delle imprese. Null se sono noti solo l'anno o il
                            mese di nascita.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            Anno di nascita riportato dal registro delle
                            imprese, anche quando la data completa non è
                            disponibile.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            Mese di nascita riportato dal registro delle
                            imprese. Null se è noto solo l'anno.
                  beneficial_owners:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        roles:
                          type: array
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            Limite inferiore della percentuale di assetto
                            proprietario riportata dal registro. Stringa a
                            formato libero (ad es. `"25.00"`, `"50"`); usa
                            `effective_ownership_percent` per un valore numerico
                            analizzato.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            Limite superiore della percentuale di assetto
                            proprietario indicata dal registro. Stringa a
                            formato libero; usa `effective_ownership_percent`
                            per un valore numerico analizzato.
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        effective_ownership_percent:
                          type: number
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: Data di nascita completa, se indicata.
                          format: date
                        appointment_date:
                          type: string
                          nullable: true
                          description: Data di nomina, se comunicata.
                          format: date
                        shareholding:
                          $ref: '#/components/schemas/KYBRegistryShareholding'
                  addresses:
                    type: array
                    nullable: true
                    description: >-
                      Ogni indirizzo indicato dal registro, in un formato
                      canonico. Null se non ne indica alcuno.
                    items:
                      $ref: '#/components/schemas/KYBRegistryAddress'
                  industries:
                    type: array
                    nullable: true
                    description: >-
                      Le attività con cui il registro classifica l'azienda, in
                      formato canonico. Null quando non ne viene indicata
                      alcuna.
                    items:
                      $ref: '#/components/schemas/KYBRegistryIndustry'
                  accounts:
                    type: object
                    nullable: true
                    additionalProperties: true
                    description: >-
                      Date di deposito presso il registro delle imprese, se
                      disponibili. Le dichiarazioni annuali e le assemblee
                      generali utilizzano last_annual_return_date e
                      last_agm_date; sono distinte dai bilanci di esercizio.
                  registry_data:
                    $ref: '#/components/schemas/KYBRegistryData'
                  user_provided_data:
                    type: object
                    description: Dati confermati o modificati dall'utente finale.
                  confirmed_by_user_at:
                    type: string
                    format: date-time
                    nullable: true
                  last_console_edit_at:
                    type: string
                    format: date-time
                    nullable: true
                  is_editable:
                    type: boolean
                  ownership:
                    $ref: '#/components/schemas/KYBRegistryOwnership'
                  registry_tier:
                    type: string
                    nullable: true
                    description: >-
                      Il livello del registro ordinato dal workflow: `basic`,
                      `shareholders` o `ubo`. Anche in
                      `ownership.tier_requested`.
                  registry_tier_delivered:
                    type: string
                    nullable: true
                    description: >-
                      Il livello fornito dal registro e fatturato. Presente
                      anche in `ownership.tier_delivered`.
                  registry_ownership_status:
                    type: string
                    nullable: true
                    description: >-
                      `not_requested`, `pending`, `delivered`, `not_held` o
                      `unavailable`. Anche in `ownership.status`.
                  registry_monitoring:
                    type: object
                    nullable: true
                    description: >-
                      Il monitoraggio del registro più recente per l'azienda, o
                      `null` quando non ne esiste alcuno.
                    properties:
                      uuid:
                        type: string
                        format: uuid
                      status:
                        type: string
                      unavailable_reason:
                        type: string
                        nullable: true
                      enrolled_at:
                        type: string
                        format: date-time
                        nullable: true
                      cancelled_at:
                        type: string
                        format: date-time
                        nullable: true
                      last_bill_date:
                        type: string
                        format: date
                        nullable: true
                      next_bill_date:
                        type: string
                        format: date
                        nullable: true
                      last_event_at:
                        type: string
                        format: date-time
                        nullable: true
                      events_count:
                        type: integer
                      watched_fields:
                        description: I campi aziendali che il monitor monitora.
              ownership_structure:
                $ref: '#/components/schemas/KYBOwnershipStructure'
              warnings:
                type: array
                items:
                  type: object
        key_people_checks:
          type: array
          nullable: true
          description: >-
            Controlli aggregati sulle persone chiave. Presente solo quando
            `session_kind = business`. Ciascun elemento utilizza la struttura a
            due contenitori (`registry`, `submitted`, `ubo_kyc_summary`).
          items:
            type: object
            description: >-
              Controllo aggregato sugli amministratori e sugli UBO dell'azienda.
              Utilizza la struttura `registry` / `submitted`. Presente solo
              quando session_kind = business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              registry:
                type: object
                description: Parti individuate tramite il controllo del registro.
                properties:
                  officers:
                    type: array
                    description: >-
                      Amministratori individuati tramite la verifica nel
                      registro, ciascuno arricchito con lo stato di qualsiasi
                      sessione KYC figlia e screening AML avviati per loro.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            Nome completo dell'amministratore come registrato
                            nel registro.
                        designation:
                          type: string
                          nullable: true
                          description: >-
                            Designazione in formato testo libero proveniente dal
                            registro (ad es. `Director`, `Company Secretary`).
                        role:
                          type: string
                          enum:
                            - director
                            - non_executive_director
                            - secretary
                            - chairman
                            - ubo
                            - shareholder
                            - representative
                            - founder
                            - legal_advisor
                            - authorized_signatory
                            - trustee
                            - beneficiary
                            - settlor
                            - protector
                            - company_officer
                            - investor
                            - other
                          description: Ruolo normalizzato dell'esponente aziendale.
                        nationality:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: Data di nomina dell'amministratore.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: Data di fine dell'incarico, quando indicata.
                          format: date
                        is_active:
                          type: boolean
                        address:
                          type: string
                          nullable: true
                          description: >-
                            Indirizzo dell'amministratore riportato dal
                            registro.
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            Stato dello Screening AML eseguito per questo
                            funzionario. `null` se non è stato eseguito alcuno
                            Screening AML.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Stato del ciclo di vita non elaborato della sessione
                            KYC figlia generata per questo amministratore.
                            Questo è l'enum completo degli stati della sessione
                            (non un set ridotto Approved/Declined/Pending).
                            `null` quando non esiste alcuna sessione KYC figlia.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL condivisibile della sessione KYC figlia. `null`
                            se non esiste alcuna sessione figlia.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID sessione della sessione KYC figlia. Passalo a
                            questo stesso endpoint di decisione per recuperare
                            il report KYC completo della persona. `null` quando
                            non esiste alcuna sessione figlia.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo di workflow di base del workflow della sessione
                            figlia (ad es. `kyc`). `null` per i workflow basati
                            su grafi o se non esiste alcuna sessione figlia.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID del workflow utilizzato dalla sessione figlia.
                            `null` quando non esiste alcuna sessione figlia.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Etichetta di facile lettura del workflow della
                            sessione figlia. `null` se non impostata.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Avanzamento per funzionalità della sessione di
                            verifica figlia, ad es. `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`
                            quando la sessione figlia non ha un elenco di
                            funzionalità determinabile.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nome visualizzato della funzionalità (ad es.
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Stato a livello di funzionalità all'interno
                                  della sessione figlia.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Identificatore interno stabile dell'individuo
                            verificato dietro la sessione figlia — utile per il
                            collegamento tra sessioni. `null` quando non esiste
                            alcuna sessione figlia o l'utente non è stato ancora
                            risolto.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo di documento presentato nella sessione KYC
                            figlia (ad es. `P`, `ID`, `DL`). `null` finché la
                            sessione figlia non ha un risultato di verifica
                            dell'identità.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            Nazionalità estratta dal documento nella sessione
                            KYC figlia. `null` finché non è disponibile.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            Indica se il controllo della vitalità della sessione
                            KYC figlia è stato superato. `null` quando non è
                            stato eseguito alcun controllo della vitalità.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Data e ora in cui la sessione KYC figlia ha
                            raggiunto lo stato `Approved`. `null` finché la
                            sessione figlia ha qualsiasi altro stato.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            Riepilogo per categoria derivato dai riscontri AML
                            della persona. `null` quando non ci sono riscontri.
                          properties:
                            sanctions:
                              type: string
                              enum:
                                - match
                                - clear
                            pep:
                              type: string
                              enum:
                                - match
                                - clear
                            adverse_media:
                              type: string
                              enum:
                                - match
                                - clear
                            warnings:
                              type: string
                              enum:
                                - match
                                - clear
                        kyc_notification_sent_at:
                          type: string
                          nullable: true
                          description: >-
                            Timestamp ISO 8601 dell'ultima notifica di invito
                            alla verifica inviata per la sessione figlia di
                            questa persona. `null` se non ne è stata inviata
                            nessuna.
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            Nome quando esplicitamente riportato dal registro;
                            non dedotto dal nome completo.
                        last_name:
                          type: string
                          nullable: true
                          description: >-
                            Cognome quando esplicitamente riportato dal
                            registro.
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            Data di nascita completa comunicata dal registro
                            delle imprese. Null se sono noti solo l'anno o il
                            mese di nascita.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            Anno di nascita riportato dal registro delle
                            imprese, anche quando la data completa non è
                            disponibile.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            Mese di nascita riportato dal registro delle
                            imprese. Null se è noto solo l'anno.
                  beneficial_owners:
                    type: array
                    description: >-
                      Titolari effettivi individuati tramite la verifica nel
                      registro, ciascuno arricchito con lo stato di eventuali
                      sessioni KYC figlie e screening AML generati per essi.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            Nome completo del titolare effettivo (o ragione
                            sociale per i titolari effettivi persone
                            giuridiche).
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: Data di nascita completa, se indicata.
                          format: date
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        roles:
                          type: array
                          description: >-
                            Nomi dei ruoli ricoperti da questo proprietario, ad
                            es. `["ubo", "shareholder"]`.
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            Limite inferiore della percentuale di assetto
                            proprietario riportata dal registro. Stringa a
                            formato libero (ad es. `"25"`, `"25-50%"`); usa
                            `effective_ownership_percent` per un valore numerico
                            analizzato.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            Limite superiore della percentuale di assetto
                            proprietario indicata dal registro. Stringa a
                            formato libero; usa `effective_ownership_percent`
                            per un valore numerico analizzato.
                        is_active:
                          type: boolean
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            Stato dello Screening AML eseguito per questo
                            titolare effettivo. `null` se non è stato eseguito
                            alcuno Screening AML.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Stato del ciclo di vita non elaborato della sessione
                            KYC figlia generata per questo titolare effettivo.
                            Questo è l'enum completo degli stati della sessione
                            (non un set ridotto Approved/Declined/Pending).
                            `null` quando non esiste alcuna sessione KYC figlia.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL condivisibile della sessione KYC figlia. `null`
                            se non esiste alcuna sessione figlia.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID sessione della sessione KYC figlia. Passalo a
                            questo stesso endpoint di decisione per recuperare
                            il report KYC completo della persona. `null` quando
                            non esiste alcuna sessione figlia.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo di workflow di base del workflow della sessione
                            figlia (ad es. `kyc`). `null` per i workflow basati
                            su grafi o se non esiste alcuna sessione figlia.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID del workflow utilizzato dalla sessione figlia.
                            `null` quando non esiste alcuna sessione figlia.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Etichetta di facile lettura del workflow della
                            sessione figlia. `null` se non impostata.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Avanzamento per funzionalità della sessione di
                            verifica figlia, ad es. `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`
                            quando la sessione figlia non ha un elenco di
                            funzionalità determinabile.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nome visualizzato della funzionalità (ad es.
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Stato a livello di funzionalità all'interno
                                  della sessione figlia.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Identificatore interno stabile dell'individuo
                            verificato dietro la sessione figlia — utile per il
                            collegamento tra sessioni. `null` quando non esiste
                            alcuna sessione figlia o l'utente non è stato ancora
                            risolto.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo di documento presentato nella sessione KYC
                            figlia (ad es. `P`, `ID`, `DL`). `null` finché la
                            sessione figlia non ha un risultato di verifica
                            dell'identità.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            Nazionalità estratta dal documento nella sessione
                            KYC figlia. `null` finché non è disponibile.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            Indica se il controllo della vitalità della sessione
                            KYC figlia è stato superato. `null` quando non è
                            stato eseguito alcun controllo della vitalità.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Data e ora in cui la sessione KYC figlia ha
                            raggiunto lo stato `Approved`. `null` finché la
                            sessione figlia ha qualsiasi altro stato.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            Riepilogo per categoria derivato dai riscontri AML
                            della persona. `null` quando non ci sono riscontri.
                          properties:
                            sanctions:
                              type: string
                              enum:
                                - match
                                - clear
                            pep:
                              type: string
                              enum:
                                - match
                                - clear
                            adverse_media:
                              type: string
                              enum:
                                - match
                                - clear
                            warnings:
                              type: string
                              enum:
                                - match
                                - clear
                        kyc_notification_sent_at:
                          type: string
                          nullable: true
                          description: >-
                            Timestamp ISO 8601 dell'ultima notifica di invito
                            alla verifica inviata per la sessione figlia di
                            questa persona. `null` se non ne è stata inviata
                            nessuna.
                        child_beneficial_owners:
                          type: array
                          description: >-
                            Per gli UBO aziendali: i titolari effettivi
                            dell'entità proprietaria, come oggetti grezzi
                            estratti dal registro. Array vuoto se non
                            applicabile.
                          items:
                            type: object
                        effective_ownership_percent:
                          type: number
                          nullable: true
                          description: >-
                            Percentuale di assetto proprietario numerica
                            analizzata: il limite massimo quando disponibile,
                            altrimenti il limite minimo. `null` quando non è
                            stato possibile analizzare nessuno dei due limiti.
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: Data di nomina, se comunicata.
                          format: date
              submitted:
                type: object
                description: >-
                  Parti inviate dall'amministratore aziendale durante il flusso
                  delle persone chiave (righe BusinessParty dove source=USER).
                properties:
                  parties:
                    type: array
                    items:
                      type: object
                      description: >-
                        Parte inviata dall'amministratore aziendale tramite il
                        flusso delle persone chiave (source=USER).
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        source:
                          type: string
                          enum:
                            - USER
                          description: >-
                            Sempre `USER` qui: questo bucket contiene solo le
                            parti inserite o confermate dall'utente finale nel
                            flusso delle persone chiave (le persone rilevate dal
                            registro compaiono sotto `registry`).
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        email:
                          type: string
                          format: email
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                          description: >-
                            Nazionalità per le persone fisiche; paese di
                            costituzione per le controparti aziendali.
                        phone_number:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          format: date
                          nullable: true
                        position:
                          type: string
                          nullable: true
                          description: >-
                            Titolo professionale / posizione lavorativa in
                            formato testo libero (solo persone).
                        custom_fields:
                          type: object
                          description: >-
                            Campi personalizzati definiti dal workflow raccolti
                            per questa parte; le chiavi sono definite dai
                            descrittori di campo per le persone chiave del
                            workflow.
                        is_active:
                          type: boolean
                        is_skipped:
                          type: boolean
                          description: >-
                            True quando l'utente finale ha saltato la verifica
                            per questo soggetto (possibile solo se il ruolo
                            consente di saltarla).
                        requires_verification:
                          type: boolean
                          description: >-
                            True quando è richiesta una sotto-sessione figlia
                            KYC / KYB per questo soggetto in base alle
                            impostazioni del ruolo e alle soglie di assetto
                            proprietario.
                        roles:
                          type: array
                          description: >-
                            Tutti i ruoli ricoperti da questa parte, ciascuno
                            con le proprie percentuali di assetto proprietario e
                            di voto. Non esiste alcun campo scalare
                            `role`/`ownership_percent` sulla parte stessa.
                          items:
                            type: object
                            properties:
                              role:
                                type: string
                                enum:
                                  - director
                                  - non_executive_director
                                  - secretary
                                  - chairman
                                  - ubo
                                  - shareholder
                                  - representative
                                  - founder
                                  - legal_advisor
                                  - authorized_signatory
                                  - trustee
                                  - beneficiary
                                  - settlor
                                  - protector
                                  - company_officer
                                  - investor
                                  - other
                              ownership_percent:
                                type: number
                                nullable: true
                              voting_percent:
                                type: number
                                nullable: true
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID della sessione KYC figlia per i soggetti fisici
                            che richiedono la verifica. `null` altrimenti.
                        kyc_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Stato del ciclo di vita della sessione KYC figlia.
                            `null` se non è presente alcuna sessione KYC figlia.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        kyb_sub_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID della sottosessione KYB figlia per i soggetti
                            aziendali che richiedono la verifica. `null`
                            altrimenti.
                        kyb_sub_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Stato del ciclo di vita della sotto-sessione KYB
                            figlia. `null` se non è presente alcuna
                            sotto-sessione.
                        kyb_sub_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL condivisibile della sotto-sessione KYB figlia.
                            `null` se non esiste alcuna sotto-sessione.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo di workflow di base del workflow della sessione
                            figlia (viene data priorità alla sessione KYC, con
                            fallback alla sottosessione KYB). `null` per i
                            workflow basati su grafi o se non esiste alcuna
                            sessione figlia.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID del workflow utilizzato dalla sessione figlia.
                            `null` quando non esiste alcuna sessione figlia.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Etichetta di facile lettura del workflow della
                            sessione figlia. `null` se non impostata.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Avanzamento per funzionalità della sessione di
                            verifica figlia, ad es. `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`
                            quando la sessione figlia non ha un elenco di
                            funzionalità determinabile.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nome visualizzato della funzionalità (ad es.
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Stato a livello di funzionalità all'interno
                                  della sessione figlia.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Identificatore interno stabile dell'individuo
                            verificato dietro la sessione figlia. `null` quando
                            non risolto.
              ubo_kyc_summary:
                type: object
                nullable: true
                description: >-
                  Avanzamento aggregato del KYC degli UBO, oppure null quando
                  nessun UBO ha sessioni KYC collegate.
                properties:
                  total:
                    type: integer
                  approved:
                    type: integer
                  flagged:
                    type: integer
                    description: >-
                      Gli UBO la cui verifica KYC è stata rifiutata o è in
                      revisione.
                  pending:
                    type: integer
              warnings:
                type: array
                items:
                  type: object
        document_verifications:
          type: array
          nullable: true
          description: >-
            Controlli di verifica del documento raggruppati per nodo del
            workflow. Presenti solo quando `session_kind = business`.
          items:
            type: object
            description: >-
              Documenti raggruppati per nodo del workflow. Presenti solo quando
              session_kind = business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    document_type:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        Gruppo di documenti KYB di alto livello in cui il file è
                        stato classificato. `null` se non è classificato.
                    document_subtype:
                      type: string
                      nullable: true
                      description: >-
                        Sottotipo specifico rilevato tramite OCR (ad es.
                        `CERTIFICATE_OF_INCORPORATION`, `SHAREHOLDER_REGISTRY`);
                        `UNKNOWN` quando l'OCR non è riuscito a classificare il
                        documento con sufficiente affidabilità.
                    document_group:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        Alias di `document_type` — il nome del gruppo utilizzato
                        da `groups` e `required_groups`.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Link pre-firmato di breve durata al file caricato.
                        `null` per i segnaposto di richiesta documenti creati
                        dall'analista (`is_requested = true`) che non sono stati
                        ancora soddisfatti.
                    original_filename:
                      type: string
                      nullable: true
                      description: Nome del file caricato dall'utente o dall'analista.
                    file_size:
                      type: integer
                      nullable: true
                      description: Dimensione del file in byte.
                    status:
                      type: string
                      enum:
                        - Not Finished
                        - Approved
                        - Declined
                        - In Review
                        - Resub Requested
                      description: Stato di verifica per singolo documento.
                    created_at:
                      type: string
                      format: date-time
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        Verifica incrociata dei campi del documento estratti
                        tramite OCR rispetto al profilo aziendale del registro
                        delle imprese. Un oggetto con sezioni `critical`,
                        `non_critical` e `people`, ciascuna delle quali associa
                        il nome di un campo (ad es. `company_name`,
                        `registration_number`, `incorporation_date`,
                        `registered_address`) a un record di confronto come
                        `{"document": "...", "registry": "...", "match": true,
                        "score": 0.97}`. `null` quando il documento non
                        conteneva dati OCR o non era presente alcuna azienda nel
                        registro con cui effettuare il confronto.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        Metadati estratti dal documento aziendale caricato.
                        Quando l'estrazione dei metadati è riuscita, tutte le 16
                        chiavi sono sempre presenti (i singoli valori sono
                        `null` quando non applicabili al tipo di file); l'intero
                        oggetto è `null` quando non è stato possibile estrarre
                        nulla. Per i PDF, `overlay_manipulation` contiene
                        l'analisi forense del testo in sovrimpressione.
                      properties:
                        file_size:
                          type: integer
                          nullable: true
                          description: Dimensione del documento.
                        content_type:
                          type: string
                          nullable: true
                          description: Tipo di contenuto del documento.
                        creation_date:
                          type: string
                          nullable: true
                          description: Data in cui il documento è stato creato.
                        modified_date:
                          type: string
                          nullable: true
                          description: Data in cui il documento è stato modificato.
                        creator:
                          type: string
                          nullable: true
                          description: >-
                            Strumento/utente di creazione registrato nei
                            metadati del file (`Creator` del PDF).
                        producer:
                          type: string
                          nullable: true
                          description: Software che ha prodotto il file (PDF `Producer`).
                        software:
                          type: string
                          nullable: true
                          description: >-
                            Software di modifica registrato nei metadati del
                            file.
                        encryption:
                          type: string
                          nullable: true
                          description: Schema di crittografia del file, se crittografato.
                        is_signed:
                          type: boolean
                          nullable: true
                          description: Indica se il documento contiene una firma digitale.
                        is_tampered:
                          type: boolean
                          nullable: true
                          description: >-
                            Indica se la firma digitale non ha superato la
                            convalida (modifica successiva alla firma).
                        signature_info:
                          type: object
                          nullable: true
                          description: >-
                            Dettagli della firma o delle firme digitali, se
                            presenti.
                        exif_original_date:
                          type: string
                          nullable: true
                          description: >-
                            Data di acquisizione originale EXIF, per i
                            caricamenti di immagini.
                        exif_digitized_date:
                          type: string
                          nullable: true
                          description: >-
                            Data di digitalizzazione EXIF, per i caricamenti di
                            immagini.
                        processed_by_known_editor:
                          type: boolean
                          nullable: true
                          description: >-
                            Indica se i metadati indicano che il file è stato
                            elaborato con un editor di immagini/PDF noto.
                        has_different_creation_mod_date:
                          type: boolean
                          nullable: true
                          description: >-
                            Indica se le date di creazione e di modifica
                            differiscono — un possibile (ma non conclusivo)
                            segnale di modifica.
                        overlay_manipulation:
                          type: object
                          nullable: true
                          description: >-
                            Analisi forense del PDF per sospetta manipolazione
                            del testo sovrapposto. Null se non è stata trovata
                            alcuna prova di manipolazione del testo sovrapposto
                            o se il documento non era un PDF.
                          properties:
                            detected:
                              type: boolean
                              description: >-
                                Indica se sono state rilevate prove di
                                manipolazione del testo sovrapposto.
                            analyzed:
                              type: boolean
                              description: Indica se è stato possibile analizzare il PDF.
                            analysis_incomplete:
                              type: boolean
                              description: >-
                                Presente e vero solo quando il file non ha
                                potuto essere verificato per intero. Ciò che è
                                stato verificato mantiene i propri risultati
                                dove possibile, e il documento genera l'avviso
                                di sostituzione del testo non comprovata.
                            signals:
                              type: array
                              items:
                                type: string
                              description: >-
                                Segnali forensi rilevati, come
                                duplicate_font_subset o glyph_fragmentation.
                            manipulated_regions:
                              type: array
                              description: >-
                                Aree sospette di manipolazione nelle coordinate
                                della pagina PDF.
                              items:
                                type: object
                                properties:
                                  page:
                                    type: integer
                                  x:
                                    type: number
                                  'y':
                                    type: number
                                  width:
                                    type: number
                                  height:
                                    type: number
                                  page_width:
                                    type: number
                                  page_height:
                                    type: number
                    description:
                      type: string
                      nullable: true
                      description: >-
                        Etichetta o motivo fornito dall'analista per una
                        richiesta di documento. `null` per i caricamenti
                        regolari.
                    is_requested:
                      type: boolean
                      description: >-
                        True per i segnaposto di richiesta documenti creati
                        dagli analisti in attesa di caricamento.
                    ocr_data:
                      type: object
                      nullable: true
                    is_console_upload:
                      type: boolean
                      description: >-
                        True per i documenti caricati dalla console anziché dal
                        flusso per l'utente finale. I caricamenti dalla console
                        non modificano mai lo stato aggregato a livello di
                        funzionalità.
                    is_confirmed:
                      type: boolean
                      description: >-
                        I caricamenti da Console iniziano come `false` e passano
                        a `true` non appena l'amministratore li conferma; i
                        caricamenti dell'utente finale sono sempre `true`.
              groups:
                type: object
                description: >-
                  Contatori di avanzamento per gruppo indicizzati per nome del
                  gruppo (ad es. legal_presence, ownership_structure).
                additionalProperties:
                  type: object
                  properties:
                    total:
                      type: integer
                    approved:
                      type: integer
                    pending:
                      type: integer
                    declined:
                      type: integer
                    in_review:
                      type: integer
                    other:
                      type: integer
                    missing:
                      type: integer
                      description: >-
                        Segnaposto richiesti per i quali non è ancora stato
                        caricato alcun file.
              required_groups:
                type: array
                items:
                  type: string
              warnings:
                type: array
                items:
                  type: object
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            Indica se la sessione è stata creata da un'applicazione di
            produzione (`live`) o da un'applicazione sandbox (`sandbox`). Le
            sessioni sandbox sono gratuite, interamente simulate e non consumano
            mai crediti.
        sandbox_scenario:
          type: string
          nullable: true
          description: >-
            Lo scenario sandbox con cui è stata creata la sessione. `null` per
            le sessioni di produzione e per le sessioni sandbox create senza di
            esso.
        resubmissions:
          type: array
          description: >-
            Restituito solo con `include=resubmissions`, per sessioni utente e
            aziendali. Una voce per ogni richiesta di nuovo invio, dalla meno
            recente alla più recente. Ogni voce include i risultati restituiti
            dai passaggi reinviati prima della richiesta, in modo che i
            precedenti invii rimangano leggibili. L'eliminazione della sessione
            elimina tutti gli invii.
          items:
            type: object
            properties:
              number:
                type: integer
                description: >-
                  1 per il primo nuovo invio della sessione, 2 per il secondo e
                  così via.
              created_at:
                type: string
                format: date-time
                description: Quando è stato richiesto il nuovo invio.
              previous_status:
                type: string
                description: Lo stato della sessione immediatamente prima della richiesta.
              nodes:
                type: array
                description: I passaggi del workflow restituiti all'utente.
                items:
                  type: object
                  properties:
                    node_id:
                      type: string
                    feature:
                      type: string
              reasons:
                type: object
                nullable: true
                additionalProperties:
                  type: string
                description: >-
                  Il motivo fornito per ogni passaggio, indicizzato per
                  `node_id`.
              requested_by:
                type: object
                nullable: true
                description: Chi ha richiesto il nuovo invio.
                properties:
                  name:
                    type: string
                  email:
                    type: string
                  type:
                    type: string
              results:
                type: object
                additionalProperties: true
                description: >-
                  Cosa hanno restituito i passaggi inviati nuovamente prima
                  della richiesta, sotto le stesse chiavi e nella stessa
                  struttura dei risultati attuali di questa risposta
                  (`id_verifications`, `nfc_verifications`, `liveness_checks`,
                  `face_matches`, `poa_verifications`, `phone_verifications`,
                  `email_verifications`, `aml_screenings`, `ip_analyses`,
                  `database_validations`, `questionnaire_responses`,
                  `document_ai_documents`, `geolocation_checks`; per le sessioni
                  aziendali anche `document_verifications`). Compaiono solo le
                  chiavi dei passaggi che sono stati reinviati.
        biometric_consent:
          type: object
          nullable: true
          description: >-
            Indica se la sessione ha richiesto un consenso biometrico esplicito
            prima dell'acquisizione del volto, per quale motivo e la prova della
            risposta. Solo sessioni di Verifica degli utenti (KYC); lo stesso
            oggetto è presente in `decision` dei webhook di sessione. `null` se
            la sessione non è mai stata valutata, ad esempio in un workflow
            senza acquisizione del volto. I campi senza alcun valore registrato
            sono `null`. Un SDK nativo inferiore a 4.10.0, o che non segnala la
            propria versione, non può mostrare il passaggio di consenso: le
            acquisizioni del volto proseguono come prima e una sessione che
            richiedeva il consenso segnala quindi `status: "pending"` con
            `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Consulta [Consenso
            biometrico](/it/getting-started/biometric-consent).
          properties:
            required:
              type: boolean
              description: >-
                Whether the session must collect explicit biometric consent.
                Never goes back to `false`.
            trigger:
              type: string
              nullable: true
              enum:
                - declared_state
                - ip_state
                - ip_unknown
                - document_issuer
                - forced
                - customer_collected
              description: >-
                Il motivo per cui il consenso è richiesto, o come è stato
                soddisfatto. `declared_state`: hai dichiarato uno stato
                interessato (`user_state`, o un indirizzo statunitense in
                `expected_details`). `ip_state`: l'IP della persona si trova in
                uno stato interessato (Illinois, Texas, Colorado). `ip_unknown`:
                gli elementi di prova collocano la persona negli Stati Uniti ma
                non è possibile determinare lo stato (l'IP è negli Stati Uniti
                senza stato associato, oppure non può essere localizzato mentre
                i tuoi dettagli o il documento collocano la persona negli Stati
                Uniti). `document_issuer`: il documento d'identità è stato
                rilasciato da uno stato interessato. `forced`: la modalità
                dell'applicazione è Always. `customer_collected`: hai inviato
                `biometric_consent` durante la creazione della sessione. `null`
                se non richiesto.
            status:
              type: string
              enum:
                - not_required
                - pending
                - given
                - declined
              description: >-
                `not_required`; `pending` (richiesto e non fornito: la persona
                non ha ancora risposto oppure `reason` indica perché non è stato
                raccolto); `given`; `declined` (è stato registrato un rifiuto e
                la sessione si è conclusa come `Declined`; attualmente nessuna
                schermata di Didit propone il rifiuto).
            given_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando è stato prestato il consenso. Per `customer_collected`,
                corrisponde al `given_at` inviato.
            declined_at:
              type: string
              format: date-time
              nullable: true
              description: Quando è stato registrato un rifiuto.
            text_version:
              type: string
              nullable: true
              description: >-
                ID versione del testo del consenso a cui la persona ha risposto,
                o di quello che hai inviato.
            text_hash:
              type: string
              nullable: true
              description: >-
                SHA-256 (hex) del testo esatto del consenso mostrato, nella
                lingua in cui è stato visualizzato.
            locale:
              type: string
              nullable: true
              description: Lingua in cui è stato mostrato il testo del consenso.
            policy_url:
              type: string
              format: uri
              nullable: true
              description: >-
                La policy sui dati biometrici a cui rimandava il passaggio di
                consenso.
            step:
              type: string
              nullable: true
              description: >-
                Passaggio del workflow in cui si trovava la sessione quando la
                persona ha risposto, ad esempio `LIVENESS`.
            node_id:
              type: string
              nullable: true
              description: >-
                Nodo del grafo del workflow in cui si trovava la sessione quando
                la persona ha risposto.
            ip_address:
              type: string
              nullable: true
              description: IP da cui proviene la risposta.
            ip_country_code:
              type: string
              nullable: true
              description: Paese ISO 3166-1 alpha-2 dell'indirizzo IP della risposta.
            ip_state:
              type: string
              nullable: true
              description: >-
                Suddivisione ISO 3166-2 dell'IP della risposta, ad esempio
                `US-IL`.
            ip_city:
              type: string
              nullable: true
              description: Città dell'IP della risposta.
            user_agent:
              type: string
              nullable: true
              description: User agent della richiesta relativa alla risposta.
            detected_ip_address:
              type: string
              nullable: true
              description: >-
                L'indirizzo IP della persona da cui è stato valutato l'ultimo
                requisito. Può differire da `ip_address` se la persona ha
                risposto da un altro dispositivo.
            detected_country_code:
              type: string
              nullable: true
              description: Paese ISO 3166-1 alpha-2 dell'indirizzo IP rilevato.
            detected_state:
              type: string
              nullable: true
              description: Suddivisione ISO 3166-2 dell'IP rilevato.
            detected_city:
              type: string
              nullable: true
              description: Città dell'IP rilevato.
            declared_state:
              type: string
              nullable: true
              description: >-
                Suddivisione ISO 3166-2 che hai dichiarato: `user_state` o lo
                stato di un indirizzo negli Stati Uniti in `expected_details`.
            document_state:
              type: string
              nullable: true
              description: >-
                Suddivisione ISO 3166-2 che ha emesso il documento d'identità,
                letta durante l'acquisizione del documento.
            jurisdictions:
              type: array
              items:
                type: string
              description: >-
                Stati USA (codici USPS, ad esempio `IL`) la cui legge sulla
                biometria copre la persona. `US` quando le evidenze collocano la
                persona negli Stati Uniti ma lo stato non è noto. Vuoto se non
                si applica alcuno stato.
            retention_months:
              type: integer
              nullable: true
              description: >-
                Il limite più breve di conservazione biometrica, in mesi, tra le
                `jurisdictions`. `null` se non se ne applica alcuno.
            reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_UNSUPPORTED_SDK
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_UNSUPPORTED_SDK`: il consenso era
                obbligatorio e un SDK nativo inferiore a 4.10.0, o uno che non
                ha segnalato la propria versione, ha acquisito un volto senza il
                passaggio del consenso; `status` rimane `pending`, o `given` se
                la persona ha acconsentito successivamente nel flusso ospitato.
                `BIOMETRIC_CONSENT_DECLINED`: è stato registrato un rifiuto
                (sostituisce il motivo dell'SDK). `null` in caso contrario, e
                sempre `null` quando la sessione non richiedeva il consenso.
            decline_reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_DECLINED` quando un rifiuto registrato ha
                terminato la sessione, altrimenti `null`.
            face_data_deleted_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Data e ora in cui il rifiuto ha eliminato le immagini del volto,
                i video e i modelli facciali della sessione. `null` a meno che
                non sia stato registrato un rifiuto.
        investigator:
          $ref: '#/components/schemas/InvestigatorBlock'
        biometric_retention:
          $ref: '#/components/schemas/BiometricRetention'
        fraud_check:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Il risultato di una chiamata alla Fraud Check API. `null` per
            qualsiasi altra sessione.
        full_session_video:
          type: string
          format: uri
          nullable: true
          description: >-
            URL con scadenza della registrazione completa della sessione.
            Restituito solo quando la tua organizzazione registra il video
            dell'intera sessione.
        full_session_video_recorded_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Data e ora di registrazione dell'intera sessione. Restituito solo
            quando la tua organizzazione registra il video dell'intera sessione.
    AddressValidationResult:
      type: object
      description: >-
        Il risultato di una verifica dell'indirizzo (Address Validation): se
        l'indirizzo esiste e la sua forma normalizzata. Conferma esclusivamente
        l'indirizzo; non collega mai l'indirizzo a una persona.
      required:
        - status
        - verification_level
        - address
        - formatted_address
        - latitude
        - longitude
      properties:
        status:
          type: string
          enum:
            - verified
            - partially_verified
            - not_verified
            - unavailable
          description: >-
            `verified`: l'indirizzo è stato confermato fino all'edificio (o
            all'appartamento o alla casella postale). `partially_verified`: è
            stato confermato solo fino alla via, o al livello più preciso
            disponibile nei dati di riferimento postali per quel luogo.
            `not_verified`: corrisponde solo la regione o la città, oppure non
            corrisponde nulla. `unavailable`: non è stato possibile eseguire la
            validazione (ad esempio il servizio di riferimento non ha risposto);
            non viene addebitata e non influisce mai su una verifica.
        verification_level:
          type: string
          nullable: true
          enum:
            - administrative_area
            - locality
            - thoroughfare
            - premise
            - delivery_point
            - null
          description: >-
            Il livello più preciso a cui è stato associato l'indirizzo. `null`
            se non è stata trovata alcuna corrispondenza o se `status` è
            `unavailable`.
        address:
          type: object
          nullable: true
          description: L'indirizzo normalizzato. `null` quando `status` è `unavailable`.
          properties:
            address_line_1:
              type: string
              nullable: true
              description: >-
                Prima riga di recapito, scritta secondo le convenzioni del
                paese.
              example: 1600 Amphitheatre Pkwy
            address_line_2:
              type: string
              nullable: true
              description: >-
                Seconda riga di recapito (appartamento, edificio o quartiere),
                se presente nell'indirizzo.
            city:
              type: string
              nullable: true
              example: Mountain View
            region:
              type: string
              nullable: true
              description: Stato, provincia o regione.
              example: CA
            postal_code:
              type: string
              nullable: true
              example: 94043-1351
            country:
              type: string
              nullable: true
              description: Codice paese ISO 3166-1 alpha-2.
              example: US
        formatted_address:
          type: string
          nullable: true
          description: L'indirizzo normalizzato su una riga.
          example: 1600 Amphitheatre Pkwy, Mountain View CA 94043-1351
        latitude:
          type: number
          nullable: true
          example: 37.422022
        longitude:
          type: number
          nullable: true
          example: -122.08429
    PhoneIntelligence:
      type: object
      description: >-
        Blocco normalizzato di phone intelligence. Presente solo quando l'add-on
        di intelligence è stato eseguito per questa ricerca; se presente, è
        esposto anche sotto l'alias `enrichment` con valori identici.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Punteggio di rischio normalizzato da 0 a 100. Più alto è il
            punteggio, maggiore è il rischio.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low`, `Medium` o `High`, derivato dal punteggio.'
        phone_trust_index:
          type: number
          nullable: true
          description: >-
            Inverso del punteggio, per le dashboard che preferiscono un valore
            più alto come migliore.
        network_stability_index:
          type: number
          nullable: true
          description: Stabilità della rete della linea.
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando il numero sembra essere usa e getta o virtuale.'
        is_ported:
          type: boolean
          nullable: true
          description: '`true` quando il numero ha cambiato operatore.'
        is_recently_ported:
          type: boolean
          nullable: true
          description: '`true` quando la portabilità è avvenuta di recente.'
        carrier_type:
          type: string
          nullable: true
          description: Classificazione della linea rilevata dalla ricerca (es. `mobile`).
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificatore Didit stabile del segnale, ad esempio
                  `IR-5AC67A32`. Opaco: usalo per raggruppare e filtrare, non
                  analizzarlo.
              value:
                nullable: true
                description: >-
                  Per un flag di rischio (ad esempio `voip`, `leaked`,
                  `disposable`, `spam_trap`), il suo valore: un booleano, un
                  livello o una data. Null per un codice motivo con punteggio.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  Indica se il segnale ha aumentato il rischio o ha aggiunto
                  affidabilità.
              message:
                type: string
                description: Spiegazione di facile lettura del segnale, in inglese.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Con quale intensità il segnale ha modificato il punteggio, ad
                  esempio `low`, `medium` o `high`.
          description: >-
            Segnali che spiegano il punteggio, ciascuno con un codice Didit
            stabile, una direzione, un messaggio e un livello di impatto. Nel
            tempo possono comparire nuovi codici, pertanto non rifiutare i
            codici sconosciuti.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        Impronta social del numero di telefono: le piattaforme online su cui
        risulta registrato. Presente solo quando è stato impostato
        `enable_social` e il controllo è stato completato. Ciascun conteggio può
        essere null se non sono stati restituiti dati al riguardo.
        `profiles_registered: 0` indica che le piattaforme sono state
        controllate e il numero di telefono non è stato trovato su nessuna di
        esse: una risposta valida e fatturabile, nonché un tipico segnale di
        identità sintetica.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Piattaforme in cui il numero di telefono risulta registrato.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Piattaforme valutate per la registrazione.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Piattaforme che hanno restituito un nome associato.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Piattaforme che hanno restituito una foto del profilo.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Piattaforme di comunicazione con presenza rilevata.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorie di piattaforma distinte con presenza rilevata.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicatore composito di maturità digitale, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicatore della ricchezza del profilo, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Mix di piattaforme gratuite rispetto a quelle a pagamento, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme gratuite.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme a pagamento completo.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: Completezza del profilo WhatsApp. Solo telefono; null per email.
          example: Partial
        registered_platforms:
          type: array
          description: Piattaforme in cui la registrazione è confermata.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Piattaforme verificate con esito negativo.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Numero di registrazioni e percentuale per categoria di piattaforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Dettagli del profilo per piattaforma, indicizzati per piattaforma,
            quando la piattaforma li rende disponibili.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    EmailIntelligence:
      type: object
      description: >-
        Blocco normalizzato di email intelligence. Presente solo quando l'add-on
        di intelligence è stato eseguito per questa email; se presente, è
        esposto anche come alias `enrichment` con valori identici.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Punteggio di rischio normalizzato da 0 a 100. Più alto è il
            punteggio, maggiore è il rischio.
        deliverable:
          type: string
          nullable: true
          description: Fascia di recapitabilità (ad es. `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` o `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Indice numerico del rischio di violazione.
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true` quando l''indirizzo compare in una violazione recente.'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true` quando l''indirizzo compare in numerose violazioni.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando il dominio è un provider usa e getta.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true` quando il dominio è un provider di email gratuito.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true` quando l''indirizzo compare in violazioni note.'
        no_of_breaches:
          type: number
          nullable: true
          description: Numero di violazioni note che contengono l'indirizzo.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificatore Didit stabile del segnale, ad esempio
                  `IR-5AC67A32`. Opaco: usalo per raggruppare e filtrare, non
                  analizzarlo.
              value:
                nullable: true
                description: >-
                  Per un flag di rischio (ad esempio `voip`, `leaked`,
                  `disposable`, `spam_trap`), il suo valore: un booleano, un
                  livello o una data. Null per un codice motivo con punteggio.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  Indica se il segnale ha aumentato il rischio o ha aggiunto
                  affidabilità.
              message:
                type: string
                description: Spiegazione di facile lettura del segnale, in inglese.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Con quale intensità il segnale ha modificato il punteggio, ad
                  esempio `low`, `medium` o `high`.
          description: >-
            Segnali che spiegano il punteggio, ciascuno con un codice Didit
            stabile, una direzione, un messaggio e un livello di impatto. Nel
            tempo possono comparire nuovi codici, pertanto non rifiutare i
            codici sconosciuti.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Impronta social dell'indirizzo email: le piattaforme online su cui
        risulta registrato. Presente solo quando è stato impostato
        `enable_social` e il controllo è stato completato. Ciascun conteggio può
        essere null se non sono stati restituiti dati al riguardo.
        `profiles_registered: 0` indica che le piattaforme sono state
        controllate e l'indirizzo email non è stato trovato su nessuna di esse:
        una risposta valida e fatturabile, nonché un tipico segnale di identità
        sintetica.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Piattaforme in cui l'indirizzo email risulta registrato.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Piattaforme valutate per la registrazione.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Piattaforme che hanno restituito un nome associato.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Piattaforme che hanno restituito una foto del profilo.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Piattaforme di comunicazione con presenza rilevata.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorie di piattaforma distinte con presenza rilevata.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicatore composito di maturità digitale, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicatore della ricchezza del profilo, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Mix di piattaforme gratuite rispetto a quelle a pagamento, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme gratuite.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme a pagamento completo.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: Completezza del profilo WhatsApp. Solo telefono; null per email.
          example: Partial
        registered_platforms:
          type: array
          description: Piattaforme in cui la registrazione è confermata.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Piattaforme verificate con esito negativo.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Numero di registrazioni e percentuale per categoria di piattaforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Dettagli del profilo per piattaforma, indicizzati per piattaforma,
            quando la piattaforma li rende disponibili.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    DocumentAIDetectedCode:
      type: object
      required:
        - type
        - page_number
        - position
        - x
        - 'y'
        - width
        - height
        - page_width
        - page_height
        - raw_payload
        - parsed_payload
      properties:
        type:
          type: string
          description: >-
            Simbologia rilevata, ad esempio `QR_CODE`, `CODE_128`, `EAN_13`,
            `DATA_MATRIX` o `PDF_417`.
        page_number:
          type: integer
          minimum: 1
          description: Numero di pagina a partire da 1.
        position:
          type: array
          nullable: true
          description: >-
            Poligono rilevato nelle coordinate in pixel della pagina
            renderizzata. `null` quando non è disponibile alcuna posizione
            affidabile.
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: integer
        x:
          type: integer
          nullable: true
          description: >-
            Bordo sinistro del riquadro di delimitazione in pixel della pagina
            renderizzata.
        'y':
          type: integer
          nullable: true
          description: >-
            Bordo superiore del riquadro di delimitazione in pixel della pagina
            renderizzata.
        width:
          type: integer
          nullable: true
          description: >-
            Larghezza del riquadro di delimitazione in pixel della pagina
            renderizzata.
        height:
          type: integer
          nullable: true
          description: >-
            Altezza del riquadro di delimitazione in pixel della pagina
            renderizzata.
        page_width:
          type: integer
          description: Larghezza della pagina renderizzata in pixel.
        page_height:
          type: integer
          description: Altezza della pagina renderizzata in pixel.
        raw_payload:
          type: string
          description: >-
            Payload non elaborato del decodificatore come stringa base64 quando
            disponibile; altrimenti una stringa vuota.
        parsed_payload:
          nullable: true
          description: >-
            Stringa decodificata o valore strutturato. `null` quando il codice è
            stato individuato ma non è stato possibile decodificarlo.
    BankVerificationResult:
      type: object
      description: >-
        Il risultato di un passaggio di verifica bancaria, per Verifica degli
        utenti e Verifica aziendale (KYB). `method` indica come è stato
        verificato il conto, e `none` che la persona ha continuato senza una
        banca prima che venisse valutato qualsiasi tentativo.
        `continued_without_bank` indica che la persona ha continuato senza una
        banca, anche dopo un tentativo valutato. Consulta [Metodi di verifica
        bancaria](/it/core-technology/bank-verification/verification-methods) e
        [Quando la persona non può verificare il proprio conto
        bancario](/it/core-technology/bank-verification/fallbacks).
      properties:
        schema_version:
          type: integer
          description: Versione della struttura di questo risultato. Attualmente `1`.
        bank_verification_id:
          type: string
          format: uuid
          description: L'ID di questo risultato.
        node_id:
          type: string
          description: Il nodo del workflow a cui appartiene questo risultato.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Expired
          description: >-
            Il verdetto del passaggio, dopo le relative azioni e regole di
            stato.
        original_status:
          type: string
          nullable: true
          description: >-
            Il primo verdetto raggiunto dal passaggio, prima di qualsiasi
            modifica successiva come una revisione manuale.
        method:
          type: string
          nullable: true
          enum:
            - open_banking
            - account_lookup
            - microdeposits
            - statement
            - none
          description: >-
            Come è stato verificato il conto: `open_banking` (accesso bancario:
            la persona ha effettuato l'accesso presso la propria banca),
            `account_lookup` (controllo del conto: la persona ha inserito le
            coordinate bancarie e la banca ha confermato il nome),
            `microdeposits` o `statement` (caricamento di un estratto conto).
            `none` quando la persona ha proseguito senza banca prima che venisse
            valutato qualsiasi tentativo, quindi nessun conto è stato
            verificato. Dopo un tentativo valutato, mantiene il metodo di quel
            tentativo. `null` finché un conto non viene valutato e quando il
            workflow riduce i dati restituiti. Le regole del workflow leggono lo
            stesso valore come `bank.method`.
        provider:
          type: string
          nullable: true
          description: >-
            La chiave della route che ha eseguito la connessione. Leggi
            `method`, non questa chiave, per determinare come è stato verificato
            l'account.
        credential_source:
          type: string
          nullable: true
          enum:
            - native
            - byok
          description: >-
            `native`: la route proprietaria di Didit, addebitata sul tuo saldo
            Didit. `byok`: un provider del marketplace che hai collegato con le
            tue credenziali.
        route:
          type: object
          nullable: true
          description: Il percorso scelto prima del consenso. Non cambia mai in seguito.
          properties:
            provider_key:
              type: string
              nullable: true
              description: La chiave del percorso.
            credential_source:
              type: string
              enum:
                - native
                - byok
            is_fallback:
              type: boolean
              description: >-
                Indica se il percorso di Didit ha sostituito un fornitore del
                marketplace che non è riuscito a connettersi.
            provider_connection_id:
              type: string
              nullable: true
              description: La connessione al marketplace utilizzata, per `byok`.
            requested_scopes:
              type: array
              items:
                type: string
              description: >-
                I dati richiesti dalla connessione, ad esempio `ownership` o
                `balances`.
        connection:
          type: object
          nullable: true
          description: >-
            La connessione dell'ultimo tentativo. `null` prima del primo
            tentativo.
          properties:
            status:
              type: string
              enum:
                - pending
                - connected
                - cancelled
                - timeout
                - failed
                - unsupported
                - revoked
                - expired
            institution_id:
              type: string
              nullable: true
              description: >-
                L'ID della banca. `null` per un controllo del conto in cui non è
                selezionata alcuna banca.
            institution_name:
              type: string
              nullable: true
              description: Il nome della banca. `null` per un controllo del conto.
            institution_country:
              type: string
              nullable: true
              description: Il paese del conto, ISO 3166-1 alpha-3.
            oauth:
              type: boolean
              nullable: true
              description: >-
                Indica se l'accesso bancario è avvenuto tramite OAuth o
                app-to-app. `null` per un controllo del conto.
            connected_at:
              type: string
              format: date-time
              nullable: true
              description: Data e ora in cui la connessione è riuscita.
            consent_expires_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Data e ora di termine del consenso bancario, per l'accesso
                bancario.
            last_refreshed_at:
              type: string
              format: date-time
              nullable: true
              description: Data e ora dell'ultima rilettura dei dati finanziari.
            attempts:
              type: integer
              description: >-
                I tentativi impiegati dalla persona in questo passaggio,
                considerando tutti i metodi insieme.
            reason_code:
              type: string
              nullable: true
              description: >-
                Il motivo per cui la connessione non è semplicemente
                `connected`, ad esempio `USER_CANCELLED`, `INSTITUTION_DOWN`,
                `ACCOUNT_NOT_FOUND`, `REFERENCE_IDENTITY_MISSING` o
                `VERIFICATION_COMPLETED`.
        account:
          type: object
          nullable: true
          description: L'account valutato. `null` finché l'account non viene valutato.
          properties:
            account_id_masked:
              type: string
              nullable: true
              description: Il numero di conto, mascherato.
            iban_masked:
              type: string
              nullable: true
              description: L'IBAN, mascherato.
            sort_code:
              type: string
              nullable: true
              description: Il sort code, nel Regno Unito.
            routing_number_masked:
              type: string
              nullable: true
              description: Il numero di routing, mascherato.
            type:
              type: string
              nullable: true
              enum:
                - checking
                - current
                - savings
                - business
                - other
            subtype:
              type: string
              nullable: true
              description: Il sottotipo di conto proprio della banca.
            currency:
              type: string
              nullable: true
              description: Valuta ISO 4217 del conto.
            holder_type:
              type: string
              nullable: true
              enum:
                - person
                - business
                - unknown
            holders_count:
              type: integer
              nullable: true
            is_joint:
              type: boolean
              nullable: true
            is_business:
              type: boolean
              nullable: true
        ownership:
          type: object
          nullable: true
          description: >-
            Come l'intestatario del conto è stato confrontato con l'identità
            verificata. `null` finché un conto non viene valutato.
          properties:
            result:
              type: string
              enum:
                - match
                - partial_match
                - no_match
                - unknown
                - not_verifiable
              description: >-
                `partial_match` è una corrispondenza stretta. `not_verifiable`:
                la banca ha risposto senza un titolare con cui effettuare il
                confronto. `unknown`: non è stato possibile leggere la prova,
                oppure non c'era alcuna identità con cui effettuare il
                confronto.
            reference_identity_source:
              type: string
              nullable: true
              description: >-
                Il passaggio rispetto alla cui identità è stato confrontato il
                titolare: `kyc`, `database_validation`, `expected_details`,
                `questionnaire`, `document_ai` o `kyb`.
            name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Punteggio del nome del titolare calcolato da Didit.
            provider_name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Il punteggio del nome dell'intestatario fornito dalla banca, se
                ne ha restituito uno.
            address_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Il punteggio dell'indirizzo del titolare, quando è stato
                eseguito il confronto dell'indirizzo.
            email_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Il punteggio dell'email del titolare, quando è stato eseguito il
                confronto dell'email.
            phone_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Il punteggio del telefono del titolare, quando è stato eseguito
                il confronto del telefono.
            dob_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Il punteggio della data di nascita del titolare, quando
                condivisa dalla banca.
            close_match:
              type: boolean
              nullable: true
              description: >-
                Indica se il nome rientra nella fascia di corrispondenza
                ravvicinata.
            holder_confirmation:
              type: string
              nullable: true
              enum:
                - pending
                - confirmed
                - rejected
              description: >-
                La risposta della persona alla richiesta di confermare un nome
                con corrispondenza ravvicinata. `null` se non è mai stato
                richiesto.
            method:
              type: string
              nullable: true
              enum:
                - exact
                - token_set
                - nickname
                - transliteration
                - fuzzy
                - provider_only
                - microdeposits
              description: >-
                Quale confronto dei nomi ha generato il punteggio. Questo non
                rappresenta il metodo di verifica: consulta il campo `method` di
                primo livello a tale scopo.
            matched_holder_index:
              type: integer
              nullable: true
            holders:
              type: array
              items:
                type: object
              description: Ciascun titolare elencato dalla banca, con i relativi punteggi.
            owner_identity_available:
              type: boolean
              nullable: true
            evidence_freshness:
              type: string
              nullable: true
              enum:
                - live
                - cached
                - refreshed
            evaluated_at:
              type: string
              format: date-time
              nullable: true
              description: Quando è stato calcolato il verdetto.
        financial_data:
          type: object
          description: >-
            I dati finanziari letti dal passaggio. Solo l'accesso bancario li
            legge.
          properties:
            balances:
              type: object
              nullable: true
              description: Con l'ambito `balances`.
            transactions:
              type: object
              nullable: true
              description: Con l'ambito `transactions`.
            income:
              type: object
              nullable: true
              description: Con l'ambito `income`.
            categorization:
              type: object
              nullable: true
              description: >-
                Categorizzazione Didit delle transazioni lette. `null` in loro
                assenza.
            not_collected:
              type: array
              items:
                type: string
                enum:
                  - balances
                  - income
                  - transactions
              description: >-
                I dati richiesti dal passaggio che il metodo utilizzato per
                verificare il conto non raccoglie. I saldi, le transazioni e il
                reddito provengono esclusivamente dall'accesso bancario,
                pertanto un conto verificato tramite controllo del conto li
                elenca qui. Non è mai un errore. Vuoto altrimenti.
        billing:
          type: object
          nullable: true
          properties:
            route:
              type: string
              enum:
                - native
                - byok
            billed:
              type: boolean
            marketplace_fee:
              type: string
              nullable: true
              description: >-
                La commissione della piattaforma marketplace addebitata, per
                `byok`.
            usage_type:
              type: string
              nullable: true
              description: >-
                La voce di utilizzo su cui è stato addebitato il costo:
                `bank_verification` per un accesso bancario o una verifica del
                conto, `bank_statement_upload` per il caricamento di un estratto
                conto senza alcun tentativo bancario a pagamento precedente, e
                `bank_byok_fee` per la commissione del marketplace sul proprio
                provider. `null` quando non è stato fatturato nulla.
        reference_identity:
          type: object
          nullable: true
          description: >-
            L'identità con cui il titolare è stato confrontato, insieme alla
            relativa fonte.
        signals:
          type: object
          nullable: true
          description: >-
            Segnali dell'account letti dalla cronologia delle transazioni, se il
            passaggio ne ha letta una.
        connection_abandoned:
          type: boolean
          nullable: true
          description: >-
            Indica se il passaggio si è concluso senza corrispondenza dopo che
            la persona ha abbandonato presso la propria banca.
        not_covered:
          type: boolean
          nullable: true
          description: >-
            Indica se la banca o il paese della persona non sono stati
            raggiungibili in questo passaggio. È `true` anche quando la persona
            ha proseguito senza banca poiché nessun metodo era in grado di
            verificarne il paese o la banca.
        continued_without_bank:
          type: boolean
          description: >-
            Indica se la persona ha abbandonato il passaggio con **Continue
            without your bank**. In tal caso `continuation` ne indica il motivo.
            `method` è `none` se non è stato valutato alcun tentativo prima di
            continuare. Dopo un tentativo valutato, ad esempio per un
            intestatario non corrispondente, `method` mantiene il metodo di tale
            tentativo e il relativo verdetto e i codici di motivo restano
            validi. Restituito anche quando il workflow limita i dati
            restituiti.
        continuation:
          type: object
          nullable: true
          description: >-
            Come la persona ha proseguito senza banca. `null` quando non lo ha
            fatto. Quando il workflow riduce i dati restituiti, `reason` viene
            comunque restituito e ogni altra chiave è `null`.
          properties:
            reason:
              type: string
              enum:
                - no_route
                - institution_unsupported
                - attempts_exhausted
                - person_choice
              description: >-
                Il motivo, determinato da Didit quando la persona ha proseguito:
                `no_route` (nessun accesso bancario o controllo del conto è
                disponibile nel suo paese), `institution_unsupported` (la banca
                selezionata non può essere utilizzata per questo passaggio),
                `attempts_exhausted` (tutti i tentativi sono già stati esauriti
                e nessuno era in corso) o `person_choice` (era disponibile un
                metodo di verifica e l'utente ha scelto di proseguire, anche
                quando la banca non era raggiungibile in quel momento).
                `no_route` e `institution_unsupported` seguono
                `bank_unsupported_action`, `attempts_exhausted` segue
                `bank_attempts_exhausted_action` e `person_choice` segue
                `bank_skipped_action`, a meno che un tentativo valutato non
                abbia già deciso il passaggio.
            country:
              type: string
              nullable: true
              description: >-
                Il paese in cui la persona stava effettuando la verifica, in
                formato ISO 3166-1 alpha-3. `null` se ha proseguito prima di
                selezionarne uno.
            offered:
              type: array
              items:
                type: string
                enum:
                  - statement
                  - microdeposits
              nullable: true
              description: >-
                Gli altri metodi di verifica offerti alla persona per quel paese
                quando ha proseguito, nell'ordine in cui sono stati proposti:
                `statement` (caricamento di un estratto conto), quindi
                `microdeposits`. Vuoto se non ne è stato offerto alcuno.
            institution_id:
              type: string
              nullable: true
              description: >-
                Per `institution_unsupported`, l'ID della banca che la persona
                non ha potuto utilizzare: la banca scelta o la banca su cui si è
                concluso l'ultimo tentativo. Didit lo ricava dal proprio elenco
                di banche, mai dal dispositivo della persona, pertanto una banca
                non presente in tale elenco è `null`. `null` per qualsiasi altro
                motivo.
            institution_name:
              type: string
              nullable: true
              description: >-
                Per `institution_unsupported`, il nome di tale banca, ricavato
                dallo stesso elenco di `institution_id`. `null` quando tale
                elenco non include la banca, e per qualsiasi altro motivo.
            continued_at:
              type: string
              format: date-time
              nullable: true
              description: Quando la persona ha continuato.
        evidence_purged_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Data e ora di eliminazione della prova bancaria ai sensi di
            `bank_evidence_retention_days`. `null` altrimenti.
        warnings:
          type: array
          items:
            type: string
          description: >-
            Codici informativi, ad esempio `holder_declared`. Un avviso non
            modifica mai lo stato da solo.
        reason_codes:
          type: array
          items:
            type: string
          description: >-
            Il motivo per cui è stato emesso tale verdetto, ad esempio
            `OWNER_NAME_PARTIAL`. Possono applicarsene diversi. `NOT_COVERED`:
            la persona ha continuato senza banca perché nessun metodo poteva
            verificare il suo paese o la sua banca. `SKIPPED`: la persona ha
            scelto di continuare senza banca anche se era disponibile un metodo
            di verifica. Nessuno dei due viene aggiunto se un tentativo valutato
            ha già deciso il passaggio.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    SignatureResult:
      type: object
      description: >-
        Il risultato di un firmatario per un passaggio di Firma elettronica.
        Consulta il [report di Firma
        elettronica](/it/core-technology/electronic-signature/report-electronic-signature).
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Passalo come `signature_id` per scaricare le prove di questo
            firmatario o convalidare la sua firma.
        node_id:
          type: string
          description: Il passaggio del workflow che lo ha prodotto.
        status:
          type: string
          enum:
            - intro
            - review
            - code
            - signing
            - signed
            - declined
          description: >-
            A che punto si trova il firmatario nel passaggio. Solo `signed`
            indica che i documenti sono firmati.
        verdict:
          type: string
          enum:
            - Not Finished
            - Approved
            - In Review
            - Declined
          description: >-
            L'esito del passaggio. Un avviso lo imposta tramite la propria
            regola; le regole di stato personalizzate si applicano
            successivamente.
        level:
          type: string
          enum:
            - simple
            - aes
            - qes
          description: >-
            `simple` (predefinito) o `aes`. `qes` (Firma elettronica
            qualificata, QES) è un componente aggiuntivo non ancora disponibile.
        format:
          type: string
          enum:
            - pdf
            - pades
          description: '`pdf` per una firma Simple, `pades` per Advanced (AES).'
        profile:
          type: string
          nullable: true
          description: >-
            `PAdES-B-LT` una volta firmata una firma avanzata (AES), altrimenti
            null.
        signer:
          type: object
          properties:
            name:
              type: string
              nullable: true
              description: >-
                Il nome del firmatario. Verificato (dalla verifica dell'identità
                approvata o dalla sessione) tranne al livello Simple senza un
                nome di sessione verificato, dove corrisponde al nome digitato
                dal firmatario e non è verificato.
            capacity:
              type: string
              enum:
                - self
                - company
            company:
              type: string
              nullable: true
            role:
              type: string
              nullable: true
              description: La designazione della persona chiave, come dichiarata.
            roles:
              type: array
              items:
                type: string
              description: >-
                I ruoli strutturati della persona chiave, come dichiarati per
                l'azienda.
            identity_session_id:
              type: string
              format: uuid
              description: La sessione KYC che ha verificato il firmatario.
        identity_used:
          type: object
          description: >-
            L'identità verificata su cui si basa la firma. Vuoto per una firma
            Simple senza identità verificata.
          properties:
            session_id:
              type: string
              format: uuid
            kyc_id:
              type: string
              format: uuid
              nullable: true
            verified:
              type: boolean
            expected_name:
              type: string
              nullable: true
              description: Il nome a cui il firmatario doveva corrispondere.
        certificate:
          type: object
          nullable: true
          description: >-
            Il certificato con cui sono stati firmati i documenti. `null` fino
            alla firma, e sempre `null` per una firma Simple.
          properties:
            issuer:
              type: string
            issued_to:
              type: string
            serial:
              type: string
              description: Numero di serie, esadecimale.
            valid_from:
              type: string
              format: date-time
            valid_until:
              type: string
              format: date-time
        confirmation:
          type: object
          properties:
            channel:
              type: string
              nullable: true
              enum:
                - email
                - sms
              description: '`null` per una firma Simple, che non ha codice.'
            destination:
              type: string
              nullable: true
              description: Il contatto oscurato a cui è stato inviato il codice.
            confirmed_at:
              type: string
              format: date-time
              nullable: true
            attempts:
              type: integer
              description: Codici inseriti, incluso quello corretto.
        timestamp:
          type: object
          nullable: true
          description: >-
            Il timestamp RFC 3161 nella firma, emesso da Didit. `null` fino alla
            firma, e sempre `null` per una firma Semplice.
          properties:
            time:
              type: string
              format: date-time
            qualified:
              type: boolean
              description: Sempre `false` per AES.
            valid:
              type: boolean
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: >-
                  Il documento sulla copia di questo firmatario. Usalo per
                  scaricare il file firmato.
              uuid:
                type: string
                format: uuid
                description: Corrisponde a `id`.
              title:
                type: string
              file_name:
                type: string
              pages:
                type: integer
                description: Pagine firmate del documento. Per Word, del PDF convertito.
              size_bytes:
                type: integer
              sha256_original:
                type: string
                description: >-
                  SHA-256 del documento così come è stato mostrato al
                  firmatario.
              sha256_signed:
                type: string
                nullable: true
                description: SHA-256 del PDF firmato, una volta completata la firma.
              status:
                type: string
                enum:
                  - signed
                  - declined
                  - not_signed
                  - not_reached
                description: >-
                  `not_signed`: aperto ma non firmato. `not_reached`: mai
                  aperto.
              opened_at:
                type: string
                format: date-time
                nullable: true
              read_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Quando il firmatario ha raggiunto la fine di un documento
                  senza campi, se il passaggio lo richiede.
              read_to_end:
                type: boolean
              consented_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Quando il firmatario ha accettato un documento senza campi o
                  ha completato i campi di un documento provvisto di campi.
              consent:
                type: boolean
              signed_file:
                type: string
                nullable: true
                description: >-
                  Percorso del PDF firmato, una volta firmato. Vedi [Scarica un
                  documento
                  firmato](/it/sessions-api/electronic-signature/download-signed-document).
              mode:
                type: string
                enum:
                  - fields
                  - read_and_agree
                description: >-
                  `fields` per un documento con campi, `read_and_agree` per un
                  documento senza.
              source_format:
                type: string
                enum:
                  - pdf
                  - docx
                description: >-
                  `pdf`, oppure `docx` per un documento Word convertito in PDF
                  da Didit.
              conversion:
                type: object
                nullable: true
                description: >-
                  `null` per un PDF. Per un documento Word, il file originale e
                  la conversione.
                properties:
                  from:
                    type: string
                    enum:
                      - docx
                  file_name:
                    type: string
                    description: Il nome originale del tuo file Word.
                  sha256:
                    type: string
                    description: SHA-256 del tuo file Word originale.
                  size_bytes:
                    type: integer
                    description: Dimensione del tuo file Word originale.
                  converter:
                    type: string
                    description: Versione del convertitore che ha generato il PDF.
              fields:
                type: array
                description: >-
                  Campi presenti sul documento, con i relativi valori. Vuoto per
                  un documento senza campi.
                items:
                  $ref: '#/components/schemas/SignatureFieldResult'
        adopted_signature:
          type: object
          nullable: true
          description: >-
            La firma e le iniziali adottate dal firmatario per i campi di firma
            e iniziali. `null` finché il firmatario non ne adotta una.
          properties:
            method:
              type: string
              enum:
                - typed
                - drawn
              description: >-
                `typed`: il nome verificato in stile calligrafico. `drawn`:
                disegnato con un dito o un mouse.
            font:
              type: string
              nullable: true
              description: >-
                Lo stile calligrafico di una firma digitata. `null` se tracciata
                a mano.
            adopted_at:
              type: string
              format: date-time
        electronic_signature_consent_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando il firmatario ha acconsentito, nella schermata di revisione,
            a firmare elettronicamente i documenti. Impostato quando qualsiasi
            documento contiene campi.
        evidence_file:
          type: string
          nullable: true
          description: >-
            Percorso del PDF delle prove, una volta firmato. Consulta [Scaricare
            le prove della
            firma](/it/sessions-api/electronic-signature/download-evidence).
        warnings:
          type: array
          description: >-
            Avvisi generati per questo firmatario. Vedi [Avvisi di Firma
            elettronica](/it/core-technology/electronic-signature/warnings-electronic-signature).
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - SIGNATURE_DECLINED
                  - SIGNATURE_OTP_FAILED
                  - SIGNATURE_NAME_MISMATCH
                  - SIGNATURE_IDENTITY_NOT_VERIFIED
                  - SIGNATURE_DOCUMENT_CHANGED
                  - SIGNATURE_FIELD_DATA_MISSING
              node_id:
                type: string
        validation:
          type: object
          nullable: true
          description: >-
            L'ultimo controllo crittografico dei documenti firmati. `null`
            finché i documenti non vengono firmati. Se Didit non riesce a
            confermare l'esito della firma, il valore è `{"valid": null,
            "reason": "signature_provider_outcome_unknown", "checked_at": ...}`
            e `status` rimane `signing`: consideralo come non firmato.
          properties:
            valid:
              type: boolean
              nullable: true
              description: >-
                `true` quando ogni documento è valido. `null` quando non è stato
                possibile confermare l'esito della firma.
            reason:
              type: string
              description: >-
                Impostato quando `valid` è `null`:
                `signature_provider_outcome_unknown`.
            checked_at:
              type: string
              format: date-time
            documents:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  checked_at:
                    type: string
                    format: date-time
                  valid:
                    type: boolean
                    description: >-
                      `true` quando la firma e il timestamp sono entrambi validi
                      e attendibili.
                  integrity:
                    type: boolean
                    description: >-
                      `true` quando il documento non è stato modificato dopo la
                      firma.
                  trusted:
                    type: boolean
                    description: >-
                      `true` quando il certificato di firma fa capo a una radice
                      attendibile.
                  revoked:
                    type: boolean
                  trusted_list:
                    type: object
                    description: >-
                      Controllo della Trusted List dell'UE. Per AES: `{"status":
                      "not_applicable", "reason": "aes_not_qualified"}`.
                    properties:
                      status:
                        type: string
                      reason:
                        type: string
                  certificate:
                    type: object
                    nullable: true
                    description: >-
                      Il certificato con cui sono stati firmati i documenti.
                      `null` fino alla firma, e sempre `null` per una firma
                      Simple.
                    properties:
                      issuer:
                        type: string
                      issued_to:
                        type: string
                      serial:
                        type: string
                        description: Numero di serie, esadecimale.
                      valid_from:
                        type: string
                        format: date-time
                      valid_until:
                        type: string
                        format: date-time
                  timestamp:
                    type: object
                    nullable: true
                    description: >-
                      Il timestamp RFC 3161 nella firma, emesso da Didit. `null`
                      fino alla firma, e sempre `null` per una firma Semplice.
                    properties:
                      time:
                        type: string
                        format: date-time
                      qualified:
                        type: boolean
                        description: Sempre `false` per AES.
                      valid:
                        type: boolean
        declined_at:
          type: string
          format: date-time
          nullable: true
        declined_action:
          type: string
          enum:
            - DECLINE
            - REVIEW
            - NO_ACTION
        signed_at:
          type: string
          format: date-time
          nullable: true
        expires_at:
          type: string
          format: date-time
          description: Quando il link di firma smette di funzionare.
        email_sent_at:
          type: string
          format: date-time
          nullable: true
        email_unavailable_reason:
          type: string
          nullable: true
        ip_address:
          type: string
          nullable: true
          description: L'indirizzo IP del firmatario al momento della richiesta del codice.
        place:
          type: string
          nullable: true
          description: 'Non raccolto: sempre `null`.'
        place_unavailable_reason:
          type: string
          nullable: true
          enum:
            - not_collected
    AMLScreening:
      type: object
      properties:
        node_id:
          type: string
          description: >-
            Identificatore univoco per questo passaggio AML nel grafo del
            workflow.
        status:
          type: string
          description: >-
            Stato a livello di funzionalità di questo Screening AML.
            Indipendente dallo `status` della sessione di primo livello: una
            sessione può raggiungere la sua decisione complessiva mentre una
            singola funzionalità rimane in `In Review`.
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
        total_hits:
          type: integer
          description: Numero totale di corrispondenze trovate
        entity_type:
          type: string
          description: 'Tipo di entità sottoposta a screening: persona o azienda'
        hits:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  Identificativo stabile di Didit per l'hit: `hit_` seguito da
                  24 caratteri esadecimali. La stessa entità corrispondente
                  mantiene lo stesso `id` quando il soggetto viene sottoposto
                  nuovamente a screening. Passalo come `hit_id` agli endpoint di
                  revisione degli hit AML.
              url:
                type: string
                format: uri
                description: URL di origine per la corrispondenza
              match:
                type: boolean
                description: Indica se si tratta di una corrispondenza confermata
              score:
                type: number
                format: float
                nullable: true
                minimum: 0
                maximum: 1
                description: >-
                  Punteggio di corrispondenza ponderato deprecato
                  nell'intervallo 0-1 (ad es. `0.73`). Usa invece `match_score`
                  (0-100).
                deprecated: true
              target:
                type: boolean
                nullable: true
                description: >-
                  Indica se l'entità corrispondente è il bersaglio diretto
                  dell'inserimento nella lista (anziché una parte correlata).
                  `null` quando la fonte non lo specifica.
              caption:
                type: string
                description: Didascalia o titolo della corrispondenza
              datasets:
                type: array
                items:
                  type: string
                  enum:
                    - PEP
                    - PEP Level 1
                    - PEP Level 2
                    - PEP Level 3
                    - PEP Level 4
                    - Sanctions
                    - Adverse Media
                    - Warnings and Regulatory Enforcement
                    - Fitness and Probity
                    - SIP
                    - SIE
                    - Insolvency
                    - Other Lists
                description: >-
                  Elenco delle categorie di dataset in cui è stata trovata la
                  corrispondenza. Indica se l'entità compare in liste PEP (con
                  livello), database di sanzioni, notizie negative,
                  avvisi/provvedimenti normativi o altri dataset di conformità.
                  `Other Lists` quando la fonte dell'entità non specifica
                  nessuna di queste categorie.
              features:
                type: object
                nullable: true
                description: Caratteristiche aggiuntive della corrispondenza
              rca_name:
                type: string
                description: Nome RCA, se applicabile
              last_seen:
                type: string
                format: date-time
                description: >-
                  Data in cui la corrispondenza è stata rilevata per l'ultima
                  volta
              risk_view:
                type: object
                properties:
                  crimes:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  countries:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  categories:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  custom_list:
                    type: object
              first_seen:
                type: string
                format: date-time
                description: >-
                  Data in cui la corrispondenza è stata rilevata per la prima
                  volta
              properties:
                type: object
                properties:
                  name:
                    type: array
                    items:
                      type: string
                  alias:
                    type: array
                    items:
                      type: string
                  notes:
                    type: array
                    items:
                      type: string
                  title:
                    type: string
                    nullable: true
                  gender:
                    type: array
                    items:
                      type: string
                  height:
                    type: string
                    nullable: true
                  topics:
                    type: string
                    nullable: true
                  weight:
                    type: string
                    nullable: true
                  address:
                    type: string
                    nullable: true
                  country:
                    type: string
                    nullable: true
                  website:
                    type: string
                    nullable: true
                  eyeColor:
                    type: string
                    nullable: true
                  keywords:
                    type: string
                    nullable: true
                  lastName:
                    type: array
                    items:
                      type: string
                  position:
                    type: string
                    nullable: true
                  religion:
                    type: string
                    nullable: true
                  birthDate:
                    type: array
                    items:
                      type: string
                  education:
                    type: array
                    items:
                      type: string
                  ethnicity:
                    type: string
                    nullable: true
                  firstName:
                    type: array
                    items:
                      type: string
                  hairColor:
                    type: string
                    nullable: true
                  weakAlias:
                    type: string
                    nullable: true
                  birthPlace:
                    type: array
                    items:
                      type: string
                  modifiedAt:
                    type: string
                    nullable: true
                  wikidataId:
                    type: string
                    nullable: true
                  citizenship:
                    type: string
                    nullable: true
                  nationality:
                    type: string
                    nullable: true
              match_score:
                type: number
                description: >-
                  Punteggio di affidabilità dell'identità ponderato (0-100)
                  calcolato a partire dalla somiglianza del nome, dalla data di
                  nascita e dalla corrispondenza del paese. Utilizzato per
                  determinare se un'occorrenza è un falso positivo o una
                  possibile corrispondenza.
                format: float
                nullable: true
              risk_score:
                type: number
                description: >-
                  Punteggio di rischio dell'entità (0-100). Utilizzato per
                  determinare lo stato AML finale (Approvata/In
                  revisione/Rifiutata) in base al risk_score più alto tra le
                  corrispondenze non considerate falsi positivi.
              review_status:
                type: string
                description: >-
                  Stato di revisione per questa corrispondenza. Può essere
                  'Unreviewed', 'Confirmed Match', 'False Positive' o
                  'Inconclusive'.
                enum:
                  - Unreviewed
                  - Confirmed Match
                  - False Positive
                  - Inconclusive
              score_breakdown:
                type: object
                description: Dettaglio approfondito di come è stato calcolato match_score.
                properties:
                  name_score:
                    type: integer
                    description: Percentuale di somiglianza dei nomi non elaborata (0-100).
                  name_weight:
                    type: integer
                    description: Peso originale per il nome dalla configurazione (0-100).
                  name_weight_normalized:
                    type: number
                    description: >-
                      Peso normalizzato per il nome dopo la ricalibrazione per
                      dati mancanti (0-100).
                  name_contribution:
                    type: number
                    description: Punti con cui il nome ha contribuito al punteggio totale.
                  dob_score:
                    type: integer
                    description: >-
                      Punteggio di corrispondenza della data di nascita (-100 a
                      100).
                  dob_weight:
                    type: integer
                    description: >-
                      Peso originale per la data di nascita (DOB) dalla
                      configurazione (0-100).
                  dob_weight_normalized:
                    type: number
                    description: >-
                      Peso normalizzato per la data di nascita dopo la
                      ricalibrazione per dati mancanti (0-100).
                  dob_contribution:
                    type: number
                    description: >-
                      Punti con cui la data di nascita ha contribuito al
                      punteggio totale.
                  country_score:
                    type: integer
                    description: Punteggio di corrispondenza del paese (da -100 a 100).
                  country_weight:
                    type: integer
                    description: Peso originale per il paese dalla configurazione (0-100).
                  country_weight_normalized:
                    type: number
                    description: >-
                      Peso normalizzato per il paese dopo la ricalibrazione per
                      dati mancanti (0-100).
                  country_contribution:
                    type: number
                    description: Punti con cui il paese ha contribuito al punteggio totale.
                  document_number_match_type:
                    type: string
                    description: >-
                      Risultato della valutazione 'Golden Key' del numero di
                      documento.
                    enum:
                      - MATCH
                      - NEUTRAL
                      - HARD_MISMATCH
                  document_number_effect:
                    type: string
                    description: >-
                      Descrizione di facile lettura dell'effetto del numero del
                      documento sul punteggio.
                  total_score:
                    type: integer
                    description: Punteggio di corrispondenza ponderato finale (0-100).
              pep_matches:
                type: array
                items:
                  type: object
                  properties:
                    aliases:
                      type: array
                      items:
                        type: string
                    education:
                      type: array
                      items:
                        type: string
                    list_name:
                      type: string
                    publisher:
                      type: string
                    source_url:
                      type: string
                      format: uri
                    description:
                      type: string
                    matched_name:
                      type: string
                    pep_position:
                      type: string
                    date_of_birth:
                      type: string
                    other_sources:
                      type: array
                      items:
                        type: string
                    place_of_birth:
                      type: string
              linked_entities:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: array
                      items:
                        type: string
                    active:
                      type: array
                      items:
                        type: string
                    status:
                      type: array
                      items:
                        type: string
                    details:
                      type: array
                      items:
                        type: string
                    relation:
                      type: array
                      items:
                        type: string
              warning_matches:
                type: array
                description: >-
                  Elenco delle corrispondenze con avvisi e provvedimenti
                  normativi. Include voci delle categorie: Warning, SIP,
                  Warnings and Regulatory Enforcement, Fitness and Probity, SIE
                  e Insolvency.
                items:
                  type: object
                  properties:
                    list_name:
                      type: string
                      description: Nome dell'editore della lista di avvisi
                    matched_name:
                      type: string
                      description: Nome corrispondente nella lista degli avvisi
                    description:
                      type: string
                      description: Descrizione della voce di avviso
                    publisher:
                      type: string
                      description: Editore o fonte dell'avviso
                    source_url:
                      type: string
                      format: uri
                      description: URL della fonte dell'avviso
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: URL sorgente aggiuntivi
                    countries:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Paesi associati all'avviso
                    created_at:
                      type: string
                      nullable: true
                      description: Data di creazione della voce di avviso
                    updated_at:
                      type: string
                      nullable: true
                      description: Data dell'ultimo aggiornamento della voce di avviso
                    additional_data:
                      type: object
                      description: >-
                        Dati aggiuntivi provenienti dalla fonte dell'avviso. Può
                        contenere un oggetto `data` con un array `case_details`.
                      properties:
                        data:
                          type: object
                          properties:
                            case_details:
                              type: array
                              description: >-
                                Dettagli dei casi di avviso associati a questa
                                corrispondenza
                              items:
                                type: object
                                properties:
                                  case_type:
                                    type: string
                                    description: Tipo del caso di avviso
                                    enum:
                                      - Accusation
                                      - Arrest
                                      - Bribery
                                      - Criminal
                                      - Fraud
                                      - Illegal Fundraising
                                      - Non-conviction Terror
                                      - Proclaimed Offender
                                      - Regulatory Enforcement
                                      - Terrorism
                                      - Terrorism-related
                                      - Terrorism-related listing
              sanction_matches:
                type: array
                description: >-
                  Elenco delle corrispondenze nelle liste delle sanzioni trovate
                  per questa entità.
                items:
                  type: object
                  properties:
                    list_name:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Nome/i della/e lista/e delle sanzioni
                    matched_name:
                      type: string
                      description: Nome corrispondente nella lista delle sanzioni
                    description:
                      type: string
                      description: Descrizione della voce di sanzione
                    reason:
                      type: string
                      nullable: true
                      description: >-
                        Motivo in formato testo libero per cui l'entità è stata
                        sanzionata. Aggregato dalle voci relative al motivo
                        della lista delle sanzioni. Esempi: 'Executive Order
                        13224 (Terrorism)', 'Support for actions undermining
                        Ukraine's sovereignty', 'Listed due to national security
                        concerns.'
                    source_url:
                      type: string
                      format: uri
                      description: URL della fonte della sanzione
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: URL sorgente aggiuntivi
                    details:
                      type: array
                      items:
                        type: string
                      description: Ulteriori dettagli sulla sanzione
                    legal_basis:
                      type: array
                      items:
                        type: string
                      description: Base giuridica della sanzione
                    listed_on:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Data/e in cui l'entità è stata inserita nell'elenco
                    sanction_list:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Identificatore/i della lista delle sanzioni
                    sanction_program:
                      type: array
                      items:
                        type: string
                      description: Programma/i di sanzioni in cui l'entità è inclusa
                    sanctioning_authority:
                      type: array
                      items:
                        type: string
                      description: Autorità che ha imposto la sanzione
                    updated_on:
                      type: array
                      items:
                        type: string
                      description: >-
                        Data o date dell'ultimo aggiornamento della voce di
                        sanzione
                    additional_data:
                      type: object
                      description: >-
                        Dati aggiuntivi provenienti dalla fonte delle sanzioni
                        non acquisiti nei campi principali
              adverse_media_details:
                type: object
                properties:
                  sentiment:
                    type: string
                  entity_type:
                    type: string
                  sentiment_score:
                    type: integer
                  adverse_keywords:
                    type: object
                    additionalProperties:
                      type: integer
              adverse_media_matches:
                type: array
                items:
                  type: object
                  properties:
                    country:
                      type: string
                    summary:
                      type: string
                    headline:
                      type: string
                    sentiment:
                      type: string
                    thumbnail:
                      type: string
                      format: uri
                    source_url:
                      type: string
                      format: uri
                    author_name:
                      type: string
                      nullable: true
                    other_sources:
                      type: array
                      items:
                        type: string
                    adverse_keywords:
                      type: array
                      items:
                        type: string
                    sentiment_score:
                      type: integer
                    publication_date:
                      type: string
                      format: date-time
              additional_information:
                type: object
        score:
          type: number
          format: float
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            Punteggio complessivo dello screening AML — il punteggio di rischio
            più alto tra tutti i riscontri (float, 0-100). `null` finché non
            viene calcolato.
        screened_data:
          type: object
          properties:
            full_name:
              type: string
            nationality:
              type: string
            date_of_birth:
              type: string
              format: date
            document_number:
              type: string
              nullable: true
        is_ongoing_monitoring_enabled:
          type: boolean
          description: >-
            Indica se il monitoraggio AML continuo è abilitato per questo
            screening. Quando è `true`, l'entità viene sottoposta nuovamente a
            screening periodicamente e ogni nuova corrispondenza aggiorna il
            report.
        next_ongoing_monitoring_bill_date:
          type: string
          format: date
          nullable: true
          description: >-
            Data (YYYY-MM-DD) in cui verrà fatturato successivamente questo
            abbonamento al monitoraggio continuo. Calcolata come la data
            dell'ultima fatturazione del monitoraggio continuo più 365 giorni
            quando `is_ongoing_monitoring_enabled = true`; altrimenti `null`.
            Questa è una data di fatturazione, non una data di screening: usa
            `last_ongoing_screening_at` a questo scopo.
        last_ongoing_screening_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Data e ora dell'ultimo completamento del nuovo screening di questo
            record da parte del monitoraggio continuo, indipendentemente dal
            fatto che il risultato sia cambiato o meno. `null` se il record non
            è mai stato sottoposto a un nuovo screening; non viene mai
            retrodatato alla data di abilitazione o di fatturazione.
        last_ongoing_screening_datasets_updated_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            La data più recente di aggiornamento del set di dati AML segnalata
            dal provider al momento di tale screening. `null` se il provider non
            ha segnalato date del set di dati; mai stimata.
        warnings:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
                enum:
                  - ID_VERIFICATION
                  - NFC
                  - LIVENESS
                  - FACEMATCH
                  - PROOF_OF_ADDRESS
                  - PHONE
                  - EMAIL
                  - AML
                  - LOCATION
                  - DATABASE_VALIDATION
                  - QUESTIONNAIRE
                  - DOCUMENT_AI
                  - KYB_REGISTRY
                  - KYB_DOCUMENTS
                  - KYB_KEY_PEOPLE
                  - GEOLOCATION
                  - SIGNATURE
                description: >-
                  La funzionalità che ha generato questo avviso. Il valore
                  identifica il blocco della funzionalità a cui appartiene
                  l'avviso. All'interno di uno screening AML questo è
                  solitamente `AML`, ma l'enum riportato sopra fa fede per tutti
                  gli avvisi delle funzionalità presenti nel payload della
                  decisione.
              risk:
                type: string
              additional_data:
                type: object
                nullable: true
              log_type:
                type: string
              short_description:
                type: string
              long_description:
                type: string
              node_id:
                type: string
                description: >-
                  L'ID del nodo del grafo del workflow che ha generato questo
                  avviso
    GeolocationCheck:
      type: object
      description: >-
        Un risultato di verifica della posizione, il tentativo accettato di un
        nodo del workflow. Misurazione, incertezza e autenticità sono chiavi
        distinte, pertanto una rilevazione precisa non attestata viene
        interpretata diversamente da una imprecisa attestata.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            Nodo del workflow che ha generato questo risultato, così che un
            workflow con due passaggi di verifica della posizione rimanga
            leggibile.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            Stato a livello di funzionalità di questo passaggio di verifica
            della posizione, risolto a partire dai relativi avvisi. Indipendente
            dallo `status` della sessione.
        outcome:
          type: string
          nullable: true
          description: Cosa è successo in questo tentativo.
          enum:
            - verified
            - low_accuracy
            - accuracy_undetermined
            - stale
            - approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - mock_detected
            - outside_geofence
            - in_blocked_area
            - anonymizer_detected
            - skipped
            - replay_rejected
            - unsupported_client
            - null
        permission:
          type: string
          nullable: true
          description: >-
            Cosa ha concesso il sistema operativo o il browser. `not_requested`
            indica che il passaggio utilizza esclusivamente la posizione IP
            della connessione, pertanto alla persona non viene mai richiesta
            un'autorizzazione.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: >-
            Latitudine WGS84 del punto rilevato. `null` in assenza di
            rilevamento.
          format: double
        longitude:
          type: number
          nullable: true
          description: >-
            Longitudine WGS84 del punto rilevato. `null` in assenza di
            rilevamento.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            Raggio di incertezza in metri, al livello di affidabilità indicato
            in `accuracy_confidence`.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            Livello di affidabilità assegnato dalla piattaforma a `accuracy_m`:
            `p95` (browser), `p68` (Android) o `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: >-
            Data e ora in cui il dispositivo ha acquisito la correzione, in base
            al proprio orologio.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: >-
            Secondi trascorsi tra il rilevamento della posizione da parte del
            dispositivo e la ricezione da parte di Didit.
        source:
          type: string
          nullable: true
          description: >-
            Da dove proviene il fix, se indicato dalla piattaforma. `ip` indica
            che la posizione corrisponde a quella dell'IP della connessione.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: Il client che ha generato la correzione.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: Versione dell'SDK che ha prodotto la correzione.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            `true` quando il dispositivo indica che la posizione rilevata
            proviene da un provider di geolocalizzazione fittizia o da un
            software di simulazione. `null` quando la piattaforma non lo segnala
            (i browser non sono in grado di determinarlo); `null` non equivale a
            `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            Solo iOS: `true` quando il fix proviene da un accessorio esterno.
            `null` altrove.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            Indica se l'attestazione del dispositivo supporta il fix.
            `unsupported` è quanto segnalato dai browser, poiché il web non
            dispone di un meccanismo di attestazione; non costituisce un errore.
        country_code:
          type: string
          nullable: true
          description: Paese ISO 3166-1 alpha-2 in cui si trova la posizione rilevata.
        region_code:
          type: string
          nullable: true
          description: Suddivisione ISO 3166-2 in cui si trova il rilevamento.
        city:
          type: string
          nullable: true
          description: Centro abitato più vicino, un'etichetta per i revisori.
        geofence:
          type: object
          description: Risultato delle regole su paese e area geografica del passaggio.
          properties:
            enabled:
              type: boolean
              description: >-
                Indica se il passaggio applica una regola su paese o area
                geografica.
            result:
              type: string
              nullable: true
              description: >-
                La posizione rispetto alle regole. `undetermined` significa che
                il cerchio di accuratezza si trova a cavallo del confine o che
                la posizione non è stata risolta in alcun paese; non costituisce
                una prova di trovarsi all'esterno.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `true` quando `geofence.result` è `inside`, `false` quando è
            `outside`, `null` altrimenti.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            Da quale posizione è stato valutato il risultato dell'area: la
            posizione rilevata dal `device` o la posizione `ip` della
            connessione.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: ID delle aree consentite configurate in cui si trova la posizione.
        blocked_areas:
          type: array
          items:
            type: string
          description: ID delle aree bloccate configurate in cui si trova la posizione.
        position_source:
          type: string
          nullable: true
          description: >-
            Da dove il passaggio rileva la posizione, come configurato: il
            dispositivo confrontato con la posizione IP, solo il dispositivo o
            solo la posizione IP.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            Come appaiono la connessione e il dispositivo, ciascuno impostato su
            `true`, `false` o `null` quando la sorgente non è in grado di
            determinarlo.
          properties:
            vpn:
              type: boolean
              nullable: true
            proxy:
              type: boolean
              nullable: true
            tor:
              type: boolean
              nullable: true
            spoofing:
              type: boolean
              nullable: true
            emulator:
              type: boolean
              nullable: true
        ip_distance_km:
          type: number
          nullable: true
          description: >-
            Distanza dalla posizione IP della sessione dopo aver sottratto
            entrambi i raggi di incertezza; `0` quando si sovrappongono.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            Raggio combinato sottratto: il raggio della posizione IP più
            l'accuratezza di questa posizione.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            Indica se `ip_distance_km` rientra nella distanza configurata nel
            passaggio. `null` quando una delle due posizioni è sconosciuta.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            Distanza dall'indirizzo geocodificato sul documento d'identità o
            sulla prova di residenza. `null` quando non è presente alcun
            indirizzo registrato.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            Indica se la tolleranza di spostamento del passaggio ha giustificato
            la distanza dall'indirizzo. `null` se la tolleranza è disattivata.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            Al tentativo finale: questo controllo più le precedenti mancate
            corrispondenze consecutive della stessa persona.
        attempts:
          type: integer
          description: Numero di questo tentativo all'interno del nodo, a partire da 1.
        consent:
          type: object
          nullable: true
          description: >-
            Il consenso fornito dalla persona prima del prompt di sistema,
            registrato con la versione del testo e la lingua visualizzate.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        warnings:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
                enum:
                  - ID_VERIFICATION
                  - NFC
                  - LIVENESS
                  - FACEMATCH
                  - PROOF_OF_ADDRESS
                  - PHONE
                  - EMAIL
                  - AML
                  - LOCATION
                  - DATABASE_VALIDATION
                  - QUESTIONNAIRE
                  - DOCUMENT_AI
                  - KYB_REGISTRY
                  - KYB_DOCUMENTS
                  - KYB_KEY_PEOPLE
                  - GEOLOCATION
                  - SIGNATURE
                description: >-
                  La funzionalità che ha generato questo avviso. Il valore
                  identifica il blocco della funzionalità a cui appartiene
                  l'avviso. L'array degli avvisi di ciascun modulo utilizza in
                  genere il valore corrispondente al proprio modulo (es. `PHONE`
                  all'interno di `phone_verifications[].warnings`), ma l'enum
                  riportato sopra fa fede per tutti gli avvisi delle
                  funzionalità presenti nel payload della decisione.
              risk:
                type: string
              additional_data:
                type: object
                nullable: true
              log_type:
                type: string
              short_description:
                type: string
              long_description:
                type: string
              node_id:
                type: string
                description: >-
                  L'ID del nodo del grafo del workflow che ha generato questo
                  avviso
          description: >-
            Avvisi generati da questo passaggio di verifica della posizione, con
            `feature` impostato su `GEOLOCATION`. I codici di avviso iniziano
            con `LOCATION_`.
    GeolocationAttempt:
      type: object
      description: >-
        Un tentativo di un passaggio di verifica della posizione: le stesse
        chiavi di `geolocation_checks[]` tranne `warnings`, più il momento in
        cui Didit lo ha ricevuto.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            Nodo del workflow che ha generato questo risultato, così che un
            workflow con due passaggi di verifica della posizione rimanga
            leggibile.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            Stato a livello di funzionalità di questo passaggio di verifica
            della posizione, risolto a partire dai relativi avvisi. Indipendente
            dallo `status` della sessione.
        outcome:
          type: string
          nullable: true
          description: Cosa è successo in questo tentativo.
          enum:
            - verified
            - low_accuracy
            - accuracy_undetermined
            - stale
            - approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - mock_detected
            - outside_geofence
            - in_blocked_area
            - anonymizer_detected
            - skipped
            - replay_rejected
            - unsupported_client
            - null
        permission:
          type: string
          nullable: true
          description: >-
            Cosa ha concesso il sistema operativo o il browser. `not_requested`
            indica che il passaggio utilizza esclusivamente la posizione IP
            della connessione, pertanto alla persona non viene mai richiesta
            un'autorizzazione.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: >-
            Latitudine WGS84 del punto rilevato. `null` in assenza di
            rilevamento.
          format: double
        longitude:
          type: number
          nullable: true
          description: >-
            Longitudine WGS84 del punto rilevato. `null` in assenza di
            rilevamento.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            Raggio di incertezza in metri, al livello di affidabilità indicato
            in `accuracy_confidence`.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            Livello di affidabilità assegnato dalla piattaforma a `accuracy_m`:
            `p95` (browser), `p68` (Android) o `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: >-
            Data e ora in cui il dispositivo ha acquisito la correzione, in base
            al proprio orologio.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: >-
            Secondi trascorsi tra il rilevamento della posizione da parte del
            dispositivo e la ricezione da parte di Didit.
        source:
          type: string
          nullable: true
          description: >-
            Da dove proviene il fix, se indicato dalla piattaforma. `ip` indica
            che la posizione corrisponde a quella dell'IP della connessione.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: Il client che ha generato la correzione.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: Versione dell'SDK che ha prodotto la correzione.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            `true` quando il dispositivo indica che la posizione rilevata
            proviene da un provider di geolocalizzazione fittizia o da un
            software di simulazione. `null` quando la piattaforma non lo segnala
            (i browser non sono in grado di determinarlo); `null` non equivale a
            `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            Solo iOS: `true` quando il fix proviene da un accessorio esterno.
            `null` altrove.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            Indica se l'attestazione del dispositivo supporta il fix.
            `unsupported` è quanto segnalato dai browser, poiché il web non
            dispone di un meccanismo di attestazione; non costituisce un errore.
        country_code:
          type: string
          nullable: true
          description: Paese ISO 3166-1 alpha-2 in cui si trova la posizione rilevata.
        region_code:
          type: string
          nullable: true
          description: Suddivisione ISO 3166-2 in cui si trova il rilevamento.
        city:
          type: string
          nullable: true
          description: Centro abitato più vicino, un'etichetta per i revisori.
        geofence:
          type: object
          description: Risultato delle regole su paese e area geografica del passaggio.
          properties:
            enabled:
              type: boolean
              description: >-
                Indica se il passaggio applica una regola su paese o area
                geografica.
            result:
              type: string
              nullable: true
              description: >-
                La posizione rispetto alle regole. `undetermined` significa che
                il cerchio di accuratezza si trova a cavallo del confine o che
                la posizione non è stata risolta in alcun paese; non costituisce
                una prova di trovarsi all'esterno.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `true` quando `geofence.result` è `inside`, `false` quando è
            `outside`, `null` altrimenti.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            Da quale posizione è stato valutato il risultato dell'area: la
            posizione rilevata dal `device` o la posizione `ip` della
            connessione.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: ID delle aree consentite configurate in cui si trova la posizione.
        blocked_areas:
          type: array
          items:
            type: string
          description: ID delle aree bloccate configurate in cui si trova la posizione.
        position_source:
          type: string
          nullable: true
          description: >-
            Da dove il passaggio rileva la posizione, come configurato: il
            dispositivo confrontato con la posizione IP, solo il dispositivo o
            solo la posizione IP.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            Come appaiono la connessione e il dispositivo, ciascuno impostato su
            `true`, `false` o `null` quando la sorgente non è in grado di
            determinarlo.
          properties:
            vpn:
              type: boolean
              nullable: true
            proxy:
              type: boolean
              nullable: true
            tor:
              type: boolean
              nullable: true
            spoofing:
              type: boolean
              nullable: true
            emulator:
              type: boolean
              nullable: true
        ip_distance_km:
          type: number
          nullable: true
          description: >-
            Distanza dalla posizione IP della sessione dopo aver sottratto
            entrambi i raggi di incertezza; `0` quando si sovrappongono.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            Raggio combinato sottratto: il raggio della posizione IP più
            l'accuratezza di questa posizione.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            Indica se `ip_distance_km` rientra nella distanza configurata nel
            passaggio. `null` quando una delle due posizioni è sconosciuta.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            Distanza dall'indirizzo geocodificato sul documento d'identità o
            sulla prova di residenza. `null` quando non è presente alcun
            indirizzo registrato.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            Indica se la tolleranza di spostamento del passaggio ha giustificato
            la distanza dall'indirizzo. `null` se la tolleranza è disattivata.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            Al tentativo finale: questo controllo più le precedenti mancate
            corrispondenze consecutive della stessa persona.
        attempts:
          type: integer
          description: Numero di questo tentativo all'interno del nodo, a partire da 1.
        consent:
          type: object
          nullable: true
          description: >-
            Il consenso fornito dalla persona prima del prompt di sistema,
            registrato con la versione del testo e la lingua visualizzate.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        received_at:
          type: string
          nullable: true
          description: Quando Didit ha ricevuto il tentativo.
          format: date-time
        created_at:
          type: string
          format: date-time
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        La quota detenuta da un titolare, nello stesso formato per ogni paese e
        registro di origine. Null quando il registro non indica alcuna
        partecipazione. Una fascia (ad esempio il 25-50% di un PSC nel Regno
        Unito) non costituisce una partecipazione: `percentage` è null e la
        fascia rimane in `ownership_min_shares` / `ownership_max_shares`.
      properties:
        share_class:
          type: string
          nullable: true
          description: Classe o tipologia di quota, come denominata dal registro.
        number_of_shares:
          type: number
          nullable: true
          description: Numero di azioni detenute.
        currency:
          type: string
          nullable: true
          description: Valuta ISO 4217 dei valori sottostanti.
        nominal_value:
          type: number
          nullable: true
          description: Valore nominale per azione.
        total_value:
          type: number
          nullable: true
          description: Valore totale della partecipazione.
        percentage:
          type: number
          nullable: true
          description: Quota esatta in percentuale, con quattro cifre decimali.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        Un indirizzo indicato dal registro, nello stesso formato per ogni paese
        e fonte del registro. Tutte le chiavi sono sempre presenti; una parte
        non pubblicata dal registro è null.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            Tipo di indirizzo in lettere minuscole: `registered` per la sede
            legale; altri tipi così come denominati dal registro (ad esempio
            `postal`, `office`). `null` quando il registro non specifica il tipo
            di indirizzo.
        address:
          type: string
          description: >-
            L'indirizzo completo su una sola riga. Sempre presente per ogni
            indirizzo.
        street:
          type: string
          nullable: true
          description: Via e numero civico.
        city:
          type: string
          nullable: true
          description: Città o località.
        postal_code:
          type: string
          nullable: true
          description: Codice postale.
        region:
          type: string
          nullable: true
          description: Regione, stato o provincia.
        country_code:
          type: string
          nullable: true
          description: Codice paese ISO 3166-1 alpha-2.
        description:
          type: string
          nullable: true
          description: L'etichetta del registro per l'indirizzo, se fornita.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: >-
        Un'attività con cui il registro classifica l'azienda, nello stesso
        formato per ogni paese e fonte del registro.
      properties:
        code:
          type: string
          nullable: true
          description: >-
            Codice di attività così come riportato dal registro (ad esempio
            `73110`).
        description:
          type: string
          nullable: true
          description: Etichetta dell'attività, se pubblicata dal registro.
        scheme:
          type: string
          nullable: true
          description: >-
            Sistema di classificazione, un solo nome per sistema
            indipendentemente dalla fonte che lo ha segnalato: `UK SIC 2007`,
            `US SIC`, `NACE Rev. 2`, `NACE Rev. 2.1`, `NAF Rev. 2`, `CNAE`,
            `SBI`, `NOGA 2008`, `CAE Rev. 4`, `Canada SIC 1977`; gli altri
            sistemi nazionali mantengono il nome assegnato dal registro. Null
            quando il registro non specifica il sistema.
        is_primary:
          type: boolean
          description: >-
            True per l'attività principale dell'azienda. Esattamente una voce è
            primaria quando l'elenco non è vuoto.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        Dettaglio normalizzato del registro delle imprese fornito da Didit per
        l'azienda: l'esito sull'assetto proprietario (`ownership_error`,
        `section_errors`, `ubo_resolution`, `lite_enrichment`), le correzioni
        apportate con update-data e i dati di registro privi di un campo
        dedicato. Non contiene mai il record grezzo della fonte del registro.
        Ogni chiave è opzionale e presente solo quando l'azienda dispone di un
        valore corrispondente; potrebbero essere aggiunte nuove chiavi. Fai
        riferimento ai campi canonici (`addresses`, `industries`, `ownership`,
        `beneficial_owners[].shareholding`) per tutti i dati coperti da essi.
      properties:
        company_name:
          type: string
          description: Ragione sociale corretta nella console.
        registration_number:
          type: string
          description: >-
            Numero di registrazione indicato dal registro delle imprese o da una
            correzione nella console.
        country_code:
          type: string
          description: >-
            Paese della registrazione come indicato dal registro o da una
            correzione della console.
        region:
          type: string
          description: Regione o stato della registrazione.
        incorporation_date:
          type: string
          description: Data di costituzione (ISO 8601).
        registration_date:
          type: string
          description: >-
            Data di registrazione (ISO 8601) quando il registro delle imprese ne
            indica una distinta rispetto alla data di costituzione.
        dissolution_date:
          type: string
          description: Data di scioglimento (ISO 8601) quando indicata dal registro.
        tax_number:
          type: string
          description: Identificativo fiscale.
        vat_number:
          type: string
          description: Partita IVA.
        legal_address:
          type: string
          description: Sede legale corretta nella console.
        registered_address:
          type: string
          description: Sede legale così come riportata nel registro.
        company_type:
          type: string
          description: Forma giuridica.
        registry_status:
          type: string
          description: Stato dell'azienda presso il registro delle imprese.
        verification_status:
          type: string
          description: Stato della verifica.
        alternative_names:
          type: string
          description: Altre denominazioni con cui l'azienda opera o ha operato in passato.
        nature_of_business:
          type: string
          description: Descrizione dell'attività.
        registered_capital:
          type: string
          description: Capitale sociale come stampato.
        registered_capital_amount:
          type: string
          description: Importo del capitale sociale, come stringa decimale.
        registered_capital_currency:
          type: string
          description: Valuta del capitale sociale (ISO 4217).
        website:
          type: string
          description: Sito web.
        email:
          type: string
          description: Email di contatto.
        phone:
          type: string
          description: Telefono di contatto.
        legal_entity_identifier:
          type: string
          description: Identificativo dell'entità giuridica (LEI).
        location_of_registration:
          type: string
          description: Luogo di registrazione.
        control_scheme:
          type: string
          description: Modello di governance quando il registro lo espone.
        ownership_error:
          type: string
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
          description: >-
            Il motivo per cui un livello dell'assetto proprietario richiesto non
            è stato consegnato, con gli stessi codici di
            `ownership.unavailable_reason`. `no_owners_on_record` (il registro
            ha risposto e non indica alcun proprietario) e
            `ownership_section_unavailable` (il registro non ha restituito la
            sezione dell'assetto proprietario) sono esiti differenti.
        section_errors:
          type: object
          description: >-
            Sezioni non restituite dal registro delle imprese, indicizzate per
            sezione (`officers`, `shareholders`, `group_structure`). Una sezione
            elencata qui non è mai stata consegnata: un elenco vuoto accanto ad
            essa non indica nulla sull'azienda.
          additionalProperties:
            $ref: '#/components/schemas/KYBRegistrySectionError'
        ubo_resolution:
          $ref: '#/components/schemas/KYBRegistryUboResolution'
        lite_enrichment:
          $ref: '#/components/schemas/KYBRegistryLiteEnrichment'
        registry_metadata:
          type: object
          additionalProperties:
            oneOf:
              - type: string
              - type: number
              - type: boolean
          description: >-
            I campi del registro relativi all'azienda, indicizzati con i nomi
            attribuiti dal registro, come valori semplici (record legacy). Sono
            inclusi solo i campi revisionati come fatti di registro.
        registry_sources:
          type: array
          description: >-
            I registri ufficiali da cui è stato letto il record (record legacy).
            Le altre fonti non vengono indicate per nome.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: >-
            Nomi con cui l'azienda era registrata in precedenza (record
            storici).
        parent_companies:
          type: array
          items:
            type: string
          description: Società controllanti indicate dal registro (record legacy).
        documents_available:
          type: integer
          description: Quante pratiche offre il registro per l'azienda (record storici).
    KYBRegistryOwnership:
      type: object
      description: >-
        L'esito del livello relativo all'assetto proprietario (Azionisti / UBO),
        nello stesso formato per ogni paese e fonte del registro.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            `delivered` quando il registro ha pubblicato l'assetto proprietario;
            `not_held` quando il registro delle imprese ha risposto e non elenca
            affatto l'azienda (vedi `unavailable_reason`); `unavailable` quando
            non ha fornito i dati sull'assetto proprietario per qualsiasi altro
            motivo (vedi `unavailable_reason`); `pending` mentre il registro lo
            sta ancora recuperando; `not_requested` per il livello Basic.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: Il livello ordinato dal workflow.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            Il livello fornito dal registro (e fatturato). Una richiesta UBO con
            risposta contenente solo azionisti diretti è `shareholders`.
        unavailable_reason:
          type: string
          nullable: true
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
            - null
          description: >-
            Il motivo per cui un livello dell'assetto proprietario richiesto non
            è stato consegnato. Null a meno che `status` non sia `unavailable` o
            `pending`.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            True quando le quote dichiarate degli azionisti diretti ammontano al
            100% (entro un punto percentuale dovuto all'arrotondamento); false
            quando non è così; null quando l'assetto proprietario non è stato
            fornito o una quota non è dichiarata.
        unresolved:
          type: array
          description: >-
            Parti della catena proprietaria che il registro non è riuscito a
            risolvere, ad esempio nessuna struttura di gruppo registrata sopra i
            proprietari diretti.
          items:
            type: object
            properties:
              reason:
                type: string
              section:
                type: string
                nullable: true
      required:
        - status
        - tier_requested
        - tier_delivered
        - unavailable_reason
        - direct_ownership_complete
        - unresolved
    KYBOwnershipStructure:
      type: object
      nullable: true
      description: >-
        La cap table attestata dal registro, nello stato in cui si trovava al
        momento della consegna del livello sull'assetto proprietario:
        `shareholders` e `beneficial_owners` diretti. Null quando il registro
        non ha attestato alcun assetto proprietario. Non include mai le righe
        proprie della fonte del registro; consulta `company.beneficial_owners` e
        `company.ownership` per il record corrente.
      properties:
        shareholders:
          type: array
          items:
            $ref: '#/components/schemas/KYBOwnershipStructureOwner'
        beneficial_owners:
          type: array
          items:
            $ref: '#/components/schemas/KYBOwnershipStructureOwner'
      required:
        - shareholders
        - beneficial_owners
    InvestigatorBlock:
      type: object
      nullable: true
      description: >-
        L'ultima revisione Investigator dell'elemento, o null se non ne ha mai
        avuta una. Inclusa nella decisione della sessione V3 e della sessione
        aziendale (e quindi dai webhook `status.updated`).
      properties:
        run_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - running
            - completed
            - failed
        stage:
          type: string
          enum:
            - shadow
            - live
        queue:
          type: string
          enum:
            - kyc
            - kyb
            - aml
            - transactions
            - cases
        is_open:
          type: boolean
        recommendation:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
          nullable: true
        recommendation_detail:
          type: string
          nullable: true
        confidence:
          type: string
          enum:
            - high
            - moderate
            - low
          nullable: true
        summary:
          type: string
          nullable: true
        ready_to_accept:
          type: boolean
        prepared_at:
          type: string
          format: date-time
          nullable: true
        automated:
          type: boolean
          description: >-
            L'Investigator ha deciso in autonomia, anche se la decisione è stata
            successivamente sovrascritta.
        decided_by:
          type: string
          enum:
            - investigator
            - member
          nullable: true
        decision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/InvestigatorDecision'
          type: object
    BiometricRetention:
      type: object
      description: >-
        Quando i dati biometrici acquisiti durante questa sessione vengono
        eliminati.
      required:
        - jurisdictions
        - deletes_at
      properties:
        jurisdictions:
          type: array
          items:
            type: string
          description: >-
            Codici degli stati degli Stati Uniti le cui norme biometriche
            stabiliscono un limite di cancellazione per questa persona (`US` se
            lo stato è sconosciuto). Vuoto se non si applica alcuno stato.
        deletes_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            La data in cui i dati biometrici live (immagini del volto e modelli
            biometrici) di questa sessione vengono eliminati, in base
            all'impostazione di conservazione della tua applicazione e, ove
            applicabile, al limite legale per la giurisdizione della persona.
            `null` quando non è ancora applicabile alcuna data.
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Identificatore della piattaforma.
          example: whatsapp
        category:
          type: string
          description: >-
            Categoria della piattaforma, ad es. MESSAGING, SOCIAL_MEDIA,
            ECOMMERCE, PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` per piattaforme globali, `local` per quelle specifiche di
            una regione.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: >-
            Piattaforme in questa categoria in cui la registrazione è
            confermata.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Quota delle piattaforme verificate della categoria con una
            registrazione, 0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nome del profilo, se esposto dalla piattaforma.
        photo:
          type: string
          nullable: true
          description: URL della foto del profilo, se esposto dalla piattaforma.
        about:
          type: string
          nullable: true
          description: >-
            Testo della bio/sezione informazioni del profilo, se esposto dalla
            piattaforma.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilità del profilo, se esposta dalla piattaforma.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Indica se il profilo è un account aziendale, quando la piattaforma
            lo rende disponibile.
    SignatureFieldResult:
      type: object
      description: >-
        Un campo di un documento firmato, con il relativo valore sulla copia di
        questo firmatario. Vedi
        [Campi](/it/core-technology/electronic-signature/report-electronic-signature#campi).
      properties:
        key:
          type: string
          description: La chiave del campo, come utilizzata in `sign.field_values`.
        type:
          type: string
          enum:
            - signature
            - initials
            - full_name
            - date_signed
            - text
            - checkbox
            - email
            - data
        role:
          type: string
          enum:
            - verified_person
            - legal_representative
            - key_people
        label:
          type: string
        page:
          type: integer
          description: >-
            Numero di pagina, a partire da 1. Per un documento Word, una pagina
            del PDF convertito.
        x:
          type: number
          description: Bordo sinistro, espresso come frazione della larghezza della pagina.
        'y':
          type: number
          description: Bordo superiore, espresso come frazione dell'altezza della pagina.
        width:
          type: number
          description: Larghezza, come frazione della larghezza della pagina.
        height:
          type: number
          description: Altezza, come frazione dell'altezza della pagina.
        required:
          type: boolean
        value:
          nullable: true
          description: >-
            Una stringa per `text`, `email`, `full_name`, `date_signed` e
            `data`, un booleano per `checkbox` e `true` per una firma o iniziali
            apposte. `null` se vuoto.
        display_value:
          type: string
          nullable: true
          description: >-
            Il valore così come impresso sulla pagina: date nel `date_format`
            del campo, `Yes` o `No` per una casella di controllo, `Signed` per
            una firma o iniziali.
        value_source:
          type: string
          nullable: true
          enum:
            - signer
            - identity
            - contact
            - company
            - session
            - metadata
            - api
            - signing_time
            - null
          description: >-
            Da dove proviene il valore: `signer` (digitato, selezionato o
            applicato dal firmatario), `identity` (l'identità verificata),
            `contact` (l'email o il telefono verificati), `company` (l'azienda
            verificata), `session` (`vendor_data`), `metadata`, `api`
            (`sign.field_values`) o `signing_time` (la data della firma).
        filled_at:
          type: string
          format: date-time
          nullable: true
        image_url:
          type: string
          nullable: true
          description: >-
            Solo firma e iniziali: il percorso dell'immagine applicata. Consulta
            [Scarica un'immagine di
            firma](/it/sessions-api/electronic-signature/download-field-image).
        value_unavailable_reason:
          type: string
          nullable: true
          enum:
            - source_empty
            - null
          description: >-
            `source_empty` quando un campo precompilato non aveva alcun valore
            nella sessione e `signature_field_data_missing_action` ha consentito
            comunque al firmatario di firmare.
    KYBRegistrySectionError:
      type: object
      description: Una sezione non restituita dal registro.
      properties:
        status_code:
          type: integer
          nullable: true
          description: Lo stato restituito dal registro per la sezione.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: >-
        In che modo il livello UBO ha risalito la catena proprietaria a monte
        dell'azienda.
      properties:
        parent_chain:
          type: array
          description: Società controllanti, dalla controllante finale fino all'azienda.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: >-
            Aziende direttamente controllate dall'azienda all'interno del suo
            gruppo societario.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: >-
            Parti della catena che il registro non è riuscito a risolvere (le
            stesse voci di `ownership.unresolved`).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  Il motivo, ad esempio `no_group_structure_on_record`,
                  `selected_company_not_in_group_structure` o `section_error`.
              section:
                type: string
                nullable: true
                description: La sezione interessata, ad esempio `group_structure`.
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: >-
        Campi vuoti del profilo Lite compilati da un'altra delle fonti del
        registro del paese. La fonte non viene specificata.
      properties:
        fields:
          type: array
          items:
            type: string
          description: I campi aziendali che sono stati compilati.
        people_added:
          type: integer
          description: Quanti amministratori o titolari sono stati aggiunti.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: >-
        Un registro ufficiale da cui è stato letto il record. Vengono indicati
        solo i registri governativi ufficiali, le autorità di regolamentazione e
        il sistema di identificazione ufficiale; qualsiasi altra fonte viene
        esclusa.
      properties:
        name:
          type: string
          description: Nome del registro, ad esempio `UK Companies House`.
        source_type:
          type: string
          enum:
            - official
          description: Sempre `official`.
      required:
        - name
        - source_type
    KYBOwnershipStructureOwner:
      type: object
      description: >-
        Un proprietario dello snapshot dell'assetto proprietario: la stessa
        identità del registro e la stessa quota di
        `company.beneficial_owners[]`, e la sua `shareholding` canonica.
      properties:
        name:
          type: string
          nullable: true
          description: Nome del titolare come indicato nel registro delle imprese.
        first_name:
          type: string
          nullable: true
          description: Nome, per una persona fisica, quando indicato dal registro.
        last_name:
          type: string
          nullable: true
          description: Cognome, per una persona fisica, quando indicato dal registro.
        date_of_birth:
          type: string
          nullable: true
          description: Data di nascita (ISO 8601) quando il registro la pubblica.
        country_of_birth:
          type: string
          nullable: true
          description: Paese di nascita quando il registro lo pubblica.
        company_name:
          type: string
          nullable: true
          description: Ragione sociale, per un proprietario persona giuridica.
        registration_number:
          type: string
          nullable: true
          description: Numero di registrazione, per un titolare persona giuridica.
        entity_type:
          type: string
          nullable: true
          enum:
            - person
            - company
            - null
          description: Indica se il titolare è una persona fisica o un'azienda.
        nationality:
          type: string
          nullable: true
          description: Nazionalità, se indicata dal registro.
        designation:
          type: string
          nullable: true
          description: >-
            La qualifica o il ruolo del proprietario così come riportato nel
            registro.
        roles:
          type: array
          items:
            type: string
          description: >-
            `shareholder` per un titolare diretto, `ubo` per un titolare
            effettivo.
        ownership_min_shares:
          type: string
          nullable: true
          description: >-
            Limite inferiore della quota di partecipazione, in percentuale
            (uguale al limite superiore per una quota esatta).
        ownership_max_shares:
          type: string
          nullable: true
          description: Limite superiore della quota, in percentuale.
        voting_min_shares:
          type: string
          nullable: true
          description: Limite inferiore dei diritti di voto, in percentuale.
        voting_max_shares:
          type: string
          nullable: true
          description: Limite superiore dei diritti di voto, in percentuale.
        appointment_date:
          type: string
          nullable: true
          description: Data di inizio della partecipazione o dell'incarico (ISO 8601).
        is_active:
          type: boolean
          nullable: true
          description: False per un ex titolare.
        shareholding:
          $ref: '#/components/schemas/KYBRegistryShareholding'
      required:
        - name
        - first_name
        - last_name
        - date_of_birth
        - country_of_birth
        - company_name
        - registration_number
        - entity_type
        - nationality
        - designation
        - roles
        - ownership_min_shares
        - ownership_max_shares
        - voting_min_shares
        - voting_max_shares
        - appointment_date
        - is_active
        - shareholding
    InvestigatorDecision:
      type: object
      description: >-
        Come l'elemento è uscito dalla coda Investigator. `decided_by`,
        `original_outcome` e `overrides` sono restituiti dagli endpoint di
        approvazione e modifica (override) e dal report; il blocco
        `investigator` di una decisione di sessione contiene gli altri campi.
      properties:
        outcome:
          type: string
          enum:
            - accepted
            - edited
            - overridden
            - decided_elsewhere
            - automated
          description: >-
            `accepted` o `edited` ha accolto la raccomandazione (`edited` con
            una narrativa riscritta), `overridden` ha intrapreso un'altra
            azione, `decided_elsewhere` è una decisione presa all'esterno
            dell'Investigator mentre il report era aperto, `automated` è una
            decisione che l'Investigator ha preso autonomamente.
        action:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
        actor_email:
          type: string
          nullable: true
        actor_name:
          type: string
          nullable: true
        override_category:
          type: string
          enum:
            - missing_context
            - needs_information
            - policy_differs
            - evidence_misread
            - other
            - ''
          nullable: true
        override_reason:
          type: string
          nullable: true
        final_status:
          type: string
          description: Lo stato dell'elemento dopo la decisione.
        agreed:
          type: boolean
          description: Indica se la decisione corrispondeva alla raccomandazione.
          nullable: true
        decided_at:
          type: string
          format: date-time
        billed:
          type: boolean
          description: La revisione è stata addebitata.
        decided_by:
          type: string
          enum:
            - investigator
            - member
        original_outcome:
          type: object
          description: >-
            La decisione presa autonomamente dall'Investigator, non modificata
            da successive sovrascritture. Null per una decisione presa dal team.
          properties:
            action:
              type: string
            final_status:
              type: string
            decided_at:
              type: string
              format: date-time
          nullable: true
        overrides:
          type: array
          description: >-
            Ogni override di una decisione presa autonomamente
            dall'Investigator, dalla più vecchia alla più recente.
          items:
            type: object
            properties:
              action:
                type: string
              actor_email:
                type: string
                nullable: true
              actor_name:
                type: string
                nullable: true
              override_category:
                type: string
              override_reason:
                type: string
              previous_status:
                type: string
              final_status:
                type: string
              agreed:
                type: boolean
                nullable: true
              overridden_at:
                type: string
                format: date-time
    KYBRegistryGroupCompany:
      type: object
      description: >-
        Un'azienda del gruppo societario, identificata tramite il registro delle
        imprese.
      properties:
        name:
          type: string
          nullable: true
          description: Ragione sociale.
        country_code:
          type: string
          nullable: true
          description: Paese di registrazione.
        registration_number:
          type: string
          nullable: true
          description: Numero di registrazione.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

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