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

# Sitzung abrufen API: KYC- und KYB-Entscheidungsdaten

> Didit-API: GET liefert KYC- und KYB-Entscheidungen mit Identitäts-, Liveness-, AML-, Register- und OCR-Daten. Unter 2s, abgerechnet pro Aufruf.



Prompt zum Abrufen der Sitzungsentscheidung
        Prompt in die Zwischenablage kopieren



      
      

\<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>



      
      

Einfügen in

## KYC- und KYB-UnterstützungDieser Endpoint funktioniert sowohl für Sitzungen zur **Benutzerverifizierung (KYC)** als auch zur **Unternehmensverifizierung (KYB)**. Die Antwort enthält immer ein oberstes Feld `session_kind`:- `"user"`: Sitzung zur Benutzerverifizierung (KYC). Die Antwort enthält `id_verifications`, `liveness_checks`, `face_matches`, `nfc_verifications`, `poa_verifications` und `database_validations`.
- `"business"`: Sitzung zur Unternehmensverifizierung (KYB). Die Antwort enthält `registry_checks`, `document_verifications` und `key_people_checks`.Beide Arten enthalten `aml_screenings`, `phone_verifications`, `email_verifications`, `questionnaire_responses`, `ip_analyses`, `document_ai_documents`, `bank_verifications`, `reviews` und `contact_details`. Außerdem enthalten beide die gemeinsamen Felder auf oberster Ebene: `session_id`, `session_number`, `session_url`, `status`, `workflow_id`, `vendor_data`, `metadata`, `callback`, `features`, `expected_details`, `created_at` und `expires_at`.Didit gleicht die `session_id` mit beiden Sitzungsarten ab, zuerst mit der Benutzerverifizierung (KYC), dann mit der Unternehmensverifizierung (KYB), und gibt die passende Sitzung zurück. UUIDs sind innerhalb einer Anwendung eindeutig, daher gibt es keine Mehrdeutigkeit.Die vollständige Übersicht der typspezifischen Funktionen finden Sie in der [Übersicht über Sitzungen](https://docs.didit.me/de/sessions-api/overview.md).## Beispiele> [tab] Benutzerverifizierung (KYC)
>
> ```bash theme={null}
> curl https://verification.didit.me/v3/session/4c5c7f3a-1f82-4f3b-8d8e-1a8d2d2f9b7a/decision/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> **Antwort (gekürzt):**
>
> ```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] Unternehmensverifizierung (KYB)
>
> ```bash theme={null}
> curl https://verification.didit.me/v3/session/bs-01HJX1.../decision/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> **Antwort (gekürzt):**
>
> ```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"
> }
> ```## Verarbeitung der Antwort auf Ihrer Seite```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;
}
```## Status, Entscheidungsverlauf und PrüffelderJede Entscheidung zeigt, wie ihr `status` zustande gekommen ist.| Feld | Was Sie hier ablesen |
| - | - |
| `status_override` | `null`, wenn der Status automatisch ermittelt wurde. Hat ein Prüfer den Status manuell gesetzt, lautet der Wert `{ overridden_at, automatic_status }`. `automatic_status` ist das Ergebnis, zu dem die Prüfungen kommen. Damit erkennen Sie, ob eine Genehmigung manuell oder automatisch erfolgt ist. |
| `decision_trace` | `status`, `decided_by` (`manual`, `automatic` oder `investigator`; `null`, solange die Sitzung nicht entschieden ist), `decided_at`, `automatic_status`, `terminal_node_id`, `actor` (der Prüfer, der die manuelle Entscheidung getroffen hat), `warning_counts` je `log_type` sowie `total` und `status_warnings`, also die Warnungen, die einen Status `Declined` oder `In Review` ausgelöst haben. |
| `linked_records` | Eine Zusammenfassung, womit die Verifizierung sonst noch verknüpft ist: `same_face` (andere Personen, deren Gesicht übereinstimmte, und die engste Übereinstimmung), `earlier_verifications` (die Anzahl der Verifizierungen für dieselbe Person) und `networks`. `null`, wenn es nichts anzuzeigen gibt. |
| `assignee`, `waiting_since`, `sla_due_at` | Der Prüfer in der Console, dem die Sitzung zugewiesen ist, seit wann sie wartet und bis wann die Prüfung fällig ist. `waiting_since` und `sla_due_at` sind `null`, außer die Sitzung ist `In Review` und Ihre Anwendung legt eine Prüffrist fest. |
| `database_validation_not_performed_reason` | `{ code, message }` erklärt, warum eine konfigurierte Datenbankvalidierung kein Ergebnis geliefert hat. Ist `database_validations` `null`, unterscheidet dieses Feld zwischen „das Register hat zugestimmt“ und „es wurde nichts ausgeführt“. |
| `shared_from_session`, `shared_from_session_number` | Die Quellsitzung, wenn diese Sitzung mit `POST /v3/session/import-shared/` importiert wurde, sonst `null`. |
| `sandbox_scenario` | Das Szenario, mit dem eine Sandbox-Sitzung erstellt wurde. |
| `full_session_video`, `full_session_video_recorded_at` | Eine URL zur Aufzeichnung mit Ablaufdatum und der Zeitpunkt, zu dem sie entstanden ist. Wird nur zurückgegeben, wenn Ihre Organisation Videos der gesamten Sitzung aufzeichnet. |## Aufbewahrung biometrischer Daten`biometric_retention` ist immer vorhanden. `deletes_at` ist das Datum, an dem die Live-Daten zur Biometrie der Sitzung gelöscht werden. `jurisdictions` listet die US-Bundesstaaten auf, deren biometrische Vorschriften für die Person eine Löschfrist festlegen (`US`, wenn der Bundesstaat unbekannt ist). `deletes_at` ist `null`, solange noch kein Datum gilt.## StandortverifizierungEnthält der Workflow einen Schritt zur [Standortverifizierung](https://docs.didit.me/de/core-technology/location-verification/overview.md), enthält die Entscheidung zwei Arrays. `geolocation_checks[]` hat je Schritt ein Element: den akzeptierten Versuch mit dem Ergebnis, den Koordinaten und deren Genauigkeit, den Abgleichen mit dem IP-Standort und der hinterlegten Adresse sowie die `warnings` des Schritts. `geolocation_attempts[]` listet jeden Versuch jedes Schritts auf, den ältesten zuerst, mit dem Zeitpunkt des Eingangs. Workflows ohne diesen Schritt liefern beide Felder als `null`. Alle Felder und Ergebnisse finden Sie im [Bericht zur Standortverifizierung](https://docs.didit.me/de/core-technology/location-verification/report-location-verification.md).## Workflow-Routing-Ereignisse`?include=events` fügt den Ereignisverlauf der Sitzung hinzu. Neben den Schritt- und Statusänderungen hinterlässt ein Workflow, der über Verzweigungsknoten läuft, pro Routing-Entscheidung ein Ereignis. So kann eine Integration (oder die Zeitleiste in der Console) erklären, warum eine Sitzung mit einem bestimmten Ergebnis endete, ohne den Workflow-Graphen manuell nachzuvollziehen:| `event_type` | Wann es erstellt wird | `details` |
| - | - | - |
| `WORKFLOW_BRANCH_EVALUATED` | Ein Knoten mit Verzweigungsbedingungen wurde ausgewertet, während die Sitzung voranschritt (Verzweigungsknoten sowie Funktions- oder Webhook-Knoten mit Verzweigungen) | `node_id`, `node_label`, `node_type`, `matched_branch_id` (die passende Verzweigung oder `null`, wenn keine passte), `fallback` (`true`, wenn keine Bedingung zutraf und die Standardkante des Knotens genommen wurde), `next_node_id`, `next_node_label` |
| `WORKFLOW_STATUS_NODE_REACHED` | Ein Statusknoten wurde ausgeführt | `node_id`, `node_label`, `session_status` (der konfigurierte Wert, einschließlich `Determine`), `resolved_session_status` (der aufgelöste Wert), `feature_statuses` (`[{target, status}]`) |Beide Ereignisse enthalten wie alle anderen Ereignisse `sent_at` in Millisekunden und haben kein `component`, `feature_step` oder `step`: Sie stammen von der Workflow-Engine und nicht vom Gerät des Benutzers. Eine „else“-Verzweigung (eine Verzweigung ohne Bedingungen) zählt als passende Verzweigung; `fallback` ist nur dann `true`, wenn nichts zutraf. Knoten mit nur einer ausgehenden Kante treffen keine Entscheidung und hinterlassen kein Ereignis.Dieselbe Struktur enthält außerdem `workflow_terminal_node_id`: die `node_id` des zuletzt aufgezeichneten Workflow-Statusknotens, der einen Sitzungsstatus gesetzt hat, oder `null`, wenn keine solche Knoten-ID aufgezeichnet wurde. Dies ist die historische Herkunft des Workflows. Manuelle Genehmigungen, Ablehnungen und erneute Einreichungen löschen diesen Wert nicht; ein späterer Workflow-Statusknoten ersetzt ihn. Wenn ein Workflow beispielsweise eine Sitzung an einen Knoten *In Review* sendet und ein Prüfer sie anschließend genehmigt, lautet der aktuelle `status` `Approved`, während `workflow_terminal_node_id` weiterhin auf den Knoten *In Review* verweist. Der Wert kann auch belegt bleiben, während eine erneute Einreichung läuft. Lesen Sie den aktuellen `status` sowie die Ereignis- und `activity_reviews`-Zeitleisten, um Workflow-Ergebnisse von späteren manuellen Entscheidungen zu unterscheiden.```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"
  }
}
```## Frühere Einreichungen (`?include=resubmissions`)Eine erneute Einreichung schickt den Benutzer zu den von Ihnen ausgewählten Schritten zurück und behält bei, was diese Schritte zuvor zurückgegeben haben.
`?include=resubmissions` fügt ein Array `resubmissions` hinzu, das älteste zuerst, mit einem Eintrag pro Anfrage zur erneuten Einreichung.
Jeder Eintrag enthält die Ergebnisse, die diese Anfrage ersetzt hat, sodass Sie jederzeit nachlesen können, was der Benutzer zuvor eingereicht hat.
Es funktioniert für Benutzer-Sitzungen (KYC) und Unternehmens-Sitzungen (KYB), und Sie können es mit Ereignissen kombinieren (`?include=events,resubmissions`).
Ohne den Parameter bleibt die Antwort unverändert.| Feld | Beschreibung |
| - | - |
| `number` | 1 für die erste erneute Einreichung der Sitzung, 2 für die zweite usw. |
| `created_at` | Wann die erneute Einreichung angefordert wurde. |
| `previous_status` | Der Sitzungsstatus unmittelbar vor der Anfrage. |
| `nodes` | Die Workflow-Schritte, die an den Benutzer zurückgeschickt wurden (`[{node_id, feature}]`). |
| `reasons` | Der Grund für jeden Schritt, geschlüsselt nach `node_id`, oder `null`. |
| `requested_by` | Wer die Anfrage gestellt hat (`name`, `email`, `type`), oder `null`. |
| `results` | Was diese Schritte vor der Anfrage zurückgegeben haben, unter denselben Schlüsseln und in derselben Form wie die aktuellen Ergebnisse (`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`; bei Unternehmenssitzungen zusätzlich `document_verifications`). Es erscheinen nur die Schlüssel der Schritte, die zurückgeschickt wurden. |Die aktuellen Ergebnisse (`id_verifications` und die übrigen auf oberster Ebene) beschreiben immer die neueste Einreichung.
Schritte, die nicht zurückgeschickt wurden, behalten dort ein einziges Ergebnis.```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" }]
          }
        ]
      }
    }
  ]
}
```Wenn Sie eine Sitzung löschen, werden die Ergebnisse aller Einreichungen zusammen mit ihr gelöscht.## AusweisverifizierungsmethodenJedes Element in `id_verifications[]` gibt an, welche der drei [Ausweisverifizierungsmethoden](https://docs.didit.me/de/core-technology/id-verification/verification-methods.md) es erzeugt hat. So erkennen Sie, ob ein Dokument ausgelesen, ein Register abgefragt oder eine Wallet-Anmeldung durchgeführt wurde, ohne dies aus den jeweils ausgefüllten Feldern zu erraten:| Feld | Wert |
| - | - |
| `verification_method` | `document`, `id_lookup` oder `wallet` |
| `assurance` | `documentary`, `data_match` oder `cryptographic` |
| `wallet_provider` | Wallet-ID aus dem Katalog, wenn eine Wallet das Ergebnis erzeugt hat, andernfalls `null` |
| `id_lookup` | Registernachweis: Quelle, Versuche, feldweiser Vergleich, Registerporträt, oder `null` |
| `wallet_verification` | Nachweis der Zugangsdaten: Anbieter, ausstellende Behörde, Vertrauensniveau, Gültigkeit der Signatur, geteilte Attribute, oder `null` |
| `fallback_from` | Grund, warum eine nicht-dokumentbasierte Methode den ID-Schritt nicht beendet hat: die Methode, der Grund und ob der Benutzer auf die Dokumentenaufnahme zurückgegriffen hat oder abgelehnt wurde |Eine Dokumentsitzung meldet `document` und `documentary` und belässt die übrigen Felder auf `null`, daher benötigen bestehende Integrationen keine Anpassung. Die Typen der einzelnen Felder finden Sie unter [Datenmodelle](https://docs.didit.me/de/reference/data-models.md#ausweisverifizierung).## Biometrische EinwilligungEntscheidungen der Benutzerverifizierung enthalten ein Objekt `biometric_consent`: ob die Sitzung eine ausdrückliche biometrische Einwilligung verlangt hat, den `trigger`, der sie verlangt hat, den `status` der Antwort und deren Nachweis. Zwei Werte zeigen an, dass die Einwilligung nicht eingeholt wurde:| Feld | Wert | Bedeutung |
| - | - | - |
| `status` + `reason` | `pending` + `BIOMETRIC_CONSENT_UNSUPPORTED_SDK` | Ein natives SDK unterhalb von 4.10.0 oder ein SDK, das seine Version nicht gemeldet hat, hat ein Gesicht ohne den Einwilligungsschritt erfasst. Die Sitzung lief wie bisher weiter. |
| `status` + `reason` | `declined` + `BIOMETRIC_CONSENT_DECLINED` | Eine Ablehnung wurde erfasst. Die Sitzung ist `Declined`, und ihre Gesichtsdaten wurden gelöscht. Derzeit bietet kein Didit-Bildschirm eine Ablehnung an. |Wann der Schritt erscheint und was die einzelnen Werte bedeuten, steht unter [Biometrische Einwilligung](https://docs.didit.me/de/getting-started/biometric-consent.md); jedes Feld steht unter [Datenmodelle](https://docs.didit.me/de/reference/data-models.md#biometrische-einwilligung).## BankverifizierungWenn der Workflow einen [Bankverifizierungs](https://docs.didit.me/de/core-technology/bank-verification/verification-methods.md)-Schritt enthält, enthält die Entscheidung `bank_verifications[]` für beide Sitzungsarten: einen Eintrag pro Schritt, und `null`, bis ein Schritt einen Eintrag erzeugt.| Feld | Was Sie auslesen |
| - | - |
| `status` | Das Urteil des Schritts: `Approved`, `In Review`, `Declined`, `Not Finished` oder `Expired`. |
| `method` | Wie das Konto verifiziert wurde: `open_banking` (Bank-Anmeldung), `account_lookup` (Kontoprüfung), `microdeposits` oder `statement`. `null`, bis ein Konto geprüft wird, und `none`, wenn die Person ohne Bank fortfährt, bevor ein Versuch ausgewertet wurde. |
| `continued_without_bank`, `continuation` | Ob die Person **Continue without your bank** gewählt hat und warum: `continuation.reason` ist `no_route`, `institution_unsupported`, `attempts_exhausted` oder `person_choice`. Bei `institution_unsupported` nennt `continuation.institution_name` die Bank, die die Person nicht nutzen konnte. |
| `ownership` | Wie der Kontoinhaber mit der verifizierten Identität übereinstimmt: `result` ist `match`, `partial_match` (eine annähernde Übereinstimmung), `no_match`, `not_verifiable` oder `unknown`. |
| `account` | Das verifizierte Konto, maskiert. |
| `financial_data` | Salden, Transaktionen und Einkommen, nur über die Bank-Anmeldung erfasst. `not_collected` listet die Daten, die der Schritt angefordert hat, die die Methode aber nicht erfasst hat, zum Beispiel nach einer Kontoprüfung. |
| `connection` | Der neueste Versuch: sein Status, die Bank, die verbrauchten Versuche und ein `reason_code`. |Unterscheiden Sie die Bank-Anmeldung von der Kontoprüfung anhand von `method`, nicht anhand von `ownership.method`: `ownership.method` ist der Namensvergleich, der den Score erzeugt hat. Jedes Feld ist im Schema `BankVerificationResult` der Antwort dieses Endpoints enthalten.## E-SignaturWenn der Workflow einen [E-Signatur](https://docs.didit.me/de/core-technology/electronic-signature/overview.md)-Schritt enthält, enthält die Entscheidung `signatures[]` für beide Sitzungsarten. Es gibt einen Eintrag pro Unterzeichner: einen bei einer Benutzerverifizierung, einen pro Schlüsselperson, die bei einer Unternehmensverifizierung unterzeichnet. Workflows ohne diesen Schritt geben den Schlüssel gar nicht zurück.| Feld | Was Sie auslesen |
| - | - |
| `status` | `signed`, sobald die Dokumente unterzeichnet sind. Jeder andere Wert bedeutet, dass noch keine Signatur vorliegt. |
| `verdict` | `Approved`, `In Review`, `Declined` oder `Not Finished`, festgelegt durch die Regeln des Schritts. |
| `signer`, `identity_used` | Wer unterzeichnet hat und die verifizierte Identität dahinter. |
| `confirmation`, `certificate`, `timestamp` | Die Bestätigung per Einmalcode und die kryptografischen Nachweise. |
| `documents[]` | Die Hashes jedes Dokuments, sein Status, sein Pfad `signed_file` und seine `fields[]` mit Werten. |
| `evidence_file` | Pfad des Nachweis-PDFs des Unterzeichners. |Laden Sie die Dateien mit Ihrem API-Schlüssel über die Pfade herunter. Alle Felder finden Sie im [E-Signatur-Bericht](https://docs.didit.me/de/core-technology/electronic-signature/report-electronic-signature.md).## Fehler| Status | Grund |
| - | - |
| `404` | Für diese Anwendung existiert keine Sitzung mit dieser `session_id` (beide Sitzungsarten werden geprüft). |
| `403` | Berechtigung `read:sessions` fehlt. |
| `401` | Ungültiger API-Schlüssel. |## Verwandte Themen- [Sitzungsübersicht](https://docs.didit.me/de/sessions-api/overview.md): Unterscheidung der Sitzungsarten und Funktionsmatrix.
- [KYB-Antwortschema](https://docs.didit.me/de/business-verification/response-schema.md): feldweise Referenz der Unternehmensentscheidung.
- [Verifizierungsstatus](https://docs.didit.me/de/integration/verification-statuses.md): Statusmodell, das beide Sitzungsarten nutzen.
- [Webhooks](https://docs.didit.me/de/integration/webhooks.md): abonnieren Sie `status.updated` für Benutzer- und Unternehmensverifizierungs-Sitzungen (filtern Sie nach `session_kind`).
- [Ausweisverifizierungsmethoden](https://docs.didit.me/de/core-technology/id-verification/verification-methods.md): Dokumentenerfassung, Abfrage ohne Dokument und digitale ID-Wallets sowie welche Daten jede davon in der Sitzung hinterlegt.
- [Biometrische Einwilligung](https://docs.didit.me/de/getting-started/biometric-consent.md): wann der Ablauf eine ausdrückliche biometrische Einwilligung verlangt sowie das Objekt `biometric_consent`.
- [E-Signatur-Bericht](https://docs.didit.me/de/core-technology/electronic-signature/report-electronic-signature.md): `signatures[]`, die signierten PDFs und die Nachweise.
- [Bankverifizierungsmethoden](https://docs.didit.me/de/core-technology/bank-verification/verification-methods.md): `bank_verifications[]` und sein `method`.
- [Wenn die Person ihre Bank nicht verifizieren kann](https://docs.didit.me/de/core-technology/bank-verification/fallbacks.md): `continued_without_bank`, `continuation` und das Ergebnis für jeden Grund.


## OpenAPI

````yaml de/openapi-25.json GET /v3/session/{sessionId}/decision/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API für Ausweisverifizierung. Authentifizierung über den x-api-key-Header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/decision/:
    get:
      tags:
        - Sessions
      summary: Vollständige Entscheidung für eine Verifizierungssitzung abrufen
      description: >-
        Rufen Sie den vollständigen Entscheidungsbericht für eine
        Verifizierungssitzung ab — den zusammengefassten Sitzungs-`status` plus
        einen Bericht pro Verifizierungsfunktion, die der Workflow ausgeführt
        hat. Dies ist der kanonische Lese-Endpoint sowohl für
        Benutzerverifizierungs- (KYC) als auch für
        Unternehmensverifizierungs-Sitzungen (KYB): Derselbe Pfad bedient beide,
        und der Diskriminator `session_kind` auf oberster Ebene gibt an, welche
        Struktur Sie erhalten haben (`"user"` oder `"business"`).


        **Jeder Funktionsbericht ist ein Array im Plural.** V3-Workflows sind
        Graphen, die dieselbe Funktion mehr als einmal ausführen können, sodass
        jeder Block (`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`) ein
        JSON-Array ist, dessen Elemente jeweils eine `node_id` tragen, die den
        Workflow-Graphknoten identifiziert, der sie erzeugt hat. Lesen Sie NFC
        als `response.nfc_verifications[0]` aus — niemals als einzelnes
        `nfc`-Feld. Ein Block ist `null`, bis der Workflow diese Funktion
        mindestens einmal ausgeführt hat; Funktionen, die der Workflow nicht
        enthält, erscheinen nie mit Daten. E-Signatur-Ergebnisse befinden sich
        in `signatures`, das nur vorhanden ist, wenn der Workflow einen
        E-Signatur-Schritt enthält.


        **Wann aufzurufen ist.** Das empfohlene Muster ist ereignisgesteuert:
        Warten Sie auf den Webhook `status.updated`, der ausgelöst wird, wenn
        die Sitzung eine Entscheidung (`Approved`, `Declined`, `In Review`)
        erreicht, und rufen Sie dann diesen Endpoint einmal auf, um den
        vollständigen Bericht abzurufen. Polling funktioniert ebenfalls — der
        Endpoint kann zu jedem Zeitpunkt im Lebenszyklus der Sitzung aufgerufen
        werden und gibt die bisher erzeugten Daten zurück —, aber die
        Kombination aus Webhook und anschließendem Abruf ist kostengünstiger und
        schneller. Medien-URLs in der Antwort (Dokumentenbilder, Videos, PDFs)
        sind kurzlebige vorab signierte Links: Rufen Sie sie zeitnah ab oder
        fordern Sie die Entscheidung erneut an, um frische Links zu erhalten,
        und speichern Sie sie nicht als langfristige Referenzen.


        **Status.** Der `status` auf oberster Ebene ist der Lebenszyklus-Status
        der Sitzung (`Not Started`, `In Progress`, `Awaiting User`, `In Review`,
        `Approved`, `Declined`, `Resubmitted`, `Expired`, `Kyc Expired`,
        `Abandoned`). Jedes Funktionselement trägt zusätzlich seinen eigenen
        `status` auf Funktionsebene (`Not Finished`, `Approved`, `Declined`, `In
        Review`, ...). Eine Sitzung kann insgesamt `Approved` sein, während eine
        einzelne Funktion `In Review` ist, abhängig von den Entscheidungsregeln
        des Workflows.


        **Authentifizierung und Sichtbarkeit.** Authentifizieren Sie sich mit
        dem API-Schlüssel der Anwendung im Header `x-api-key` (ein Bearer-Token
        eines Konsolenbenutzers mit der Berechtigung `read:sessions`
        funktioniert ebenfalls). Nur Sitzungen, die der authentifizierten
        Anwendung gehören, sind sichtbar. Wenn Ihr Workflow Antwortattribute
        einschränkt, werden nicht zulässige Felder innerhalb von
        Funktionselementen als `null` zurückgegeben, während `status`,
        `warnings` und `node_id` stets erhalten bleiben.


        **Rate-Limits.** GET-Anfragen sind auf 600 pro Minute pro API-Schlüssel
        begrenzt. Das Überschreiten des Limits gibt `429` mit den Headern
        `Retry-After` und `X-RateLimit-*` zurück.
      operationId: get_v3_session_decision
      parameters:
        - name: sessionId
          in: path
          required: true
          description: >-
            UUID der Verifizierungssitzung, deren Entscheidung Sie abrufen
            möchten. Dies ist die von `POST /v3/session/` zurückgegebene
            `session_id`. Derselbe Pfad funktioniert sowohl für Sitzungen der
            Benutzerverifizierung (KYC) als auch der Unternehmensverifizierung
            (KYB) — der Server löst die ID für beide Sitzungstypen auf.


            **Muss eine gültige UUID sein.** Die Route stimmt nur mit
            wohlgeformten UUIDs überein, sodass ein fehlerhafter Wert vom
            URL-Router abgelehnt wird, bevor Anwendungscode ausgeführt wird, und
            die Antwort eine `404`-**HTML**-Seite anstelle des unten gezeigten
            JSON-Antwortobjekts `{"detail": ...}` ist. Validieren Sie das
            UUID-Format clientseitig, um einen Eingabefehler von einem echten
            `404` für eine fehlende Sitzung unterscheiden zu können.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - name: include
          in: query
          required: false
          description: >-
            Kommagetrennte Liste zusätzlicher Payload-Abschnitte. Unterstützte
            Werte: `events` und `resubmissions`, einzeln oder zusammen
            (`events,resubmissions`). Wenn `include=events` übergeben wird,
            enthält die Antwort zusätzlich die Ereignis-Timeline der Sitzung
            (`events`, einschließlich der Routing-Ereignisse
            `WORKFLOW_BRANCH_EVALUATED` / `WORKFLOW_STATUS_NODE_REACHED`, die
            auf der Seite „Sitzung abrufen“ beschrieben sind), das vollständige
            Aktivitätsprotokoll (`activity_reviews`), Sperrlisten-Flags
            (`blocklisted`), eine sitzungsbezogene Kostenaufschlüsselung
            (`cost_breakdown`), Workflow-Metadaten (`workflow_type`,
            `workflow_version`, `workflow_version_id` und
            `workflow_terminal_node_id` – der letzte erfasste
            Workflow-Statusknoten, der einen Sitzungsstatus festgelegt hat, oder
            `null`, falls keiner erfasst wurde; historische
            Herkunftsinformation, die durch manuelle Genehmigungen, Ablehnungen
            oder erneute Einreichungen nicht gelöscht wird und durch einen
            späteren Workflow-Statusknoten ersetzt wird) sowie Sitzungsmetadaten
            (`api_service` — String oder `null`, nur für
            Standalone-API-Sitzungen gesetzt; `session_type` — `API`, `HOSTED`
            oder `MIGRATED`; `has_device_nfc_support` — Boolean). Zwei Felder
            ändern sich gegenüber der einfachen Struktur: Der
            `session_kind`-Diskriminator auf oberster Ebene wird **ausgelassen**
            (die Ereignisstruktur existiert nur für Benutzersitzungen) und das
            Array `features` wechselt von einfachen Strings zu `{feature,
            node_id}`-Objekten – wobei die E-Mail-Funktion als `EMAIL` statt
            `EMAIL_VERIFICATION` gemeldet wird. Diese erweiterte Struktur wird
            hauptsächlich von der Didit Console verwendet; die meisten
            API-Integrationen sollten den Parameter weglassen.
            **KYB-Einschränkung:** `include=events` gilt nur für
            Benutzer-(KYC-)Sitzungen. Unternehmenssitzungen (`session_kind =
            "business"`) geben immer die standardmäßige
            Unternehmensentscheidungsstruktur zurück – `events`,
            `activity_reviews`, `blocklisted`, `cost_breakdown` und die
            zusätzlichen `workflow_*`-/Sitzungsmetadaten werden für
            Unternehmenssitzungen niemals zurückgegeben, und ihr
            `features`-Array bleibt ein einfaches String-Array. Mit
            `include=resubmissions` (sowohl für Benutzer- als auch für
            Unternehmenssitzungen) enthält die Antwort außerdem `resubmissions`:
            einen Eintrag pro Anfrage auf erneute Einreichung, die älteste
            zuerst, jeweils mit `number`, `created_at`, `previous_status`,
            `nodes`, `reasons`, `requested_by` und `results` (was die erneut
            eingereichten Schritte vor der Anfrage unter denselben Schlüsseln
            und in derselben Struktur wie die aktuellen Ergebnisse zurückgegeben
            haben). Jeder Eintrag in `cost_breakdown` enthält `usage_type`,
            `price`, `details` und `created_at`: Ein erneut eingereichter
            Schritt, der nochmals ausgeführt wird, wird als neuer Posten
            abgerechnet.
          schema:
            type: string
            enum:
              - events
              - resubmissions
              - events,resubmissions
            example: events
      responses:
        '200':
          description: >-
            Vollständiger Entscheidungsbericht. `session_kind` unterscheidet die
            beiden Formen: `user`-Sitzungen enthalten die unten gezeigten
            KYC-Funktions-Arrays; `business`-Sitzungen enthalten stattdessen
            `registry_checks`, `document_verifications` und `key_people_checks`
            neben den gemeinsamen Arrays. Funktions-Arrays sind `null`, bis der
            Workflow diese Funktion ausgeführt hat; Medien-URLs sind kurzlebige,
            vorsignierte Links.
          content:
            application/json:
              examples:
                Example:
                  summary: Vollständiges Beispiel
                  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: Beispiel für eine Unternehmenssitzung (KYB)
                  description: >-
                    Eine Entscheidung für `session_kind = "business"`:
                    KYB-Sitzungen ersetzen die KYC-Funktions-Arrays durch
                    `registry_checks`, `document_verifications` und
                    `key_people_checks`, während sie `aml_screenings`,
                    `phone_verifications`, `email_verifications`,
                    `questionnaire_responses`, `ip_analyses`, `reviews` und den
                    Sitzungsrahmen teilen.
                  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: >-
            Authentifizierung oder Autorisierung fehlgeschlagen. Ein fehlender
            Schlüssel gibt `403` zurück; ein falscher, widerrufener oder
            abgelaufener Schlüssel gibt `401` zurück. Zwei
            `detail`-Zeichenfolgen unterscheiden die Fehlerarten:


            - `"Authentication credentials were not provided or are invalid."` —
            kein `x-api-key`-Header (und kein `Authorization: Bearer`-Token),
            oder die übergebenen Anmeldedaten haben die Introspektion nicht
            bestanden (widerrufen, abgelaufen oder fehlerhaft formatiert).

            - `"You do not have permission to perform this action."` — die
            Anmeldedaten sind gültig, jedoch nicht berechtigt, diese Sitzung zu
            lesen: Einem Bearer-Token eines Konsolenbenutzers fehlt die
            Berechtigung `read:sessions` oder er kann nicht auf die zugehörige
            Anwendung zugreifen, oder ein API-Schlüssel gehört zu einer anderen
            Organisation als der Sitzung zugeordnet ist.


            Beachten Sie, dass der Endpoint bei einer völlig unbekannten
            `sessionId` die zugehörige Anwendung auflöst, bevor er die
            Anmeldedaten validiert, sodass eine fehlende Sitzung auch dann `404`
            zurückgibt, wenn die Anmeldedaten fehlen oder ungültig sind.
          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: >-
                    Kein x-api-key-Header vorhanden oder die
                    Schlüssel-Introspektion ist fehlgeschlagen
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Insufficient permissions:
                  summary: >-
                    Gültige Anmeldedaten, denen read:sessions oder der Zugriff
                    auf die zugehörige Anwendung fehlt
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Sitzung nicht gefunden. Wird zurückgegeben, wenn keine Live-Sitzung
            mit der angegebenen `sessionId` als Benutzerverifizierungs- (KYC)
            oder Unternehmensverifizierungs-Sitzung (KYB) übereinstimmt – eine
            gelöschte Sitzung fällt ebenfalls hierunter. Der Body entspricht dem
            Standard-`{"detail": ...}`-Envelope.


            **Zwei unterschiedliche `detail`-Strings.** Wenn die `sessionId`
            weder als KYC- noch als KYB-Sitzung bekannt ist, schlägt die Suche
            nach dem Eigentümer vor der Authentifizierung fehl und Sie erhalten
            `{"detail": "Not found."}` – dies geschieht vor der Validierung der
            Anmeldedaten und wird daher auch bei nicht authentifizierten
            Aufrufen zurückgegeben. Wenn die Sitzung existiert, aber unter der
            authentifizierten Anwendung nicht abgerufen werden kann
            (beispielsweise ein veralteter oder gerade gelöschter Datensatz),
            gibt der View `{"detail": "Session not found."}` zurück. Beide
            signalisieren dasselbe Ergebnis – auf die Sitzung kann nicht
            zugegriffen werden –, prüfen Sie daher auf den Statuscode `404`
            statt auf den String.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: Not found.
              examples:
                Unknown session id:
                  summary: sessionId ist für diese Anwendung unbekannt
                  value:
                    detail: Not found.
                Session not retrievable:
                  summary: >-
                    Sitzung existiert, kann aber für diese Anwendung nicht
                    abgerufen werden
                  value:
                    detail: Session not found.
        '429':
          description: >-
            Rate-Limit überschritten. GET-Anfragen sind auf **600 pro Minute pro
            Anmeldeinformation** begrenzt (API-Schlüssel, Bearer-Token oder
            Quell-IP, wenn nicht authentifiziert). Prüfen Sie `Retry-After` /
            `X-RateLimit-Reset` und warten Sie vor einem Wiederholungsversuch
            ab. Wenn Sie dieses Limit beim Polling nach Entscheidungen
            erreichen, wechseln Sie zum Webhook `status.updated` und rufen Sie
            die Entscheidung stattdessen einmal pro Statusänderung ab.
          headers:
            Retry-After:
              description: >-
                Anzahl der Sekunden, die vor einer erneuten Anfrage gewartet
                werden muss.
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: >-
                Maximale Anzahl an Anfragen, die im aktuellen Zeitfenster
                zulässig sind (600 für GET-Anfragen).
              schema:
                type: integer
                example: 600
            X-RateLimit-Remaining:
              description: Im aktuellen Zeitfenster verbleibende Anfragen.
              schema:
                type: integer
                example: 0
            X-RateLimit-Reset:
              description: >-
                Unix-Zeitstempel (Sekunden), zu dem das aktuelle Zeitfenster
                zurückgesetzt wird.
              schema:
                type: integer
                example: 1750000000
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Lesbare Erklärung der Rate-Limit-Überschreitung.
                    example: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
              examples:
                Throttled:
                  summary: >-
                    Mehr als 600 GET-Anfragen in einer Minute mit denselben
                    Zugangsdaten
                  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: Die eindeutige Kennung der Sitzung.
        session_kind:
          type: string
          enum:
            - user
            - business
          description: >-
            Diskriminator, der angibt, ob es sich um eine Sitzung zur
            Benutzerverifizierung (KYC) oder Unternehmensverifizierung (KYB)
            handelt. Bei `user` gelten die KYC-Funktions-Arrays
            (`id_verifications`, `nfc_verifications`, `liveness_checks`,
            `face_matches`, `poa_verifications`, `document_ai_documents`,
            `database_validations`, ...) und die Unternehmens-Arrays fehlen. Bei
            `business` enthält die Payload stattdessen `registry_checks`,
            `document_verifications`, `key_people_checks` sowie die gemeinsamen
            Arrays (`aml_screenings`, `phone_verifications`,
            `email_verifications`, `ip_analyses`, `questionnaire_responses`).
            **Wird weggelassen, wenn `include=events` übergeben wird** – die
            Ereignisstruktur existiert nur für Benutzersitzungen, daher entfällt
            der Diskriminator in dieser Variante.
        shared_from_session:
          type: string
          format: uuid
          nullable: true
          description: >-
            Für eine mit `POST /v3/session/import-shared/` geklonte Sitzung: die
            `session_id` der ursprünglichen Sitzung in der Quellanwendung.
            `null` für jede andere Sitzung. Wird weggelassen, wenn
            `include=events` übergeben wird.
        shared_from_session_number:
          type: integer
          nullable: true
          description: >-
            `session_number` der Quellsitzung, wenn diese Sitzung aus einer
            anderen Anwendung Ihrer Organisation importiert wurde. Andernfalls
            `null`.
        session_number:
          type: integer
          description: Die Nummer der Sitzung.
          nullable: true
        session_url:
          type: string
          format: uri
          description: Die URL der Sitzung.
          nullable: true
        status:
          type: string
          enum:
            - Not Started
            - In Progress
            - Awaiting User
            - In Review
            - Approved
            - Declined
            - Resubmitted
            - Expired
            - Kyc Expired
            - Abandoned
          description: >-
            Gesamter Lebenszyklusstatus der Sitzung — das zusammengefasste
            Workflow-Ergebnis. Endgültige Werte sind `Approved`, `Declined`, `In
            Review`, `Expired`, `Kyc Expired` und `Abandoned`; `Not Started`,
            `In Progress`, `Awaiting User` und `Resubmitted` zeigen an, dass die
            Sitzung den Workflow noch durchläuft.
        status_override:
          type: object
          nullable: true
          description: >-
            Vorhanden, wenn ein Prüfer `status` manuell gesetzt hat. `null`,
            wenn der Status automatisch vergeben wurde. Dient zur Unterscheidung
            einer manuellen von einer automatischen Genehmigung.
          properties:
            overridden_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: Der Status, den die eigenen Prüfungen der Plattform ergeben.
        decision_trace:
          type: object
          description: >-
            Wie der Status erreicht wurde: wer ihn festgelegt hat und welche
            Warnungen dazu geführt haben.
          properties:
            status:
              type: string
              description: Der Sitzungsstatus.
            decided_by:
              type: string
              nullable: true
              enum:
                - manual
                - automatic
                - investigator
                - null
              description: >-
                Wer den Status festgelegt hat. `null`, solange über die Sitzung
                noch nicht entschieden wurde.
            decided_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: >-
                Was die plattformeigenen Prüfungen ergeben; dies kann sich nach
                einer manuellen Entscheidung von `status` unterscheiden.
            terminal_node_id:
              type: string
              nullable: true
              description: >-
                Der Workflow-Statusknoten, der die Sitzung beendet hat, falls
                zutreffend.
            actor:
              type: object
              nullable: true
              description: Der Prüfer, der hinter einer manuellen Entscheidung steht.
              properties:
                user:
                  type: string
                  nullable: true
                actor_type:
                  type: string
                  nullable: true
            warning_counts:
              type: object
              description: >-
                Warnungen pro `log_type` (`error`, `warning`, `information`) und
                `total`.
              additionalProperties:
                type: integer
            status_warnings:
              type: array
              description: >-
                Die Warnungen, die den Status `Declined` oder `In Review`
                setzen.
              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: >-
                      Die Payload-Liste, aus der die Warnung stammt,
                      beispielsweise `id_verifications`.
                  short_description:
                    type: string
                    nullable: true
        linked_records:
          type: object
          nullable: true
          description: >-
            Eine Zusammenfassung anderer mit der Sitzung verknüpfter Datensätze.
            `null`, wenn nichts anzuzeigen ist, sowie für Workflows, die einen
            Standard zur Altersabsicherung deklarieren.
          properties:
            same_face:
              type: object
              nullable: true
              description: >-
                Andere Personen, deren Gesicht mit einer der Gesichtssuchen
                dieser Sitzung übereinstimmte.
              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: >-
            Stabiler Identifikator der Workflow-Gruppe, die diese Sitzung
            erzeugt hat. Workflows sind versioniert – dieser Wert identifiziert
            den Workflow selbst, nicht die spezifische Version.
          nullable: true
        features:
          type: array
          items:
            type: string
            description: Die Funktion der Sitzung.
          description: >-
            Liste der für diese Sitzung konfigurierten Verifizierungsfunktionen
            als Anzeigenamen: `ID_VERIFICATION`, `NFC`, `LIVENESS`,
            `FACE_MATCH`, `POA`, `PHONE`, `EMAIL_VERIFICATION`, `AML`,
            `IP_ANALYSIS`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`,
            `AGE_ESTIMATION`, `FACE_SEARCH`, `GEOLOCATION`
            (Standortverifizierung) (Sitzungen zur Unternehmensverifizierung
            verwenden das KYB-Funktionsset: `KYB_REGISTRY`, `KYB_DOCUMENTS`,
            `KYB_KEY_PEOPLE`, `AML`, `PHONE`, `EMAIL_VERIFICATION`,
            `IP_ANALYSIS`, `QUESTIONNAIRE`). Bei `include=events` wird jeder
            Eintrag zu einem Objekt `{feature, node_id}` anstelle einer
            einfachen Zeichenkette, und die E-Mail-Funktion wird umbenannt: Sie
            erscheint im Ereignismodus als `EMAIL` anstelle des hier verwendeten
            `EMAIL_VERIFICATION`.
        vendor_data:
          type: string
          description: Die Vendor-Daten der Sitzung.
          nullable: true
        metadata:
          type: object
          description: Die Metadaten der Sitzung.
          nullable: true
        expected_details:
          type: object
          description: >-
            Erwartete Details, die bei der Sitzungserstellung angegeben wurden —
            verwendet für die Kreuzvalidierung mit extrahierten Daten (KYC) oder
            zum Vorausfüllen der Suche im Unternehmensregister (KYB). Gibt genau
            die Schlüssel zurück, die bereitgestellt wurden; `null`, wenn keine
            angegeben wurden. KYC-Sitzungen enthalten die Personenfelder;
            Unternehmenssitzungen (KYB) enthalten `company_name`,
            `registry_country` und `registration_number`.
          properties:
            first_name:
              type: string
              description: Vorname des Benutzers. Zum Beispiel `John`.
            last_name:
              type: string
              description: Nachname des Benutzers. Zum Beispiel `Doe`.
            date_of_birth:
              type: string
              format: date
              description: >-
                Geburtsdatum des Benutzers im Format: YYYY-MM-DD. Zum Beispiel
                `1990-05-15`.
            gender:
              type: string
              nullable: true
              enum:
                - M
                - F
              default: null
              description: Geschlecht des Benutzers. Muss entweder 'M', 'F' oder null sein.
            nationality:
              type: string
              description: >-
                ISO 3166-1-Alpha-3-Ländercode, der das Herkunftsland des
                Antragstellers darstellt. Zum Beispiel `USA`.
            country:
              type: string
              description: >-
                ISO 3166-1-Alpha-3-Ländercode, der das Land des
                Adressnachweis-Dokuments oder das Land des Ausweisdokuments des
                Antragstellers darstellt, welches von der Staatsangehörigkeit
                abweichen kann. Zum Beispiel `GBR`.
            address:
              type: string
              description: >-
                Die Adresse in einem menschenlesbaren Format, einschließlich so
                vieler Informationen wie möglich. Zum Beispiel `123 Main St, San
                Francisco, CA 94105, USA`.
            identification_number:
              type: string
              description: >-
                Die Dokumentennummer, persönliche Identifikationsnummer oder
                Steuernummer des Benutzers. Zum Beispiel `123456789`.
            ip_address:
              type: string
              format: ipv4
              description: >-
                Erwartete IP-Adresse für die Sitzung. Wenn die tatsächliche
                IP-Adresse von diesem Wert abweicht, wird eine Warnung
                protokolliert. Zum Beispiel `192.168.1.100`.
            expected_document_types:
              type: array
              description: >-
                Dokumenttypen, auf die der Ausweisverifizierungsschritt bei der
                Sitzungserstellung beschränkt wurde. Leer/nicht gesetzt bedeutet
                keine Einschränkung. Codes: `P` (Reisepass), `ID`
                (Personalausweis), `DL` (Führerschein), `RP` (Aufenthaltstitel),
                `HIC` (Krankenversicherungskarte), `TC` (Steuerkarte), `SSC`
                (Sozialversicherungskarte).
              items:
                type: string
                enum:
                  - P
                  - ID
                  - DL
                  - RP
                  - HIC
                  - TC
                  - SSC
            id_country:
              type: string
              nullable: true
              description: >-
                Erwartetes Ausstellungsland des Ausweisdokuments (ISO 3166-1
                alpha-3), falls bei der Erstellung eingeschränkt.
              example: ESP
            poa_country:
              type: string
              nullable: true
              description: >-
                Erwartetes Land des Adressnachweisdokuments (ISO 3166-1
                alpha-3), falls bei der Erstellung eingeschränkt.
              example: ESP
            company_name:
              type: string
              description: >-
                Erwarteter rechtlicher Name des Unternehmens. Nur für
                Unternehmenssitzungen (KYB).
            registry_country:
              type: string
              description: >-
                Erwartetes Registerland als `XX` oder `XX-YY` (ISO 3166-1
                Alpha-2, optional mit einer ISO 3166-2-Unterteilung für Register
                auf Bundesstaatsebene, z. B. `US-CA`). Nur für
                Unternehmenssitzungen (KYB).
            registration_number:
              type: string
              description: >-
                Erwartete Unternehmensregisternummer. Nur für
                Unternehmenssitzungen (KYB).
          nullable: true
        contact_details:
          type: object
          description: >-
            Kontaktdaten, die bei der Erstellung der Sitzung angegeben wurden
            (verwendet für Benachrichtigungs-E-Mails, vorausgefüllte
            Telefon-/E-Mail-Verifizierung und Kommunikationssprache). `null`,
            wenn weder eine E-Mail-Adresse noch eine Telefonnummer angegeben
            wurde.
          properties:
            email:
              type: string
              description: >-
                E-Mail-Adresse des Benutzers (z. B. "john.doe@example.com"), die
                während des Schritts der E-Mail-Verifizierung verwendet wird.
                Falls nicht angegeben, muss der Benutzer sie während des
                Verifizierungsablaufs angeben.
            email_lang:
              type: string
              description: >-
                Sprachcode (ISO 639-1) für E-Mail-Benachrichtigungen. Steuert
                die Sprache aller E-Mail-Mitteilungen (z. B. „en“, „es“, „fr“).
            send_notification_emails:
              type: boolean
              default: false
              description: >-
                Wenn true und eine E-Mail-Adresse angegeben ist, versendet Didit
                die anfängliche E-Mail „Bestätigen Sie Ihre Identität“
                asynchron, sobald die Sitzung zur Benutzerverifizierung (KYC)
                oder Unternehmensverifizierung (KYB) erstellt wird. Didit sendet
                außerdem Benachrichtigungen über den Verifizierungsstatus für
                Sitzungen, die eine manuelle Prüfung erfordern, an die
                angegebene E-Mail-Adresse.
            phone:
              type: string
              nullable: true
              description: >-
                Telefonnummer des Benutzers im E.164-Format, falls verfügbar (z.
                B. +14155552671). `null`, wenn bei der Sitzungserstellung nur
                eine E-Mail-Adresse angegeben wurde. Hinweis: Dieses Feld gibt
                die ursprünglich bei der Sitzungserstellung angegebene
                Telefonnummer zurück. Wenn die Nummer ungültig war, liegt sie
                möglicherweise nicht im E.164-Format vor.
          nullable: true
        callback:
          type: string
          format: uri
          description: Die Callback-URL der Sitzung.
          nullable: true
        id_verifications:
          type: array
          nullable: true
          description: >-
            **Array von Ausweisverifizierungsberichten (OCR)**, die von
            Ausweisdokument-Schritten im Workflow-Graphen erzeugt wurden. Immer
            ein JSON-Array – lesen Sie `id_verifications[0]` und iterieren Sie,
            falls Ihr Workflow mehr als eine Ausweisprüfung ausführen kann
            (beispielsweise eine primäre Prüfung plus eine zusätzliche Prüfung).
            `null`, bis mindestens ein Ausweisschritt Daten erzeugt hat. Jeder
            Eintrag ist der vollständige Bericht, einschließlich `node_id`,
            `status` auf Funktionsebene, extrahierten Dokumentfeldern,
            Bild-URLs, Qualitätswerten, MRZ, Adress-Parsing,
            sitzungsübergreifenden Übereinstimmungen sowie `warnings[]`.
          items:
            type: object
            description: >-
              Ein Ausweisverifizierungsbericht – der vollständige Bericht für
              einen einzelnen Ausweisverifizierungsschritt.
              `verification_method` gibt an, welche der drei Methoden ihn
              erzeugt hat (Dokumentenerfassung, Abfrage ohne Dokument oder
              Wallet-Anmeldung), und der methodenspezifische Nachweisblock wird
              entsprechend befüllt.
            properties:
              node_id:
                type: string
                description: >-
                  Workflow-Graph-Knoten-ID des OCR-Schritts, der diesen Bericht
                  erstellt hat.
              verification_method:
                type: string
                enum:
                  - document
                  - id_lookup
                  - wallet
                description: >-
                  Welche Methode der Ausweisverifizierung diesen Bericht
                  erstellt hat. `document` - der Benutzer hat einen physischen
                  Ausweis fotografiert (der Standardwert und der Wert jeder
                  Sitzung, die vor der Einführung der anderen Methoden erstellt
                  wurde). `id_lookup` - der Benutzer hat seine nationale
                  Ausweisnummer eingegeben und diese wurde mit einem
                  Behördenregister oder einer anderen maßgeblichen Quelle für
                  dieses Land abgeglichen (`id_lookup.source` gibt die Quelle
                  an). `wallet` - der Benutzer hat sich mit einer digitalen
                  behördlichen oder bankbezogenen Identität angemeldet.
              assurance:
                type: string
                enum:
                  - documentary
                  - data_match
                  - cryptographic
                description: >-
                  Aus `verification_method` abgeleitete Vertrauensstufe:
                  `documentary` für ein Dokument, das erfasst und geprüft wurde,
                  `data_match` für Angaben, die mit einem Datensatz der
                  abgefragten Quelle übereinstimmten, `cryptographic` für
                  Attribute, die ein Identitätsanbieter authentifiziert und
                  signiert hat.
              wallet_provider:
                type: string
                nullable: true
                description: >-
                  Katalog-Wallet-ID, wenn `verification_method` `wallet` ist
                  (`mitid`, `bankid_se`, `itsme`, ...). Andernfalls `null`.
              fallback_from:
                type: object
                nullable: true
                description: >-
                  Warum eine Methode ohne Dokument den Ausweisschritt nicht
                  abgeschlossen hat. Wird gesetzt, wenn eine Abfrage oder eine
                  Wallet-Anmeldung fehlgeschlagen ist: bei der
                  Dokumentenverifizierung, mit der der Benutzer fortgefahren
                  ist, wenn der Fallback-Schalter des Landes
                  `fallback_to_document` war (`action` ist
                  `fallback_to_document`), oder im abgelehnten Bericht, wenn er
                  `decline` war. Andernfalls `null`.
                properties:
                  method:
                    type: string
                    enum:
                      - id_lookup
                      - wallet
                    description: Die Methode, die fehlgeschlagen ist.
                  reason:
                    type: string
                    description: >-
                      Das Ergebnis, das den Vorgang beendet hat, z. B.
                      `no_match`, `provider_error`, `cancelled`, `timeout`.
                  action:
                    type: string
                    enum:
                      - fallback_to_document
                      - decline
                    description: >-
                      Die konfigurierte Aktion, die ausgeführt wurde:
                      `fallback_to_document` oder `decline`.
              id_lookup:
                type: object
                nullable: true
                description: >-
                  Registernachweis. Nur vorhanden, wenn `verification_method`
                  den Wert `id_lookup` hat; andernfalls `null`.
                properties:
                  source:
                    type: string
                    description: >-
                      Kundenorientierter Name der abgefragten Quelle, z. B.
                      `Department of Home Affairs` (ein staatliches Register)
                      oder `UK credit bureau and financial services records`
                      (kein staatliches Register). Dies ist die einzige
                      Herkunftsangabe für die Abfrage; gehen Sie nicht von einer
                      staatlichen Quelle aus.
                  checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: Wann das Unternehmensregister geantwortet hat.
                  attempts:
                    type: integer
                    description: 1-basierte Versuchsnummer, aus der dieser Bericht stammt.
                  max_attempts:
                    type: integer
                    description: >-
                      Für das Land konfiguriertes Versuchsbudget (1 bis 5,
                      Standardwert 1).
                  outcome:
                    type: string
                    enum:
                      - match
                      - partial_match
                      - no_match
                      - provider_error
                      - format_rejected
                    nullable: true
                    description: >-
                      Was das Register geantwortet hat. Nur `match`,
                      `partial_match` und `no_match` zählen gegen das
                      Versuchsbudget und werden abgerechnet.
                  comparison:
                    type: array
                    description: >-
                      Eine Zeile pro vergleichbarem Feld, auf das die Quelle
                      geantwortet hat, plus eine Zeile pro Quellenfehler.
                      Vergleichszeilen verwenden die unten aufgeführten
                      normalisierten Feldnamen anstelle der länderspezifischen
                      Anfrage-Feld-Keys, da mehrere Anfragefelder (Vor- und
                      Nachname oder Aliasse von Bezeichnern) zu einem einzigen
                      Vergleich zusammengefasst werden. Eine fehlgeschlagene
                      Quelle hängt eine Zeile mit `field: "provider"` und
                      `result: "error"` an; prüfen Sie daher `result`, bevor Sie
                      eine Zeile als Feldurteil behandeln.
                    items:
                      type: object
                      required:
                        - field
                        - label
                        - provided
                        - record
                        - result
                      properties:
                        field:
                          type: string
                          enum:
                            - identification_number
                            - full_name
                            - date_of_birth
                            - address
                            - provider
                          description: >-
                            Normalisiertes Vergleichsfeld. `provider` ist kein
                            Benutzerfeld: Es kennzeichnet eine Zeile mit einem
                            Quellfehler.
                        label:
                          type: string
                          description: >-
                            Anzeigebezeichnung für die Zeile, z. B. `ID number`,
                            `Full name`, `Provider`.
                        provided:
                          type: string
                          nullable: true
                          description: >-
                            Was der Benutzer eingegeben hat. `null` bei einer
                            `provider`-Fehlerzeile.
                        record:
                          type: string
                          nullable: true
                          description: >-
                            Was in der Quelle enthalten war. Bei einer
                            `provider`-Fehlerzeile enthält dies stattdessen die
                            Fehlermeldung.
                        result:
                          type: string
                          enum:
                            - match
                            - partial
                            - no_match
                            - error
                          description: >-
                            Vergleichsergebnis pro Feld. `error` erscheint nur
                            in einer `provider`-Zeile und bedeutet, dass diese
                            Quelle nicht geantwortet hat; behandeln Sie dies als
                            Beleg für die Anfrage, niemals als Feldabweichung.
                  registry_portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      Kurzlebige vorsignierte URL zum Porträt, das die Quelle
                      zurückgegeben hat. Nur die vier Regierungsregister, die
                      eines zurückgeben (Südafrika, Nigeria, Argentinien,
                      Panama).
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      Selfie gegen das Register-Porträt, 0-100. Nur verfügbar,
                      wenn das Register ein Porträt zurückgibt.
              wallet_verification:
                type: object
                nullable: true
                description: >-
                  Berechtigungsnachweis. Nur vorhanden, wenn
                  `verification_method` auf `wallet` gesetzt ist; andernfalls
                  `null`.
                properties:
                  provider:
                    type: string
                    description: Katalog-Wallet-ID, z. B. `mitid`.
                  provider_name:
                    type: string
                    nullable: true
                    description: Wallet-Name, wie ihn der Endbenutzer kennt, z. B. `MitID`.
                  issuing_authority:
                    type: string
                    nullable: true
                    description: >-
                      Die für die Wallet verantwortliche Stelle, z. B. `Danish
                      Agency for Digital Government`.
                  issuing_country:
                    type: string
                    description: >-
                      ISO 3166-1-Alpha-3-Land, in dem die Wallet angeboten
                      wurde.
                  credential_type:
                    type: string
                    nullable: true
                    description: >-
                      Von der Wallet vorgelegter Berechtigungsnachweis, z. B.
                      `person_identification`.
                  level_of_assurance:
                    type: string
                    enum:
                      - low
                      - substantial
                      - high
                    nullable: true
                    description: >-
                      Das von der Wallet zugesicherte Vertrauensniveau (Level of
                      Assurance). Eine Anmeldung, die weniger als das
                      angeforderte Niveau zusichert, schlägt fehl, anstatt
                      herabgestuft zu werden.
                  verified_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: Der Authentifizierungszeitpunkt der Wallet.
                  signature_valid:
                    type: boolean
                    nullable: true
                    description: >-
                      Gibt an, ob die von der Wallet zurückgegebene signierte
                      Assertion validiert wurde.
                  attributes:
                    type: object
                    additionalProperties: true
                    description: >-
                      Die von der Wallet geteilten Attribute, mit Schlüsseln
                      gemäß dem Katalogeintrag der Wallet.
                  portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      Kurzlebige vorsignierte URL zum Porträt, das die Wallet
                      geteilt hat, sofern sie eines teilt.
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      Selfie gegen das Wallet-Porträt, 0-100, sofern die Wallet
                      eines teilt.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
                description: >-
                  Status auf Funktionsebene dieses Schritts der
                  Ausweisverifizierung. Unabhängig vom `status` der
                  übergeordneten Sitzung – eine Sitzung kann ihre
                  Gesamtentscheidung erreichen, während eine einzelne Funktion
                  `In Review` bleibt.
              document_type:
                type: string
                description: Art des Ausweisdokuments
              document_subtype:
                type: string
                nullable: true
                description: >-
                  Akzeptierter Dokument-Subtyp-Code aus den
                  Dokumenteinstellungen des Workflows, einschließlich der
                  Dokumentregion, sofern zutreffend. Beispiele:
                  `ID_CARD_GENERIC`, `QUEENSLAND_DRIVER_LICENSE_GENERIC`.
              document_number:
                type: string
                description: Dokumentenidentifikationsnummer
              personal_number:
                type: string
                description: Persönliche Identifikationsnummer
              portrait_image:
                type: string
                format: uri
                description: URL des Porträtbildes
              front_image:
                type: string
                format: uri
                description: URL des Bildes der Dokumentvorderseite
              front_video:
                type: string
                format: uri
                description: URL des Videos der Dokumentvorderseite
              back_image:
                type: string
                format: uri
                description: URL des Bildes der Dokumentrückseite
              back_video:
                type: string
                format: uri
                description: URL des Videos der Dokumentrückseite
              full_front_image:
                type: string
                format: uri
                description: URL des vollständigen Bildes der Dokumentvorderseite
              full_back_image:
                type: string
                format: uri
                description: URL des vollständigen Bildes der Dokumentrückseite
              front_image_camera_front:
                type: string
                format: uri
                description: >-
                  URL des über die Frontkamera aufgenommenen Bildes der
                  Dokumentvorderseite
              back_image_camera_front:
                type: string
                format: uri
                description: >-
                  URL des über die Frontkamera aufgenommenen Bildes der
                  Dokumentrückseite
              date_of_birth:
                type: string
                format: date
                description: Geburtsdatum aus dem Dokument
              age:
                type: integer
                description: Aus dem Geburtsdatum berechnetes Alter
              expiration_date:
                type: string
                format: date
                description: Dokumentenablaufdatum
              date_of_issue:
                type: string
                format: date
                description: Dokumentenausstellungsdatum
              issuing_state:
                type: string
                description: ISO-Code des Ausstellungsstaates
              issuing_state_name:
                type: string
                description: Vollständiger Name des ausstellenden Staates
              first_name:
                type: string
                description: Vorname aus dem Dokument
              last_name:
                type: string
                description: Nachname aus dem Dokument
              full_name:
                type: string
                description: Vollständiger Name aus dem Dokument
              gender:
                type: string
                description: Geschlecht aus dem Dokument
              address:
                type: string
                description: Unverarbeitete Adresse aus dem Dokument
              formatted_address:
                type: string
                description: Formatierte vollständige Adresse
              place_of_birth:
                type: string
                description: Geburtsort aus dem Dokument
              marital_status:
                type: string
                description: Familienstand aus dem Dokument
              nationality:
                type: string
                description: ISO-Code der Staatsangehörigkeit
              extra_fields:
                type: object
                description: >-
                  Zusätzliche Dokumentenfelder. Enthält dokumentspezifische
                  Attribute (z. B. `dl_categories`, `blood_group`, `sponsor`,
                  `employer`, `dl_class_code_b_from`, `dl_class_code_b_to`).
                  Gültigkeitsdaten von Führerscheinklassen werden als
                  `dl_class_code_<class>_from` und `dl_class_code_<class>_to`
                  zurückgegeben, und Beschränkungs-/Informationscodes pro Klasse
                  (z. B. Spalte 12 britischer Führerscheine) als
                  `dl_class_code_<class>_notes`. Wenn das Dokument Namen,
                  Adresse oder Geburtsort in mehreren Schriftsystemen enthält,
                  enthält dieses Objekt auch Versionen dieser Felder in
                  alternativen Schriftsystemen. Die Workflow-Einstellung
                  `preferred_characters` (`latin` oder `non_latin`) steuert,
                  welches Schriftsystem die Felder der obersten Ebene
                  (`first_name`, `last_name`, `full_name`, `address`,
                  `place_of_birth`) befüllt; das jeweils andere Schriftsystem
                  wird hier als `first_name_non_latin` / `last_name_non_latin` /
                  `full_name_non_latin` / `middle_name_non_latin` /
                  `address_non_latin` / `place_of_birth_non_latin` (wenn
                  `preferred_characters` `latin` ist) oder mit einem Suffix
                  `_latin` (wenn `preferred_characters` `non_latin` ist)
                  aufgeführt. Schlüssel werden nur angezeigt, wenn die OCR
                  tatsächlich einen echten Wert in einem alternativen
                  Schriftsystem extrahiert — ein Feld, dessen alternativer Wert
                  im selben Schriftsystem wie das bevorzugte Set liegt
                  (beispielsweise ein kyrillisch beschriftetes Feld, dessen
                  OCR-Wert in lateinischen Homoglyphen zurückgegeben wurde),
                  wird übersprungen. Wenn `preferred_characters` `latin` ist,
                  das Dokument jedoch nur nicht-lateinischen Text enthält,
                  transliteriert Didit die extrahierten Werte und stellt
                  `first_name_latin` / `last_name_latin` / etc. als Fallback
                  bereit.
                additionalProperties: true
                properties:
                  dl_categories:
                    type: array
                    items:
                      type: string
                  blood_group:
                    type: string
                    nullable: true
                  first_name_non_latin:
                    type: string
                    description: >-
                      Vorname in der nicht-lateinischen Schrift, wenn
                      `preferred_characters=latin` und eine nicht-lateinische
                      Version auf dem Dokument vorhanden ist (z. B. `Айна` bei
                      einem kirgisischen Ausweis).
                  last_name_non_latin:
                    type: string
                    description: >-
                      Nachname in nicht-lateinischer Schrift, wenn
                      `preferred_characters=latin` und eine nicht-lateinische
                      Version auf dem Dokument vorhanden ist.
                  middle_name_non_latin:
                    type: string
                    description: >-
                      Zweitname / Vatersname im nicht-lateinischen
                      Schriftsystem, wenn `preferred_characters=latin` gilt und
                      eine nicht-lateinische Version auf dem Dokument vorhanden
                      ist.
                  full_name_non_latin:
                    type: string
                    description: >-
                      Zusammengesetzter vollständiger Name in nicht-lateinischer
                      Schrift. Wird aus den einzelnen Komponenten rekonstruiert,
                      wenn sowohl Vor- als auch Nachname verfügbar sind.
                  address_non_latin:
                    type: string
                    description: >-
                      Adresse im nicht-lateinischen Schriftsystem, wenn
                      `preferred_characters=latin` gilt und eine
                      nicht-lateinische Version auf dem Dokument vorhanden ist.
                  place_of_birth_non_latin:
                    type: string
                    description: >-
                      Geburtsort im nicht-lateinischen Schriftsystem, wenn
                      `preferred_characters=latin` gilt und eine
                      nicht-lateinische Version auf dem Dokument vorhanden ist.
                  first_name_latin:
                    type: string
                    description: >-
                      Vorname in lateinischer Schrift. Ausgefüllt, wenn
                      `preferred_characters=non_latin` und eine lateinische
                      Version auf dem Dokument vorhanden ist, oder – als
                      Transliterations-Fallback –, wenn
                      `preferred_characters=latin`, das Dokument jedoch nur
                      nicht-lateinischen Text enthält.
                  last_name_latin:
                    type: string
                    description: >-
                      Nachname in lateinischer Schrift. Dieselben Regeln wie für
                      `first_name_latin`.
                  middle_name_latin:
                    type: string
                    description: >-
                      Zweitname / Vatersname in lateinischer Schrift. Dieselben
                      Regeln wie für `first_name_latin`.
                  full_name_latin:
                    type: string
                    description: >-
                      Zusammengesetzter vollständiger Name in lateinischer
                      Schrift. Wird immer aus den einzelnen Komponenten
                      rekonstruiert, wenn sowohl Vor- als auch Nachname
                      verfügbar sind.
                  address_latin:
                    type: string
                    description: >-
                      Adresse in lateinischem Schriftsystem. Dieselben Regeln
                      wie für `first_name_latin`.
                  place_of_birth_latin:
                    type: string
                    description: >-
                      Geburtsort in lateinischer Schrift. Gleiche Regeln wie für
                      `first_name_latin`.
              mrz:
                type: object
                nullable: true
                description: >-
                  Geparste Felder der maschinenlesbaren Zone (MRZ), die aus dem
                  Dokument extrahiert wurden. `null`, wenn keine MRZ erkannt
                  wurde.
                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: Strukturierte Adressdetails
                properties:
                  city:
                    type: string
                  label:
                    type: string
                  region:
                    type: string
                  country:
                    type: string
                    description: Zweistelliger Ländercode
                  category:
                    type: string
                    description: Adresskategorie (z. B. Residential, Commercial)
                  street_1:
                    type: string
                  street_2:
                    type: string
                    nullable: true
                  is_verified:
                    type: boolean
                    description: Gibt an, ob die Adresse verifiziert wurde
                  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: Zusätzliche Dateien zur Dokumentenverifizierung
              front_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  Gesichtsabgleichswert zwischen dem aus dem Bild der
                  Dokumentenvorderseite extrahierten Porträt und dem
                  Frontkamerabild
              back_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  Gesichtsabgleichswert zwischen dem aus dem Bild der
                  Dokumentenrückseite extrahierten Porträt und dem
                  Frontkamerabild
              document_selfie_face_matches:
                type: array
                description: >-
                  Frühere Sitzungen oder Gesichtssperrlisten-Einträge, deren
                  Gesicht mit dem Selfie übereinstimmte, das die Frontkamera
                  während der Dokumentenerfassung aufgenommen hat (Silent
                  Capture Face Search). Gleiches Eintragsformat wie
                  `liveness_checks[].matches`. `null` für Sitzungen, die
                  erstellt wurden, bevor dieses Feld existierte, oder wenn die
                  Suche nicht ausgeführt wurde; ein leeres Array, wenn sie
                  ausgeführt wurde und nichts gefunden hat. `match_image_url`
                  ist eine vorsignierte URL, die abläuft.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        Sitzungs-ID des übereinstimmenden Gesichts. `null`, wenn
                        `source` den Wert `imported`, `list_entry` oder
                        `retained_template` hat.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: >-
                        Gesichtsähnlichkeit zwischen den beiden Bildern,
                        begrenzt auf 0–100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` der übereinstimmenden Sitzung oder des
                        verknüpften Benutzers für importierte und aufbewahrte
                        Template-Gesichter.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        Verknüpfte Benutzer-ID für `imported`- und
                        `retained_template`-Treffer sowie für Sitzungstreffer,
                        die mit einem Benutzer verknüpft sind. `null` für
                        Listeneinträge und Sitzungen ohne Benutzer.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID des aufbewahrten biometrischen Templates. Wird nur
                        gesetzt, wenn `source` den Wert `retained_template` hat;
                        andernfalls `null`.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Wann das übereinstimmende Gesicht erfasst wurde oder
                        wann eine aufbewahrte Vorlage erstellt wurde. `null` für
                        Listeneinträge.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        Identitätsdaten aus der übereinstimmenden Sitzung oder
                        dem importierten Benutzerprofil. Immer `null` bei
                        Übereinstimmungen mit `retained_template` und
                        `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: >-
                        Referenzbild für bildbasierte Abgleiche. Immer `null`
                        bei `retained_template`-Abgleichen, da gespeicherte
                        Templates kein Bild enthalten.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        Lebenszyklusstatus der übereinstimmenden Sitzung. `null`
                        für Quellen, die keine Sitzungen sind.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Gibt an, ob das übereinstimmende Gesicht auf einer
                        Sperrliste steht.
                    is_allowlisted:
                      type: boolean
                      description: >-
                        Gibt an, ob das übereinstimmende Gesicht auf einer
                        Positivliste steht.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Eigenständiger API-Service der zugehörigen Sitzung (z.
                        B. `PASSIVE_LIVENESS`, `FACE_MATCH`); `null` für
                        Workflow-Sitzungen und Nicht-Sitzungsquellen.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        Ursprung des übereinstimmenden Gesichts: `session`,
                        `imported` (Gesichts-Upload des Benutzers), `list_entry`
                        (Positiv-/Sperrliste) oder `retained_template` (ein
                        bildfreies biometrisches Template, das bei einem
                        Benutzer gespeichert ist, aufgeführt unter
                        `/v3/biometric-templates/`).
                nullable: true
              front_image_quality_score:
                type: object
                nullable: true
                description: >-
                  Qualitätsmetriken für das Bild der Dokumentvorderseite. Jeder
                  Teilwert liegt im Bereich von 0 bis 100.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      Schärfe des Bildes, gemessen anhand der oberen 10 % der
                      lokalen Laplace-Varianz. Robust gegenüber Dokumenten mit
                      großen einheitlichen Hintergründen. Höhere Werte weisen
                      auf ein schärferes, weniger verschwommenes Bild hin.
                  brightness_score:
                    type: number
                    description: >-
                      Wie gut das Bild ausgeleuchtet ist. Bestraft zu dunkle
                      oder überbelichtete Bilder, wobei die ideale Helligkeit im
                      mittleren Bereich liegt.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      Gibt die Richtung des Helligkeitsproblems an, wenn der
                      brightness_score niedrig ist. 'ok' bedeutet, dass die
                      Helligkeit akzeptabel ist, 'too_dark' bedeutet, dass das
                      Bild unterbelichtet ist, 'too_bright' bedeutet, dass das
                      Bild überbelichtet ist.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true, wenn alle vier Ecken des Dokuments innerhalb des
                      Bildrahmens vollständig sichtbar sind, false, wenn eine
                      Ecke abgeschnitten ist. Null, wenn keine Eckkoordinaten
                      verfügbar sind.
                  resolution_score:
                    type: number
                    description: >-
                      Effektive Auflösung des Bildes basierend auf der
                      Gesamtpixelanzahl.
                  overall_score:
                    type: number
                    description: >-
                      Gewichteter Gesamtwert aus Teilwerten (Schärfe 45%,
                      Helligkeit 30%, Auflösung 25%).
              back_image_quality_score:
                type: object
                nullable: true
                description: >-
                  Qualitätsmetriken für das Bild der Dokumentrückseite. Gleiche
                  Struktur wie front_image_quality_score.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      Schärfe des Bildes, gemessen anhand der oberen 10 % der
                      lokalen Laplace-Varianz. Robust gegenüber Dokumenten mit
                      großen einheitlichen Hintergründen. Höhere Werte weisen
                      auf ein schärferes, weniger verschwommenes Bild hin.
                  brightness_score:
                    type: number
                    description: >-
                      Wie gut das Bild ausgeleuchtet ist. Bestraft zu dunkle
                      oder überbelichtete Bilder, wobei die ideale Helligkeit im
                      mittleren Bereich liegt.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      Gibt die Richtung des Helligkeitsproblems an, wenn der
                      brightness_score niedrig ist. 'ok' bedeutet, dass die
                      Helligkeit akzeptabel ist, 'too_dark' bedeutet, dass das
                      Bild unterbelichtet ist, 'too_bright' bedeutet, dass das
                      Bild überbelichtet ist.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true, wenn alle vier Ecken des Dokuments innerhalb des
                      Bildrahmens vollständig sichtbar sind, false, wenn eine
                      Ecke abgeschnitten ist. Null, wenn keine Eckkoordinaten
                      verfügbar sind.
                  resolution_score:
                    type: number
                    description: >-
                      Effektive Auflösung des Bildes basierend auf der
                      Gesamtpixelanzahl.
                  overall_score:
                    type: number
                    description: >-
                      Gewichteter Gesamtwert aus Teilwerten (Schärfe 45%,
                      Helligkeit 30%, Auflösung 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: >-
                        Die Funktion, die diese Warnung generiert hat (z. B.
                        `ID_VERIFICATION`, `NFC`, `LIVENESS`). Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert, aber
                        das obige Enum ist für alle Funktionswarnungen in der
                        Entscheidungs-Payload maßgeblich.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                      description: Zusätzliche Kontextdaten zur Warnung
                    log_type:
                      type: string
                      description: 'Art des Logs: Information, Warnung oder Fehler'
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat (für graphbasierte Workflows)
                description: Warnungen der Dokumentenverifizierung
              matches:
                type: array
                description: >-
                  Bei der Duplikat-/Sperrlistenerkennung gefundene
                  übereinstimmende Dokumente (bis zu 5 Treffer)
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: Sitzungs-ID des übereinstimmenden Dokuments
                    session_number:
                      type: integer
                      description: Sitzungsnummer des übereinstimmenden Dokuments
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        Vendor-Daten, die mit der übereinstimmenden Sitzung
                        verknüpft sind
                    verification_date:
                      type: string
                      format: date-time
                      description: >-
                        Datum, an dem die Sitzung mit Übereinstimmung
                        verifiziert wurde
                    user_details:
                      type: object
                      properties:
                        name:
                          type: string
                          description: >-
                            Vollständiger Name aus dem übereinstimmenden
                            Dokument
                        document_type:
                          type: string
                          description: Art des übereinstimmenden Dokuments
                        document_number:
                          type: string
                          description: Dokumentennummer des übereinstimmenden Dokuments
                    status:
                      type: string
                      description: Status der übereinstimmenden Sitzung
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Gibt an, ob das übereinstimmende Dokument auf der
                        Sperrliste steht
                    api_service:
                      type: string
                      nullable: true
                      description: API-Servicetyp der übereinstimmenden Sitzung
                    front_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        URL des Bildes der Dokumentvorderseite aus dem
                        übereinstimmenden Dokument
              document_liveness:
                type: object
                nullable: true
                description: >-
                  Dokumenten-Liveness-Werte pro Betrugsart, gemeldet unabhängig
                  davon, ob eine Warnung ausgelöst wurde, sodass ein genehmigtes
                  Dokument dennoch auditiert werden kann. `null`, wenn die
                  Prüfung nicht ausgeführt wurde.
                properties:
                  portrait_replace:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Wahrscheinlichkeit, dass das Dokument für diesen
                          Betrugstyp echt ist, 0-100 (höher = wahrscheinlicher
                          echt). Der niedrigere der beiden Seitenwerte – der von
                          der Entscheidung verwendete Wert. `null`, wenn keine
                          der beiden Seiten einen nutzbaren Wert geliefert hat.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Score für die Vorderseite; `null`, wenn nicht erfasst
                          oder wenn der Score verworfen wurde.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Score für die Rückseite; `null`, wenn nicht erfasst
                          oder wenn der Score verworfen wurde.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Der Ablehnungsschwellenwert, der bei der Auswertung
                          dieses Dokuments gespeichert wurde. Spätere
                          Workflow-Änderungen ändern ihn nicht. Null, wenn
                          historische Auswertungsnachweise nicht verfügbar sind.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Der Schwellenwert für die Prüfung, der bei der
                          Bewertung dieses Dokuments gespeichert wurde. Spätere
                          Workflow-Bearbeitungen ändern ihn nicht. Null, wenn
                          historische Bewertungsnachweise nicht verfügbar sind.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Die zum Auswertungszeitpunkt gespeicherte
                          Betrugstyp-Kategorie. Null, wenn kein verwertbarer
                          Score vorliegt, die Prüfung nicht angewendet wurde
                          oder historische Auswertungsnachweise nicht verfügbar
                          sind. Spätere Workflow-Bearbeitungen ändern sie nicht.
                  printed_copy:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Wahrscheinlichkeit, dass das Dokument für diesen
                          Betrugstyp echt ist, 0-100 (höher = wahrscheinlicher
                          echt). Der niedrigere der beiden Seitenwerte – der von
                          der Entscheidung verwendete Wert. `null`, wenn keine
                          der beiden Seiten einen nutzbaren Wert geliefert hat.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Score für die Vorderseite; `null`, wenn nicht erfasst
                          oder wenn der Score verworfen wurde.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Score für die Rückseite; `null`, wenn nicht erfasst
                          oder wenn der Score verworfen wurde.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Der Ablehnungsschwellenwert, der bei der Auswertung
                          dieses Dokuments gespeichert wurde. Spätere
                          Workflow-Änderungen ändern ihn nicht. Null, wenn
                          historische Auswertungsnachweise nicht verfügbar sind.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Der Schwellenwert für die Prüfung, der bei der
                          Bewertung dieses Dokuments gespeichert wurde. Spätere
                          Workflow-Bearbeitungen ändern ihn nicht. Null, wenn
                          historische Bewertungsnachweise nicht verfügbar sind.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Die zum Auswertungszeitpunkt gespeicherte
                          Betrugstyp-Kategorie. Null, wenn kein verwertbarer
                          Score vorliegt, die Prüfung nicht angewendet wurde
                          oder historische Auswertungsnachweise nicht verfügbar
                          sind. Spätere Workflow-Bearbeitungen ändern sie nicht.
                  screen_replay:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Wahrscheinlichkeit, dass das Dokument für diesen
                          Betrugstyp echt ist, 0-100 (höher = wahrscheinlicher
                          echt). Der niedrigere der beiden Seitenwerte – der von
                          der Entscheidung verwendete Wert. `null`, wenn keine
                          der beiden Seiten einen nutzbaren Wert geliefert hat.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Score für die Vorderseite; `null`, wenn nicht erfasst
                          oder wenn der Score verworfen wurde.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Score für die Rückseite; `null`, wenn nicht erfasst
                          oder wenn der Score verworfen wurde.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Der Ablehnungsschwellenwert, der bei der Auswertung
                          dieses Dokuments gespeichert wurde. Spätere
                          Workflow-Änderungen ändern ihn nicht. Null, wenn
                          historische Auswertungsnachweise nicht verfügbar sind.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Der Schwellenwert für die Prüfung, der bei der
                          Bewertung dieses Dokuments gespeichert wurde. Spätere
                          Workflow-Bearbeitungen ändern ihn nicht. Null, wenn
                          historische Bewertungsnachweise nicht verfügbar sind.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Die zum Auswertungszeitpunkt gespeicherte
                          Betrugstyp-Kategorie. Null, wenn kein verwertbarer
                          Score vorliegt, die Prüfung nicht angewendet wurde
                          oder historische Auswertungsnachweise nicht verfügbar
                          sind. Spätere Workflow-Bearbeitungen ändern sie nicht.
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  Adressvalidierung der auf diesem Dokument aufgedruckten
                  Adresse: ob sie existiert und ihre normalisierte Form, wie sie
                  aus dem Dokument ausgelesen wurde (eine spätere Korrektur von
                  `address` führt sie nicht erneut aus). Vorhanden, wenn dieser
                  Ausweisverifizierungs-Schritt das Add-on Adressvalidierung
                  aktiviert hatte; andernfalls `null`.
              region:
                type: string
                nullable: true
                description: >-
                  Region oder Bundesstaat des Ausstellungslandes des Dokuments,
                  sofern auf dem Dokument angegeben.
              extracted_data:
                type: object
                nullable: true
                additionalProperties: true
                description: >-
                  Snapshot der aus dem Dokument extrahierten Daten, die der
                  Person zur Überprüfung vorgelegt wurden, gespeichert neben den
                  bestätigten Werten, damit Sie vergleichen können, was
                  ausgelesen und was von der Person bestätigt wurde. `null`,
                  wenn die Person nicht um Überprüfung gebeten wurde.
              barcodes:
                type: array
                items:
                  type: object
                  additionalProperties: true
                description: >-
                  Aus den Barcodes des Dokuments ausgelesene Daten. Leer, wenn
                  das Dokument keine enthält oder keine ausgelesen wurden.
        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: >-
            Warum die NFC-Chip-Verifizierung nicht ausgeführt wurde; wird
            angegeben, wenn der Workflow einen NFC-Schritt enthält. `null`,
            solange NFC aussteht oder wenn der Chip tatsächlich gelesen wurde.
            Werte: `USER_SKIPPED` – der Benutzer hat sich entschieden, den
            Schritt auf einem NFC-fähigen Gerät zu überspringen (durch
            `allow_nfc_skip` erlaubt); `DOCUMENT_WITHOUT_CHIP` – das Dokument
            besitzt keinen lesbaren NFC-Chip (kein elektronisches Dokument nach
            ICAO 9303); `CHIP_CERTIFICATE_UNAVAILABLE` – das Signaturzertifikat
            des Ausstellungslands (CSCA) für den Ausgabezeitraum des Dokuments
            ist nicht verfügbar, sodass die Chipsignatur nicht überprüft werden
            kann; `DEVICE_WITHOUT_NFC` – das Gerät hat kein NFC-Lesegerät
            gemeldet; `INTEGRATION_WITHOUT_NFC_ACCESS` – die Verifizierung lief
            ohne natives SDK (z. B. in einem Webbrowser), das keinen Zugriff auf
            das NFC-Lesegerät des Telefons hat; `MRZ_KEY_UNAVAILABLE` – der
            Chip-Zugriffsschlüssel konnte nicht aus der MRZ des Dokuments
            abgeleitet werden; `JPKI_UNAVAILABLE` – das Dokument ist eine
            japanische My Number Card, deren Chip über JPKI gelesen wird, und
            JPKI war für diese Verifizierung nicht verfügbar: es ist nicht
            aktiviert oder das native SDK der App kann keine My Number Cards
            lesen.
        nfc_verifications:
          type: array
          nullable: true
          description: >-
            **Array von NFC- / ePass-Berichten**, die von NFC-Schritten im
            Workflow-Graphen erzeugt wurden. **Dies ist immer ein JSON-Array,
            niemals ein einzelnes `nfc`-Objekt** – lesen Sie
            `nfc_verifications[0]` und iterieren Sie, falls Ihr Workflow NFC
            mehr als einmal ausführen kann. `null`, bis mindestens ein
            NFC-Schritt Daten erzeugt hat. Jeder Eintrag ist der vollständige
            Bericht, einschließlich `node_id`, `status` auf Funktionsebene,
            `chip_protocol`, `chip_data`, `authenticity` (SOD + DG-Integrität),
            `certificate_summary` sowie `warnings[]`. Eine japanische My Number
            Card wird über JPKI anstelle von ICAO 9303 ausgelesen: Ihr Eintrag
            weist `chip_protocol: "jpki"` auf, führt ihre Nachweise unter `jpki`
            und lässt die ICAO-Felder `null`. Wenn der NFC-Schritt übersprungen
            wurde, bevor er überhaupt angeboten werden konnte (Dokument ohne
            Chip, fehlendes Zertifikat, keine gemeldete NFC-Fähigkeit,
            unlesbarer MRZ-Schlüssel, JPKI für eine My Number Card nicht
            verfügbar), bleibt dies `null` und `nfc_skip_reason` erklärt den
            Grund; ein Überspringen beim Schritt selbst (Benutzer hat auf
            Überspringen getippt oder das Lesegerät war zum Scanzeitpunkt nicht
            verfügbar) erzeugt dennoch einen Bericht mit `is_nfc_skipped: true`.
          items:
            type: object
            description: >-
              Ein NFC-Bericht: der vollständige Bericht für ein einzelnes
              Auslesen des Chips (ein ICAO-9303-ePassport- oder eID-Chip oder
              eine über JPKI ausgelesene japanische My Number Card).
            properties:
              node_id:
                type: string
                description: >-
                  Workflow-Graph-Knoten-ID des NFC-Schritts, der diesen Bericht
                  erstellt hat. Verwenden Sie sie, um den Bericht mit der
                  Workflow-Definition zu korrelieren.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Status auf Funktionsebene dieses NFC-Schritts. Unabhängig vom
                  `status` der übergeordneten Sitzung – eine Sitzung kann ihre
                  Gesamtentscheidung erreichen, während eine einzelne Funktion
                  `In Review` bleibt.
              is_nfc_skipped:
                type: boolean
                description: >-
                  `true`, wenn dieser NFC-Schritt explizit übersprungen statt
                  ausgelesen wurde; `skip_reason` gibt den Grund an.
              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: >-
                  Warum dieser NFC-Schritt übersprungen wurde. Nur gesetzt, wenn
                  `is_nfc_skipped` den Wert `true` hat. Gleiche Taxonomie wie
                  das sitzungsbezogene `nfc_skip_reason`, das zusätzlich die
                  Fälle abdeckt, in denen NFC überhaupt keinen Bericht erzeugt
                  hat.
              chip_protocol:
                type: string
                enum:
                  - icao
                  - jpki
                description: >-
                  Wie der NFC-Schritt den Chip liest. `icao`: ICAO 9303
                  ePassport- oder eID-Chip, geöffnet mit dem Zugriffsschlüssel
                  aus der MRZ. `jpki`: Japanische My Number Card, bei der die
                  Karte eine einmalige Challenge signiert, nachdem der Inhaber
                  die Karten-PIN in einem nativen SDK eingegeben hat; das
                  Ergebnis befindet sich unter `jpki`. Wird auch bei
                  übersprungenen Schritten gesetzt, sodass Sie einen
                  übersprungenen Lesevorgang der My Number Card unterscheiden
                  können.
              jpki:
                type: object
                nullable: true
                description: >-
                  Was das Auslesen einer japanischen My Number Card über JPKI
                  nachgewiesen hat. Vorhanden, wenn `chip_protocol` den Wert
                  `jpki` hat und die Karte ausgelesen wurde. `null` bei
                  ICAO-Chips, bei übersprungenen Schritten und wenn der
                  NFC-Schritt beendet wurde, ohne dass eine Karte ausgelesen
                  wurde (dieser Fall löst `JPKI_SIGNATURE_INVALID` aus). Enthält
                  niemals die Zertifikate, deren Seriennummern, die Signaturen
                  oder die 12-stellige My Number.
                properties:
                  certificate_types:
                    type: array
                    items:
                      type: string
                      enum:
                        - user_authentication
                        - signature
                    description: >-
                      Die gelesenen Kartenzertifikate. `user_authentication`
                      (4-stellige PIN) wird immer gelesen; `signature`
                      (Signatur-PIN) wird gelesen, wenn die Einstellung
                      `jpki_request_attributes` des NFC-Knotens aktiviert ist.
                  chain_valid:
                    type: boolean
                    description: >-
                      `true`, wenn jedes gelesene Zertifikat auf die
                      JPKI-Zertifizierungsstelle zurückgeht, innerhalb seiner
                      Gültigkeitsdauer liegt und ein My Number Card-Zertifikat
                      seines Typs ist.
                  signature_valid:
                    type: boolean
                    description: >-
                      `true`, wenn jede von der Karte über die Einmal-Challenge
                      erstellte Signatur erfolgreich geprüft wird. Die Karte
                      signiert erst nach Eingabe ihrer PIN, was den Besitz der
                      Karte und die Kenntnis der PIN nachweist.
                  revocation_status:
                    type: string
                    enum:
                      - good
                      - revoked
                      - unchecked
                    description: >-
                      `good`, wenn die Sperrprüfung bestätigt hat, dass jedes
                      Zertifikat gültig ist, `revoked`, wenn ein Zertifikat
                      gesperrt ist (zum Beispiel eine als verloren gemeldete
                      Karte), `unchecked`, wenn keine Antwort zur Sperrung
                      verfügbar war. `unchecked` wird niemals als `good`
                      behandelt: Die Option `jpki_revocation_unchecked_action`
                      des NFC-Knotens bestimmt das Ergebnis (Standardwert
                      `REVIEW`).
                  ca_generation:
                    type: string
                    nullable: true
                    description: >-
                      Generation der JPKI-Zertifizierungsstelle, die die
                      Zertifikate ausgestellt hat, beispielsweise `2023`.
                      `null`, wenn kein Zertifikat auf eine solche zurückgeht.
                  certificate_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: Das früheste Ablaufdatum unter den gelesenen Zertifikaten.
                  certificates:
                    type: array
                    items:
                      type: object
                      description: >-
                        Was ein von der Karte gelesenes Zertifikat nachgewiesen
                        hat. Niemals das Zertifikat selbst oder seine
                        Seriennummer.
                      properties:
                        type:
                          type: string
                          enum:
                            - user_authentication
                            - signature
                          description: Welches Kartenzertifikat dieser Eintrag beschreibt.
                        chain_valid:
                          type: boolean
                          description: >-
                            `true`, wenn das Zertifikat auf die
                            JPKI-Zertifizierungsstelle seines Typs zurückgeht,
                            innerhalb seiner Gültigkeitsdauer liegt und ein My
                            Number Card-Zertifikat dieses Typs ist.
                        signature_valid:
                          type: boolean
                          description: >-
                            `true`, wenn die Signatur der Karte über die
                            Einmal-Challenge anhand dieses Zertifikats
                            verifiziert werden kann.
                        ca_generation:
                          type: string
                          nullable: true
                          description: >-
                            Generation der JPKI-Zertifizierungsstelle, die das
                            Zertifikat ausgestellt hat, beispielsweise `2023`.
                            `null`, wenn kein vertrauenswürdiger Aussteller
                            gefunden wurde.
                        not_valid_before:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Beginn der Gültigkeitsdauer des Zertifikats. `null`,
                            wenn das Zertifikat nicht gelesen werden konnte.
                        not_valid_after:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Ende der Gültigkeitsdauer des Zertifikats. `null`,
                            wenn das Zertifikat nicht gelesen werden konnte.
                        failure:
                          type: string
                          nullable: true
                          enum:
                            - unreadable_certificate
                            - untrusted_issuer
                            - expired
                            - not_yet_valid
                            - wrong_policy
                            - key_usage
                            - null
                          description: >-
                            Warum `chain_valid` den Wert `false` hat:
                            `unreadable_certificate`, `untrusted_issuer` (nicht
                            von der JPKI-Zertifizierungsstelle dieses Typs
                            ausgestellt), `expired`, `not_yet_valid`,
                            `wrong_policy` (kein My Number Card-Zertifikat
                            dieses Typs) oder `key_usage` (der Schlüssel darf
                            nicht signieren). `null`, wenn die Kette gültig ist.
                    description: >-
                      Ergebnisse pro Zertifikat, ein Eintrag pro gelesenem
                      Zertifikat.
                  attributes:
                    type: object
                    nullable: true
                    description: >-
                      Die Daten des Inhabers aus dem Signaturzertifikat, sobald
                      dessen Kette gültig ist. `null`, wenn das
                      Signaturzertifikat nicht angefordert wurde oder keine
                      gültige Zertifikatskette bis zur
                      JPKI-Zertifizierungsstelle aufwies.
                    properties:
                      full_name:
                        type: string
                        nullable: true
                        description: >-
                          Name wie registriert, in der Regel in japanischem
                          Schriftsystem.
                      date_of_birth:
                        type: string
                        format: date
                        nullable: true
                        description: >-
                          Geburtsdatum, `YYYY-MM-DD`. `null`, wenn das
                          registrierte Datum unvollständig ist.
                      gender:
                        type: string
                        nullable: true
                        enum:
                          - M
                          - F
                          - null
                        description: '`M`, `F` oder `null`, wenn nicht registriert.'
                      address:
                        type: string
                        nullable: true
                        description: Eingetragene Adresse.
                      name_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          Positionszeichenkette, die die Zeichen von `full_name`
                          kennzeichnet, die durch ein Ersatzzeichen ersetzt
                          wurden, weil das Originalzeichen außerhalb des
                          Standardzeichensatzes liegt. `null`, wenn keine
                          ersetzt wurden.
                      address_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          Positionszeichenkette, die Ersatzzeichen in `address`
                          kennzeichnet, wie bei `name_substitute_characters`.
                  attributes_match_ocr:
                    type: boolean
                    nullable: true
                    description: >-
                      `true`, wenn die Attribute mit den aus dem Foto derselben
                      Karte gelesenen Daten übereinstimmen, `false`, wenn ein
                      Attribut abweicht (`JPKI_AND_OCR_DATA_NOT_SAME`), `null`,
                      wenn nichts verglichen werden konnte, einschließlich wenn
                      `attributes` gleich `null` ist.
                  mismatched_attributes:
                    type: array
                    items:
                      type: string
                      enum:
                        - full_name
                        - date_of_birth
                        - gender
                        - address
                    description: >-
                      Namen der Attribute, die von den Fotodaten abweichen,
                      niemals deren Werte. Leer, wenn alle verglichenen Daten
                      übereinstimmen.
              portrait_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  Vorsignierte URL zum aus dem Chip ausgelesenen Porträt (ICAO
                  DG2). `null` bei einem JPKI-Auslesevorgang (`chip_protocol:
                  "jpki"`) sowie für übersprungene Schritte.
              signature_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  Vorsignierte URL zum aus dem Chip ausgelesenen
                  Unterschriftsbild des Inhabers (ICAO DG7), sofern der Chip ein
                  solches speichert. `null` bei einem JPKI-Auslesevorgang
                  (`chip_protocol: "jpki"`) sowie für übersprungene Schritte.
              chip_data:
                type: object
                nullable: true
                description: >-
                  Aus den Datengruppen des ICAO-Chips geparste personenbezogene
                  Daten. `null` bei einem JPKI-Lesevorgang (`chip_protocol:
                  "jpki"`) und bei übersprungenen Schritten.
                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: >-
                  Passive ICAO-Authentifizierung: SOD-Signatur (`sod_integrity`)
                  und Data-Group-Hashes (`dg_integrity`). `null` bei einem
                  JPKI-Lesevorgang, dessen Nachweis unter `jpki` ausgewiesen
                  wird.
                properties:
                  sod_integrity:
                    type: boolean
                  dg_integrity:
                    type: boolean
              certificate_summary:
                type: object
                nullable: true
                description: >-
                  Zusammenfassung des ICAO Document Signer Certificate. `null`
                  für einen JPKI-Lesevorgang (`chip_protocol: "jpki"`) und für
                  übersprungene Schritte.
                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: >-
                        Die Funktion, die diese Warnung generiert hat. Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert (z. B.
                        `PHONE` innerhalb von `phone_verifications[].warnings`),
                        aber das obige Enum ist für alle Funktionswarnungen in
                        der Entscheidungs-Payload maßgeblich.
                    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: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat
        liveness_checks:
          type: array
          nullable: true
          description: >-
            **Array von Berichten zur Liveness-Erkennung**, die von Schritten
            zur Liveness-Erkennung im Workflow-Graphen erzeugt wurden. Immer ein
            JSON-Array – niemals ein einzelnes `liveness`-Objekt. `null`, bis
            mindestens ein Schritt zur Liveness-Erkennung Daten erzeugt hat.
            Jeder Eintrag ist der vollständige Bericht, einschließlich
            `node_id`, `status` auf Funktionsebene, `method`, `score`,
            `reference_image`, `video_url`, optionaler `age_estimation`,
            sitzungsübergreifenden `matches[]` sowie `warnings[]`.
          items:
            type: object
            description: >-
              Ein Liveness-Bericht — der vollständige Bericht für einen
              einzelnen Liveness-Durchlauf.
            properties:
              node_id:
                type: string
                description: >-
                  Workflow-Graph-Knoten-ID des Liveness-Schritts, der diesen
                  Bericht erstellt hat.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Status auf Funktionsebene dieses Liveness-Schritts. Unabhängig
                  vom `status` der übergeordneten Sitzung – eine Sitzung kann
                  ihre Gesamtentscheidung erreichen, während eine einzelne
                  Funktion `In Review` bleibt.
              method:
                type: string
                description: Für die Liveness-Erkennung verwendete Methode
              score:
                type: number
                description: Konfidenzwert der Liveness-Prüfung
              reference_image:
                type: string
                format: uri
                description: URL des verwendeten Referenzbildes
              video_url:
                type: string
                format: uri
                description: URL des Videos der Liveness-Erkennung
              age_estimation:
                type: number
                description: Geschätztes Alter der Person
              matches:
                type: array
                description: >-
                  Ähnliche Gesichter, die durch die Duplikatsgesichtssuche
                  gefunden wurden (beste Treffer, Einträge auf
                  Sperrlisten/Positivlisten zuerst). Das Feld `source` jedes
                  Eintrags gibt an, woher das übereinstimmende Gesicht stammt:
                  `session` (eine andere Verifizierungssitzung), `imported` (ein
                  für einen Vendor-Benutzer hochgeladenes Gesicht), `list_entry`
                  (ein von der Organisation verwaltetes Gesicht aus einer
                  Positiv-/Sperrliste) oder `retained_template` (ein bildfreies
                  biometrisches Template, das bei einem Benutzer gespeichert ist
                  und unter `/v3/biometric-templates/` aufgeführt wird).
                  `session_id`, `session_number`, `status` und `api_service`
                  sind für Nicht-Sitzungsquellen `null`. Bei Treffern mit
                  `imported` werden weiterhin `vendor_data`, `verification_date`
                  und – sofern für den Vendor-Benutzer ein Name hinterlegt ist –
                  `user_details` (nur mit `full_name`) aus dem
                  Vendor-Benutzerdatensatz befüllt; bei
                  `retained_template`-Treffern werden `vendor_user_id`,
                  `vendor_data`, `biometric_template_id` und `verification_date`
                  befüllt, während deren Bild- und Identitätsfelder `null` sind;
                  bei `list_entry`-Treffern werden alle diese Felder als `null`
                  zurückgegeben.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        Sitzungs-ID des übereinstimmenden Gesichts. `null`, wenn
                        `source` den Wert `imported`, `list_entry` oder
                        `retained_template` hat.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: >-
                        Gesichtsähnlichkeit zwischen den beiden Bildern,
                        begrenzt auf 0–100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` der übereinstimmenden Sitzung oder des
                        verknüpften Benutzers für importierte und aufbewahrte
                        Template-Gesichter.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        Verknüpfte Benutzer-ID für `imported`- und
                        `retained_template`-Treffer sowie für Sitzungstreffer,
                        die mit einem Benutzer verknüpft sind. `null` für
                        Listeneinträge und Sitzungen ohne Benutzer.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID des aufbewahrten biometrischen Templates. Wird nur
                        gesetzt, wenn `source` den Wert `retained_template` hat;
                        andernfalls `null`.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Wann das übereinstimmende Gesicht erfasst wurde oder
                        wann eine aufbewahrte Vorlage erstellt wurde. `null` für
                        Listeneinträge.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        Identitätsdaten aus der übereinstimmenden Sitzung oder
                        dem importierten Benutzerprofil. Immer `null` bei
                        Übereinstimmungen mit `retained_template` und
                        `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: >-
                        Referenzbild für bildbasierte Abgleiche. Immer `null`
                        bei `retained_template`-Abgleichen, da gespeicherte
                        Templates kein Bild enthalten.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        Lebenszyklusstatus der übereinstimmenden Sitzung. `null`
                        für Quellen, die keine Sitzungen sind.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Gibt an, ob das übereinstimmende Gesicht auf einer
                        Sperrliste steht.
                    is_allowlisted:
                      type: boolean
                      description: >-
                        Gibt an, ob das übereinstimmende Gesicht auf einer
                        Positivliste steht.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Eigenständiger API-Service der zugehörigen Sitzung (z.
                        B. `PASSIVE_LIVENESS`, `FACE_MATCH`); `null` für
                        Workflow-Sitzungen und Nicht-Sitzungsquellen.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        Ursprung des übereinstimmenden Gesichts: `session`,
                        `imported` (Gesichts-Upload des Benutzers), `list_entry`
                        (Positiv-/Sperrliste) oder `retained_template` (ein
                        bildfreies biometrisches Template, das bei einem
                        Benutzer gespeichert ist, aufgeführt unter
                        `/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: >-
                        Die Funktion, die diese Warnung generiert hat. Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert (z. B.
                        `PHONE` innerhalb von `phone_verifications[].warnings`),
                        aber das obige Enum ist für alle Funktionswarnungen in
                        der Entscheidungs-Payload maßgeblich.
                    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: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat
              face_quality:
                type: number
                nullable: true
                description: >-
                  Qualitätswert des Gesichtsbildes (0-100%). Nur für passive
                  Liveness-Erkennung verfügbar.
              face_luminance:
                type: number
                nullable: true
                description: >-
                  Gesichts-Luminanz-/Helligkeitswert (0-100%). Nur für passive
                  Liveness-Erkennung verfügbar.
        face_matches:
          type: array
          nullable: true
          description: >-
            **Array von Gesichtsabgleichsberichten**, die von
            Gesichtsabgleichsschritten im Workflow-Graphen erzeugt wurden. Immer
            ein JSON-Array – niemals ein einzelnes `face_match`-Objekt. `null`,
            bis mindestens ein Gesichtsabgleichsschritt Daten erzeugt hat. Jeder
            Eintrag ist der vollständige Bericht, einschließlich `node_id`,
            `status` auf Funktionsebene, Ähnlichkeits-`score`, `source_image`,
            `target_image` sowie `warnings[]`.
          items:
            type: object
            description: Ein Gesichtsabgleichs-Bericht — der vollständige Bericht.
            properties:
              node_id:
                type: string
                description: >-
                  Workflow-Graph-Knoten-ID des Gesichtsabgleich-Schritts, der
                  diesen Bericht erstellt hat.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Status auf Funktionsebene dieses Gesichtsabgleich-Schritts.
                  Unabhängig vom `status` der übergeordneten Sitzung – eine
                  Sitzung kann ihre Gesamtentscheidung erreichen, während eine
                  einzelne Funktion `In Review` bleibt.
              score:
                type: number
                description: Konfidenzwert des Gesichtsabgleichs
              source_image_session_id:
                type: string
                format: uuid
                nullable: true
                description: >-
                  Sitzungs-ID, unter der das Quellporträt (Referenzporträt)
                  gespeichert ist. Bei Abläufen zur biometrischen
                  Authentifizierung ist dies die eigene ID der Sitzung (das
                  übermittelte Porträt wird unter der neuen Sitzung
                  gespeichert). `null`, wenn das Quellbild das Dokumentenporträt
                  derselben Sitzung ist.
              source_image:
                type: string
                format: uri
                description: URL des für den Abgleich verwendeten Quellbildes
              target_image:
                type: string
                format: uri
                description: URL des für den Abgleich verwendeten Zielbildes
              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: >-
                        Die Funktion, die diese Warnung generiert hat. Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert (z. B.
                        `PHONE` innerhalb von `phone_verifications[].warnings`),
                        aber das obige Enum ist für alle Funktionswarnungen in
                        der Entscheidungs-Payload maßgeblich.
                    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: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat
                description: Warnungen zur Gesichtsabgleichsprüfung
              face_coverage:
                type: object
                nullable: true
                description: >-
                  Gibt an, ob Augen, Mund und Gesicht im erfassten Bild verdeckt
                  sind. Wird nur von `GET /v3/session/{sessionId}/decision/`
                  zurückgegeben; ist nicht Teil von Webhook-Payloads. `null`,
                  wenn kein Verdeckungswert vorliegt.
                properties:
                  eyes:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` bedeutet, dass der Messwert nur als
                          Schattennachweis dient und keine Warnung darauf
                          reagiert.
                      visibility_score:
                        type: number
                        nullable: true
                  mouth:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` bedeutet, dass der Messwert nur als
                          Schattennachweis dient und keine Warnung darauf
                          reagiert.
                      visibility_score:
                        type: number
                        nullable: true
                  face:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` bedeutet, dass der Messwert nur als
                          Schattennachweis dient und keine Warnung darauf
                          reagiert.
                      visibility_score:
                        type: number
                        nullable: true
        phone_verifications:
          type: array
          nullable: true
          description: >-
            **Array von Telefonverifizierungsberichten** – immer ein JSON-Array,
            niemals ein einzelnes `phone`-Objekt. `null`, bis mindestens ein
            Telefonschritt Daten erzeugt hat. Jeder Eintrag ist der vollständige
            Bericht, einschließlich `node_id`, `status` auf Funktionsebene, der
            Telefonnummer und Ländermetadaten, `lifecycle[]`, `matches[]` sowie
            `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Eindeutige Kennung für diesen Telefon-Schritt im
                  Workflow-Graphen.
              status:
                type: string
                description: >-
                  Status auf Funktionsebene dieses Schritts der
                  Telefonverifizierung. Unabhängig vom `status` der
                  übergeordneten Sitzung – eine Sitzung kann ihre
                  Gesamtentscheidung erreichen, während eine einzelne Funktion
                  `In Review` bleibt.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              phone_number_prefix:
                type: string
                description: Ländervorwahl-Präfix
              phone_number:
                type: string
                description: Telefonnummer ohne Ländervorwahl
              full_number:
                type: string
                description: Vollständige Telefonnummer mit Ländervorwahl
              country_code:
                type: string
                description: Zweistelliger Ländercode (ISO 3166-1 Alpha-2)
              country_name:
                type: string
                description: Vollständiger Ländername
              carrier:
                type: object
                properties:
                  name:
                    type: string
                    description: Name des Mobilfunkanbieters
                  type:
                    type: string
                    description: Art des Telefonanschlusses (Mobilfunk, Festnetz usw.)
              is_disposable:
                type: boolean
                description: Gibt an, ob die Telefonnummer von einem Wegwerfdienst stammt
              is_virtual:
                type: boolean
                description: Gibt an, ob es sich um eine virtuelle Telefonnummer handelt
              verification_method:
                type: string
                description: Zur Verifizierung der Telefonnummer verwendete Methode
              verification_attempts:
                type: integer
                description: Anzahl der durchgeführten Verifizierungsversuche
              verified_at:
                type: string
                format: date-time
                description: Zeitstempel, wann das Telefon verifiziert wurde
              lifecycle:
                type: array
                description: >-
                  Chronologische Liste der Ereignisse im Lebenszyklus der
                  Telefonverifizierung.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        Ereignisspezifische Payload. Sende-Ereignisse enthalten
                        `status`, `reason`, `channel`, `actual_channel`;
                        Zustellungs-Ereignisse enthalten `channel`, `status`;
                        Code-Prüfungs-Ereignisse enthalten `code_tried`,
                        `status`; finale Status-Ereignisse enthalten `reason` –
                        oder `null`, wenn kein Grund zu melden ist (z. B.
                        `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: Liste von Warnungen bezüglich der Telefonverifizierung
                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: >-
                        Die Funktion, die diese Warnung generiert hat. Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert (z. B.
                        `PHONE` innerhalb von `phone_verifications[].warnings`),
                        aber das obige Enum ist für alle Funktionswarnungen in
                        der Entscheidungs-Payload maßgeblich.
                    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: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat
              matches:
                type: array
                description: >-
                  Für diese Telefonnummer gefundene Übereinstimmungen. Jede
                  Übereinstimmung hat eine `source`: `session` (eine andere
                  Verifizierungssitzung in Ihrer Anwendung stimmte mit derselben
                  Nummer überein, zurückgegeben mit
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  oder `list_entry` (die Nummer befindet sich auf einer von der
                  Organisation verwalteten Erlaubnis-/Sperrliste – siehe
                  `/management-api/lists/overview`). Sitzungsübergreifende
                  Übereinstimmungen verwenden unterschiedliche `vendor_data` und
                  sind auf 5 begrenzt.
                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: >-
                        Woher diese Übereinstimmung stammt. `session` bedeutet,
                        dass eine andere Verifizierungssitzung in Ihrer
                        Anwendung mit diesem Wert übereinstimmte. `list_entry`
                        bedeutet, dass der Wert mit einer von der Organisation
                        verwalteten Liste (Allowlist/Sperrliste) übereinstimmte
                        – siehe die Übersicht der Management-API-Listen unter
                        `/management-api/lists/overview` zur Verwaltung dieser
                        Listen.
              phone_intelligence:
                allOf:
                  - $ref: '#/components/schemas/PhoneIntelligence'
                description: >-
                  Telefon-Intelligence-Signale. Nur vorhanden, wenn das
                  Telefon-Intelligence-Add-on für diese Nummer ausgeführt wurde.
              phone_social:
                allOf:
                  - $ref: '#/components/schemas/PhoneSocialFootprint'
                description: >-
                  Social Footprint der Nummer. Nur vorhanden, wenn das
                  Social-Footprint-Add-on für diese Nummer ausgeführt wurde.
        email_verifications:
          type: array
          nullable: true
          description: >-
            **Array von E-Mail-Verifizierungsberichten** – immer ein JSON-Array,
            niemals ein einzelnes `email`-Objekt. `null`, bis mindestens ein
            E-Mail-Schritt Daten erzeugt hat. Jeder Eintrag ist der vollständige
            Bericht, einschließlich `node_id`, `status` auf Funktionsebene, der
            E-Mail-Adresse, Daten zu Datenlecks, `lifecycle[]`, `matches[]`
            sowie `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Eindeutige Kennung für diesen E-Mail-Schritt im
                  Workflow-Graphen.
              status:
                type: string
                description: >-
                  Status auf Funktionsebene dieses Schritts der
                  E-Mail-Verifizierung. Unabhängig vom `status` der
                  übergeordneten Sitzung – eine Sitzung kann ihre
                  Gesamtentscheidung erreichen, während eine einzelne Funktion
                  `In Review` bleibt.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              email:
                type: string
                description: Die E-Mail-Adresse, die verifiziert wird
              is_breached:
                type: boolean
                description: Gibt an, ob die E-Mail in bekannten Datenlecks gefunden wurde
              breaches:
                type: array
                description: >-
                  Liste bekannter Datenpannen, in denen diese E-Mail gefunden
                  wurde
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Name des Verstoßes
                    domain:
                      type: string
                      description: Von der Sicherheitsverletzung betroffene Domain
                    logo_path:
                      type: string
                      description: >-
                        URL zum Logo des von einer Datenschutzverletzung
                        betroffenen Dienstes
                    breach_date:
                      type: string
                      format: date
                      description: Datum, an dem der Verstoß auftrat
                    description:
                      type: string
                      description: Beschreibung des Verstoßes
                    is_verified:
                      type: boolean
                      description: Gibt an, ob das Datenleck verifiziert ist
                    data_classes:
                      type: array
                      description: Arten der bei der Datenpanne offengelegten Daten
                      items:
                        type: string
                    breach_emails_count:
                      type: integer
                      description: Anzahl der vom Datenleck betroffenen E-Mail-Adressen
              is_disposable:
                type: boolean
                description: Gibt an, ob die E-Mail von einem Wegwerf-Anbieter stammt
              is_undeliverable:
                type: boolean
                description: Gibt an, ob die E-Mail-Adresse unzustellbar ist
              verification_attempts:
                type: integer
                description: Anzahl der Verifizierungsversuche für diese E-Mail
              verified_at:
                type: string
                format: date-time
                description: Zeitstempel, wann die E-Mail verifiziert wurde
              warnings:
                type: array
                description: Liste von Warnungen bezüglich der E-Mail-Verifizierung
                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: >-
                        Die Funktion, die diese Warnung generiert hat. Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert (z. B.
                        `PHONE` innerhalb von `phone_verifications[].warnings`),
                        aber das obige Enum ist für alle Funktionswarnungen in
                        der Entscheidungs-Payload maßgeblich.
                    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: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat
              lifecycle:
                type: array
                description: >-
                  Chronologische Liste der Ereignisse im Lebenszyklus der
                  E-Mail-Verifizierung.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        Ereignisspezifische Payload. Sende-Ereignisse enthalten
                        `status`, `reason`; Code-Prüfungs-Ereignisse enthalten
                        `code_tried`, `status`; finale Status-Ereignisse
                        enthalten `reason` – oder `null`, wenn kein Grund zu
                        melden ist (z. B. `EMAIL_VERIFICATION_APPROVED`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              matches:
                type: array
                description: >-
                  Für diese E-Mail-Adresse gefundene Übereinstimmungen. Jede
                  Übereinstimmung hat eine `source`: `session` (eine andere
                  Verifizierungssitzung in Ihrer Anwendung stimmte mit derselben
                  E-Mail-Adresse überein, zurückgegeben mit
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  oder `list_entry` (die E-Mail-Adresse befindet sich auf einer
                  von der Organisation verwalteten Erlaubnis-/Sperrliste – siehe
                  `/management-api/lists/overview`). Sitzungsübergreifende
                  Übereinstimmungen verwenden unterschiedliche `vendor_data` und
                  sind auf 5 begrenzt.
                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: >-
                        Woher diese Übereinstimmung stammt. `session` bedeutet,
                        dass eine andere Verifizierungssitzung in Ihrer
                        Anwendung mit diesem Wert übereinstimmte. `list_entry`
                        bedeutet, dass der Wert mit einer von der Organisation
                        verwalteten Liste (Allowlist/Sperrliste) übereinstimmte
                        – siehe die Übersicht der Management-API-Listen unter
                        `/management-api/lists/overview` zur Verwaltung dieser
                        Listen.
              email_intelligence:
                allOf:
                  - $ref: '#/components/schemas/EmailIntelligence'
                description: >-
                  E-Mail-Intelligence-Signale. Nur vorhanden, wenn das
                  E-Mail-Intelligence-Add-on für diese Adresse ausgeführt wurde.
              email_social:
                allOf:
                  - $ref: '#/components/schemas/EmailSocialFootprint'
                description: >-
                  Social Footprint der Adresse. Nur vorhanden, wenn das
                  Social-Footprint-Add-on für diese Adresse ausgeführt wurde.
        poa_verifications:
          type: array
          nullable: true
          description: >-
            **Array von Adressnachweis-Berichten (POA)** – immer ein JSON-Array,
            niemals ein einzelnes `poa`-Objekt. `null`, bis mindestens ein
            POA-Schritt Daten erzeugt hat. Jeder Eintrag ist der vollständige
            Bericht, einschließlich `node_id`, `status` auf Funktionsebene, der
            Dokumentdatei-URL, Aussteller, Datumsangaben, geparster Adresse
            sowie `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: Eindeutige Kennung für diesen POA-Schritt im Workflow-Graphen.
              status:
                type: string
                description: >-
                  Status auf Funktionsebene dieses Schritts des
                  Adressnachweises. Unabhängig vom `status` der übergeordneten
                  Sitzung – eine Sitzung kann ihre Gesamtentscheidung erreichen,
                  während eine einzelne Funktion `In Review` bleibt.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              document_file:
                type: string
                format: uri
                description: URL des Adressnachweis-Dokuments
              issuing_state:
                type: string
                description: Zweistelliger Ländercode des ausstellenden Staates
              document_type:
                type: string
                description: Art des Adressnachweisdokuments
              document_subtype:
                type: string
                nullable: true
                description: >-
                  Genauere Klassifizierung des Adressnachweisdokuments innerhalb
                  seines `document_type`, sofern eines erkannt wurde.
                  Andernfalls `null`.
              document_language:
                type: string
                description: Sprachcode des Dokuments
              document_metadata:
                type: object
                properties:
                  file_size:
                    type: integer
                    description: Größe des Dokuments
                  content_type:
                    type: string
                    description: Content-Type des Dokuments
                  creation_date:
                    type: string
                    format: date
                    description: Datum, an dem das Dokument erstellt wurde
                  modified_date:
                    type: string
                    format: date
                    description: Datum, an dem das Dokument geändert wurde
                  overlay_manipulation:
                    type: object
                    nullable: true
                    description: >-
                      Forensische PDF-Analyse auf mutmaßliche Manipulation von
                      Overlay-Text. Null, wenn keine Hinweise auf
                      Overlay-Manipulation gefunden wurden oder das Dokument
                      keine PDF-Datei war.
                    properties:
                      detected:
                        type: boolean
                        description: >-
                          Gibt an, ob Hinweise auf eine
                          Textüberlagerungsmanipulation erkannt wurden.
                      analyzed:
                        type: boolean
                        description: Gibt an, ob das PDF analysiert werden konnte.
                      analysis_incomplete:
                        type: boolean
                        description: >-
                          Vorhanden und nur dann true, wenn die Datei nicht
                          vollständig geprüft werden konnte. Was geprüft wurde,
                          behält seine Ergebnisse, soweit möglich, und das
                          Dokument gibt die Warnung zur nicht nachgewiesenen
                          Textersetzung aus.
                      signals:
                        type: array
                        items:
                          type: string
                        description: >-
                          Forensische Signale, die ausgelöst wurden, wie z. B.
                          duplicate_font_subset oder glyph_fragmentation.
                      manipulated_regions:
                        type: array
                        description: >-
                          Mutmaßlich manipulierte Bereiche in Koordinaten der
                          PDF-Seite.
                        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: >-
                      Ersteller-Anwendung, die in den Dokumenten-Metadaten
                      erfasst ist.
                  producer:
                    type: string
                    nullable: true
                    description: In den PDF-Metadaten erfasste Erstellungssoftware.
                  software:
                    type: string
                    nullable: true
                    description: >-
                      In den Datei-Metadaten erfasste
                      Bearbeitungs-/Verarbeitungssoftware.
                  encryption:
                    type: string
                    nullable: true
                    description: >-
                      Verschlüsselungsschema des Dokuments, sofern
                      verschlüsselt.
                  is_signed:
                    type: boolean
                    nullable: true
                    description: Gibt an, ob das PDF eine digitale Signatur trägt.
                  is_tampered:
                    type: boolean
                    nullable: true
                    description: >-
                      Gibt an, ob die Signaturprüfung darauf hinweist, dass die
                      Datei nach dem Signieren geändert wurde.
                  signature_info:
                    type: object
                    nullable: true
                    description: Details der digitalen Signatur(en), sofern vorhanden.
                  exif_original_date:
                    type: string
                    nullable: true
                    description: EXIF-Originalaufnahmedatum für Bild-Uploads.
                  exif_digitized_date:
                    type: string
                    nullable: true
                    description: EXIF-Digitalisierungsdatum für Bild-Uploads.
                  processed_by_known_editor:
                    type: boolean
                    nullable: true
                    description: >-
                      Gibt an, ob die Dateimetadaten auf eine Verarbeitung durch
                      einen bekannten Dokumenteneditor hinweisen.
                  has_different_creation_mod_date:
                    type: boolean
                    nullable: true
                    description: >-
                      Gibt an, ob das Erstellungs- und das Änderungsdatum
                      voneinander abweichen — ein typisches Manipulationssignal.
                description: >-
                  Aus dem hochgeladenen POA-Dokument extrahierte forensische
                  Dateimetadaten. Enthält immer die folgenden Schlüssel (Werte
                  sind `null`, wenn nicht anwendbar, z. B. EXIF-Daten für PDFs).
                  `null`, wenn keine Metadaten extrahiert werden konnten.
                nullable: true
              issuer:
                type: string
                description: Name des Dokumentenausstellers
              issue_date:
                type: string
                format: date
                description: Datum, an dem das Dokument ausgestellt wurde
              expiration_date:
                type: string
                format: date
                nullable: true
                description: Ablaufdatum des Dokuments, falls verfügbar
              poa_address:
                type: string
                description: Unverarbeitete Adresse aus dem Adressnachweis-Dokument
              poa_formatted_address:
                type: string
                description: Formatierte Adresse aus dem Adressnachweis-Dokument
              poa_parsed_address:
                type: object
                properties:
                  address_type:
                    type: string
                    description: Art der Adresse (Straße, Avenue usw.)
                  street_1:
                    type: string
                    description: Primäre Straßenadresse
                  street_2:
                    type: string
                    nullable: true
                    description: Zusätzliche Straßenadresse
                  city:
                    type: string
                    description: Name der Stadt
                  region:
                    type: string
                    description: Name der Region oder des Bundesstaats
                  country:
                    type: string
                    description: Zweistelliger Ländercode
                  postal_code:
                    type: string
                    description: Postleitzahl
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                        description: Breitengrad-Koordinate
                      longitude:
                        type: number
                        description: Längengrad-Koordinate
              name_on_document:
                type: string
                nullable: true
                description: >-
                  Aus dem Adressnachweis-Dokument extrahierter Name des
                  Kontoinhabers / Empfängers, der für den Namensabgleich
                  verwendet wird. `null`, wenn kein Name extrahiert werden
                  konnte.
              name_match_score_expected_details:
                type: number
                nullable: true
                description: >-
                  Ähnlichkeitswert (0–100) zwischen `name_on_document` und dem
                  bei der Sitzungserstellung angegebenen erwarteten Namen.
                  `null`, wenn eine der beiden Seiten fehlt.
              name_match_score_id_verification:
                type: number
                nullable: true
                description: >-
                  Ähnlichkeitswert (0–100) zwischen `name_on_document` und dem
                  durch den Schritt der Ausweisverifizierung extrahierten Namen.
                  `null`, wenn eine der beiden Seiten fehlt.
              expected_details_address:
                type: string
                nullable: true
                description: Erwartete Rohadresse zur Verifizierung
              expected_details_formatted_address:
                type: string
                nullable: true
                description: Erwartete formatierte Adresse zur Verifizierung
              expected_details_parsed_address:
                type: object
                description: Erwartete analysierte Adressdetails zur Verifizierung
              extra_fields:
                type: object
                description: >-
                  Aus dem Dokument extrahierte zusätzliche Bank- und
                  Kontaktdaten.
                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: Zusätzliche Adressnachweisdateien
              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: >-
                        Die Funktion, die diese Warnung generiert hat. Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert (z. B.
                        `PHONE` innerhalb von `phone_verifications[].warnings`),
                        aber das obige Enum ist für alle Funktionswarnungen in
                        der Entscheidungs-Payload maßgeblich.
                    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: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat
              detected_codes:
                type: array
                description: >-
                  Auf jeder verarbeiteten Seite des Dokuments erkannte QR-Codes
                  und Barcodes. Leer, wenn keine gefunden wurden. Ein
                  lokalisierter, aber nicht decodierbarer QR-Code weist
                  `parsed_payload: null` auf.
                items:
                  $ref: '#/components/schemas/DocumentAIDetectedCode'
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  Adressvalidierung der Adresse auf diesem Adressnachweis: ob
                  sie existiert und ihre normalisierte Form, wie sie aus dem
                  Dokument ausgelesen wurde (eine spätere Korrektur von
                  `poa_address` führt sie nicht erneut aus). Vorhanden, wenn
                  dieser Adressnachweis-Schritt das Add-on Adressvalidierung
                  aktiviert hatte und der Upload die Dokumentprüfungen bestanden
                  hat; andernfalls `null`.
        document_ai_documents:
          type: array
          nullable: true
          description: >-
            **Document AI-Berichte gruppiert nach Workflow-Knoten** — immer ein
            JSON-Array, niemals ein einzelnes Objekt. `null`, bis mindestens ein
            Document AI-Schritt Daten erzeugt hat. Nur vorhanden, wenn
            `session_kind = user`. Jeder Eintrag ist eine Knotengruppe mit einem
            aggregierten `status`, der `node_id`, einem `items[]`-Array der
            Ergebnisse pro Dokument (extrahierte Daten zugeordnet nach dem
            konfigurierten Feldschlüssel) und `warnings`.
          items:
            type: object
            description: Ergebnisse von Document AI, gruppiert nach Workflow-Knoten.
            properties:
              status:
                type: string
                description: >-
                  Aggregierter Document AI-Status für diesen Knoten,
                  zusammengefasst aus seinen `items[]`.
                enum:
                  - Approved
                  - Declined
                  - In Review
                  - Not Finished
              node_id:
                type: string
                nullable: true
                description: >-
                  Eindeutige Kennung für diesen Document AI-Schritt im
                  Workflow-Graphen.
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    node_id:
                      type: string
                      nullable: true
                      description: Workflow-Graph-Knoten, der dieses Dokument erstellt hat.
                    document_key:
                      type: string
                      description: >-
                        Schlüssel des konfigurierten Document-AI-Dokuments, dem
                        diese Datei entspricht.
                    original_filename:
                      type: string
                      nullable: true
                      description: Dateiname der vom Benutzer hochgeladenen Datei.
                    file_size:
                      type: integer
                      nullable: true
                      description: Dateigröße in Bytes.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: Kurzlebiger vorsignierter Link zur hochgeladenen Datei.
                    status:
                      type: string
                      enum:
                        - Approved
                        - Declined
                        - In Review
                        - Not Finished
                      description: Document AI-Status pro Dokument.
                    extracted_data:
                      type: object
                      additionalProperties: true
                      nullable: true
                      description: >-
                        Von Document AI extrahierte Werte, anhand des
                        konfigurierten Felds `key`. Jeder Wert ist ein String,
                        eine Zahl oder `null`.
                    detected_codes:
                      type: array
                      description: >-
                        Auf jeder verarbeiteten Seite erkannte QR-Codes und
                        Barcodes. Leer, wenn keine gefunden wurden. Ein
                        lokalisierter, aber nicht decodierbarer QR-Code weist
                        `parsed_payload: null` auf.
                      items:
                        $ref: '#/components/schemas/DocumentAIDetectedCode'
                    fields:
                      type: array
                      description: >-
                        Die konfigurierten Extraktionsfelder für dieses
                        Dokument.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: >-
                              Stabiler Feldschlüssel, der als Schlüssel in
                              `extracted_data` verwendet wird.
                          name:
                            type: string
                            description: Lesbarer Feldname.
                          instruction:
                            type: string
                            description: Dem Modell angezeigte Extraktionsanweisung.
                          type:
                            type: string
                            enum:
                              - text
                              - number
                              - date
                            description: Erwarteter Werttyp des extrahierten Feldes.
                          required:
                            type: boolean
                            description: Whether this field is required.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        Aus dem hochgeladenen Dokument extrahierte forensische
                        Dateimetadaten (z. B. `is_tampered`). `null`, wenn
                        nichts extrahiert werden konnte.
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        Abgleich der extrahierten Dokumentfelder mit anderen
                        Sitzungsdaten. `null`, wenn kein Abgleich durchgeführt
                        wurde.
                    created_at:
                      type: string
                      format: date-time
              warnings:
                type: array
                nullable: true
                items:
                  type: object
                description: Für diesen Document-AI-Knoten ausgelöste Warnungsprotokolle.
        questionnaire_responses:
          type: array
          nullable: true
          description: >-
            **Array von Fragebogen-Antwortberichten** – immer ein JSON-Array,
            niemals ein einzelnes `questionnaire`-Objekt. `null`, bis mindestens
            ein Fragebogenschritt Daten erzeugt hat. Jeder Eintrag ist der
            vollständige Bericht, einschließlich `node_id`, der
            Fragebogen-Metadaten, Abschnitten mit Formularelementen sowie den
            Antworten des Benutzers.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Eindeutige Kennung für diesen Fragebogen-Schritt im
                  Workflow-Graphen.
              questionnaire_id:
                type: string
                description: Eindeutige Kennung für den Fragebogen
              title:
                type: string
                description: Titel des Fragebogens
              description:
                type: string
                description: Beschreibung des Fragebogens
              languages:
                type: array
                items:
                  type: string
                description: Unterstützte Sprachen
              default_language:
                type: string
                description: Standardsprache
              is_active:
                type: boolean
                description: Gibt an, ob der Fragebogen aktiv ist
              is_simple_questionnaire:
                type: boolean
                description: >-
                  Gibt an, ob der Fragebogen ein einfaches lineares Formular ist
                  (kein verzweigter Graph).
              questionnaire_group_id:
                type: string
                format: uuid
                nullable: true
                description: >-
                  Stabiler Identifikator der Fragebogengruppe über Versionen
                  hinweg.
              version:
                type: integer
                nullable: true
                description: Versionsnummer des Fragebogens, der beantwortet wurde.
              published_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Zeitstempel, zu dem diese Fragebogenversion veröffentlicht
                  wurde.
              sections:
                type: array
                items:
                  type: object
                  properties:
                    title:
                      type: string
                      nullable: true
                      description: Abschnittstitel
                    description:
                      type: string
                      nullable: true
                      description: Abschnittsbeschreibung
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          uuid:
                            type: string
                            description: Eindeutige Kennung für das Element
                          value:
                            type: string
                            nullable: true
                            description: >-
                              Stabile Knotenkennung dieses Formularelements
                              innerhalb des Fragebogen-Graphen.
                          element_type:
                            type: string
                            description: Art des Fragebogenelements
                          is_required:
                            type: boolean
                            description: Gibt an, ob das Element erforderlich ist
                          title:
                            type: string
                            description: Titel des Eintrags
                          description:
                            type: string
                            nullable: true
                            description: Beschreibung des Eintrags
                          placeholder:
                            type: string
                            nullable: true
                            description: Platzhaltertext
                          choices:
                            type: array
                            nullable: true
                            items:
                              type: object
                              properties:
                                label:
                                  type: string
                                value:
                                  type: string
                                requires_text_input:
                                  type: boolean
                                  description: >-
                                    Gibt an, ob diese Auswahl eine zusätzliche
                                    Texteingabe erfordert
                                  nullable: true
                              required:
                                - label
                                - value
                            description: Optionen für Dropdown- oder Einzelauswahlelemente
                          max_files:
                            type: integer
                            description: Maximale Anzahl zulässiger Dateien
                            nullable: true
                          answer:
                            type: object
                            description: Für das Element bereitgestellte Antwort
                            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: >-
                              Regel für bedingte Erforderlichkeit, wenn das
                              Element nur bei bestimmten Antworten erforderlich
                              ist.
                          repeatable_config:
                            type: object
                            nullable: true
                            description: >-
                              Konfiguration für wiederholbare Elementgruppen,
                              falls zutreffend.
                        required:
                          - uuid
                          - value
                          - element_type
                          - is_required
                          - title
              status:
                type: string
                description: Status des Fragebogens
        bank_verifications:
          type: array
          nullable: true
          description: >-
            Ergebnisse der Bankverifizierung, ein Eintrag pro Schritt der
            Bankverifizierung, für die Benutzer- und Unternehmensverifizierung.
            `null`, bis ein Schritt ein Ergebnis erzeugt. Das Feld `method`
            jedes Eintrags gibt an, wie das Konto verifiziert wurde:
            `open_banking` (Bank-Anmeldung) oder `account_lookup` (Kontoabfrage)
            oder ein `statement`- bzw. `microdeposits`-Fallback, und `none`,
            wenn die Person vor der Auswertung eines Versuchs ohne Bank
            fortgefahren ist (`continued_without_bank`). Siehe
            [Bank-Verifizierungsmethoden](/de/core-technology/bank-verification/verification-methods).
          items:
            $ref: '#/components/schemas/BankVerificationResult'
        signatures:
          type: array
          description: >-
            E-Signatur-Ergebnisse, ein Element pro Unterzeichner und
            Signaturschritt, für Benutzerverifizierung und
            Unternehmensverifizierung (KYB). Nur vorhanden, wenn der Workflow
            einen E-Signatur-Schritt enthält; ein leeres Array, bis ein
            Unterzeichner diesen erreicht. Siehe den
            [E-Signatur-Bericht](/de/core-technology/electronic-signature/report-electronic-signature).
          items:
            $ref: '#/components/schemas/SignatureResult'
        aml_screenings:
          type: array
          nullable: true
          description: >-
            **Array von AML-Screening-Berichten** — immer ein JSON-Array,
            niemals ein einzelnes `aml`-Objekt. `null`, bis mindestens ein
            AML-Schritt Daten erzeugt hat. Jedes Element ist der vollständige
            Bericht, einschließlich `node_id`, `status` auf Funktionsebene,
            `total_hits`, `entity_type`, `hits[]`, `score`, `screened_data`,
            `is_ongoing_monitoring_enabled` und `warnings[]`.
          items:
            $ref: '#/components/schemas/AMLScreening'
        ip_analyses:
          type: array
          nullable: true
          description: >-
            **Array von Geräte- und IP-Analyse-Berichten** – immer ein
            JSON-Array, niemals ein einzelnes `ip_analysis`-Objekt. `null`, bis
            mindestens ein IP-Analyseschritt Daten erzeugt hat. Jeder Eintrag
            ist der vollständige Bericht, einschließlich `node_id`, `status` auf
            Funktionsebene, IP- und Geolokalisierungsdaten, Geräte-Fingerprint
            sowie `warnings[]`. Einträge mit doppeltem `(node_id, ip_address,
            device_fingerprint)` werden serverseitig dedupliziert.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Eindeutige Kennung für diesen Geräte- und IP-Analyse-Schritt
                  im Workflow-Graphen.
              status:
                type: string
                description: >-
                  Status auf Funktionsebene dieses Eintrags der Geräte- und
                  IP-Analyse. Unabhängig vom `status` der übergeordneten Sitzung
                  – eine Sitzung kann ihre Gesamtentscheidung erreichen, während
                  eine einzelne Funktion `In Review` bleibt.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              device_brand:
                type: string
                description: Marke des verwendeten Geräts
              device_model:
                type: string
                description: Modell des verwendeten Geräts
              browser_family:
                type: string
                description: Verwendete Browser-Familie
              os_family:
                type: string
                description: Betriebssystemfamilie
              platform:
                type: string
                description: Plattformtyp (mobile, desktop usw.)
              device_fingerprint:
                type: string
                nullable: true
                description: Eindeutige Kennung des Geräte-Fingerabdrucks
              ip_country:
                type: string
                description: Über die IP erkanntes Land
              ip_country_code:
                type: string
                description: Zweistelliger Ländercode anhand der IP
              ip_state:
                type: string
                description: Anhand der IP ermitteltes Bundesland/Region
              ip_city:
                type: string
                description: Anhand der Adresse erkannte Stadt
              latitude:
                type: number
                description: Breitengrad-Koordinate des IP-Standorts
              longitude:
                type: number
                description: Längengrad-Koordinate des IP-Standorts
              ip_address:
                type: string
                description: Adresse
              isp:
                type: string
                nullable: true
                description: Internetanbieter
              organization:
                type: string
                nullable: true
                description: Mit der IP verknüpfte Organisation
              is_vpn_or_tor:
                type: boolean
                description: Gibt an, ob die IP aus einem VPN- oder Tor-Netzwerk stammt
              is_data_center:
                type: boolean
                description: Gibt an, ob die IP aus einem Rechenzentrum stammt
              time_zone:
                type: string
                description: Aus der IP erkannte Zeitzone
              time_zone_offset:
                type: string
                description: Zeitzonenverschiebung
              ip:
                type: object
                description: >-
                  IP-Geolokalisierung dieses Eintrags sowie Großkreisabstände
                  (km) zur Adresse des Ausweisdokuments und zur Adresse des
                  Adressnachweisdokuments. Die Abstände sind `null`, wenn eine
                  der beiden Seiten keinen auflösbaren Standort hat.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Koordinaten oder `null`, falls nicht verfügbar.
                  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: >-
                  Aus der Adresse des Ausweisdokuments extrahierter Standort
                  zuzüglich Entfernungen (km) zur IP-Geolokalisierung und zur
                  POA-Dokumentadresse. `location` ist `null`, wenn keine
                  Dokumentadresse geokodiert werden konnte.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Koordinaten oder `null`, falls nicht verfügbar.
                  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: >-
                  Aus dem Adressnachweisdokument extrahierter Standort zuzüglich
                  Entfernungen (km) zur IP-Geolokalisierung und zur
                  Ausweisdokumentadresse. `location` ist `null`, wenn die
                  Sitzung keinen POA-Schritt enthält oder die Adresse nicht
                  geokodiert werden konnte.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Koordinaten oder `null`, falls nicht verfügbar.
                  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: >-
                        Die Funktion, die diese Warnung generiert hat. Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert (z. B.
                        `PHONE` innerhalb von `phone_verifications[].warnings`),
                        aber das obige Enum ist für alle Funktionswarnungen in
                        der Entscheidungs-Payload maßgeblich.
                    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: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat
              matches:
                type: array
                description: >-
                  Sitzungsübergreifende Übereinstimmungen, die für die Adresse
                  oder die Geräteidentität dieses Eintrags gefunden wurden. Jede
                  Übereinstimmung ist eine andere Verifizierungssitzung in Ihrer
                  Anwendung (`source` ist immer `session`), die denselben Wert
                  aufweist und stets zu einem anderen Benutzer des Anbieters /
                  `vendor_data` als die aktuelle Sitzung gehört, begrenzt auf 5
                  pro Erfassungsmodul (`device_fingerprint` summiert zwei
                  unabhängig begrenzte Erfassungsmodule, sodass bis zu 10
                  Einträge möglich sind). Jeder Eintrag enthält `match_source`,
                  `confidence`, `match_mode`, `device_info` und `location_info`;
                  die Schlüssel `recovery_similarity`, `tls_ja4_corroborated`
                  und `recovery_gate_reason` sind nur vorhanden, wenn
                  `match_source` den Wert `recovered_high` hat.
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: Sitzungs-ID der übereinstimmenden Sitzung.
                    session_number:
                      type: integer
                      description: Fortlaufende Nummer der übereinstimmenden Sitzung.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` der übereinstimmenden Sitzung —
                        unterscheidet sich immer vom Benutzer des Anbieters der
                        aktuellen Sitzung.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Erstellungsdatum der übereinstimmenden Sitzung
                        (`YYYY-MM-DDTHH:MM:SSZ`).
                    match_type:
                      type: string
                      enum:
                        - ip_address
                        - device_fingerprint
                      description: >-
                        Gibt an, ob die Übereinstimmung auf der IP-Adresse oder
                        dem Geräte-Fingerprint basierte
                    match_source:
                      type: string
                      enum:
                        - ip_address
                        - persistent_id
                        - legacy_fp
                        - recovered_high
                      description: >-
                        Wie diese Übereinstimmung erreicht wurde: `ip_address`
                        (geteilte IP-Adresse – Netzwerk-Co-Location, kein
                        Nachweis einer Geräteidentität), `persistent_id` (exakte
                        gespeicherte persistente Gerätekennung), `legacy_fp`
                        (Legacy-`didit-fp-*`-Geräte-Fingerprint-Hash) oder
                        `recovered_high`
                        (Fuzzy-Fingerprint-Wiederherstellungstreffer mit hoher
                        Konfidenz). Wiederherstellungskandidaten mit geringerer
                        Konfidenz erscheinen nur als Risikowarnungen, niemals in
                        diesem Array.
                    matched_value:
                      type: string
                      nullable: true
                      description: >-
                        Der übereinstimmende Wert: die gemeinsame Adresse, die
                        dauerhafte Gerätekennung oder der
                        Legacy-Fingerprint-Hash oder – für `recovered_high` –
                        die UUID des wiederhergestellten Geräts.
                    status:
                      type: string
                      description: Lebenszyklusstatus der übereinstimmenden Sitzung.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Gibt an, ob der übereinstimmende Wert auf einer
                        Sperrliste steht. Bei Geräte-/IP-Übereinstimmungen
                        derzeit immer `false`.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Eigenständiger API-Service der zugehörigen Sitzung;
                        `null` für Workflow-Sitzungen.
                    source:
                      type: string
                      enum:
                        - session
                      description: >-
                        Bei Geräte-/IP-Übereinstimmungen immer `session` – jede
                        Übereinstimmung ist eine weitere Verifizierungssitzung
                        in Ihrer Anwendung.
                    device_info:
                      type: object
                      description: >-
                        Auf der übereinstimmenden Sitzung erfasste
                        Gerätedetails.
                      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: >-
                        Netzwerk- und Geolokalisierungsdetails, die bei der
                        übereinstimmenden Sitzung festgestellt wurden.
                      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: >-
                        Serverseitige Identifikationskonfidenz, berechnet als `1
                        - P(false positive)`: `1.0` für deterministische
                        Übereinstimmungen (`persistent_id` oder
                        hardwarebasiertes `recovered_high`), `0.5` für
                        `legacy_fp`, `0.0` für `ip_address` (nur Co-Location)
                        und ein durch Bestätigung angepasster Wert unter `1.0`
                        für probabilistische wiederhergestellte
                        Übereinstimmungen (höher, wenn der TLS-JA4-Fingerprint
                        und das IP-Land unabhängig voneinander übereinstimmen).
                    match_mode:
                      type: string
                      enum:
                        - deterministic
                        - probabilistic
                        - co_occurrence
                      description: >-
                        Evidenzklasse der Übereinstimmung: `deterministic`
                        (exakte gespeicherte oder hardwareverankerte Kennung,
                        die zwischen physischen Geräten nicht kollidieren kann),
                        `probabilistic` (unscharfe Fingerabdruckdaten) oder
                        `co_occurrence` (nur gemeinsames Netzwerk, kein Anspruch
                        auf Geräteidentität).
                    recovery_similarity:
                      type: number
                      description: >-
                        Kosinusähnlichkeit der Übereinstimmung bei der
                        Fingerabdruckwiederherstellung, gerundet auf 4
                        Dezimalstellen. Nur vorhanden, wenn `match_source` den
                        Wert `recovered_high` hat.
                    tls_ja4_corroborated:
                      type: boolean
                      description: >-
                        Gibt an, ob die TLS-JA4-Fingerprints der beiden
                        Beobachtungen übereinstimmen — ein serverseitig
                        beobachtetes Signal, das der Browser nicht fälschen
                        kann. Nur vorhanden, wenn `match_source` den Wert
                        `recovered_high` hat.
                    recovery_gate_reason:
                      type: string
                      description: >-
                        Warum der Recovery-Abgleich das Hard Gate gegen
                        falsch-positive Treffer bestanden hat:
                        `hardware_root_match` (eine hardwarebasierte
                        Gerätekennung stimmte exakt überein) oder bei
                        Konfigurationen, die reine Probe-Nachweise zulassen,
                        `exact_composite_plus_<n>_families` /
                        `very_high_similarity_plus_<n>_families`. Nur vorhanden,
                        wenn `match_source` den Wert `recovered_high` hat.
              browser_version:
                type: string
                nullable: true
              os_version:
                type: string
                nullable: true
              user_agent:
                type: string
                nullable: true
                description: Der User-Agent-String des Browsers.
              accept_language:
                type: string
                nullable: true
                description: Der vom Browser gesendete `Accept-Language`-Header.
              session_identifier:
                type: string
                nullable: true
                description: >-
                  Kennung der Browsersitzung, in der die Verifizierung
                  durchgeführt wurde.
              session_age_ms:
                type: integer
                nullable: true
                description: >-
                  Alter dieser Browsersitzung in Millisekunden zum Zeitpunkt der
                  Ausführung des Schritts.
              coords_accuracy:
                type: number
                nullable: true
                description: >-
                  Genauigkeitsradius der vom Gerät übermittelten Koordinaten in
                  Metern.
              raw_device_data:
                type: object
                nullable: true
                additionalProperties: true
                description: Für den Schritt erfasste unverarbeitete Gerätesignale.
        geolocation_checks:
          type: array
          nullable: true
          description: >-
            **Array von Standortverifizierungsergebnissen**, eines pro
            Standortverifizierungsschritt: der akzeptierte Versuch dieses
            Schritts. `null`, bis ein Standortverifizierungsschritt Daten
            erzeugt hat. Frühere Versuche desselben Schritts befinden sich in
            `geolocation_attempts`.
          items:
            $ref: '#/components/schemas/GeolocationCheck'
        geolocation_attempts:
          type: array
          nullable: true
          description: >-
            Jeder Versuch jedes Standortverifizierungsschritts dieser Sitzung,
            der älteste zuerst. Versuche, die durch eine erneute Einreichung
            ersetzt wurden, werden ausgelassen. Ein Workflow, der
            `geolocation_checks` über seine Antwort-Attribute zurückhält, hält
            auch diese Liste zurück.
          items:
            $ref: '#/components/schemas/GeolocationAttempt'
        database_validations:
          type: array
          nullable: true
          description: >-
            **Array von Berichten zur Datenbankvalidierung** — immer ein
            JSON-Array, niemals ein einzelnes `database_validation`-Objekt.
            `null`, bis mindestens ein Schritt der Datenbankvalidierung Daten
            erzeugt hat. Jedes Element ist der vollständige Bericht,
            einschließlich `node_id`, `status` auf Funktionsebene,
            `screened_data`, der dienstspezifischen `validations[]` (jeweils mit
            ihren Register-`source_data`) und `warnings[]`. Die Felder
            `screened_data` und `source_data` variieren je nach Land:


            **ARG (Argentinien)**: 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}. Verwendet die
            biometrische Validierung des Gesichtsabgleichs von RENAPER. Das
            Geschlecht wird automatisch aus der Gesichtsanalyse oder dem
            Vornamen abgeleitet, wenn es im Dokument nicht vorhanden ist (z. B.
            bei Führerscheinen)


            **BOL (Bolivien)**: 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 (Brasilien)**: screened_data: {tax_number, first_name,
            last_name, date_of_birth}. source_data enthält für erfolgreiche
            CPF-Übereinstimmungen immer {identification_number, first_name,
            last_name, date_of_birth, lgpd_minor, minor_under_18,
            minor_under_16}. Erfolgreiche Abfragen für Erwachsene setzen diese
            Flags auf false. Der Dienst Receita Federal Consulta CPF kann HTTP
            422 (Minderjährige unter 18) oder 451 (unter 16) mit durch das LGPD
            zurückgehaltenen Daten zurückgeben; in diesen Fällen setzt
            source_data die Minor-Flags entsprechend auf true, enthält den
            Upstream-HTTP-Status, und die Validierung auf Feldebene lautet
            no_match. Die vollständige Codeliste finden Sie im Abschnitt zu
            Brasilien in der Referenz zu den Ergebnis-Codes der
            Datenbankvalidierung.


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


            **COL (Kolumbien)**: 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 (Dominikanische Republik)**: screened_data: {personal_number}.
            source_data: {identification_number} (gibt nur valid/invalid zurück)


            **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 (Spanien)**: 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 (Mexiko)**: 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}. Verwendet das Zivilregister RENAPO.
            Für MEX ist außerdem ein separater INE-Gültigkeitsprüfungsdienst als
            zusätzliche Einzelvalidierung verfügbar.


            **PAN (Panama)**: screened_data: {personal_number, selfie}.
            source_data: {identification_number}. Verwendet die biometrische
            SIB-Validierung


            **PER (Peru)**: 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: >-
                  Eindeutige Kennung für diesen Schritt der Datenbankvalidierung
                  im Workflow-Graphen.
              issuing_state:
                type: string
                description: >-
                  ISO 3166-1-Alpha-3-Code des Landes, dessen
                  Behörden-/Registerquellen abgefragt wurden (z. B. `BRA`,
                  `MEX`, `ESP`, `NGA`, `IDN`). Die Datenbankvalidierung deckt
                  60+ Länder in Nord- und Südamerika, Europa, Afrika, dem Nahen
                  Osten und dem asiatisch-pazifischen Raum sowie globale
                  länderübergreifende Quellen ab – die Abdeckung wird regelmäßig
                  erweitert, behandeln Sie den Wert daher als offene Menge und
                  nicht als festes Enum.
              validation_type:
                type: string
                enum:
                  - one_by_one
                  - two_by_two
                  - not_enabled
                description: >-
                  Wie das Ergebnis bestätigt wurde: `one_by_one` (Ergebnis eines
                  einzelnen Dienstes), `two_by_two` (zwei oder mehr verschiedene
                  Dienste stimmten unabhängig voneinander vollständig mit der
                  Identifikationsnummer überein) oder `not_enabled`
                  (gespeichert, wenn kein Dienst einen verwertbaren Treffer
                  geliefert hat). Der Wert ist niemals `null`. Dedizierte
                  biometrische 2x2-Validierungsmodi sind derzeit für `ECU` und
                  `PER` verfügbar.
              screened_data:
                type: object
                description: >-
                  Die für die Validierung verwendeten Eingabedaten. Die Felder
                  variieren je nach Land – siehe die Dokumentation zur
                  Datenbankvalidierung
                  (`/core-technology/database-validation/overview`) für
                  länderspezifische Formate.
                properties:
                  last_name:
                    type: string
                  first_name:
                    type: string
                  tax_number:
                    type: string
                    description: 'Brasilien: CPF (11 Ziffern)'
                  personal_number:
                    type: string
                    description: >-
                      Chile: RUT, DOM: Cédula (11 Ziffern), ECU: Cédula (10
                      Ziffern), ESP: DNI/NIE, MEX: CURP (18 Zeichen), PER: DNI
                      (8 Ziffern), 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: Erforderlich für ESP
              validations:
                type: array
                description: >-
                  Ein Eintrag pro Registerdienst, der eine Validierungs-Payload
                  zurückgegeben hat. Jeder Eintrag identifiziert den Dienst
                  (`service_id`, `service_name`) und enthält den feldweisen
                  `validation`-Abgleich, den `outcome_code` / `outcome_detail`
                  des Dienstes, sofern gemeldet, sowie den normalisierten
                  Registerdatensatz in `source_data`.
                items:
                  type: object
                  properties:
                    service_id:
                      type: string
                      description: >-
                        Kennung des Registerdienstes, der dieses
                        Validierungsergebnis generiert hat.
                      example: bra_cpf
                    service_name:
                      type: string
                      description: Lesbarer Name des Registerdienstes.
                      example: Brazil - CPF status check
                    validation:
                      type: object
                      description: Die Ergebnisse der Feldvalidierungen.
                      properties:
                        full_name:
                          type: string
                          description: >-
                            Übereinstimmungsergebnis für den vollständigen Namen
                            (z. B. 'full_match', 'partial_match', 'no_match').
                        date_of_birth:
                          type: string
                          description: Übereinstimmungsergebnis für das Geburtsdatum.
                        identification_number:
                          type: string
                          description: >-
                            Übereinstimmungsergebnis für die
                            Identifikationsnummer.
                    outcome_code:
                      type: string
                      nullable: true
                      description: >-
                        Maschinenlesbares Ergebnis der Registerabfrage (z. B.
                        `MATCH`, `NO_MATCH`, `PARTIAL_MATCH`, `INCONCLUSIVE`,
                        quellenspezifische Codes). Vorhanden, wenn der Dienst
                        eines meldet.
                    outcome_detail:
                      type: string
                      nullable: true
                      description: >-
                        Lesbare Erklärung von `outcome_code`, sofern vom Dienst
                        bereitgestellt.
                    source_data:
                      type: object
                      description: >-
                        Die aus der Regierungsdatenbank zurückgegebenen Daten.
                        Häufige Felder: identification_number, first_name,
                        last_name, full_name, date_of_birth, gender. Zusätzliche
                        Felder nach Land: BRA enthält bei erfolgreichen
                        CPF-Treffern immer lgpd_minor, minor_under_18 und
                        minor_under_16; zudem enthält es den
                        Upstream-HTTP-Status, wenn CPF-Daten gemäß LGPD
                        einbehalten werden (HTTP 422/451). ECU fügt street,
                        formatted_address, nationality, education,
                        marital_status, spouse, mother_name, father_name,
                        profession hinzu. PER fügt paternal_name, maternal_name,
                        verification_number, verification_letter hinzu. ESP fügt
                        document_type, expiration_date hinzu. VEN/COL fügen
                        document_type hinzu.
                      additionalProperties: true
              errors:
                type: array
                description: >-
                  Fehler, die von Registerdiensten während der Validierung
                  zurückgegeben wurden, jeweils mit der `service_id` des
                  Dienstes versehen, der den Fehler erzeugt hat. **Dieser
                  Schlüssel wird vollständig weggelassen, wenn keine Fehler
                  vorliegen.**
                items:
                  type: object
                  description: >-
                    Das Fehlerobjekt des vorgelagerten Dienstes unverändert
                    übernommen – seine Schlüssel variieren je nach Dienst
                    (üblicherweise eine Nachricht/ein Code und
                    providerspezifische Details) – zuzüglich `service_id`, die
                    den Dienst identifiziert, bei dem der Fehler aufgetreten
                    ist.
                  properties:
                    service_id:
                      type: string
                      nullable: true
                      description: >-
                        Kennung des Registerdienstes, bei dem ein Fehler
                        aufgetreten ist.
                  additionalProperties: true
              match_type:
                type: string
                enum:
                  - no_match
                  - partial_match
                  - full_match
                nullable: true
                description: >-
                  Das aggregierte Übereinstimmungsergebnis über alle abgefragten
                  Dienste hinweg. `null`, bis die Validierung ausgewertet wurde.
              status:
                type: string
                description: >-
                  Status auf Funktionsebene dieser Datenbankvalidierung.
                  Unabhängig vom `status` der übergeordneten Sitzung – eine
                  Sitzung kann ihre Gesamtentscheidung erreichen, während eine
                  einzelne Funktion `In Review` bleibt.
                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: >-
                        Die Funktion, die diese Warnung generiert hat. Der Wert
                        identifiziert den Funktionsblock, zu dem die Warnung
                        gehört. Das Warnungs-Array jedes Moduls verwendet
                        typischerweise den zu seinem Modul passenden Wert (z. B.
                        `PHONE` innerhalb von `phone_verifications[].warnings`),
                        aber das obige Enum ist für alle Funktionswarnungen in
                        der Entscheidungs-Payload maßgeblich.
                    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: >-
                        Die ID des Workflow-Graph-Knotens, der diese Warnung
                        erzeugt hat
                description: Warnungen bezüglich der Datenbankvalidierung.
        database_validation_not_performed_reason:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Warum eine konfigurierte Datenbankvalidierung kein Ergebnis
            geliefert hat, als `{code, message}` plus Kontextfelder. Nur
            vorhanden, wenn `database_validations` den Wert `null` für einen
            Workflow hat, der diesen Schritt enthält, damit Sie unterscheiden
            können zwischen „das Register hat zugestimmt“ und „es wurde nichts
            ausgeführt“. Andernfalls `null`.
          properties:
            code:
              type: string
              description: Stabiler maschinenlesbarer Grund.
            message:
              type: string
              description: Lesbare Erklärung.
        reviews:
          type: array
          items:
            type: object
            properties:
              user:
                type: string
                description: >-
                  Wer die Prüfung durchgeführt hat. In der Regel die Kennung des
                  Prüfers in der Console (seine E-Mail-Adresse), aber der Wert
                  ist `"API Client"` für Statusaktualisierungen, die mit einem
                  API-Schlüssel vorgenommen wurden, und `"Unknown"`, wenn kein
                  Akteur aufgelöst werden konnte – analysieren Sie dieses Feld
                  also nicht als E-Mail-Adresse.
              new_status:
                type: string
              comment:
                type: string
              created_at:
                type: string
                format: date-time
        assignee:
          type: object
          nullable: true
          description: >-
            Der Konsolen-Prüfer, dem die Sitzung zugewiesen ist, oder `null`,
            wenn sie niemandem zugewiesen ist.
          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: >-
            Wann die Sitzung begonnen hat, auf eine Prüfung zu warten. `null`,
            es sei denn, die Sitzung ist `In Review` und Ihre Anwendung legt
            eine Prüffrist fest.
        sla_due_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann die Prüfung fällig ist. `null`, es sei denn, die Sitzung ist
            `In Review` und Ihre Anwendung legt eine Prüffrist fest.
        created_at:
          type: string
          format: date-time
          description: Zeitstempel, zu dem die Sitzung erstellt wurde (ISO 8601, UTC).
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: "Zeitstempel, zu dem diese Sitzung planmäßig abläuft. Wird bei Benutzerverifizierungs-Sitzungen (KYC) festgelegt, wenn bei der Erstellung ein Ablauf konfiguriert wurde (oder sobald der Status `Approved` die KYC-Ablaufberechnung auslöst). `null` für Sitzungen ohne konfigurierten Ablauf und für Arten, die keinen Ablauf verwenden (z.\_B. Sitzungen zur Unternehmensverifizierung (KYB), die nie ein `expires_at` erhalten haben)."
        registry_checks:
          type: array
          nullable: true
          description: >-
            Prüfungen des Unternehmensregisters. Nur vorhanden, wenn
            `session_kind = business`. Jedes Element enthält die vollständige
            Unternehmensregister-Payload.
          items:
            type: object
            description: >-
              Eine Unternehmensregisterprüfung — die vollständige
              Unternehmensregister-Payload, angereichert mit Eigentümerstruktur
              und Warnungen. Nur vorhanden, wenn `session_kind = business`.
            properties:
              status:
                type: string
                description: Lebenszyklusstatus der Funktion.
              node_id:
                type: string
                nullable: true
              data_resolved:
                type: boolean
              company:
                type: object
                description: >-
                  Vollständige Register-Payload für das Unternehmen
                  (Registerdatensatz zusammengeführt mit vom Benutzer
                  bereitgestellten oder in der Konsole bearbeiteten Daten).
                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: >-
                      Gründungsland (ISO 3166-1 Alpha-2, z. B. `GB`, `DE`,
                      `US`).
                  region:
                    type: string
                    nullable: true
                    description: >-
                      ISO 3166-2-Unterteilungscode, sofern zutreffend (z. B.
                      `CA`, `NY` für US-Bundesstaaten).
                  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: >-
                      Alternative Namen, Handelsnamen, frühere Namen oder
                      Unternehmensnamen in der Originalsprache als Text, sofern
                      gemeldet.
                  nature_of_business:
                    type: string
                    nullable: true
                  registered_capital:
                    type: string
                    nullable: true
                  registered_capital_amount:
                    type: string
                    format: decimal
                    nullable: true
                    description: >-
                      Eingetragenes Kapital/Stammkapital als Dezimal-String (z.
                      B. `"100.00"`), aus der Registereinreichung geparst.
                      `null`, wenn nicht verfügbar.
                  registered_capital_currency:
                    type: string
                    nullable: true
                    description: >-
                      ISO 4217-Währungscode von `registered_capital_amount` (z.
                      B. `"GBP"`). `null`, wenn nicht verfügbar.
                  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: >-
                      EU-USt-IdNr., wenn während des gehosteten Registerschritts
                      erfasst oder nachträglich bearbeitet.
                  vat_validation_status:
                    type: string
                    enum:
                      - valid
                      - invalid
                      - format_valid
                      - invalid_format
                      - could_not_validate
                      - not_applicable
                    description: >-
                      Ergebnis der Validierung der USt-IdNr. oder, falls keine
                      vorhanden ist, der `tax_number` bei der
                      Registerübermittlung. `valid` / `invalid`: entschieden
                      durch das offizielle Register des Landes (EU-VIES,
                      Norwegen, Schweiz, Brasilien, Kolumbien, Costa Rica,
                      Ecuador, Paraguay; Polen auch über sein nationales
                      USt-Register). `format_valid` / `invalid_format`:
                      entschieden durch die Format- und Prüfzifferregeln des
                      Landes, wenn kein Register abgefragt werden kann.
                      `could_not_validate`: das Register war nicht verfügbar.
                      `not_applicable`: keine Nummer, ein Land ohne Register
                      oder Regeln oder eine Sandbox-Sitzung.
                  vat_validated_number:
                    type: string
                    nullable: true
                    description: >-
                      Die geprüfte Nummer, wie sie der Quelle bekannt ist
                      (beispielsweise die aus einer französischen SIREN oder
                      einer niederländischen RSIN abgeleitete
                      Umsatzsteuer-Identifikationsnummer). `null`, wenn keine
                      Prüfung durchgeführt wurde.
                  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: >-
                      Die Quelle, die `vat_validation_status` festgelegt hat:
                      ein offizielles Register oder `format_rules`. `null`, wenn
                      keine Prüfung durchgeführt wurde.
                  vat_validated_name:
                    type: string
                    nullable: true
                    description: >-
                      Name, der bei der Quelle registriert ist, die die Nummer
                      validiert hat, sofern sie einen offenlegt. Wird nur
                      gesetzt, wenn der Status `valid` ist.
                  vat_validated_address:
                    type: string
                    nullable: true
                    description: >-
                      Bei der Quelle registrierte Adresse, die die Nummer
                      validiert hat, sofern diese eine offenlegt. Wird nur
                      festgelegt, wenn der Status `valid` ist.
                  vat_checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Zeitstempel der Prüfung. `null`, wenn keine Prüfung
                      durchgeführt wurde.
                  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: >-
                            Vorname, wenn vom Register ausdrücklich gemeldet;
                            nicht aus dem vollständigen Namen abgeleitet.
                        last_name:
                          type: string
                          nullable: true
                          description: Nachname, sofern vom Register explizit gemeldet.
                        address:
                          type: string
                          nullable: true
                          description: Vom Register gemeldete Adresse des Amtsträgers.
                        appointment_date:
                          type: string
                          nullable: true
                          description: Datum, an dem die Führungskraft bestellt wurde.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: >-
                            Datum, an dem die Bestellung endete, sofern
                            gemeldet.
                          format: date
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            Vollständiges, vom Unternehmensregister gemeldetes
                            Geburtsdatum. Null, wenn nur ein Geburtsjahr oder
                            -monat bekannt ist.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            Vom Register gemeldetes Geburtsjahr, auch wenn das
                            vollständige Datum nicht verfügbar ist.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            Vom Register gemeldeter Geburtsmonat. Null, wenn nur
                            das Jahr bekannt ist.
                  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: >-
                            Untergrenze des Eigentumsanteils in Prozent gemäß
                            Registermeldung. Freitext-String (z. B. `"25.00"`,
                            `"50"`); verwenden Sie `effective_ownership_percent`
                            für einen geparsten numerischen Wert.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            Obere Grenze des Eigentumsanteils in Prozent gemäß
                            Registerangabe. Freiform-Zeichenkette; verwenden Sie
                            `effective_ownership_percent` für einen geparsten
                            numerischen Wert.
                        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: Vollständiges Geburtsdatum, sofern gemeldet.
                          format: date
                        appointment_date:
                          type: string
                          nullable: true
                          description: Datum der Bestellung, sofern gemeldet.
                          format: date
                        shareholding:
                          $ref: '#/components/schemas/KYBRegistryShareholding'
                  addresses:
                    type: array
                    nullable: true
                    description: >-
                      Jede vom Register angegebene Adresse in einheitlicher
                      Form. Null, wenn keine angegeben ist.
                    items:
                      $ref: '#/components/schemas/KYBRegistryAddress'
                  industries:
                    type: array
                    nullable: true
                    description: >-
                      Die Tätigkeiten, unter denen das Register das Unternehmen
                      einstuft, in einem kanonischen Format. Null, wenn keine
                      angegeben sind.
                    items:
                      $ref: '#/components/schemas/KYBRegistryIndustry'
                  accounts:
                    type: object
                    nullable: true
                    additionalProperties: true
                    description: >-
                      Register-Einreichungsdaten, sofern verfügbar.
                      Jahresmeldungen und Hauptversammlungen verwenden
                      last_annual_return_date und last_agm_date; sie
                      unterscheiden sich von Finanzabschlüssen.
                  registry_data:
                    $ref: '#/components/schemas/KYBRegistryData'
                  user_provided_data:
                    type: object
                    description: Vom Endbenutzer bestätigte oder bearbeitete Daten.
                  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: >-
                      Die vom Workflow angeforderte Register-Stufe: `basic`,
                      `shareholders` oder `ubo`. Auch in
                      `ownership.tier_requested`.
                  registry_tier_delivered:
                    type: string
                    nullable: true
                    description: >-
                      Die vom Register gelieferte und abgerechnete Stufe. Auch
                      in `ownership.tier_delivered`.
                  registry_ownership_status:
                    type: string
                    nullable: true
                    description: >-
                      `not_requested`, `pending`, `delivered`, `not_held` oder
                      `unavailable`. Auch in `ownership.status`.
                  registry_monitoring:
                    type: object
                    nullable: true
                    description: >-
                      Der neueste Register-Monitor für das Unternehmen oder
                      `null`, wenn keiner vorhanden ist.
                    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: Die Unternehmensfelder, die der Monitor überwacht.
              ownership_structure:
                $ref: '#/components/schemas/KYBOwnershipStructure'
              warnings:
                type: array
                items:
                  type: object
        key_people_checks:
          type: array
          nullable: true
          description: >-
            Aggregierte Prüfungen der Schlüsselpersonen. Nur vorhanden, wenn
            `session_kind = business`. Jedes Element verwendet die
            Zwei-Bucket-Struktur (`registry`, `submitted`, `ubo_kyc_summary`).
          items:
            type: object
            description: >-
              Aggregierte Prüfung über die Funktionsträger + wirtschaftlich
              Berechtigten des Unternehmens. Verwendet die Struktur `registry` /
              `submitted`. Nur vorhanden, wenn session_kind = business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              registry:
                type: object
                description: Über die Registerprüfung ermittelte Parteien.
                properties:
                  officers:
                    type: array
                    description: >-
                      Über die Registerprüfung ermittelte Amtsträger, jeweils
                      angereichert mit dem Status jeder für sie erstellten
                      untergeordneten KYC-Sitzung und jedes für sie erstellten
                      AML-Screenings.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            Vollständiger Name des Amtsträgers, wie im Register
                            erfasst.
                        designation:
                          type: string
                          nullable: true
                          description: >-
                            Freitext-Bezeichnung aus dem Register (z. B.
                            `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: Normalisierte Rolle des Organmitglieds.
                        nationality:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: Datum, an dem die Führungskraft bestellt wurde.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: >-
                            Datum, an dem die Bestellung endete, sofern
                            gemeldet.
                          format: date
                        is_active:
                          type: boolean
                        address:
                          type: string
                          nullable: true
                          description: Vom Register gemeldete Adresse des Amtsträgers.
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            Status des für diesen Officer durchgeführten
                            AML-Screenings. `null`, wenn kein AML-Screening
                            durchgeführt wurde.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Unverarbeiteter Lebenszyklus-Status der
                            untergeordneten KYC-Sitzung, die für dieses
                            Organmitglied erstellt wurde. Dies ist das
                            vollständige Sitzungsstatus-Enum (keine reduzierte
                            Menge aus Genehmigt/Abgelehnt/Ausstehend). `null`,
                            wenn keine untergeordnete KYC-Sitzung existiert.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            Teilbare URL der untergeordneten KYC-Sitzung.
                            `null`, wenn keine untergeordnete Sitzung vorhanden
                            ist.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            Sitzungs-ID der untergeordneten KYC-Sitzung.
                            Übergeben Sie sie an denselben
                            Entscheidungs-Endpoint, um den vollständigen
                            KYC-Bericht der Person abzurufen. `null`, wenn keine
                            untergeordnete Sitzung existiert.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Basis-Workflow-Typ des Workflows der untergeordneten
                            Sitzung (z. B. `kyc`). `null` für graphbasierte
                            Workflows oder wenn keine untergeordnete Sitzung
                            existiert.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            Workflow-ID, die von der untergeordneten Sitzung
                            verwendet wird. `null`, wenn keine untergeordnete
                            Sitzung existiert.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Lesbare Bezeichnung des Workflows der
                            untergeordneten Sitzung. `null`, wenn nicht
                            festgelegt.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Fortschritt pro Funktion der untergeordneten
                            Verifizierungssitzung, z. B. `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`,
                            wenn die untergeordnete Sitzung keine auflösbare
                            Funktionsliste hat.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Anzeigename der Funktion (z. B.
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Status auf Funktionsebene innerhalb der
                                  untergeordneten Sitzung.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Stabile interne Kennung der verifizierten Person
                            hinter der untergeordneten Sitzung – nützlich für
                            sitzungsübergreifende Verknüpfungen. `null`, wenn
                            keine untergeordnete Sitzung existiert oder der
                            Benutzer noch nicht aufgelöst wurde.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            Dokumenttyp, der in der untergeordneten KYC-Sitzung
                            vorgelegt wurde (z. B. `P`, `ID`, `DL`). `null`, bis
                            die untergeordnete Sitzung ein
                            Ausweisverifizierungsergebnis hat.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            Aus dem Dokument in der untergeordneten KYC-Sitzung
                            extrahierte Staatsangehörigkeit. `null`, bis
                            verfügbar.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            Gibt an, ob die Liveness-Prüfung der untergeordneten
                            KYC-Sitzung bestanden wurde. `null`, wenn keine
                            Liveness-Prüfung durchgeführt wurde.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Wann die untergeordnete KYC-Sitzung `Approved`
                            erreicht hat. `null`, solange die untergeordnete
                            Sitzung einen anderen Status hat.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            Kategoriespezifische Zusammenfassung, die aus den
                            AML-Treffern der Person abgeleitet wird. `null`,
                            wenn keine Treffer vorliegen.
                          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: >-
                            ISO 8601-Zeitstempel der letzten Benachrichtigung
                            mit Verifizierungseinladung, die für die
                            untergeordnete Sitzung dieser Person gesendet wurde.
                            `null`, wenn keine gesendet wurde.
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            Vorname, wenn vom Register ausdrücklich gemeldet;
                            nicht aus dem vollständigen Namen abgeleitet.
                        last_name:
                          type: string
                          nullable: true
                          description: Nachname, sofern vom Register explizit gemeldet.
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            Vollständiges, vom Unternehmensregister gemeldetes
                            Geburtsdatum. Null, wenn nur ein Geburtsjahr oder
                            -monat bekannt ist.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            Vom Register gemeldetes Geburtsjahr, auch wenn das
                            vollständige Datum nicht verfügbar ist.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            Vom Register gemeldeter Geburtsmonat. Null, wenn nur
                            das Jahr bekannt ist.
                  beneficial_owners:
                    type: array
                    description: >-
                      Über die Registerprüfung ermittelte wirtschaftlich
                      Berechtigte, jeweils angereichert mit dem Status aller für
                      sie erstellten untergeordneten KYC-Sitzungen und
                      AML-Screenings.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            Vollständiger Name des wirtschaftlich Berechtigten
                            (oder Firmenname für wirtschaftlich Berechtigte von
                            Unternehmen).
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: Vollständiges Geburtsdatum, sofern gemeldet.
                          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: >-
                            Von diesem Eigentümer gehaltene Rollennamen, z. B.
                            `["ubo", "shareholder"]`.
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            Untergrenze des Eigentumsanteils in Prozent gemäß
                            Registermeldung. Freitext-String (z. B. `"25"`,
                            `"25-50%"`); verwenden Sie
                            `effective_ownership_percent` für einen geparsten
                            numerischen Wert.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            Obere Grenze des Eigentumsanteils in Prozent gemäß
                            Registerangabe. Freiform-Zeichenkette; verwenden Sie
                            `effective_ownership_percent` für einen geparsten
                            numerischen Wert.
                        is_active:
                          type: boolean
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            Status des für diesen wirtschaftlich Berechtigten
                            durchgeführten AML-Screenings. `null`, wenn kein
                            AML-Screening durchgeführt wurde.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Unverarbeiteter Lebenszyklus-Status der
                            untergeordneten KYC-Sitzung, die für diesen
                            wirtschaftlich Berechtigten erstellt wurde. Dies ist
                            das vollständige Sitzungsstatus-Enum (keine
                            reduzierte Menge aus
                            Genehmigt/Abgelehnt/Ausstehend). `null`, wenn keine
                            untergeordnete KYC-Sitzung existiert.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            Teilbare URL der untergeordneten KYC-Sitzung.
                            `null`, wenn keine untergeordnete Sitzung vorhanden
                            ist.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            Sitzungs-ID der untergeordneten KYC-Sitzung.
                            Übergeben Sie sie an denselben
                            Entscheidungs-Endpoint, um den vollständigen
                            KYC-Bericht der Person abzurufen. `null`, wenn keine
                            untergeordnete Sitzung existiert.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Basis-Workflow-Typ des Workflows der untergeordneten
                            Sitzung (z. B. `kyc`). `null` für graphbasierte
                            Workflows oder wenn keine untergeordnete Sitzung
                            existiert.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            Workflow-ID, die von der untergeordneten Sitzung
                            verwendet wird. `null`, wenn keine untergeordnete
                            Sitzung existiert.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Lesbare Bezeichnung des Workflows der
                            untergeordneten Sitzung. `null`, wenn nicht
                            festgelegt.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Fortschritt pro Funktion der untergeordneten
                            Verifizierungssitzung, z. B. `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`,
                            wenn die untergeordnete Sitzung keine auflösbare
                            Funktionsliste hat.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Anzeigename der Funktion (z. B.
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Status auf Funktionsebene innerhalb der
                                  untergeordneten Sitzung.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Stabile interne Kennung der verifizierten Person
                            hinter der untergeordneten Sitzung – nützlich für
                            sitzungsübergreifende Verknüpfungen. `null`, wenn
                            keine untergeordnete Sitzung existiert oder der
                            Benutzer noch nicht aufgelöst wurde.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            Dokumenttyp, der in der untergeordneten KYC-Sitzung
                            vorgelegt wurde (z. B. `P`, `ID`, `DL`). `null`, bis
                            die untergeordnete Sitzung ein
                            Ausweisverifizierungsergebnis hat.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            Aus dem Dokument in der untergeordneten KYC-Sitzung
                            extrahierte Staatsangehörigkeit. `null`, bis
                            verfügbar.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            Gibt an, ob die Liveness-Prüfung der untergeordneten
                            KYC-Sitzung bestanden wurde. `null`, wenn keine
                            Liveness-Prüfung durchgeführt wurde.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Wann die untergeordnete KYC-Sitzung `Approved`
                            erreicht hat. `null`, solange die untergeordnete
                            Sitzung einen anderen Status hat.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            Kategoriespezifische Zusammenfassung, die aus den
                            AML-Treffern der Person abgeleitet wird. `null`,
                            wenn keine Treffer vorliegen.
                          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: >-
                            ISO 8601-Zeitstempel der letzten Benachrichtigung
                            mit Verifizierungseinladung, die für die
                            untergeordnete Sitzung dieser Person gesendet wurde.
                            `null`, wenn keine gesendet wurde.
                        child_beneficial_owners:
                          type: array
                          description: >-
                            Für UBOs von Unternehmen: die eigenen wirtschaftlich
                            Berechtigten der Eigentümerentität als aus dem
                            Register extrahierte Rohdatenobjekte. Leeres Array,
                            falls nicht zutreffend.
                          items:
                            type: object
                        effective_ownership_percent:
                          type: number
                          nullable: true
                          description: >-
                            Geparster numerischer Eigentumsanteil — die
                            Obergrenze, sofern verfügbar, andernfalls die
                            Untergrenze. `null`, wenn keine der Grenzen geparst
                            werden konnte.
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: Datum der Bestellung, sofern gemeldet.
                          format: date
              submitted:
                type: object
                description: >-
                  Vom Unternehmensadministrator während des Ablaufs für
                  Schlüsselpersonen übermittelte Parteien (BusinessParty-Zeilen
                  mit source=USER).
                properties:
                  parties:
                    type: array
                    items:
                      type: object
                      description: >-
                        Vom Unternehmensadministrator über den Ablauf für
                        Schlüsselpersonen übermittelte Partei (source=USER).
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        source:
                          type: string
                          enum:
                            - USER
                          description: >-
                            Hier immer `USER` – dieser Bereich enthält nur
                            Parteien, die vom Endbenutzer im
                            Schlüsselpersonen-Workflow eingegeben oder bestätigt
                            wurden (im Register ermittelte Personen erscheinen
                            unter `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: >-
                            Staatsangehörigkeit für Personen; Gründungsland für
                            beteiligte Unternehmen.
                        phone_number:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          format: date
                          nullable: true
                        position:
                          type: string
                          nullable: true
                          description: >-
                            Freitext-Berufsbezeichnung / Position (nur
                            Personen).
                        custom_fields:
                          type: object
                          description: >-
                            Vom Workflow definierte benutzerdefinierte Felder,
                            die für diese Partei erfasst wurden; Schlüssel
                            werden durch die Felddeskriptoren für
                            Schlüsselpersonen des Workflows definiert.
                        is_active:
                          type: boolean
                        is_skipped:
                          type: boolean
                          description: >-
                            True, wenn der Endbenutzer die Verifizierung für
                            diese Partei übersprungen hat (nur möglich, wenn die
                            Rolle das Überspringen erlaubt).
                        requires_verification:
                          type: boolean
                          description: >-
                            True, wenn für diese Partei basierend auf
                            Rolleneinstellungen und Eigentümerschwellenwerten
                            eine untergeordnete KYC-/KYB-Sitzung erforderlich
                            ist.
                        roles:
                          type: array
                          description: >-
                            Alle von dieser Partei ausgeübten Rollen, jeweils
                            mit ihren eigenen Eigentums- und
                            Stimmrechtsanteilen. Es gibt kein skalares
                            `role`/`ownership_percent` auf der Partei selbst.
                          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: >-
                            Untergeordnete KYC-Sitzungs-ID für Personenparteien,
                            die eine Verifizierung erfordern. Andernfalls
                            `null`.
                        kyc_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Lebenszyklusstatus der untergeordneten KYC-Sitzung.
                            `null`, wenn keine untergeordnete KYC-Sitzung
                            existiert.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        kyb_sub_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            Untergeordnete KYB-Sub-Sitzungs-ID für
                            Unternehmensparteien, die eine Verifizierung
                            erfordern. Andernfalls `null`.
                        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: >-
                            Lebenszyklusstatus der untergeordneten KYB-Sitzung.
                            `null`, wenn keine untergeordnete KYB-Sitzung
                            existiert.
                        kyb_sub_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            Teilbare URL der untergeordneten KYB-Untersitzung.
                            `null`, wenn keine Untersitzung vorhanden ist.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Basis-Workflow-Typ des Workflows der untergeordneten
                            Sitzung (KYC-Sitzung bevorzugt, Fallback auf die
                            untergeordnete KYB-Sitzung). `null` für
                            graphbasierte Workflows oder wenn keine
                            untergeordnete Sitzung existiert.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            Workflow-ID, die von der untergeordneten Sitzung
                            verwendet wird. `null`, wenn keine untergeordnete
                            Sitzung existiert.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Lesbare Bezeichnung des Workflows der
                            untergeordneten Sitzung. `null`, wenn nicht
                            festgelegt.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Fortschritt pro Funktion der untergeordneten
                            Verifizierungssitzung, z. B. `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`,
                            wenn die untergeordnete Sitzung keine auflösbare
                            Funktionsliste hat.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Anzeigename der Funktion (z. B.
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Status auf Funktionsebene innerhalb der
                                  untergeordneten Sitzung.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Stabile interne Kennung der verifizierten Person
                            hinter der untergeordneten Sitzung. `null`, wenn
                            nicht aufgelöst.
              ubo_kyc_summary:
                type: object
                nullable: true
                description: >-
                  Aggregierter UBO-KYC-Fortschritt oder null, wenn keine UBOs
                  verknüpfte KYC-Sitzungen haben.
                properties:
                  total:
                    type: integer
                  approved:
                    type: integer
                  flagged:
                    type: integer
                    description: >-
                      Wirtschaftlich Berechtigte, deren KYC abgelehnt oder in
                      Prüfung ist.
                  pending:
                    type: integer
              warnings:
                type: array
                items:
                  type: object
        document_verifications:
          type: array
          nullable: true
          description: >-
            Prüfungen der Dokumentenverifizierung, gruppiert nach
            Workflow-Knoten. Nur vorhanden, wenn `session_kind = business`.
          items:
            type: object
            description: >-
              Dokumente gruppiert nach Workflow-Knoten. Nur vorhanden, wenn
              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: >-
                        Übergeordnete KYB-Dokumentengruppe, in die die Datei
                        eingestuft wurde. `null`, solange sie nicht
                        klassifiziert ist.
                    document_subtype:
                      type: string
                      nullable: true
                      description: >-
                        Spezifischer per OCR erkannter Subtyp (z. B.
                        `CERTIFICATE_OF_INCORPORATION`, `SHAREHOLDER_REGISTRY`);
                        `UNKNOWN`, wenn die OCR das Dokument nicht zuverlässig
                        klassifizieren konnte.
                    document_group:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        Alias von `document_type` – der von `groups` und
                        `required_groups` verwendete Gruppenname.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Kurzlebiger vorsignierter Link zur hochgeladenen Datei.
                        `null` für von Analysten erstellte
                        Dokumentanforderungs-Platzhalter (`is_requested =
                        true`), die noch nicht erfüllt wurden.
                    original_filename:
                      type: string
                      nullable: true
                      description: >-
                        Dateiname der vom Benutzer oder Analysten hochgeladenen
                        Datei.
                    file_size:
                      type: integer
                      nullable: true
                      description: Dateigröße in Bytes.
                    status:
                      type: string
                      enum:
                        - Not Finished
                        - Approved
                        - Declined
                        - In Review
                        - Resub Requested
                      description: Verifizierungsstatus pro Dokument.
                    created_at:
                      type: string
                      format: date-time
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        Abgleich der per OCR extrahierten Dokumentfelder mit dem
                        Unternehmensprofil aus dem Unternehmensregister. Ein
                        Objekt mit den Abschnitten `critical`, `non_critical`
                        und `people`, die jeweils einen Feldnamen (z. B.
                        `company_name`, `registration_number`,
                        `incorporation_date`, `registered_address`) einem
                        Vergleichsdatensatz wie `{"document": "...", "registry":
                        "...", "match": true, "score": 0.97}` zuordnen. `null`,
                        wenn das Dokument keine OCR-Daten enthielt oder kein
                        Registerunternehmen zum Vergleich vorhanden war.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        Aus dem hochgeladenen Unternehmensdokument extrahierte
                        Metadaten. Wenn die Metadatenextraktion erfolgreich war,
                        sind alle 16 Schlüssel immer vorhanden (einzelne Werte
                        sind `null`, wenn sie für den Dateityp nicht zutreffen);
                        das gesamte Objekt ist `null`, wenn nichts extrahiert
                        werden konnte. Bei PDFs enthält `overlay_manipulation`
                        eine forensische Overlay-Text-Analyse.
                      properties:
                        file_size:
                          type: integer
                          nullable: true
                          description: Größe des Dokuments.
                        content_type:
                          type: string
                          nullable: true
                          description: Content-Type des Dokuments.
                        creation_date:
                          type: string
                          nullable: true
                          description: Datum, an dem das Dokument erstellt wurde.
                        modified_date:
                          type: string
                          nullable: true
                          description: Datum, an dem das Dokument geändert wurde.
                        creator:
                          type: string
                          nullable: true
                          description: >-
                            In den Dateimetadaten erfasstes Erstellungstool bzw.
                            erfasster Benutzer (PDF `Creator`).
                        producer:
                          type: string
                          nullable: true
                          description: >-
                            Software, die die Datei erstellt hat (PDF
                            `Producer`).
                        software:
                          type: string
                          nullable: true
                          description: >-
                            In den Datei-Metadaten erfasste
                            Bearbeitungssoftware.
                        encryption:
                          type: string
                          nullable: true
                          description: >-
                            Verschlüsselungsschema der Datei, sofern
                            verschlüsselt.
                        is_signed:
                          type: boolean
                          nullable: true
                          description: >-
                            Gibt an, ob das Dokument eine digitale Signatur
                            trägt.
                        is_tampered:
                          type: boolean
                          nullable: true
                          description: >-
                            Gibt an, ob die Validierung der digitalen Signatur
                            fehlgeschlagen ist (Modifikation nach der
                            Signierung).
                        signature_info:
                          type: object
                          nullable: true
                          description: >-
                            Details der digitalen Signatur(en), sofern
                            vorhanden.
                        exif_original_date:
                          type: string
                          nullable: true
                          description: EXIF-Originalaufnahmedatum für Bild-Uploads.
                        exif_digitized_date:
                          type: string
                          nullable: true
                          description: EXIF-Digitalisierungsdatum für Bild-Uploads.
                        processed_by_known_editor:
                          type: boolean
                          nullable: true
                          description: >-
                            Gibt an, ob Metadaten darauf hinweisen, dass die
                            Datei mit einem bekannten Bild-/PDF-Editor
                            bearbeitet wurde.
                        has_different_creation_mod_date:
                          type: boolean
                          nullable: true
                          description: >-
                            Gibt an, ob Erstellungs- und Änderungsdatum
                            voneinander abweichen – ein möglicher (aber nicht
                            eindeutiger) Hinweis auf eine Bearbeitung.
                        overlay_manipulation:
                          type: object
                          nullable: true
                          description: >-
                            Forensische PDF-Analyse auf mutmaßliche Manipulation
                            von Overlay-Text. Null, wenn keine Hinweise auf
                            Overlay-Manipulation gefunden wurden oder das
                            Dokument keine PDF-Datei war.
                          properties:
                            detected:
                              type: boolean
                              description: >-
                                Gibt an, ob Hinweise auf eine
                                Textüberlagerungsmanipulation erkannt wurden.
                            analyzed:
                              type: boolean
                              description: Gibt an, ob das PDF analysiert werden konnte.
                            analysis_incomplete:
                              type: boolean
                              description: >-
                                Vorhanden und nur dann true, wenn die Datei
                                nicht vollständig geprüft werden konnte. Was
                                geprüft wurde, behält seine Ergebnisse, soweit
                                möglich, und das Dokument gibt die Warnung zur
                                nicht nachgewiesenen Textersetzung aus.
                            signals:
                              type: array
                              items:
                                type: string
                              description: >-
                                Forensische Signale, die ausgelöst wurden, wie
                                z. B. duplicate_font_subset oder
                                glyph_fragmentation.
                            manipulated_regions:
                              type: array
                              description: >-
                                Mutmaßlich manipulierte Bereiche in Koordinaten
                                der PDF-Seite.
                              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: >-
                        Vom Analysten angegebene Bezeichnung oder Begründung für
                        eine Dokumentenanforderung. `null` bei regulären
                        Uploads.
                    is_requested:
                      type: boolean
                      description: >-
                        True für von Analysten erstellte
                        Dokumentanforderungs-Platzhalter, die auf einen Upload
                        warten.
                    ocr_data:
                      type: object
                      nullable: true
                    is_console_upload:
                      type: boolean
                      description: >-
                        True für Dokumente, die über die Konsole und nicht über
                        den Endbenutzer-Ablauf hochgeladen wurden.
                        Konsolen-Uploads ändern niemals den aggregierten Status
                        auf Funktionsebene.
                    is_confirmed:
                      type: boolean
                      description: >-
                        Console-Uploads beginnen mit `false` und wechseln zu
                        `true`, sobald der Administrator sie bestätigt;
                        Endbenutzer-Uploads sind immer `true`.
              groups:
                type: object
                description: >-
                  Fortschrittszähler pro Gruppe, geschlüsselt nach Gruppenname
                  (z. B. 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: >-
                        Angeforderte Platzhalter, für die noch keine Datei
                        hochgeladen wurde.
              required_groups:
                type: array
                items:
                  type: string
              warnings:
                type: array
                items:
                  type: object
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            Gibt an, ob die Sitzung von einer Live-Anwendung (`live`) oder einer
            Sandbox-Anwendung (`sandbox`) erstellt wurde. Sandbox-Sitzungen sind
            kostenlos, vollständig simuliert und stellen niemals Credits in
            Rechnung.
        sandbox_scenario:
          type: string
          nullable: true
          description: >-
            Das Sandbox-Szenario, mit dem die Sitzung erstellt wurde. `null` für
            Live-Sitzungen und für Sandbox-Sitzungen, die ohne ein solches
            erstellt wurden.
        resubmissions:
          type: array
          description: >-
            Wird nur mit `include=resubmissions` zurückgegeben, für Benutzer-
            und Unternehmenssitzungen. Ein Eintrag pro erneuter
            Einreichungsanfrage, die ältesten zuerst. Jeder Eintrag enthält die
            Ergebnisse, die die erneut eingereichten Schritte vor der Anfrage
            zurückgegeben haben, sodass frühere Einreichungen lesbar bleiben.
            Durch das Löschen der Sitzung werden alle Einreichungen gelöscht.
          items:
            type: object
            properties:
              number:
                type: integer
                description: >-
                  1 für die erste erneute Einreichung der Sitzung, 2 für die
                  zweite und so weiter.
              created_at:
                type: string
                format: date-time
                description: Wann die erneute Einreichung angefordert wurde.
              previous_status:
                type: string
                description: Der Sitzungsstatus unmittelbar vor der Anfrage.
              nodes:
                type: array
                description: Die an den Benutzer zurückgesendeten Workflow-Schritte.
                items:
                  type: object
                  properties:
                    node_id:
                      type: string
                    feature:
                      type: string
              reasons:
                type: object
                nullable: true
                additionalProperties:
                  type: string
                description: >-
                  Der für jeden Schritt angegebene Grund, mit `node_id` als
                  Schlüssel.
              requested_by:
                type: object
                nullable: true
                description: Wer die erneute Einreichung angefordert hat.
                properties:
                  name:
                    type: string
                  email:
                    type: string
                  type:
                    type: string
              results:
                type: object
                additionalProperties: true
                description: >-
                  Was die erneut eingereichten Schritte vor der Anfrage
                  zurückgegeben haben, unter denselben Schlüsseln und in
                  derselben Struktur wie die aktuellen Ergebnisse dieser Antwort
                  (`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`; bei
                  Unternehmenssitzungen auch `document_verifications`). Es
                  erscheinen nur die Schlüssel der Schritte, die zurückgesendet
                  wurden.
        biometric_consent:
          type: object
          nullable: true
          description: >-
            Gibt an, ob die Sitzung eine ausdrückliche biometrische Einwilligung
            vor einer Gesichtserfassung erforderte, warum dies der Fall war und
            welcher Nachweis für die Antwort vorliegt. Nur für Sitzungen der
            Benutzerverifizierung (KYC); dasselbe Objekt befindet sich in der
            `decision` von Sitzungs-Webhooks. `null`, wenn die Sitzung nie
            ausgewertet wurde, beispielsweise bei einem Workflow ohne
            Gesichtserfassung. Felder ohne erfassten Wert sind `null`. Ein
            natives SDK unter Version 4.10.0 oder eines, das seine Version nicht
            meldet, kann den Einwilligungsschritt nicht anzeigen: Seine
            Gesichtserfassungen laufen wie bisher ab, und eine Sitzung, die eine
            Einwilligung erforderte, meldet dann `status: "pending"` mit
            `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Siehe [Biometrische
            Einwilligung](/de/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: >-
                Warum eine Einwilligung erforderlich ist oder wie diese
                Anforderung erfüllt wurde. `declared_state`: Sie haben einen
                betroffenen US-Bundesstaat deklariert (`user_state` oder eine
                US-Adresse in `expected_details`). `ip_state`: Die IP-Adresse
                der Person befindet sich in einem betroffenen US-Bundesstaat
                (Illinois, Texas, Colorado). `ip_unknown`: Die Nachweise
                verorten die Person in den USA, aber der Bundesstaat kann nicht
                ermittelt werden (die IP-Adresse befindet sich in den USA ohne
                Bundesstaat oder kann nicht lokalisiert werden, während Ihre
                Angaben oder das Dokument die Person in den USA verorten).
                `document_issuer`: Das Ausweisdokument wurde von einem
                betroffenen US-Bundesstaat ausgestellt. `forced`: Der Modus der
                Anwendung ist Always. `customer_collected`: Sie haben
                `biometric_consent` beim Erstellen der Sitzung übermittelt.
                `null`, solange nicht erforderlich.
            status:
              type: string
              enum:
                - not_required
                - pending
                - given
                - declined
              description: >-
                `not_required`; `pending` (erforderlich und nicht erteilt: die
                Person hat noch nicht geantwortet, oder `reason` gibt an, warum
                sie nicht erfasst wurde); `given`; `declined` (eine Ablehnung
                wurde protokolliert und die Sitzung endete als `Declined`;
                derzeit bietet kein Didit-Bildschirm eine Ablehnung an).
            given_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Zeitpunkt, zu dem die Einwilligung erteilt wurde. Für
                `customer_collected` das von Ihnen gesendete `given_at`.
            declined_at:
              type: string
              format: date-time
              nullable: true
              description: Zeitpunkt, zu dem eine Ablehnung erfasst wurde.
            text_version:
              type: string
              nullable: true
              description: >-
                Versions-ID des Einwilligungstextes, den die Person beantwortet
                hat, oder des Textes, den Sie gesendet haben.
            text_hash:
              type: string
              nullable: true
              description: >-
                SHA-256 (Hex) des exakten angezeigten Einwilligungstextes in der
                Sprache, in der er angezeigt wurde.
            locale:
              type: string
              nullable: true
              description: Sprache, in der der Einwilligungstext angezeigt wurde.
            policy_url:
              type: string
              format: uri
              nullable: true
              description: >-
                Die Richtlinie für biometrische Daten, auf die der
                Einwilligungsschritt verlinkt hat.
            step:
              type: string
              nullable: true
              description: >-
                Workflow-Schritt, an dem sich die Sitzung befand, als die Person
                geantwortet hat, beispielsweise `LIVENESS`.
            node_id:
              type: string
              nullable: true
              description: >-
                Workflow-Graph-Knoten, an dem sich die Sitzung befand, als die
                Person geantwortet hat.
            ip_address:
              type: string
              nullable: true
              description: IP-Adresse, von der die Antwort stammte.
            ip_country_code:
              type: string
              nullable: true
              description: ISO 3166-1-Alpha-2-Land der IP-Adresse der Antwort.
            ip_state:
              type: string
              nullable: true
              description: >-
                ISO 3166-2-Unterteilung der IP der Antwort, zum Beispiel
                `US-IL`.
            ip_city:
              type: string
              nullable: true
              description: Stadt der Adresse der Antwort.
            user_agent:
              type: string
              nullable: true
              description: User-Agent der Anfrage für die Antwort.
            detected_ip_address:
              type: string
              nullable: true
              description: >-
                Die Adresse der Person, von der aus die Anforderung zuletzt
                ausgewertet wurde. Kann sich von `ip_address` unterscheiden,
                wenn die Person auf einem anderen Gerät geantwortet hat.
            detected_country_code:
              type: string
              nullable: true
              description: ISO 3166-1-Alpha-2-Land der erkannten IP-Adresse.
            detected_state:
              type: string
              nullable: true
              description: ISO 3166-2-Unterteilung der erkannten IP.
            detected_city:
              type: string
              nullable: true
              description: Stadt der erkannten IP-Adresse.
            declared_state:
              type: string
              nullable: true
              description: >-
                ISO 3166-2-Unterteilung, die Sie angegeben haben: `user_state`
                oder der Bundesstaat einer US-Adresse in `expected_details`.
            document_state:
              type: string
              nullable: true
              description: >-
                ISO 3166-2-Unterteilung, die das Ausweisdokument ausgestellt
                hat, ausgelesen bei der Ausweiserfassung.
            jurisdictions:
              type: array
              items:
                type: string
              description: >-
                US-Bundesstaaten (USPS-Codes, beispielsweise `IL`), deren
                Biometriegesetze die Person betreffen. `US`, wenn die Nachweise
                die Person in den USA verorten, der genaue Bundesstaat jedoch
                unbekannt ist. Leer, falls nicht zutreffend.
            retention_months:
              type: integer
              nullable: true
              description: >-
                Die kürzeste biometrische Aufbewahrungsfrist in Monaten in
                `jurisdictions`. `null`, wenn keine gilt.
            reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_UNSUPPORTED_SDK
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_UNSUPPORTED_SDK`: Eine Einwilligung war
                erforderlich und ein natives SDK unter 4.10.0 oder ein SDK, das
                seine Version nicht gemeldet hat, hat ein Gesicht ohne den
                Einwilligungsschritt erfasst; `status` bleibt `pending` oder
                `given`, wenn die Person später im gehosteten Flow zugestimmt
                hat. `BIOMETRIC_CONSENT_DECLINED`: Eine Ablehnung wurde erfasst
                (ersetzt den SDK-Grund). Andernfalls `null` und immer `null`,
                wenn die Sitzung keine Einwilligung erforderte.
            decline_reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_DECLINED`, wenn eine erfasste Ablehnung die
                Sitzung beendet hat, andernfalls `null`.
            face_data_deleted_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Wann durch die Ablehnung die Gesichtsbilder, Videos und
                Gesichts-Templates der Sitzung gelöscht wurden. `null`, sofern
                keine Ablehnung erfasst wurde.
        investigator:
          $ref: '#/components/schemas/InvestigatorBlock'
        biometric_retention:
          $ref: '#/components/schemas/BiometricRetention'
        fraud_check:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Das Ergebnis eines Fraud-Check-API-Aufrufs. `null` für jede andere
            Sitzung.
        full_session_video:
          type: string
          format: uri
          nullable: true
          description: >-
            Ablaufende URL der Gesamtsitzungsaufzeichnung. Wird nur
            zurückgegeben, wenn Ihre Organisation Videos der gesamten Sitzung
            aufzeichnet.
        full_session_video_recorded_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann die Aufzeichnung der gesamten Sitzung erstellt wurde. Wird nur
            zurückgegeben, wenn Ihre Organisation Videos der gesamten Sitzung
            aufzeichnet.
    AddressValidationResult:
      type: object
      description: >-
        Das Ergebnis einer Adressvalidierung: ob die Adresse existiert und ihre
        normalisierte Form. Sie bestätigt nur die Adresse; sie verknüpft die
        Adresse niemals mit einer Person.
      required:
        - status
        - verification_level
        - address
        - formatted_address
        - latitude
        - longitude
      properties:
        status:
          type: string
          enum:
            - verified
            - partially_verified
            - not_verified
            - unavailable
          description: >-
            `verified`: Die Adresse wurde bis zum Gebäude (oder zur Wohnung bzw.
            zum Postfach) bestätigt. `partially_verified`: Sie wurde nur bis zur
            Straße oder bis zur genauesten Stufe bestätigt, die die
            Postreferenzdaten für diesen Ort enthalten. `not_verified`: Nur die
            Region oder die Stadt stimmte überein, oder gar nichts.
            `unavailable`: Die Validierung konnte nicht ausgeführt werden (z. B.
            hat der Referenzdienst nicht geantwortet); sie wird nicht
            abgerechnet und wirkt sich niemals auf eine Verifizierung aus.
        verification_level:
          type: string
          nullable: true
          enum:
            - administrative_area
            - locality
            - thoroughfare
            - premise
            - delivery_point
            - null
          description: >-
            Die genaueste Ebene, auf der die Adresse abgeglichen wurde. `null`,
            wenn keine Übereinstimmung vorliegt oder `status` auf `unavailable`
            steht.
        address:
          type: object
          nullable: true
          description: >-
            Die normalisierte Adresse. `null`, wenn `status` den Wert
            `unavailable` hat.
          properties:
            address_line_1:
              type: string
              nullable: true
              description: >-
                Erste Zustellzeile, so geschrieben, wie im jeweiligen Land
                üblich.
              example: 1600 Amphitheatre Pkwy
            address_line_2:
              type: string
              nullable: true
              description: >-
                Zweite Adresszeile (Wohnung, Gebäude oder Stadtteil), sofern die
                Adresse eine enthält.
            city:
              type: string
              nullable: true
              example: Mountain View
            region:
              type: string
              nullable: true
              description: Bundesland, Provinz oder Region.
              example: CA
            postal_code:
              type: string
              nullable: true
              example: 94043-1351
            country:
              type: string
              nullable: true
              description: ISO 3166-1 Alpha-2-Ländercode.
              example: US
        formatted_address:
          type: string
          nullable: true
          description: Die normalisierte Adresse in einer Zeile.
          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: >-
        Normalisierter Telefon-Intelligence-Block. Nur vorhanden, wenn das
        Intelligence-Add-on für diese Abfrage ausgeführt wurde; falls vorhanden,
        wird er auch unter dem `enrichment`-Alias mit identischen Werten
        bereitgestellt.
      properties:
        score:
          type: number
          nullable: true
          description: Normalisierter Risiko-Score von 0–100. Höher ist riskanter.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low`, `Medium` oder `High`, abgeleitet aus dem Score.'
        phone_trust_index:
          type: number
          nullable: true
          description: Kehrwert des Werts, für Dashboards, die höhere Werte bevorzugen.
        network_stability_index:
          type: number
          nullable: true
          description: Stabilität des Leitungsnetzwerks.
        is_disposable:
          type: boolean
          nullable: true
          description: >-
            `true`, wenn die Nummer wie eine Wegwerf- oder virtuelle Nummer
            aussieht.
        is_ported:
          type: boolean
          nullable: true
          description: '`true`, wenn die Nummer den Mobilfunkanbieter gewechselt hat.'
        is_recently_ported:
          type: boolean
          nullable: true
          description: '`true`, wenn die Portierung kürzlich erfolgt ist.'
        carrier_type:
          type: string
          nullable: true
          description: >-
            Durch die Abfrage gemeldete Leitungsklassifizierung (z. B.
            `mobile`).
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Stabiler Didit-Identifikator des Signals, zum Beispiel
                  `IR-5AC67A32`. Opak: danach gruppieren und filtern, nicht
                  parsen.
              value:
                nullable: true
                description: >-
                  Für ein Risiko-Flag (beispielsweise `voip`, `leaked`,
                  `disposable`, `spam_trap`): dessen Wert: ein boolescher Wert,
                  eine Stufe oder ein Datum. Null für einen bewerteten
                  Grundcode.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  Gibt an, ob das Signal das Risiko erhöht oder das Vertrauen
                  gestärkt hat.
              message:
                type: string
                description: Lesbare Erklärung des Signals, auf Englisch.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Wie stark das Signal den Score beeinflusst hat, zum Beispiel
                  `low`, `medium` oder `high`.
          description: >-
            Signale, die den Score erklären, jeweils mit einem stabilen
            Didit-Code, einer Richtung, einer Nachricht und einer
            Auswirkungsstufe. Im Laufe der Zeit können neue Codes hinzukommen;
            weisen Sie unbekannte Codes daher nicht ab.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        Social Footprint der Telefonnummer: die Online-Plattformen, auf denen
        sie registriert ist. Nur vorhanden, wenn `enable_social` gesetzt war und
        die Prüfung abgeschlossen wurde. Jeder Zähler kann null sein, wenn dafür
        keine Daten zurückgegeben wurden. `profiles_registered: 0` bedeutet,
        dass die Plattformen geprüft wurden und die Telefonnummer auf keiner
        davon gefunden wurde – eine gültige, abrechenbare Antwort und ein
        häufiges Signal für eine synthetische Identität.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: >-
            Plattformen, bei denen die Telefonnummer nachweislich registriert
            ist.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Auf Registrierung geprüfte Plattformen.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plattformen, die einen zugehörigen Namen zurückgegeben haben.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plattformen, die ein Profilfoto zurückgegeben haben.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Kommunikationsplattformen mit erkannter Präsenz.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Unterschiedliche Plattformkategorien mit erkannter Präsenz.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Zusammengesetzter Indikator für digitale Reife, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indikator für die Profilreichhaltigkeit, 0–10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Mix aus kostenlosen vs. kostenpflichtigen Plattformen, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf kostenlosen Plattformen.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf rein kostenpflichtigen Plattformen.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf Freemium-Plattformen.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Vollständigkeit des WhatsApp-Profils. Nur für Telefonnummern; null
            für E-Mail-Adressen.
          example: Partial
        registered_platforms:
          type: array
          description: Plattformen, bei denen eine Registrierung bestätigt ist.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Geprüfte Plattformen mit negativem Ergebnis.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Anzahl der Registrierungen und Verhältnis pro Plattformkategorie.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Profildetails pro Plattform, geschlüsselt nach Plattform, sofern die
            Plattform diese bereitstellt.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    EmailIntelligence:
      type: object
      description: >-
        Normalisierter E-Mail-Intelligence-Block. Nur vorhanden, wenn das
        Intelligence-Add-on für diese E-Mail ausgeführt wurde; falls vorhanden,
        wird er auch als `enrichment`-Alias mit identischen Werten
        bereitgestellt.
      properties:
        score:
          type: number
          nullable: true
          description: Normalisierter Risiko-Score von 0–100. Höher ist riskanter.
        deliverable:
          type: string
          nullable: true
          description: Zustellbarkeitsbereich (z. B. `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` oder `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Numerischer Breach-Risiko-Index.
        is_recent_breach:
          type: boolean
          nullable: true
          description: >-
            `true`, wenn die Adresse in einer kürzlich aufgetretenen Datenpanne
            vorkommt.
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true`, wenn die Adresse in vielen Datenpannen vorkommt.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true`, wenn die Domain ein Wegwerf-Anbieter ist.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true`, wenn die Domain ein Freemail-Anbieter ist.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true`, wenn die Adresse in bekannten Datenpannen vorkommt.'
        no_of_breaches:
          type: number
          nullable: true
          description: Anzahl bekannter Datenlecks, die die Adresse enthalten.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Stabiler Didit-Identifikator des Signals, zum Beispiel
                  `IR-5AC67A32`. Opak: danach gruppieren und filtern, nicht
                  parsen.
              value:
                nullable: true
                description: >-
                  Für ein Risiko-Flag (beispielsweise `voip`, `leaked`,
                  `disposable`, `spam_trap`): dessen Wert: ein boolescher Wert,
                  eine Stufe oder ein Datum. Null für einen bewerteten
                  Grundcode.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  Gibt an, ob das Signal das Risiko erhöht oder das Vertrauen
                  gestärkt hat.
              message:
                type: string
                description: Lesbare Erklärung des Signals, auf Englisch.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Wie stark das Signal den Score beeinflusst hat, zum Beispiel
                  `low`, `medium` oder `high`.
          description: >-
            Signale, die den Score erklären, jeweils mit einem stabilen
            Didit-Code, einer Richtung, einer Nachricht und einer
            Auswirkungsstufe. Im Laufe der Zeit können neue Codes hinzukommen;
            weisen Sie unbekannte Codes daher nicht ab.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Social Footprint der E-Mail-Adresse: die Online-Plattformen, auf denen
        sie registriert ist. Nur vorhanden, wenn `enable_social` gesetzt war und
        die Prüfung abgeschlossen wurde. Jeder Zähler kann null sein, wenn dafür
        keine Daten zurückgegeben wurden. `profiles_registered: 0` bedeutet,
        dass die Plattformen geprüft wurden und die E-Mail-Adresse auf keiner
        davon gefunden wurde – eine gültige, abrechenbare Antwort und ein
        häufiges Signal für eine synthetische Identität.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: >-
            Plattformen, bei denen die E-Mail-Adresse nachweislich registriert
            ist.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Auf Registrierung geprüfte Plattformen.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plattformen, die einen zugehörigen Namen zurückgegeben haben.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plattformen, die ein Profilfoto zurückgegeben haben.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Kommunikationsplattformen mit erkannter Präsenz.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Unterschiedliche Plattformkategorien mit erkannter Präsenz.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Zusammengesetzter Indikator für digitale Reife, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indikator für die Profilreichhaltigkeit, 0–10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Mix aus kostenlosen vs. kostenpflichtigen Plattformen, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf kostenlosen Plattformen.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf rein kostenpflichtigen Plattformen.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registrierungen auf Freemium-Plattformen.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Vollständigkeit des WhatsApp-Profils. Nur für Telefonnummern; null
            für E-Mail-Adressen.
          example: Partial
        registered_platforms:
          type: array
          description: Plattformen, bei denen eine Registrierung bestätigt ist.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Geprüfte Plattformen mit negativem Ergebnis.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Anzahl der Registrierungen und Verhältnis pro Plattformkategorie.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Profildetails pro Plattform, geschlüsselt nach Plattform, sofern die
            Plattform diese bereitstellt.
          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: >-
            Erkannte Symbologie, zum Beispiel `QR_CODE`, `CODE_128`, `EAN_13`,
            `DATA_MATRIX` oder `PDF_417`.
        page_number:
          type: integer
          minimum: 1
          description: 1-basierte Seitennummer.
        position:
          type: array
          nullable: true
          description: >-
            Erkanntes Polygon in Pixelkoordinaten der gerenderten Seite. `null`,
            wenn keine verlässliche Position verfügbar ist.
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: integer
        x:
          type: integer
          nullable: true
          description: Linke Kante der Bounding-Box in Pixeln der gerenderten Seite.
        'y':
          type: integer
          nullable: true
          description: Oberer Rand des Begrenzungsrahmens in Pixeln der gerenderten Seite.
        width:
          type: integer
          nullable: true
          description: Breite der Bounding-Box in Pixeln der gerenderten Seite.
        height:
          type: integer
          nullable: true
          description: Höhe der Bounding-Box in Pixeln der gerenderten Seite.
        page_width:
          type: integer
          description: Gerenderte Seitenbreite in Pixeln.
        page_height:
          type: integer
          description: Gerenderte Seitenhöhe in Pixeln.
        raw_payload:
          type: string
          description: >-
            Unverarbeitete Decoder-Payload als Base64-String, falls verfügbar;
            andernfalls ein leerer String.
        parsed_payload:
          nullable: true
          description: >-
            Dekodierte Zeichenkette oder strukturierter Wert. `null`, wenn der
            Code gefunden wurde, aber nicht dekodiert werden konnte.
    BankVerificationResult:
      type: object
      description: >-
        Ergebnis eines Bankverifizierungsschritts für die Benutzer- und
        Unternehmensverifizierung. `method` gibt an, wie das Konto verifiziert
        wurde, und `none`, dass die Person ohne Bank fortgefahren ist, bevor ein
        Versuch bewertet wurde. `continued_without_bank` gibt an, dass die
        Person ohne Bank fortgefahren ist, auch nach einem bewerteten Versuch.
        Siehe
        [Bankverifizierungsmethoden](/de/core-technology/bank-verification/verification-methods)
        und [Wenn die Person ihre Bank nicht verifizieren
        kann](/de/core-technology/bank-verification/fallbacks).
      properties:
        schema_version:
          type: integer
          description: Version dieser Ergebnisstruktur. Derzeit `1`.
        bank_verification_id:
          type: string
          format: uuid
          description: Die ID dieses Ergebnisses.
        node_id:
          type: string
          description: Der Workflow-Knoten, zu dem dieses Ergebnis gehört.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Expired
          description: Das Verdikt des Schritts nach seinen Aktionen und Statusregeln.
        original_status:
          type: string
          nullable: true
          description: >-
            Das erste Urteil, das der Schritt gefällt hat, vor jeder späteren
            Änderung wie einer manuellen Prüfung.
        method:
          type: string
          nullable: true
          enum:
            - open_banking
            - account_lookup
            - microdeposits
            - statement
            - none
          description: >-
            Wie das Konto verifiziert wurde: `open_banking` (Bank-Login: die
            Person hat sich bei ihrer Bank angemeldet), `account_lookup`
            (Kontoüberprüfung: die Person hat die Kontodaten eingegeben und die
            Bank hat den Namen bestätigt), `microdeposits` oder `statement`
            (Upload eines Kontoauszugs). `none`, wenn die Person ohne Bank
            fortgefahren ist, bevor ein Versuch ausgewertet wurde, sodass kein
            Konto verifiziert wurde. Nach einem ausgewerteten Versuch bleibt es
            die Methode dieses Versuchs. `null`, bis ein Konto ausgewertet wird,
            sowie wenn der Workflow die zurückgegebenen Daten einschränkt.
            Workflow-Regeln lesen denselben Wert wie `bank.method`.
        provider:
          type: string
          nullable: true
          description: >-
            Der Schlüssel der Route, die die Verbindung ausgeführt hat. Lesen
            Sie `method`, nicht diesen Schlüssel, um festzustellen, wie das
            Konto verifiziert wurde.
        credential_source:
          type: string
          nullable: true
          enum:
            - native
            - byok
          description: >-
            `native`: Didits eigene Route, abgerechnet über Ihr Didit-Guthaben.
            `byok`: ein Marketplace-Anbieter, den Sie mit Ihren eigenen
            Anmeldedaten angebunden haben.
        route:
          type: object
          nullable: true
          description: >-
            Die vor der Einwilligung gewählte Route. Sie ändert sich danach
            nicht mehr.
          properties:
            provider_key:
              type: string
              nullable: true
              description: Der Schlüssel der Route.
            credential_source:
              type: string
              enum:
                - native
                - byok
            is_fallback:
              type: boolean
              description: >-
                Gibt an, ob Didits eigene Route für einen Marketplace-Anbieter
                eingesprungen ist, der keine Verbindung herstellen konnte.
            provider_connection_id:
              type: string
              nullable: true
              description: Die verwendete Marketplace-Verbindung für `byok`.
            requested_scopes:
              type: array
              items:
                type: string
              description: >-
                Die von der Verbindung angeforderten Daten, beispielsweise
                `ownership` oder `balances`.
        connection:
          type: object
          nullable: true
          description: Die Verbindung des letzten Versuchs. `null` vor dem ersten Versuch.
          properties:
            status:
              type: string
              enum:
                - pending
                - connected
                - cancelled
                - timeout
                - failed
                - unsupported
                - revoked
                - expired
            institution_id:
              type: string
              nullable: true
              description: >-
                Die ID der Bank. `null` bei einer Kontoprüfung, bei der keine
                Bank ausgewählt wird.
            institution_name:
              type: string
              nullable: true
              description: Der Name der Bank. `null` bei einer Kontoprüfung.
            institution_country:
              type: string
              nullable: true
              description: Das Land des Kontos, ISO 3166-1 Alpha-3.
            oauth:
              type: boolean
              nullable: true
              description: >-
                Gibt an, ob die Bankanmeldung über OAuth oder App-to-App
                erfolgte. `null` bei einer Kontoüberprüfung.
            connected_at:
              type: string
              format: date-time
              nullable: true
              description: Wann die Verbindung erfolgreich war.
            consent_expires_at:
              type: string
              format: date-time
              nullable: true
              description: Wann die Bank-Einwilligung endet, bei der Bank-Anmeldung.
            last_refreshed_at:
              type: string
              format: date-time
              nullable: true
              description: Wann die Finanzdaten zuletzt erneut ausgelesen wurden.
            attempts:
              type: integer
              description: >-
                Die Versuche, die die Person für diesen Schritt aufgewendet hat,
                alle Methoden zusammen.
            reason_code:
              type: string
              nullable: true
              description: >-
                Warum die Verbindung nicht einfach `connected` ist, zum Beispiel
                `USER_CANCELLED`, `INSTITUTION_DOWN`, `ACCOUNT_NOT_FOUND`,
                `REFERENCE_IDENTITY_MISSING` oder `VERIFICATION_COMPLETED`.
        account:
          type: object
          nullable: true
          description: Das bewertete Konto. `null`, bis ein Konto bewertet wird.
          properties:
            account_id_masked:
              type: string
              nullable: true
              description: Die Kontonummer, maskiert.
            iban_masked:
              type: string
              nullable: true
              description: Die IBAN, maskiert.
            sort_code:
              type: string
              nullable: true
              description: Der Sort Code im Vereinigten Königreich.
            routing_number_masked:
              type: string
              nullable: true
              description: Die Routing-Nummer, maskiert.
            type:
              type: string
              nullable: true
              enum:
                - checking
                - current
                - savings
                - business
                - other
            subtype:
              type: string
              nullable: true
              description: Der bankeigene Kontosubtyp.
            currency:
              type: string
              nullable: true
              description: ISO 4217-Währung des Kontos.
            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: >-
            Wie der Kontoinhaber mit der verifizierten Identität übereinstimmt.
            `null`, bis ein Konto ausgewertet wird.
          properties:
            result:
              type: string
              enum:
                - match
                - partial_match
                - no_match
                - unknown
                - not_verifiable
              description: >-
                `partial_match` ist eine nahe Übereinstimmung. `not_verifiable`:
                Die Bank hat ohne abzugleichenden Inhaber geantwortet.
                `unknown`: Der Nachweis konnte nicht gelesen werden, oder es lag
                keine Identität zum Abgleich vor.
            reference_identity_source:
              type: string
              nullable: true
              description: >-
                Der Schritt, mit dessen Identität der Inhaber verglichen wurde:
                `kyc`, `database_validation`, `expected_details`,
                `questionnaire`, `document_ai` oder `kyb`.
            name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Didits Kontoinhaber-Namens-Score.
            provider_name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Der bankeigene Score für den Inhabernamen, sofern einer
                zurückgegeben wurde.
            address_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Der Score für die Inhaberadresse, sofern ein Adressabgleich
                durchgeführt wurde.
            email_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Der Score für die Inhaber-E-Mail, sofern ein E-Mail-Abgleich
                durchgeführt wurde.
            phone_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Der Score für die Inhabertelefonnummer, sofern ein
                Telefonabgleich durchgeführt wurde.
            dob_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Der Score für das Inhabergeburtsdatum, sofern die Bank eines
                übermittelt hat.
            close_match:
              type: boolean
              nullable: true
              description: >-
                Gibt an, ob der Name im Bereich für eine enge Übereinstimmung
                lag.
            holder_confirmation:
              type: string
              nullable: true
              enum:
                - pending
                - confirmed
                - rejected
              description: >-
                Die Antwort der Person bei der Bitte um Bestätigung eines
                ähnlich lautenden Namens. `null`, wenn nie danach gefragt wurde.
            method:
              type: string
              nullable: true
              enum:
                - exact
                - token_set
                - nickname
                - transliteration
                - fuzzy
                - provider_only
                - microdeposits
              description: >-
                Welcher Namensvergleich den Wert erzeugt hat. Dies ist nicht die
                Verifizierungsmethode: Lesen Sie hierfür das übergeordnete Feld
                `method` aus.
            matched_holder_index:
              type: integer
              nullable: true
            holders:
              type: array
              items:
                type: object
              description: Jeder von der Bank aufgeführte Inhaber mit seinen Scores.
            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: Wann die Entscheidung berechnet wurde.
        financial_data:
          type: object
          description: >-
            Die Finanzdaten, die der Schritt ausgelesen hat. Nur die
            Bank-Anmeldung liest sie aus.
          properties:
            balances:
              type: object
              nullable: true
              description: Mit dem Scope `balances`.
            transactions:
              type: object
              nullable: true
              description: Mit dem Scope `transactions`.
            income:
              type: object
              nullable: true
              description: Mit dem Scope `income`.
            categorization:
              type: object
              nullable: true
              description: >-
                Didits Kategorisierung der gelesenen Transaktionen. `null` ohne
                diese.
            not_collected:
              type: array
              items:
                type: string
                enum:
                  - balances
                  - income
                  - transactions
              description: >-
                Die vom Schritt angeforderten Daten, die von der Methode zur
                Kontoverifizierung nicht erfasst werden. Guthaben, Transaktionen
                und Einkommen stammen ausschließlich aus dem Bank-Login; ein per
                Kontoprüfung verifiziertes Konto führt sie daher hier auf. Dies
                ist niemals ein Fehler. Andernfalls ist das Feld leer.
        billing:
          type: object
          nullable: true
          properties:
            route:
              type: string
              enum:
                - native
                - byok
            billed:
              type: boolean
            marketplace_fee:
              type: string
              nullable: true
              description: Die berechnete Marketplace-Plattformgebühr für `byok`.
            usage_type:
              type: string
              nullable: true
              description: >-
                Die Nutzungsposition, auf die die Gebühr gebucht wurde:
                `bank_verification` für eine Bankanmeldung oder eine
                Kontoprüfung, `bank_statement_upload` für einen
                Kontoauszug-Upload ohne vorherigen kostenpflichtigen Bankversuch
                und `bank_byok_fee` für die Marktplatzgebühr bei Ihrem eigenen
                Provider. `null`, wenn nichts in Rechnung gestellt wurde.
        reference_identity:
          type: object
          nullable: true
          description: >-
            Die Identität, mit der der Inhaber verglichen wurde, zusammen mit
            ihrer Quelle.
        signals:
          type: object
          nullable: true
          description: >-
            Kontosignale aus dem Transaktionsverlauf, sofern der Schritt diesen
            ausgelesen hat.
        connection_abandoned:
          type: boolean
          nullable: true
          description: >-
            Gibt an, ob der Schritt ohne Übereinstimmung endete, nachdem die
            Person den Schritt bei ihrer Bank verlassen hat.
        not_covered:
          type: boolean
          nullable: true
          description: >-
            Gibt an, ob die Bank oder das Land der Person bei diesem Schritt
            nicht erreicht werden konnte. Auch `true`, wenn die Person ohne Bank
            fortgefahren ist, da keine Methode ihr Land oder ihre Bank
            verifizieren konnte.
        continued_without_bank:
          type: boolean
          description: >-
            Gibt an, ob die Person den Schritt mit **Ohne Ihre Bank fortfahren**
            verlassen hat. `continuation` gibt dann den Grund an. `method` ist
            `none`, wenn vor dem Fortfahren kein Versuch ausgewertet wurde. Nach
            einem ausgewerteten Versuch, wie etwa einem nicht übereinstimmenden
            Kontoinhaber, bleibt `method` die Methode dieses Versuchs und das
            Urteil sowie die Grund-Codes bleiben bestehen. Wird auch
            zurückgegeben, wenn der Workflow die zurückgegebenen Daten
            einschränkt.
        continuation:
          type: object
          nullable: true
          description: >-
            Wie die Person ohne Bank fortgefahren ist. `null`, wenn sie dies
            nicht getan hat. Wenn der Workflow die zurückgegebenen Daten
            einschränkt, wird `reason` weiterhin zurückgegeben und jeder andere
            Schlüssel ist `null`.
          properties:
            reason:
              type: string
              enum:
                - no_route
                - institution_unsupported
                - attempts_exhausted
                - person_choice
              description: >-
                Warum dies geschah, wie von Didit beim Fortfahren der Person
                ermittelt: `no_route` (kein Bank-Login und keine Kontoprüfung
                für ihr Land verfügbar ist), `institution_unsupported` (die
                ausgewählte Bank kann in diesem Schritt nicht verwendet werden),
                `attempts_exhausted` (alle Versuche wurden bereits aufgebraucht
                und keiner war im Gange) oder `person_choice` (eine
                Verifizierungsmöglichkeit war vorhanden und die Person entschied
                sich fortzufahren, auch wenn ihre Bank gerade nicht erreichbar
                war). `no_route` und `institution_unsupported` folgen
                `bank_unsupported_action`, `attempts_exhausted` folgt
                `bank_attempts_exhausted_action` und `person_choice` folgt
                `bank_skipped_action`, es sei denn, ein ausgewerteter Versuch
                hat den Schritt bereits entschieden.
            country:
              type: string
              nullable: true
              description: >-
                Das Land, in dem sich die Person bei der Verifizierung befand,
                ISO 3166-1 alpha-3. `null`, wenn sie fortgefahren ist, bevor sie
                eines ausgewählt hat.
            offered:
              type: array
              items:
                type: string
                enum:
                  - statement
                  - microdeposits
              nullable: true
              description: >-
                Die anderen Verifizierungsmethoden, die das Land der Person beim
                Fortfahren angeboten hat, in der Reihenfolge ihres Angebots:
                `statement` (ein Kontoauszugs-Upload), dann `microdeposits`.
                Leer, wenn keine angeboten wurden.
            institution_id:
              type: string
              nullable: true
              description: >-
                Für `institution_unsupported`: die ID der Bank, die die Person
                nicht verwenden konnte: die Bank, die sie ausgewählt hat, oder
                die Bank, bei der ihr letzter Versuch endete. Didit entnimmt
                diese seiner eigenen Bankenliste, niemals dem Gerät der Person;
                eine Bank, die nicht in dieser Liste enthalten ist, ist daher
                `null`. `null` für jeden anderen Grund.
            institution_name:
              type: string
              nullable: true
              description: >-
                Für `institution_unsupported`: der Name dieser Bank aus
                derselben Liste wie `institution_id`. `null`, wenn diese Liste
                die Bank nicht enthält, sowie für jeden anderen Grund.
            continued_at:
              type: string
              format: date-time
              nullable: true
              description: Wann die Person fortgefahren ist.
        evidence_purged_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann die Banknachweise gemäß `bank_evidence_retention_days` gelöscht
            wurden. Andernfalls `null`.
        warnings:
          type: array
          items:
            type: string
          description: >-
            Informative Codes, zum Beispiel `holder_declared`. Eine Warnung
            ändert den Status niemals von sich aus.
        reason_codes:
          type: array
          items:
            type: string
          description: >-
            Warum das Ergebnis so ausgefallen ist, zum Beispiel
            `OWNER_NAME_PARTIAL`. Es können mehrere zutreffen. `NOT_COVERED`:
            Die Person ist ohne Bank fortgefahren, da keine Methode ihr Land
            oder ihre Bank verifizieren konnte. `SKIPPED`: Die Person hat sich
            entschieden, ohne Bank fortzufahren, obwohl eine
            Verifizierungsmöglichkeit vorhanden war. Keines von beiden wird
            hinzugefügt, wenn ein ausgewerteter Versuch den Schritt bereits
            entschieden hat.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    SignatureResult:
      type: object
      description: >-
        Das Ergebnis eines Unterzeichners für einen E-Signatur-Schritt. Siehe
        den
        [E-Signatur-Bericht](/de/core-technology/electronic-signature/report-electronic-signature).
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Als `signature_id` übergeben, um den Nachweis dieses Unterzeichners
            herunterzuladen oder dessen Signatur zu validieren.
        node_id:
          type: string
          description: Der Workflow-Schritt, der dies erzeugt hat.
        status:
          type: string
          enum:
            - intro
            - review
            - code
            - signing
            - signed
            - declined
          description: >-
            Wo sich der Unterzeichner im Schritt befindet. Nur `signed`
            bedeutet, dass die Dokumente unterzeichnet sind.
        verdict:
          type: string
          enum:
            - Not Finished
            - Approved
            - In Review
            - Declined
          description: >-
            Das Ergebnis des Schritts. Eine Warnung legt es anhand ihrer Regel
            fest; benutzerdefinierte Statusregeln greifen danach.
        level:
          type: string
          enum:
            - simple
            - aes
            - qes
          description: >-
            `simple` (Standard) oder `aes`. `qes` (Qualifizierte elektronische
            Signatur, QES) ist ein Add-on, das noch nicht verfügbar ist.
        format:
          type: string
          enum:
            - pdf
            - pades
          description: >-
            `pdf` für eine einfache Signatur, `pades` für eine fortgeschrittene
            elektronische Signatur (AES).
        profile:
          type: string
          nullable: true
          description: >-
            `PAdES-B-LT`, sobald eine fortgeschrittene (AES) Signatur
            unterzeichnet wurde, andernfalls null.
        signer:
          type: object
          properties:
            name:
              type: string
              nullable: true
              description: >-
                Der Name des Unterzeichners. Verifiziert (aus der genehmigten
                Ausweisverifizierung oder der Sitzung), außer auf der Stufe
                Simple ohne einen verifizierten Sitzungsnamen, wo es der vom
                Unterzeichner eingegebene Name ist und nicht verifiziert wird.
            capacity:
              type: string
              enum:
                - self
                - company
            company:
              type: string
              nullable: true
            role:
              type: string
              nullable: true
              description: Die Bezeichnung der Schlüsselperson, wie angegeben.
            roles:
              type: array
              items:
                type: string
              description: >-
                Die strukturierten Rollen der Schlüsselperson, wie für das
                Unternehmen angegeben.
            identity_session_id:
              type: string
              format: uuid
              description: Die KYC-Sitzung, die den Unterzeichner verifiziert hat.
        identity_used:
          type: object
          description: >-
            Die verifizierte Identität, auf der die Signatur basiert. Leer bei
            einer einfachen Signatur ohne verifizierte Identität.
          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: Der Name, mit dem der Unterzeichner übereinstimmen musste.
        certificate:
          type: object
          nullable: true
          description: >-
            Das Zertifikat, mit dem die Dokumente signiert wurden. `null` bis
            zur Signatur und bei einer Simple-Signatur immer `null`.
          properties:
            issuer:
              type: string
            issued_to:
              type: string
            serial:
              type: string
              description: Seriennummer, hexadezimal.
            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` für eine einfache Signatur, die keinen Code hat.'
            destination:
              type: string
              nullable: true
              description: Der maskierte Kontakt, an den der Code gesendet wurde.
            confirmed_at:
              type: string
              format: date-time
              nullable: true
            attempts:
              type: integer
              description: Eingegebene Codes, einschließlich des richtigen.
        timestamp:
          type: object
          nullable: true
          description: >-
            Der RFC-3161-Zeitstempel in der Signatur, ausgestellt von Didit.
            `null`, bis signiert wurde, und immer `null` bei einer
            Simple-Signatur.
          properties:
            time:
              type: string
              format: date-time
            qualified:
              type: boolean
              description: Für AES immer `false`.
            valid:
              type: boolean
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: >-
                  Das Dokument auf der Kopie dieses Unterzeichners. Verwenden
                  Sie es, um die signierte Datei herunterzuladen.
              uuid:
                type: string
                format: uuid
                description: Identisch mit `id`.
              title:
                type: string
              file_name:
                type: string
              pages:
                type: integer
                description: >-
                  Signierte Seiten des Dokuments. Bei Word: Seiten des
                  konvertierten PDFs.
              size_bytes:
                type: integer
              sha256_original:
                type: string
                description: >-
                  SHA-256 des Dokuments in der Form, wie es dem Unterzeichner
                  angezeigt wurde.
              sha256_signed:
                type: string
                nullable: true
                description: SHA-256 des signierten PDFs, sobald es signiert wurde.
              status:
                type: string
                enum:
                  - signed
                  - declined
                  - not_signed
                  - not_reached
                description: >-
                  `not_signed`: geöffnet, aber nicht unterzeichnet.
                  `not_reached`: nie geöffnet.
              opened_at:
                type: string
                format: date-time
                nullable: true
              read_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Wann der Unterzeichner das Ende eines Dokuments ohne Felder
                  erreicht hat, wenn der Schritt dies erfordert.
              read_to_end:
                type: boolean
              consented_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Wann der Unterzeichner einem Dokument ohne Felder zugestimmt
                  oder die Felder eines Dokuments mit Feldern ausgefüllt hat.
              consent:
                type: boolean
              signed_file:
                type: string
                nullable: true
                description: >-
                  Pfad des signierten PDFs nach der Signatur. Siehe [Signiertes
                  Dokument
                  herunterladen](/de/sessions-api/electronic-signature/download-signed-document).
              mode:
                type: string
                enum:
                  - fields
                  - read_and_agree
                description: >-
                  `fields` für ein Dokument mit Feldern, `read_and_agree` für
                  ein Dokument ohne.
              source_format:
                type: string
                enum:
                  - pdf
                  - docx
                description: >-
                  `pdf` oder `docx` für ein Word-Dokument, das Didit in PDF
                  konvertiert hat.
              conversion:
                type: object
                nullable: true
                description: >-
                  `null` für ein PDF. Für ein Word-Dokument die Originaldatei
                  und die Konvertierung.
                properties:
                  from:
                    type: string
                    enum:
                      - docx
                  file_name:
                    type: string
                    description: Ihr ursprünglicher Word-Dateiname.
                  sha256:
                    type: string
                    description: SHA-256 Ihrer ursprünglichen Word-Datei.
                  size_bytes:
                    type: integer
                    description: Größe Ihrer ursprünglichen Word-Datei.
                  converter:
                    type: string
                    description: Version des Konverters, der das PDF erstellt hat.
              fields:
                type: array
                description: >-
                  Felder auf dem Dokument mit ihren Werten. Leer bei einem
                  Dokument ohne Felder.
                items:
                  $ref: '#/components/schemas/SignatureFieldResult'
        adopted_signature:
          type: object
          nullable: true
          description: >-
            Die Signatur und Initialen, die der Unterzeichner für Signatur- und
            Initialenfelder übernommen hat. `null`, bis der Unterzeichner eine
            übernimmt.
          properties:
            method:
              type: string
              enum:
                - typed
                - drawn
              description: >-
                `typed`: der verifizierte Name im Handschriftstil. `drawn`: mit
                einem Finger oder einer Maus gezeichnet.
            font:
              type: string
              nullable: true
              description: >-
                Der Handschriftstil einer getippten Signatur. `null`, wenn
                gezeichnet.
            adopted_at:
              type: string
              format: date-time
        electronic_signature_consent_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann der Unterzeichner auf dem Prüfungsbildschirm zugestimmt hat,
            die Dokumente elektronisch zu signieren. Wird gesetzt, wenn
            irgendein Dokument Felder enthält.
        evidence_file:
          type: string
          nullable: true
          description: >-
            Pfad der Nachweis-PDF-Datei nach der Signierung. Siehe
            [Signaturnachweis
            herunterladen](/de/sessions-api/electronic-signature/download-evidence).
        warnings:
          type: array
          description: >-
            Für diesen Unterzeichner ausgelöste Warnungen. Siehe
            [E-Signatur-Warnungen](/de/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: >-
            Die letzte kryptografische Prüfung der signierten Dokumente. `null`,
            bis die Dokumente signiert sind. Wenn Didit das Ergebnis der
            Signierung nicht bestätigen kann, lautet es `{"valid": null,
            "reason": "signature_provider_outcome_unknown", "checked_at": ...}`
            und `status` bleibt `signing`: Behandeln Sie es als nicht signiert.
          properties:
            valid:
              type: boolean
              nullable: true
              description: >-
                `true`, wenn jedes Dokument gültig ist. `null`, wenn das
                Ergebnis der Signierung nicht bestätigt werden konnte.
            reason:
              type: string
              description: >-
                Wird gesetzt, wenn `valid` gleich `null` ist:
                `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`, wenn sowohl die Signatur als auch der Zeitstempel
                      gültig und vertrauenswürdig sind.
                  integrity:
                    type: boolean
                    description: >-
                      `true`, wenn das Dokument seit der Signierung unverändert
                      ist.
                  trusted:
                    type: boolean
                    description: >-
                      `true`, wenn das Signaturzertifikat auf ein
                      vertrauenswürdiges Stammzertifikat zurückgeht.
                  revoked:
                    type: boolean
                  trusted_list:
                    type: object
                    description: >-
                      Prüfung der EU-Vertrauensliste. Für AES: `{"status":
                      "not_applicable", "reason": "aes_not_qualified"}`.
                    properties:
                      status:
                        type: string
                      reason:
                        type: string
                  certificate:
                    type: object
                    nullable: true
                    description: >-
                      Das Zertifikat, mit dem die Dokumente signiert wurden.
                      `null` bis zur Signatur und bei einer Simple-Signatur
                      immer `null`.
                    properties:
                      issuer:
                        type: string
                      issued_to:
                        type: string
                      serial:
                        type: string
                        description: Seriennummer, hexadezimal.
                      valid_from:
                        type: string
                        format: date-time
                      valid_until:
                        type: string
                        format: date-time
                  timestamp:
                    type: object
                    nullable: true
                    description: >-
                      Der RFC-3161-Zeitstempel in der Signatur, ausgestellt von
                      Didit. `null`, bis signiert wurde, und immer `null` bei
                      einer Simple-Signatur.
                    properties:
                      time:
                        type: string
                        format: date-time
                      qualified:
                        type: boolean
                        description: Für AES immer `false`.
                      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: Wann der Signaturlink aufhört zu funktionieren.
        email_sent_at:
          type: string
          format: date-time
          nullable: true
        email_unavailable_reason:
          type: string
          nullable: true
        ip_address:
          type: string
          nullable: true
          description: >-
            Die IP-Adresse des Unterzeichners, als er seinen Code angefordert
            hat.
        place:
          type: string
          nullable: true
          description: 'Nicht erfasst: immer `null`.'
        place_unavailable_reason:
          type: string
          nullable: true
          enum:
            - not_collected
    AMLScreening:
      type: object
      properties:
        node_id:
          type: string
          description: Eindeutige Kennung für diesen AML-Schritt im Workflow-Graphen.
        status:
          type: string
          description: >-
            Status auf Funktionsebene dieses AML-Screenings. Unabhängig vom
            `status` der übergeordneten Sitzung – eine Sitzung kann ihre
            Gesamtentscheidung erreichen, während eine einzelne Funktion `In
            Review` bleibt.
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
        total_hits:
          type: integer
          description: Gesamtzahl der gefundenen Übereinstimmungen
        entity_type:
          type: string
          description: 'Art der gescreenten Entität: Person oder Unternehmen'
        hits:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  Didits stabiler Bezeichner für den Treffer: `hit_`, gefolgt
                  von 24 Hexadezimalzeichen. Dieselbe übereinstimmende Entität
                  behält dieselbe `id`, wenn die betreffende Entität erneut
                  überprüft wird. Übergeben Sie sie als `hit_id` an die
                  Endpoints zur AML-Trefferprüfung.
              url:
                type: string
                format: uri
                description: Quell-URL für den Treffer
              match:
                type: boolean
                description: Gibt an, ob dies eine bestätigte Übereinstimmung ist
              score:
                type: number
                format: float
                nullable: true
                minimum: 0
                maximum: 1
                description: >-
                  Veralteter gewichteter Übereinstimmungswert im Bereich 0–1 (z.
                  B. `0.73`). Verwenden Sie stattdessen `match_score` (0–100).
                deprecated: true
              target:
                type: boolean
                nullable: true
                description: >-
                  Gibt an, ob die übereinstimmende Entität das direkte Ziel des
                  Eintrags ist (im Gegensatz zu einer verbundenen Partei).
                  `null`, wenn die Quelle dies nicht angibt.
              caption:
                type: string
                description: Bildunterschrift oder Titel des Treffers
              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: >-
                  Liste der Datensatzkategorien, in denen die Übereinstimmung
                  gefunden wurde. Gibt an, ob die Entität in PEP-Listen (mit
                  Stufe), Sanktionsdatenbanken, negativen Medienberichten,
                  Warnungen/behördlichen Durchsetzungsmaßnahmen oder anderen
                  Compliance-Datensätzen aufgetaucht ist. `Other Lists`, wenn
                  die Quelle der Entität keine dieser Kategorien angibt.
              features:
                type: object
                nullable: true
                description: Zusätzliche Merkmale der Übereinstimmung
              rca_name:
                type: string
                description: RCA-Name, falls zutreffend
              last_seen:
                type: string
                format: date-time
                description: Datum, an dem die Übereinstimmung zuletzt festgestellt wurde
              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: Datum, an dem die Übereinstimmung erstmals festgestellt wurde
              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: >-
                  Gewichteter Identitäts-Konfidenzwert (0-100), berechnet aus
                  Namensähnlichkeit, Geburtsdatum und Länderabgleich. Wird
                  verwendet, um zu bestimmen, ob ein Treffer falsch positiv oder
                  eine mögliche Übereinstimmung ist.
                format: float
                nullable: true
              risk_score:
                type: number
                description: >-
                  Risiko-Score der Entität (0-100). Wird verwendet, um den
                  endgültigen AML-Status (Approved/In Review/Declined) basierend
                  auf dem höchsten risk_score unter Treffern, die nicht falsch
                  positiv sind, zu bestimmen.
              review_status:
                type: string
                description: >-
                  Prüfstatus für diesen Treffer. Kann 'Unreviewed', 'Confirmed
                  Match', 'False Positive' oder 'Inconclusive' sein.
                enum:
                  - Unreviewed
                  - Confirmed Match
                  - False Positive
                  - Inconclusive
              score_breakdown:
                type: object
                description: >-
                  Detaillierte Aufschlüsselung, wie der match_score berechnet
                  wurde.
                properties:
                  name_score:
                    type: integer
                    description: Unverarbeiteter Prozentsatz der Namensähnlichkeit (0-100).
                  name_weight:
                    type: integer
                    description: >-
                      Ursprüngliche Gewichtung für den Namen aus der
                      Konfiguration (0-100).
                  name_weight_normalized:
                    type: number
                    description: >-
                      Normalisierte Gewichtung für den Namen nach Neugewichtung
                      für fehlende Daten (0–100).
                  name_contribution:
                    type: number
                    description: Vom Namen zum Gesamtergebnis beigetragene Punkte.
                  dob_score:
                    type: integer
                    description: Übereinstimmungswert des Geburtsdatums (-100 bis 100).
                  dob_weight:
                    type: integer
                    description: >-
                      Ursprüngliche Gewichtung für das Geburtsdatum aus der
                      Konfiguration (0-100).
                  dob_weight_normalized:
                    type: number
                    description: >-
                      Normalisierte Gewichtung für das Geburtsdatum nach
                      Neugewichtung für fehlende Daten (0–100).
                  dob_contribution:
                    type: number
                    description: Vom Geburtsdatum zum Gesamtergebnis beigetragene Punkte.
                  country_score:
                    type: integer
                    description: Länder-Übereinstimmungswert (-100 bis 100).
                  country_weight:
                    type: integer
                    description: >-
                      Ursprüngliche Gewichtung für das Land aus der
                      Konfiguration (0-100).
                  country_weight_normalized:
                    type: number
                    description: >-
                      Normalisierte Gewichtung für das Land nach Neugewichtung
                      für fehlende Daten (0–100).
                  country_contribution:
                    type: number
                    description: Vom Land zum Gesamtergebnis beigetragene Punkte.
                  document_number_match_type:
                    type: string
                    description: >-
                      Ergebnis der Auswertung des Dokumentennummern-„Golden
                      Key“.
                    enum:
                      - MATCH
                      - NEUTRAL
                      - HARD_MISMATCH
                  document_number_effect:
                    type: string
                    description: >-
                      Lesbare Beschreibung der Auswirkung der Dokumentennummer
                      auf den Score.
                  total_score:
                    type: integer
                    description: Endgültiger gewichteter Übereinstimmungswert (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: >-
                  Liste von Treffern zu Warnungen und behördlichen
                  Durchsetzungsmaßnahmen. Enthält Einträge aus den Kategorien:
                  Warning, SIP, Warnings and Regulatory Enforcement, Fitness and
                  Probity, SIE und Insolvency.
                items:
                  type: object
                  properties:
                    list_name:
                      type: string
                      description: Name des Herausgebers der Warnliste
                    matched_name:
                      type: string
                      description: Übereinstimmender Name in der Warnliste
                    description:
                      type: string
                      description: Beschreibung des Warnungseintrags
                    publisher:
                      type: string
                      description: Herausgeber oder Quelle der Warnung
                    source_url:
                      type: string
                      format: uri
                      description: URL zur Quelle der Warnung
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: Zusätzliche Quell-URLs
                    countries:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Mit der Warnung verknüpfte Länder
                    created_at:
                      type: string
                      nullable: true
                      description: Datum, an dem der Warnungseintrag erstellt wurde
                    updated_at:
                      type: string
                      nullable: true
                      description: >-
                        Datum, an dem der Warnungseintrag zuletzt aktualisiert
                        wurde
                    additional_data:
                      type: object
                      description: >-
                        Zusätzliche Daten aus der Warnungsquelle. Kann ein
                        `data`-Objekt mit einem `case_details`-Array enthalten.
                      properties:
                        data:
                          type: object
                          properties:
                            case_details:
                              type: array
                              description: >-
                                Details zu Warnungsfällen, die mit dieser
                                Übereinstimmung verknüpft sind
                              items:
                                type: object
                                properties:
                                  case_type:
                                    type: string
                                    description: Art des Warnungsfalls
                                    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: >-
                  Liste der für diese Entität gefundenen
                  Sanktionslisten-Übereinstimmungen.
                items:
                  type: object
                  properties:
                    list_name:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Name(n) der Sanktionsliste(n)
                    matched_name:
                      type: string
                      description: Übereinstimmender Name in der Sanktionsliste
                    description:
                      type: string
                      description: Beschreibung des Sanktionseintrags
                    reason:
                      type: string
                      nullable: true
                      description: >-
                        Freitext-Begründung, warum die Entität sanktioniert
                        wurde. Zusammengeführt aus den Begründungseinträgen der
                        Sanktionsliste. Beispiele: '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 zur Quelle der Sanktion
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: Zusätzliche Quell-URLs
                    details:
                      type: array
                      items:
                        type: string
                      description: Zusätzliche Details zur Sanktion
                    legal_basis:
                      type: array
                      items:
                        type: string
                      description: Rechtsgrundlage für die Sanktion
                    listed_on:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Datum bzw. Daten, an denen die Entität gelistet war
                    sanction_list:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Sanktionslisten-Identifikator(en)
                    sanction_program:
                      type: array
                      items:
                        type: string
                      description: >-
                        Sanktionsprogramm(e), unter denen die Entität aufgeführt
                        ist
                    sanctioning_authority:
                      type: array
                      items:
                        type: string
                      description: Behörde/Behörden, die die Sanktion verhängt hat/haben
                    updated_on:
                      type: array
                      items:
                        type: string
                      description: >-
                        Datum/Daten, an dem/denen der Sanktionseintrag zuletzt
                        aktualisiert wurde
                    additional_data:
                      type: object
                      description: >-
                        Zusätzliche Daten aus der Sanktionsquelle, die nicht in
                        den Hauptfeldern erfasst wurden
              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: >-
            Gesamter AML-Screening-Score — der höchste Risiko-Score über alle
            Treffer hinweg (Gleitkommazahl, 0-100). `null`, bis er berechnet
            wurde.
        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: >-
            Gibt an, ob die laufende AML-Überwachung für dieses Screening
            aktiviert ist. Wenn `true`, wird die Entität regelmäßig erneut
            überprüft und alle neuen Treffer aktualisieren den Bericht.
        next_ongoing_monitoring_bill_date:
          type: string
          format: date
          nullable: true
          description: >-
            Datum (JJJJ-MM-TT), an dem dieses Abonnement für die laufende
            Überwachung als Nächstes abgerechnet wird. Berechnet als Datum der
            letzten Abrechnung für die laufende Überwachung plus 365 Tage, wenn
            `is_ongoing_monitoring_enabled = true`; andernfalls `null`. Dies ist
            ein Abrechnungsdatum, kein Screening-Datum – verwenden Sie dafür
            `last_ongoing_screening_at`.
        last_ongoing_screening_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann die laufende Überwachung zuletzt ein erneutes Screening dieses
            Datensatzes abgeschlossen hat, unabhängig davon, ob sich das
            Ergebnis geändert hat. `null`, wenn der Datensatz noch nie erneut
            überprüft wurde; der Wert wird niemals rückwirkend ab dem
            Aktivierungs- oder Abrechnungsdatum ausgefüllt.
        last_ongoing_screening_datasets_updated_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Das letzte Aktualisierungsdatum des AML-Datensatzes, das der
            Anbieter zum Zeitpunkt dieses Screenings gemeldet hat. `null`, wenn
            der Anbieter keine Datumsangaben zum Datensatz gemeldet hat; wird
            niemals geschätzt.
        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: >-
                  Die Funktion, die diese Warnung generiert hat. Der Wert
                  identifiziert den Funktionsblock, zu dem die Warnung gehört.
                  Innerhalb eines AML-Screenings ist dies typischerweise `AML`,
                  aber das obige Enum ist für alle Funktionswarnungen in der
                  Decision-Payload maßgeblich.
              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: >-
                  Die ID des Workflow-Graph-Knotens, der diese Warnung erzeugt
                  hat
    GeolocationCheck:
      type: object
      description: >-
        Ein Standortverifizierungsergebnis, der akzeptierte Versuch eines
        Workflow-Knotens. Messung, Unsicherheit und Authentizität sind separate
        Schlüssel, sodass sich eine präzise nicht attestierte
        Positionsbestimmung von einer unpräzisen attestierten unterscheidet.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            Workflow-Knoten, der dieses Ergebnis erzeugt hat, damit ein Workflow
            mit zwei Standortverifizierungs-Schritten nachvollziehbar bleibt.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            Status auf Funktionsebene dieses Schritts der Standortverifizierung,
            ermittelt anhand seiner Warnungen. Unabhängig vom `status` der
            Sitzung.
        outcome:
          type: string
          nullable: true
          description: Was bei diesem Versuch passiert ist.
          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: >-
            Was das Betriebssystem oder der Browser erteilt hat. `not_requested`
            bedeutet, dass der Schritt ausschließlich den IP-Standort der
            Verbindung verwendet, sodass die Person niemals nach einer
            Berechtigung gefragt wird.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: >-
            WGS84-Breitengrad der Positionsbestimmung. `null`, wenn keine
            Positionsbestimmung vorliegt.
          format: double
        longitude:
          type: number
          nullable: true
          description: >-
            WGS84-Längengrad der Positionsbestimmung. `null`, wenn keine
            Positionsbestimmung vorliegt.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            Unsicherheitsradius in Metern auf dem in `accuracy_confidence`
            angegebenen Konfidenzniveau.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            Konfidenzniveau, das die Plattform `accuracy_m` zuordnet: `p95`
            (Browser), `p68` (Android) oder `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: >-
            Wann das Gerät die Positionsbestimmung vorgenommen hat, nach seiner
            eigenen Uhr.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: >-
            Sekunden zwischen der Erfassung der Position durch das Gerät und dem
            Empfang bei Didit.
        source:
          type: string
          nullable: true
          description: >-
            Woher die Positionsbestimmung stammt, sofern die Plattform dies
            angibt. `ip` bedeutet, dass die Position der IP-Standort der
            Verbindung ist.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: Der Client, der den Fix erstellt hat.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: Version des SDKs, das den Fix erstellt hat.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            `true`, wenn das Gerät meldet, dass die Standortbestimmung von einem
            Mock-Location-Anbieter oder einer Simulationssoftware stammt.
            `null`, wenn die Plattform dies nicht meldet (Browser können dies
            nicht feststellen); `null` ist nicht `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            Nur iOS: `true`, wenn die Positionsbestimmung von einem externen
            Zubehör stammt. Andernfalls `null`.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            Gibt an, ob die Fehlerbehebung durch eine Geräte-Attestierung
            gestützt wird. `unsupported` ist das, was Browser melden, da das Web
            über keinen Attestierungsmechanismus verfügt; es stellt keinen
            Fehler dar.
        country_code:
          type: string
          nullable: true
          description: ISO 3166-1-Alpha-2-Land, in dem sich der Standort befindet.
        region_code:
          type: string
          nullable: true
          description: >-
            ISO 3166-2-Unterteilung, in der sich die Standortbestimmung
            befindet.
        city:
          type: string
          nullable: true
          description: Nächstgelegener bewohnter Ort, ein Label für Prüfer.
        geofence:
          type: object
          description: Ergebnis der Länder- und Gebietsregeln des Schritts.
          properties:
            enabled:
              type: boolean
              description: Gibt an, ob der Schritt eine Länder- oder Regionsregel anwendet.
            result:
              type: string
              nullable: true
              description: >-
                Wo sich die Position relativ zu den Regeln befindet.
                `undetermined` bedeutet, dass der Genauigkeitskreis die Grenze
                überschneidet oder die Position keinem Land zugeordnet werden
                konnte; dies ist kein Nachweis dafür, außerhalb zu sein.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `true`, wenn `geofence.result` gleich `inside` ist, `false` bei
            `outside`, andernfalls `null`.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            Anhand welcher Position das Bereichsergebnis ermittelt wurde: der
            `device`-Standort oder der `ip`-Standort der Verbindung.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: >-
            IDs der konfigurierten zulässigen Bereiche, in denen sich die
            Position befindet.
        blocked_areas:
          type: array
          items:
            type: string
          description: >-
            IDs der konfigurierten gesperrten Bereiche, in denen sich die
            Position befindet.
        position_source:
          type: string
          nullable: true
          description: >-
            Woher der Schritt die Position bezieht, wie konfiguriert: das mit
            dem IP-Standort abgeglichene Gerät, nur das Gerät oder nur der
            IP-Standort.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            Wie die Verbindung und das Gerät beschaffen sind, jeweils `true`,
            `false` oder `null`, wenn die Quelle dies nicht ermitteln kann.
          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: >-
            Entfernung zum IP-Standort der Sitzung nach Abzug beider
            Unschärferadien; `0`, wenn sie sich überschneiden.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            Kombinierter Radius, der subtrahiert wurde: der Radius des
            IP-Standorts plus die Genauigkeit dieser Positionsbestimmung.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            Gibt an, ob `ip_distance_km` innerhalb der für den Schritt
            konfigurierten Entfernung liegt. `null`, wenn eine der beiden Seiten
            unbekannt ist.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            Entfernung zur geokodierten Adresse auf dem Ausweisdokument oder
            Adressnachweis. `null`, wenn keine Adresse vorliegt.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            Gibt an, ob die Reisetoleranz des Schritts die Entfernung von der
            Adresse entschuldigt hat. `null`, wenn die Toleranz deaktiviert ist.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            Beim letzten Versuch: diese Prüfung zuzüglich der vorherigen
            aufeinanderfolgenden Nichtübereinstimmungen derselben Person.
        attempts:
          type: integer
          description: Nummer dieses Versuchs innerhalb des Knotens, beginnend bei 1.
        consent:
          type: object
          nullable: true
          description: >-
            Die Einwilligung, die die Person vor dem System-Prompt erteilt hat,
            erfasst mit der Version des Wortlauts und der Sprache, die ihr
            angezeigt wurde.
          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: >-
                  Die Funktion, die diese Warnung generiert hat. Der Wert
                  identifiziert den Funktionsblock, zu dem die Warnung gehört.
                  Das Warnungs-Array jedes Moduls verwendet typischerweise den
                  zu seinem Modul passenden Wert (z. B. `PHONE` innerhalb von
                  `phone_verifications[].warnings`), aber das obige Enum ist für
                  alle Funktionswarnungen in der Entscheidungs-Payload
                  maßgeblich.
              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: >-
                  Die ID des Workflow-Graph-Knotens, der diese Warnung erzeugt
                  hat
          description: >-
            Warnungen, die dieser Standortverifizierungsschritt ausgelöst hat,
            wobei `feature` auf `GEOLOCATION` gesetzt ist. Warnungscodes
            beginnen mit `LOCATION_`.
    GeolocationAttempt:
      type: object
      description: >-
        Ein Versuch eines Standort-Verifizierungsschritts: dieselben Schlüssel
        wie `geolocation_checks[]` außer `warnings`, plus der Zeitpunkt, an dem
        Didit ihn empfangen hat.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            Workflow-Knoten, der dieses Ergebnis erzeugt hat, damit ein Workflow
            mit zwei Standortverifizierungs-Schritten nachvollziehbar bleibt.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            Status auf Funktionsebene dieses Schritts der Standortverifizierung,
            ermittelt anhand seiner Warnungen. Unabhängig vom `status` der
            Sitzung.
        outcome:
          type: string
          nullable: true
          description: Was bei diesem Versuch passiert ist.
          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: >-
            Was das Betriebssystem oder der Browser erteilt hat. `not_requested`
            bedeutet, dass der Schritt ausschließlich den IP-Standort der
            Verbindung verwendet, sodass die Person niemals nach einer
            Berechtigung gefragt wird.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: >-
            WGS84-Breitengrad der Positionsbestimmung. `null`, wenn keine
            Positionsbestimmung vorliegt.
          format: double
        longitude:
          type: number
          nullable: true
          description: >-
            WGS84-Längengrad der Positionsbestimmung. `null`, wenn keine
            Positionsbestimmung vorliegt.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            Unsicherheitsradius in Metern auf dem in `accuracy_confidence`
            angegebenen Konfidenzniveau.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            Konfidenzniveau, das die Plattform `accuracy_m` zuordnet: `p95`
            (Browser), `p68` (Android) oder `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: >-
            Wann das Gerät die Positionsbestimmung vorgenommen hat, nach seiner
            eigenen Uhr.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: >-
            Sekunden zwischen der Erfassung der Position durch das Gerät und dem
            Empfang bei Didit.
        source:
          type: string
          nullable: true
          description: >-
            Woher die Positionsbestimmung stammt, sofern die Plattform dies
            angibt. `ip` bedeutet, dass die Position der IP-Standort der
            Verbindung ist.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: Der Client, der den Fix erstellt hat.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: Version des SDKs, das den Fix erstellt hat.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            `true`, wenn das Gerät meldet, dass die Standortbestimmung von einem
            Mock-Location-Anbieter oder einer Simulationssoftware stammt.
            `null`, wenn die Plattform dies nicht meldet (Browser können dies
            nicht feststellen); `null` ist nicht `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            Nur iOS: `true`, wenn die Positionsbestimmung von einem externen
            Zubehör stammt. Andernfalls `null`.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            Gibt an, ob die Fehlerbehebung durch eine Geräte-Attestierung
            gestützt wird. `unsupported` ist das, was Browser melden, da das Web
            über keinen Attestierungsmechanismus verfügt; es stellt keinen
            Fehler dar.
        country_code:
          type: string
          nullable: true
          description: ISO 3166-1-Alpha-2-Land, in dem sich der Standort befindet.
        region_code:
          type: string
          nullable: true
          description: >-
            ISO 3166-2-Unterteilung, in der sich die Standortbestimmung
            befindet.
        city:
          type: string
          nullable: true
          description: Nächstgelegener bewohnter Ort, ein Label für Prüfer.
        geofence:
          type: object
          description: Ergebnis der Länder- und Gebietsregeln des Schritts.
          properties:
            enabled:
              type: boolean
              description: Gibt an, ob der Schritt eine Länder- oder Regionsregel anwendet.
            result:
              type: string
              nullable: true
              description: >-
                Wo sich die Position relativ zu den Regeln befindet.
                `undetermined` bedeutet, dass der Genauigkeitskreis die Grenze
                überschneidet oder die Position keinem Land zugeordnet werden
                konnte; dies ist kein Nachweis dafür, außerhalb zu sein.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `true`, wenn `geofence.result` gleich `inside` ist, `false` bei
            `outside`, andernfalls `null`.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            Anhand welcher Position das Bereichsergebnis ermittelt wurde: der
            `device`-Standort oder der `ip`-Standort der Verbindung.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: >-
            IDs der konfigurierten zulässigen Bereiche, in denen sich die
            Position befindet.
        blocked_areas:
          type: array
          items:
            type: string
          description: >-
            IDs der konfigurierten gesperrten Bereiche, in denen sich die
            Position befindet.
        position_source:
          type: string
          nullable: true
          description: >-
            Woher der Schritt die Position bezieht, wie konfiguriert: das mit
            dem IP-Standort abgeglichene Gerät, nur das Gerät oder nur der
            IP-Standort.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            Wie die Verbindung und das Gerät beschaffen sind, jeweils `true`,
            `false` oder `null`, wenn die Quelle dies nicht ermitteln kann.
          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: >-
            Entfernung zum IP-Standort der Sitzung nach Abzug beider
            Unschärferadien; `0`, wenn sie sich überschneiden.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            Kombinierter Radius, der subtrahiert wurde: der Radius des
            IP-Standorts plus die Genauigkeit dieser Positionsbestimmung.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            Gibt an, ob `ip_distance_km` innerhalb der für den Schritt
            konfigurierten Entfernung liegt. `null`, wenn eine der beiden Seiten
            unbekannt ist.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            Entfernung zur geokodierten Adresse auf dem Ausweisdokument oder
            Adressnachweis. `null`, wenn keine Adresse vorliegt.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            Gibt an, ob die Reisetoleranz des Schritts die Entfernung von der
            Adresse entschuldigt hat. `null`, wenn die Toleranz deaktiviert ist.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            Beim letzten Versuch: diese Prüfung zuzüglich der vorherigen
            aufeinanderfolgenden Nichtübereinstimmungen derselben Person.
        attempts:
          type: integer
          description: Nummer dieses Versuchs innerhalb des Knotens, beginnend bei 1.
        consent:
          type: object
          nullable: true
          description: >-
            Die Einwilligung, die die Person vor dem System-Prompt erteilt hat,
            erfasst mit der Version des Wortlauts und der Sprache, die ihr
            angezeigt wurde.
          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: Wann Didit den Versuch empfangen hat.
          format: date-time
        created_at:
          type: string
          format: date-time
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        Was ein Eigentümer hält, im selben Format für jedes Land und jede
        Registerquelle. Null, wenn das Register keine Beteiligung angibt. Eine
        Spanne (z. B. 25-50% bei einem britischen PSC) ist keine Beteiligung:
        `percentage` ist null und die Spanne verbleibt in `ownership_min_shares`
        / `ownership_max_shares`.
      properties:
        share_class:
          type: string
          nullable: true
          description: Aktienklasse oder -typ, wie im Register angegeben.
        number_of_shares:
          type: number
          nullable: true
          description: Anzahl der gehaltenen Anteile.
        currency:
          type: string
          nullable: true
          description: ISO 4217-Währung der untenstehenden Werte.
        nominal_value:
          type: number
          nullable: true
          description: Nennwert pro Aktie.
        total_value:
          type: number
          nullable: true
          description: Gesamtwert der Beteiligung.
        percentage:
          type: number
          nullable: true
          description: Exakter Anteil in Prozent auf vier Dezimalstellen genau.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        Eine vom Register angegebene Adresse, im selben Format für jedes Land
        und jede Registerquelle. Jeder Schlüssel ist immer vorhanden; ein Teil,
        den das Register nicht veröffentlicht, ist null.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            Adresstyp in Kleinbuchstaben: `registered` für den eingetragenen
            Sitz; andere Typen so, wie das Register sie benennt (beispielsweise
            `postal`, `office`). `null`, wenn das Register nicht angibt, worum
            es sich bei der Adresse handelt.
        address:
          type: string
          description: >-
            Die vollständige Adresse in einer Zeile. Bei jeder Adresse stets
            vorhanden.
        street:
          type: string
          nullable: true
          description: Straße und Hausnummer.
        city:
          type: string
          nullable: true
          description: Stadt oder Ortschaft.
        postal_code:
          type: string
          nullable: true
          description: Postleitzahl.
        region:
          type: string
          nullable: true
          description: Region, Bundesstaat oder Provinz.
        country_code:
          type: string
          nullable: true
          description: ISO 3166-1 Alpha-2-Ländercode.
        description:
          type: string
          nullable: true
          description: >-
            Die registerspezifische Bezeichnung für die Adresse, sofern das
            Register eine angibt.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: >-
        Eine Aktivität, unter die das Register das Unternehmen einstuft, im
        selben Format für jedes Land und jede Registerquelle.
      properties:
        code:
          type: string
          nullable: true
          description: Tätigkeitscode, wie er im Register angegeben ist (z. B. `73110`).
        description:
          type: string
          nullable: true
          description: Tätigkeitsbezeichnung, sofern vom Register veröffentlicht.
        scheme:
          type: string
          nullable: true
          description: >-
            Klassifikationssystem, ein Name pro System, unabhängig von der
            meldenden Quelle: `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`; andere nationale Systeme behalten die
            registereigene Bezeichnung bei. Null, wenn das Register das System
            nicht benennt.
        is_primary:
          type: boolean
          description: >-
            True für die Haupttätigkeit des Unternehmens. Genau ein Eintrag ist
            primär, wenn die Liste nicht leer ist.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        Didits normalisierte Registerdetails für das Unternehmen: das Ergebnis
        der Eigentümerstruktur (`ownership_error`, `section_errors`,
        `ubo_resolution`, `lite_enrichment`), die mit update-data vorgenommenen
        Korrekturen und Registerfakten, die kein eigenes Feld haben. Es enthält
        niemals den eigenen Datensatz der Registerquelle. Jeder Schlüssel ist
        optional und nur vorhanden, wenn das Unternehmen einen Wert dafür hat;
        neue Schlüssel können hinzugefügt werden. Lesen Sie die kanonischen
        Felder (`addresses`, `industries`, `ownership`,
        `beneficial_owners[].shareholding`) für alles, was diese abdecken.
      properties:
        company_name:
          type: string
          description: Unternehmensname wie in der Console korrigiert.
        registration_number:
          type: string
          description: Registernummer laut Register oder Console-Korrektur.
        country_code:
          type: string
          description: Land der Registrierung gemäß Register oder Korrektur in der Konsole.
        region:
          type: string
          description: Region oder Bundesstaat der Registrierung.
        incorporation_date:
          type: string
          description: Gründungsdatum (ISO 8601).
        registration_date:
          type: string
          description: >-
            Eintragungsdatum (ISO 8601), wenn das Register dieses getrennt vom
            Gründungsdatum ausweist.
        dissolution_date:
          type: string
          description: >-
            Auflösungsdatum (ISO 8601), sofern im Unternehmensregister
            angegeben.
        tax_number:
          type: string
          description: Steueridentifikationsnummer.
        vat_number:
          type: string
          description: Umsatzsteuer-Identifikationsnummer.
        legal_address:
          type: string
          description: Rechtliche Adresse, wie sie in der Konsole korrigiert wurde.
        registered_address:
          type: string
          description: Eingetragene Adresse laut Registerangabe.
        company_type:
          type: string
          description: Rechtsform.
        registry_status:
          type: string
          description: Unternehmensstatus im Unternehmensregister.
        verification_status:
          type: string
          description: Verifizierungsstatus.
        alternative_names:
          type: string
          description: >-
            Andere Namen, unter denen das Unternehmen firmiert oder firmiert
            hat.
        nature_of_business:
          type: string
          description: Tätigkeitsbeschreibung.
        registered_capital:
          type: string
          description: Eingetragenes Kapital wie abgedruckt.
        registered_capital_amount:
          type: string
          description: Eingetragenes Stammkapital als Dezimal-String.
        registered_capital_currency:
          type: string
          description: Währung des eingetragenen Stammkapitals (ISO 4217).
        website:
          type: string
          description: Website.
        email:
          type: string
          description: Kontakt-E-Mail.
        phone:
          type: string
          description: Telefonnummer des Kontakts.
        legal_entity_identifier:
          type: string
          description: Legal Entity Identifier (LEI).
        location_of_registration:
          type: string
          description: Registrierungsort.
        control_scheme:
          type: string
          description: Governance-Schema, sofern vom Register bereitgestellt.
        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: >-
            Warum eine angeforderte Eigentümerstruktur-Stufe nicht geliefert
            wurde, in denselben Codes wie `ownership.unavailable_reason`.
            `no_owners_on_record` (das Unternehmensregister hat geantwortet und
            nennt keine Eigentümer) und `ownership_section_unavailable` (das
            Unternehmensregister hat den Abschnitt zur Eigentümerstruktur nicht
            zurückgegeben) sind unterschiedliche Ergebnisse.
        section_errors:
          type: object
          description: >-
            Abschnitte, die das Register nicht zurückgegeben hat,
            aufgeschlüsselt nach Abschnitt (`officers`, `shareholders`,
            `group_structure`). Ein hier aufgeführter Abschnitt wurde nie
            übermittelt: Eine leere Liste daneben sagt nichts über das
            Unternehmen aus.
          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: >-
            Die registerspezifischen Felder für das Unternehmen, mit den
            Bezeichnungen des Registers als Schlüssel, als einfache Werte
            (Legacy-Datensätze). Es sind nur Felder enthalten, die als
            Register-Fakten geprüft wurden.
        registry_sources:
          type: array
          description: >-
            Die offiziellen Register, aus denen der Datensatz gelesen wurde
            (Legacy-Datensätze). Andere Quellen werden nicht genannt.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: >-
            Namen, unter denen das Unternehmen zuvor registriert war
            (historische Datensätze).
        parent_companies:
          type: array
          items:
            type: string
          description: Muttergesellschaften, die das Register nennt (Altdaten).
        documents_available:
          type: integer
          description: >-
            Wie viele Einreichungen das Register für das Unternehmen anbietet
            (Altdaten).
    KYBRegistryOwnership:
      type: object
      description: >-
        Das Ergebnis der Eigentümerstruktur-Stufe (Gesellschafter / UBO), in
        derselben Form für jedes Land und jede Registerquelle.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            `delivered`, wenn das Register die Eigentümerstruktur veröffentlicht
            hat; `not_held`, wenn das Unternehmensregister geantwortet hat und
            das Unternehmen überhaupt nicht führt (siehe `unavailable_reason`);
            `unavailable`, wenn es die Daten zur Eigentümerstruktur aus einem
            anderen Grund nicht bereitgestellt hat (siehe `unavailable_reason`);
            `pending`, während das Register diese noch abruft; `not_requested`
            für die Stufe Basic.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: Die vom Workflow bestellte Stufe.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            Die vom Register gelieferte (und abgerechnete) Stufe. Eine
            UBO-Anfrage, die nur mit direkten Gesellschaftern beantwortet wird,
            lautet `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: >-
            Warum eine angeforderte Eigentümerstruktur-Stufe nicht geliefert
            wurde. Null, es sei denn, `status` ist `unavailable` oder `pending`.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            True, wenn die angegebenen Anteile der direkten Gesellschafter in
            Summe 100% ergeben (innerhalb eines Prozentpunkts Rundungstoleranz);
            false, wenn dies nicht der Fall ist; null, wenn die
            Eigentümerstruktur nicht übermittelt wurde oder ein Anteil nicht
            angegeben ist.
        unresolved:
          type: array
          description: >-
            Teile der Eigentümerstruktur, die das Register nicht auflösen
            konnte, beispielsweise keine eingetragene Konzernstruktur über den
            direkten Eigentümern.
          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: >-
        Die vom Register nachgewiesene Cap Table zum Zeitpunkt der
        Bereitstellung der Eigentümerstruktur-Stufe: direkte `shareholders` und
        `beneficial_owners`. Null, wenn das Register keine Eigentümerstruktur
        nachgewiesen hat. Sie enthält niemals die eigenen Zeilen der
        Registerquelle; lesen Sie `company.beneficial_owners` und
        `company.ownership` für den aktuellen Datensatz.
      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: >-
        Die neueste Investigator-Prüfung des Elements, oder null, wenn es nie
        eine hatte. Wird von der V3-Sitzungs- und Business-Sitzungsentscheidung
        übermittelt (und somit von `status.updated`-Webhooks).
      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: >-
            Der Investigator hat eigenständig entschieden, selbst wenn die
            Entscheidung später überschrieben wurde.
        decided_by:
          type: string
          enum:
            - investigator
            - member
          nullable: true
        decision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/InvestigatorDecision'
          type: object
    BiometricRetention:
      type: object
      description: Wann die Live-Biometriedaten dieser Sitzung gelöscht werden.
      required:
        - jurisdictions
        - deletes_at
      properties:
        jurisdictions:
          type: array
          items:
            type: string
          description: >-
            Codes der US-Bundesstaaten, deren biometrische Regeln eine
            Löschfrist für diese Person festlegen (`US`, wenn der Bundesstaat
            unbekannt ist). Leer, wenn keine zutreffen.
        deletes_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Das Datum, an dem die Live-Biometriedaten (Gesichtsbilder und
            biometrische Templates) dieser Sitzung gelöscht werden, basierend
            auf der Aufbewahrungseinstellung Ihrer Anwendung und, sofern
            zutreffend, der gesetzlichen Frist der Gerichtsbarkeit der Person.
            `null`, wenn noch kein Datum gilt.
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Plattform-Identifikator.
          example: whatsapp
        category:
          type: string
          description: >-
            Plattformkategorie, z. B. MESSAGING, SOCIAL_MEDIA, ECOMMERCE,
            PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` für weltweite Plattformen, `local` für regionsspezifische
            Plattformen.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: >-
            Plattformen in dieser Kategorie, bei denen eine Registrierung
            bestätigt ist.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Anteil der geprüften Plattformen der Kategorie mit einer
            Registrierung, 0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Profilname, sofern die Plattform diesen bereitstellt.
        photo:
          type: string
          nullable: true
          description: Profilfoto-URL, sofern die Plattform diese bereitstellt.
        about:
          type: string
          nullable: true
          description: Profil-Info-/Bio-Text, sofern die Plattform diesen bereitstellt.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Profilsichtbarkeit, sofern die Plattform diese bereitstellt.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Gibt an, ob das Profil ein Geschäftskonto ist, sofern die Plattform
            dies bereitstellt.
    SignatureFieldResult:
      type: object
      description: >-
        Ein Feld eines signierten Dokuments mit seinem Wert auf der Kopie dieses
        Unterzeichners. Siehe
        [Felder](/de/core-technology/electronic-signature/report-electronic-signature#felder).
      properties:
        key:
          type: string
          description: Der Schlüssel des Felds, wie in `sign.field_values` verwendet.
        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: >-
            Seitenzahl, beginnend bei 1. Bei einem Word-Dokument eine Seite des
            konvertierten PDFs.
        x:
          type: number
          description: Linke Kante als Bruchteil der Seitenbreite.
        'y':
          type: number
          description: Oberer Rand als Bruchteil der Seitenhöhe.
        width:
          type: number
          description: Breite als Bruchteil der Seitenbreite.
        height:
          type: number
          description: Höhe als Bruchteil der Seitenhöhe.
        required:
          type: boolean
        value:
          nullable: true
          description: >-
            Ein String für `text`, `email`, `full_name`, `date_signed` und
            `data`, ein boolescher Wert für eine `checkbox` und `true` für eine
            gesetzte Signatur oder gesetzte Initialen. `null`, wenn leer.
        display_value:
          type: string
          nullable: true
          description: >-
            Der Wert, wie er auf der Seite eingetragen ist: Datumsangaben im
            `date_format` des Felds, `Yes` oder `No` für ein Kontrollkästchen,
            `Signed` für eine Signatur oder Initialen.
        value_source:
          type: string
          nullable: true
          enum:
            - signer
            - identity
            - contact
            - company
            - session
            - metadata
            - api
            - signing_time
            - null
          description: >-
            Woher der Wert stammt: `signer` (vom Unterzeichner eingegeben,
            angehakt oder angewendet), `identity` (der verifizierte Ausweis),
            `contact` (die verifizierte E-Mail-Adresse oder Telefonnummer),
            `company` (das verifizierte Unternehmen), `session` (`vendor_data`),
            `metadata`, `api` (`sign.field_values`) oder `signing_time` (das
            Unterzeichnungsdatum).
        filled_at:
          type: string
          format: date-time
          nullable: true
        image_url:
          type: string
          nullable: true
          description: >-
            Nur Signatur und Initialen: der Pfad des angewendeten Bildes. Siehe
            [Signaturbild
            herunterladen](/de/sessions-api/electronic-signature/download-field-image).
        value_unavailable_reason:
          type: string
          nullable: true
          enum:
            - source_empty
            - null
          description: >-
            `source_empty`, wenn ein vorausgefülltes Feld in der Sitzung keinen
            Wert hatte und `signature_field_data_missing_action` dem
            Unterzeichner das Signieren trotzdem erlaubt hat.
    KYBRegistrySectionError:
      type: object
      description: Ein Abschnitt, den das Unternehmensregister nicht zurückgegeben hat.
      properties:
        status_code:
          type: integer
          nullable: true
          description: Der Status, den das Register für den Abschnitt zurückgemeldet hat.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: >-
        Wie die UBO-Stufe die Eigentümerstruktur oberhalb des Unternehmens
        durchlaufen hat.
      properties:
        parent_chain:
          type: array
          description: >-
            Konzernmütter von der obersten Muttergesellschaft bis hin zum
            Unternehmen.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: >-
            Unternehmen direkt unterhalb des Unternehmens in seiner
            Unternehmensgruppe.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: >-
            Teile der Kette, die das Register nicht auflösen konnte (dieselben
            Einträge wie `ownership.unresolved`).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  Der Grund, zum Beispiel `no_group_structure_on_record`,
                  `selected_company_not_in_group_structure` oder
                  `section_error`.
              section:
                type: string
                nullable: true
                description: Der betroffene Abschnitt, zum Beispiel `group_structure`.
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: >-
        Leere Lite-Profilfelder, die eine andere Registerquelle des Landes
        ausgefüllt hat. Die Quelle wird nicht benannt.
      properties:
        fields:
          type: array
          items:
            type: string
          description: Die Unternehmensfelder, die ausgefüllt wurden.
        people_added:
          type: integer
          description: Wie viele Geschäftsführer oder Eigentümer hinzugefügt wurden.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: >-
        Ein offizielles Register, aus dem der Datensatz ausgelesen wurde. Es
        werden nur offizielle staatliche Register, Regulierungsbehörden und das
        offizielle Identifikationssystem benannt; jede andere Quelle wird
        weggelassen.
      properties:
        name:
          type: string
          description: Name des Registers, zum Beispiel `UK Companies House`.
        source_type:
          type: string
          enum:
            - official
          description: Immer `official`.
      required:
        - name
        - source_type
    KYBOwnershipStructureOwner:
      type: object
      description: >-
        Ein Eigentümer des Eigentümerstruktur-Snapshots: dieselbe
        Registeridentität und Beteiligung wie bei `company.beneficial_owners[]`
        sowie dessen kanonische `shareholding`.
      properties:
        name:
          type: string
          nullable: true
          description: Name des Eigentümers gemäß Registerangabe.
        first_name:
          type: string
          nullable: true
          description: >-
            Vorname, bei einer natürlichen Person, sofern vom Register
            angegeben.
        last_name:
          type: string
          nullable: true
          description: Nachname einer natürlichen Person, sofern vom Register angegeben.
        date_of_birth:
          type: string
          nullable: true
          description: Geburtsdatum (ISO 8601), sofern vom Register veröffentlicht.
        country_of_birth:
          type: string
          nullable: true
          description: Geburtsland, sofern vom Register veröffentlicht.
        company_name:
          type: string
          nullable: true
          description: Unternehmensname für einen Unternehmenseigentümer.
        registration_number:
          type: string
          nullable: true
          description: Registernummer für einen Unternehmenseigentümer.
        entity_type:
          type: string
          nullable: true
          enum:
            - person
            - company
            - null
          description: >-
            Gibt an, ob der Eigentümer eine natürliche Person oder ein
            Unternehmen ist.
        nationality:
          type: string
          nullable: true
          description: Staatsangehörigkeit, sofern vom Register angegeben.
        designation:
          type: string
          nullable: true
          description: Der Titel oder die Rolle des Eigentümers, wie im Register angegeben.
        roles:
          type: array
          items:
            type: string
          description: >-
            `shareholder` für einen direkten Anteilseigner, `ubo` für einen
            wirtschaftlich Berechtigten.
        ownership_min_shares:
          type: string
          nullable: true
          description: >-
            Untergrenze der Beteiligung in Prozent (bei einer exakten
            Beteiligung gleich der Obergrenze).
        ownership_max_shares:
          type: string
          nullable: true
          description: Obere Grenze der Beteiligung in Prozent.
        voting_min_shares:
          type: string
          nullable: true
          description: Untergrenze der Stimmrechte in Prozent.
        voting_max_shares:
          type: string
          nullable: true
          description: Obere Grenze der Stimmrechte in Prozent.
        appointment_date:
          type: string
          nullable: true
          description: Datum, an dem die Beteiligung oder Bestellung begann (ISO 8601).
        is_active:
          type: boolean
          nullable: true
          description: False für einen früheren Eigentümer.
        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: >-
        Wie das Element die Investigator-Warteschlange verlassen hat.
        `decided_by`, `original_outcome` und `overrides` werden von den
        Endpoints zum Akzeptieren und Überschreiben sowie dem Bericht
        zurückgegeben; der `investigator`-Block einer Sitzungsentscheidung
        enthält die anderen Felder.
      properties:
        outcome:
          type: string
          enum:
            - accepted
            - edited
            - overridden
            - decided_elsewhere
            - automated
          description: >-
            `accepted` oder `edited` hat die Empfehlung übernommen (`edited` mit
            einem neu formulierten Text), `overridden` hat eine andere Aktion
            ausgeführt, `decided_elsewhere` ist eine Entscheidung, die außerhalb
            des Investigators getroffen wurde, während der Bericht geöffnet war,
            `automated` ist eine Entscheidung, die der Investigator
            selbstständig getroffen hat.
        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: Der Status des Elements nach der Entscheidung.
        agreed:
          type: boolean
          description: Gibt an, ob die Entscheidung mit der Empfehlung übereinstimmte.
          nullable: true
        decided_at:
          type: string
          format: date-time
        billed:
          type: boolean
          description: Die Prüfung wurde abgerechnet.
        decided_by:
          type: string
          enum:
            - investigator
            - member
        original_outcome:
          type: object
          description: >-
            Die Entscheidung, die der Investigator eigenständig getroffen hat,
            unverändert durch spätere Überschreibungen. Null bei einer vom Team
            getroffenen Entscheidung.
          properties:
            action:
              type: string
            final_status:
              type: string
            decided_at:
              type: string
              format: date-time
          nullable: true
        overrides:
          type: array
          description: >-
            Jede Überschreibung einer Entscheidung, die der Investigator
            eigenständig getroffen hat, die älteste zuerst.
          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: Ein Unternehmen der Unternehmensgruppe anhand seiner Registeridentität.
      properties:
        name:
          type: string
          nullable: true
          description: Unternehmensname.
        country_code:
          type: string
          nullable: true
          description: Registrierungsland.
        registration_number:
          type: string
          nullable: true
          description: Registernummer.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Der API-Schlüssel Ihrer Anwendung, aus Entwickler -> API-Schlüssel in
        der Business Console. Der Primärschlüssel hat Vollzugriff. Ein benannter
        Schlüssel kann im Geltungsbereich eingeschränkt werden: keine, Lese-
        oder Schreibberechtigung pro Ressource, beschränkt auf bestimmte
        Workflows oder genehmigte Sitzungen, auf eine Liste von IP-Adressen und
        auf ein Ablaufdatum. 401 bedeutet, dass der Schlüssel falsch, widerrufen
        oder abgelaufen ist; 403 bedeutet, dass kein Schlüssel gesendet wurde,
        der Schlüssel keinen Zugriff auf diese Ressource oder Aktion hat oder
        die Anfrage von einer Adresse außerhalb seiner IP-Liste stammte; 404 bei
        einer Sitzungsroute bedeutet, dass die Sitzung außerhalb der Workflows
        oder Status des Schlüssels liegt. Ein Schlüssel ohne Medienzugriff
        erhält Bild-, Video- und PDF-URLs als null, und ein Schlüssel ohne
        Schreibberechtigung für Sitzungen erhält Sitzungslinks und Token als
        null. Siehe https://docs.didit.me/console/api-keys.

````

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