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

# Importar sessão partilhada API: KYC reutilizável e KYB

> Importe sessões KYC ou KYB partilhadas na Didit com POST /v3/session/import-shared/. Reutilize a identidade, sem nova verificação.



Prompt para importar sessão partilhada
        Copiar o prompt para a área de transferência



      
      

\<pre>

\`Import a verification session shared by a partner application (Reusable KYC / KYB).

Endpoint:
POST https://verification.didit.me/v3/session/import-shared/

Authentication:
Use the x-api-key header with the receiving application's Didit API key. Privilege: write:sessions.

Request body:
\- share_token (string, required) — JWT minted by the partner via POST /v3/session/{id}/share/. Didit decodes it, reads the embedded session_kind, and clones the matching kind.
\- workflow_id (string, UUID, required) — Workflow in YOUR application to attach the imported session to. KYC token → pass a KYC workflow_id. KYB token → pass a KYB workflow_id.
\- vendor_data (string, optional) — Your stable identifier for the entity. Auto-creates a User or Business entity if it does not already exist.
\- trust_review (boolean, optional, default false) — false → imported session lands in "In Review" so your team can re-review. true → imported session preserves the original status (e.g. "Approved"). Use true only when you fully trust the sharing partner's decision.

curl example:
curl -X POST https://verification.didit.me/v3/session/import-shared/ \
-H "x-api-key: <RECEIVING_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"share_token": "<JWT_FROM_PARTNER>",
"workflow_id": "<YOUR_WORKFLOW_ID>",
"vendor_data": "partner-user-42",
"trust_review": false
}'

Response (201 Created):
\- session_id (UUID) — NEW UUID minted in your application.
\- session_kind ("user" | "business") — same as the original.
\- session_number — fresh sequence in your application.
\- status — original status (if trust_review=true) or "In Review" (if trust_review=false).
\- shared_from_session — pointer to the original session in the source application.
\- vendor_data, workflow_id — what you sent.
\- All cloned feature arrays: KYC tokens clone id_verifications + liveness_checks + face_matches + face + AML + location + POA + phone + email + database_validations + logs; KYB tokens clone registry_checks + key_people_checks + document_verifications + AML + phone + email + location + questionnaire + logs.

Backward compatibility:
Tokens minted before the unified-sharing rollout (no session_kind field) default to "user" when decoded.

Idempotency:
Importing the same share_token twice into the same application is rejected with 403, for user and business sessions alike.

Failure modes:
\- 400 - { "share_token": ["Invalid share token."] } when the token is malformed or was not issued by Didit.
\- 400 - { "share_token": ["Share token has expired."] } when its exp has passed.
\- 400 - { "share_token": ["This token is not valid for this application."] } when the token was issued for another application.
\- 400 - { "share_token": ["Original session does not exist."] } when the shared session was deleted.
\- 403 - { "detail": "This session has already been shared with your application." } when the session was already imported into this application.
\- 404 - { "detail": "Workflow does not exist for this application." } when workflow_id is not a workflow of your application.

When to call:
\- Cross-organization Reusable KYC (bank → fintech, marketplace → payment provider, etc.).
\- Promoting a verified user from your sandbox application to your production application.
\- Group-company sharing across sibling applications.

After import:
\- The new session works like any other session — fetch with GET /v3/session/{session_id}/decision/ (see /sessions-api/retrieve-session) and react to status / data webhooks.

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

\</pre>



      
      

Colar em

## Suporte a KYC e KYBA Didit descodifica o token de partilha, lê o `session_kind` incluído e cria uma cópia do tipo de sessão correspondente:- `session_kind: "user"`: copia a sessão do utilizador e os respetivos registos de identidade, face, prova de vida, correspondência facial, AML, localização, POA, telefone, e-mail, validação de base de dados e registos de auditoria.
- `session_kind: "business"`: copia a sessão da empresa e os respetivos registos de verificação no registo de empresas, pessoas-chave, documentos, triagens AML, telefone, e-mail, localização, questionário e registos de auditoria.Se o token for anterior ao lançamento unificado da partilha e não tiver o campo `session_kind`, a Didit assume `"user"` por compatibilidade com versões anteriores.## O que é criado- Uma **nova sessão** do mesmo tipo na sua aplicação, com um `session_id`, `session_number` e `session_url` novos.
- O campo `shared_from_session` da nova sessão aponta para a sessão original na aplicação de origem.
- O estado da nova sessão é o estado original (`trust_review: true`) ou `IN_REVIEW` (`trust_review: false`).
- Se não existir, é criada automaticamente uma nova entidade (Utilizador ou Empresa) para o `vendor_data`.## Exemplos> [tab] Importar uma sessão de Verificação de utilizadores (KYC)
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/session/import-shared/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "share_token": "eyJhbGciOiJIUzI1NiJ9...",
>     "workflow_id": "your-kyc-workflow-id",
>     "vendor_data": "partner-user-42",
>     "trust_review": false
>   }'
> ```
>
> **Resposta (201 Criada):**
>
> ```json theme={null}
> {
>   "session_id": "new-uuid",
>   "session_kind": "user",
>   "shared_from_session": "original-uuid",
>   "status": "In Review",
>   "vendor_data": "partner-user-42",
>   "id_verifications": [...],
>   "liveness_checks": [...],
>   "...": "..."
> }
> ```> [tab] Importar uma sessão de Verificação de empresas (KYB)
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/session/import-shared/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "share_token": "eyJhbGciOiJIUzI1NiJ9...",
>     "workflow_id": "your-kyb-workflow-id",
>     "vendor_data": "partner-biz-acme",
>     "trust_review": true
>   }'
> ```
>
> **Resposta (201 Criada):**
>
> ```json theme={null}
> {
>   "session_id": "new-uuid",
>   "session_kind": "business",
>   "shared_from_session": "original-uuid",
>   "status": "Approved",
>   "vendor_data": "partner-biz-acme",
>   "registry_checks": [...],
>   "key_people_checks": [...],
>   "document_verifications": [...],
>   "...": "..."
> }
> ```## Parâmetro `trust_review`| Valor | Efeito |
| - | - |
| `true` | A sessão importada mantém o estado original (por exemplo, `APPROVED`). Use esta opção quando confia totalmente na decisão do parceiro que partilhou a sessão. |
| `false` | A sessão importada fica em `IN_REVIEW`, para que a sua equipa a possa rever antes de agir. Predefinição segura para parceiros externos. |## Erros| Estado | Motivo |
| - | - |
| `400` | O `share_token` é inválido, expirado, foi emitido para outra aplicação ou aponta para uma sessão que foi eliminada. A mensagem está na chave `share_token`. |
| `403` | A sessão já foi importada para a sua aplicação. |
| `404` | O `workflow_id` não é um fluxo da sua aplicação. |## IdempotênciaImportar o mesmo `share_token` duas vezes para a mesma aplicação é recusado com `403`, tanto para sessões de utilizadores como de empresas.## Relacionados- [Partilhar sessão](https://docs.didit.me/pt/sessions-api/share-session/share.md)
- [Guia de KYC reutilizável](https://docs.didit.me/pt/core-technology/reusable-kyc/share-kyc-via-api.md)
- [Visão geral das sessões](https://docs.didit.me/pt/sessions-api/overview.md)


## OpenAPI

````yaml pt/openapi-25.json POST /v3/session/import-shared/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/import-shared/:
    post:
      tags:
        - Sessions
      summary: >-
        Resgatar um token de partilha para clonar uma sessão de verificação para
        a sua aplicação
      description: >-
        Resgatar um token de partilha para clonar uma sessão de KYC ou KYB para
        a aplicação chamadora com um novo `session_id`. Não idempotente — um
        token é resgatado uma única vez por destinatário.
      operationId: post_v3_session_import_shared
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - share_token
                - trust_review
                - workflow_id
              properties:
                share_token:
                  type: string
                  description: >-
                    Token JWT de partilha emitido por [`POST
                    /v3/session/{sessionId}/share/`](/sessions-api/share-session).
                  example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                trust_review:
                  type: boolean
                  description: >-
                    Se `true`, a sessão clonada mantém o `status` final da
                    origem. Se `false`, é forçada para `In Review`.
                  example: false
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    UUID de um fluxo na aplicação que fez a chamada. Os IDs
                    entre aplicações são rejeitados com `404`.
                  example: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                vendor_data:
                  type: string
                  nullable: true
                  description: >-
                    Substituição opcional para o `vendor_data` da sessão
                    clonada.
                  example: user-1
            example:
              share_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
              trust_review: false
              workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
              vendor_data: user-1
      responses:
        '201':
          description: >-
            Sessão clonada. O corpo é o payload de decisão V3 para ambos os
            tipos, diferenciados por `session_kind`: `"user"` (KYC) com blocos
            de funcionalidades baseados em listas, tais como `id_verifications`,
            `liveness_checks`, `aml_screenings`; `"business"` (KYB) com blocos
            como `registry_checks` e `key_people_checks`. Ambos incluem
            `shared_from_session` — o `session_id` da sessão original na
            aplicação de origem. Com `trust_review: false`, o `status` da sessão
            clonada é forçado para `In Review`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionDecision'
              examples:
                User session imported:
                  summary: >-
                    Sessão KYC clonada (truncada — payload completo de decisão
                    V3 na realidade)
                  value:
                    session_id: 11111111-2222-3333-4444-555555555555
                    session_kind: user
                    shared_from_session: 99999999-8888-7777-6666-555555555555
                    session_number: 43762
                    session_url: null
                    status: In Review
                    workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                    vendor_data: user-1
                    created_at: '2026-05-17T08:42:11Z'
                    expires_at: '2026-05-24T08:42:11Z'
                Business session imported:
                  summary: >-
                    Sessão KYB clonada (truncada — payload completo de decisão
                    KYB V3 na realidade)
                  value:
                    session_id: 22222222-3333-4444-5555-666666666666
                    session_kind: business
                    shared_from_session: 88888888-7777-6666-5555-444444444444
                    session_number: 982
                    session_url: null
                    status: Approved
                    workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                    vendor_data: company-1
        '400':
          description: >-
            Erro de validação (token inválido, expirado, destino incorreto ou
            que referencia uma sessão que já não existe).
          content:
            application/json:
              examples:
                Invalid Share Token:
                  summary: JWT inválido
                  value:
                    share_token:
                      - Invalid share token.
                Expired Share Token:
                  summary: Token expirado (`exp` ultrapassado)
                  value:
                    share_token:
                      - Share token has expired.
                Wrong audience:
                  summary: Token não associado a esta aplicação
                  value:
                    share_token:
                      - This token is not valid for this application.
                Original missing:
                  summary: A sessão de origem foi eliminada
                  value:
                    share_token:
                      - Original session does not exist.
        '403':
          description: >-
            Chave de API em falta (uma chave incorreta, revogada ou expirada
            recebe `401`), ou esta sessão de origem já foi importada para a
            aplicação chamadora (um resgate por recetor).
          content:
            application/json:
              examples:
                Forbidden:
                  summary: Proibido
                  value:
                    detail: You do not have permission to perform this action.
                Already imported:
                  summary: Origem já importada uma vez
                  value:
                    detail: >-
                      This session has already been shared with your
                      application.
        '404':
          description: '`workflow_id` não pertence à aplicação que efetuou a chamada.'
          content:
            application/json:
              examples:
                Workflow not found:
                  summary: Fluxo desconhecido
                  value:
                    detail: Workflow does not exist for this application.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST \
              https://verification.didit.me/v3/session/import-shared/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "share_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                "trust_review": false,
                "workflow_id": "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                "vendor_data": "user-1"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.import_shared(
                share_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                trust_review=False,
                workflow_id="9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                vendor_data="user-1",
            )
            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.importShared({
              share_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
              trust_review: false,
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              vendor_data: "user-1",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ImportShared(ctx, didit.SessionsImportSharedParams{\n\tShareToken:  \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n\tTrustReview: false,\n\tWorkflowID:  \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n\tVendorData:  didit.String(\"user-1\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.SessionsImportSharedParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().importShared(SessionsImportSharedParams.builder()
                    .shareToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...")
                    .trustReview(false)
                    .workflowId("9f9b1234-aaaa-bbbb-cccc-1234567890ab")
                    .vendorData("user-1")
                    .build());
            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->importShared([
                'share_token' => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
                'trust_review' => false,
                'workflow_id' => '9f9b1234-aaaa-bbbb-cccc-1234567890ab',
                'vendor_data' => 'user-1',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.sessions.import_shared(
              share_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
              trust_review: false,
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              vendor_data: "user-1"
            )
            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.ImportSharedAsync(new
            SessionsImportSharedParams

            {
                ShareToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                TrustReview = false,
                WorkflowId = "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                VendorData = "user-1",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDecision:
      type: object
      properties:
        session_id:
          type: string
          format: uuid
          description: O identificador único da sessão.
        session_kind:
          type: string
          enum:
            - user
            - business
          description: >-
            Discriminador que indica se esta é uma sessão de Verificação de
            utilizadores (KYC) ou de Verificação de empresas (KYB). Quando for
            `user`, aplicam-se os arrays de funcionalidades de KYC
            (`id_verifications`, `nfc_verifications`, `liveness_checks`,
            `face_matches`, `poa_verifications`, `document_ai_documents`,
            `database_validations`, ...) e os arrays da empresa estão ausentes.
            Quando for `business`, o payload inclui `registry_checks`,
            `document_verifications`, `key_people_checks`, além dos arrays
            partilhados (`aml_screenings`, `phone_verifications`,
            `email_verifications`, `ip_analyses`, `questionnaire_responses`).
            **Omitido quando `include=events` é transmitido** — a estrutura de
            eventos apenas existe para sessões de utilizador, pelo que o
            discriminador é removido nessa variante.
        shared_from_session:
          type: string
          format: uuid
          nullable: true
          description: >-
            Para uma sessão clonada com `POST /v3/session/import-shared/`: o
            `session_id` da sessão original na aplicação de origem. `null` para
            qualquer outra sessão. Omitido quando `include=events` é
            especificado.
        shared_from_session_number:
          type: integer
          nullable: true
          description: >-
            `session_number` da sessão de origem quando esta sessão foi
            importada de outra aplicação da sua organização. Caso contrário,
            `null`.
        session_number:
          type: integer
          description: O número da sessão.
          nullable: true
        session_url:
          type: string
          format: uri
          description: O URL da sessão.
          nullable: true
        status:
          type: string
          enum:
            - Not Started
            - In Progress
            - Awaiting User
            - In Review
            - Approved
            - Declined
            - Resubmitted
            - Expired
            - Kyc Expired
            - Abandoned
          description: >-
            Estado global do ciclo de vida da sessão — o resultado agregado do
            fluxo. Os valores finais são `Approved`, `Declined`, `In Review`,
            `Expired`, `Kyc Expired` e `Abandoned`; `Not Started`, `In
            Progress`, `Awaiting User` e `Resubmitted` indicam que a sessão
            ainda está a avançar no fluxo.
        status_override:
          type: object
          nullable: true
          description: >-
            Presente quando um revisor definiu `status` manualmente. `null`
            quando o estado é automático. Utilize-o para distinguir uma
            aprovação manual de uma automática.
          properties:
            overridden_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: O estado determinado pelas próprias verificações da plataforma.
        decision_trace:
          type: object
          description: >-
            Como o estado foi alcançado: quem o definiu e que avisos o
            originaram.
          properties:
            status:
              type: string
              description: O estado da sessão.
            decided_by:
              type: string
              nullable: true
              enum:
                - manual
                - automatic
                - investigator
                - null
              description: >-
                Quem definiu o estado. `null` enquanto a sessão não estiver
                decidida.
            decided_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: >-
                O que as próprias verificações da plataforma concluem, o que
                difere de `status` após uma decisão manual.
            terminal_node_id:
              type: string
              nullable: true
              description: >-
                O nó de estado do fluxo que terminou a sessão, quando um deles
                tiver terminado a sessão.
            actor:
              type: object
              nullable: true
              description: O revisor responsável por uma decisão manual.
              properties:
                user:
                  type: string
                  nullable: true
                actor_type:
                  type: string
                  nullable: true
            warning_counts:
              type: object
              description: >-
                Avisos por `log_type` (`error`, `warning`, `information`) e
                `total`.
              additionalProperties:
                type: integer
            status_warnings:
              type: array
              description: Os avisos que definem o estado `Declined` ou `In Review`.
              items:
                type: object
                properties:
                  risk:
                    type: string
                  feature:
                    type: string
                    nullable: true
                  node_id:
                    type: string
                    nullable: true
                  log_type:
                    type: string
                    nullable: true
                  check_status:
                    type: string
                    nullable: true
                  source:
                    type: string
                    description: >-
                      A lista do payload de onde o aviso teve origem, por
                      exemplo `id_verifications`.
                  short_description:
                    type: string
                    nullable: true
        linked_records:
          type: object
          nullable: true
          description: >-
            Um resumo de outros registos associados à sessão. `null` quando não
            há nada a apresentar e para fluxos que declarem um padrão de
            garantia de idade.
          properties:
            same_face:
              type: object
              nullable: true
              description: >-
                Outras pessoas cuja face coincidiu com uma das pesquisas faciais
                desta sessão.
              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: >-
            Identificador estável do grupo de fluxos que gerou esta sessão. Os
            fluxos são versionados — este valor identifica o fluxo em si, e não
            a versão específica.
          nullable: true
        features:
          type: array
          items:
            type: string
            description: A funcionalidade da sessão.
          description: >-
            Lista de funcionalidades de verificação configuradas para esta
            sessão, como nomes de apresentação: `ID_VERIFICATION`, `NFC`,
            `LIVENESS`, `FACE_MATCH`, `POA`, `PHONE`, `EMAIL_VERIFICATION`,
            `AML`, `IP_ANALYSIS`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`,
            `AGE_ESTIMATION`, `FACE_SEARCH`, `GEOLOCATION` (verificação de
            localização) (as sessões de Verificação de empresas (KYB) utilizam o
            conjunto de funcionalidades de KYB: `KYB_REGISTRY`, `KYB_DOCUMENTS`,
            `KYB_KEY_PEOPLE`, `AML`, `PHONE`, `EMAIL_VERIFICATION`,
            `IP_ANALYSIS`, `QUESTIONNAIRE`). Com `include=events`, cada entrada
            torna-se um objeto `{feature, node_id}` em vez de uma string
            simples, e a funcionalidade de e-mail é renomeada: aparece como
            `EMAIL` no modo de eventos em vez do `EMAIL_VERIFICATION` aqui
            utilizado.
        vendor_data:
          type: string
          description: Os dados de fornecedor da sessão.
          nullable: true
        metadata:
          type: object
          description: Os metadados da sessão.
          nullable: true
        expected_details:
          type: object
          description: >-
            Dados esperados fornecidos na criação da sessão — utilizados para
            validação cruzada com os dados extraídos (KYC) ou para pré-preencher
            a pesquisa no registo de empresas (KYB). Devolve exatamente as
            mesmas chaves que foram fornecidas; `null` quando nenhum dado foi
            fornecido. As sessões de KYC contêm os campos da pessoa; as sessões
            de empresas (KYB) contêm `company_name`, `registry_country` e
            `registration_number`.
          properties:
            first_name:
              type: string
              description: Primeiro nome do utilizador. Por exemplo, `John`.
            last_name:
              type: string
              description: Apelido do utilizador. Por exemplo, `Doe`.
            date_of_birth:
              type: string
              format: date
              description: >-
                Data de nascimento do utilizador no formato: YYYY-MM-DD. Por
                exemplo, `1990-05-15`.
            gender:
              type: string
              nullable: true
              enum:
                - M
                - F
              default: null
              description: Género do utilizador. Deve ser 'M', 'F' ou null.
            nationality:
              type: string
              description: >-
                Código de país ISO 3166-1 alfa-3 que representa o país de origem
                do requerente. Por exemplo, `USA`.
            country:
              type: string
              description: >-
                Código de país ISO 3166-1 alfa-3 que representa o país do
                documento de Comprovativo de morada, ou o país do documento de
                identificação do requerente, que pode diferir da nacionalidade.
                Por exemplo, `GBR`.
            address:
              type: string
              description: >-
                A morada num formato legível por humanos, incluindo o máximo de
                informação possível. Por exemplo, `123 Main St, San Francisco,
                CA 94105, USA`.
            identification_number:
              type: string
              description: >-
                O número de documento, número de identificação pessoal ou número
                de identificação fiscal do utilizador. Por exemplo, `123456789`.
            ip_address:
              type: string
              format: ipv4
              description: >-
                Endereço IP previsto para a sessão. Se o endereço IP real
                diferir deste valor, será registado um aviso. Por exemplo,
                `192.168.1.100`.
            expected_document_types:
              type: array
              description: >-
                Tipos de documento aos quais o passo de verificação de
                identidade foi restrito na criação da sessão. Vazio/não definido
                significa sem restrição. Códigos: `P` (passaporte), `ID`
                (documento de identificação nacional), `DL` (carta de condução),
                `RP` (autorização de residência), `HIC` (cartão de seguro de
                saúde), `TC` (cartão fiscal), `SSC` (cartão de segurança
                social).
              items:
                type: string
                enum:
                  - P
                  - ID
                  - DL
                  - RP
                  - HIC
                  - TC
                  - SSC
            id_country:
              type: string
              nullable: true
              description: >-
                País emissor previsto para o documento de identificação (ISO
                3166-1 alfa-3), quando restrito no momento da criação.
              example: ESP
            poa_country:
              type: string
              nullable: true
              description: >-
                País previsto do documento de Comprovativo de morada (ISO 3166-1
                alfa-3), quando restrito no momento da criação.
              example: ESP
            company_name:
              type: string
              description: >-
                Nome legal esperado da empresa. Apenas para sessões de empresas
                (KYB).
            registry_country:
              type: string
              description: >-
                País do registo esperado como `XX` ou `XX-YY` (ISO 3166-1
                alfa-2, opcionalmente com uma subdivisão ISO 3166-2 para
                registos a nível estadual, por exemplo, `US-CA`). Apenas para
                sessões de Business (KYB).
            registration_number:
              type: string
              description: >-
                Número de registo da empresa previsto. Apenas sessões de
                empresas (KYB).
          nullable: true
        contact_details:
          type: object
          description: >-
            Detalhes de contacto fornecidos quando a sessão foi criada
            (utilizados para e-mails de notificação, verificação pré-preenchida
            de telefone/e-mail e idioma de comunicação). `null` quando não foi
            fornecido nem um e-mail nem um número de telefone.
          properties:
            email:
              type: string
              description: >-
                Endereço de e-mail do utilizador (ex.: "john.doe@example.com")
                que será utilizado durante o passo de Verificação de e-mail. Se
                não for fornecido, o utilizador terá de o indicar durante o
                fluxo de verificação.
            email_lang:
              type: string
              description: >-
                Código de idioma (ISO 639-1) para notificações por e-mail.
                Controla o idioma de todas as comunicações por e-mail (por
                exemplo, "en", "es", "fr").
            send_notification_emails:
              type: boolean
              default: false
              description: >-
                Se for true e for fornecido um e-mail, a Didit envia o e-mail
                inicial "Verifique a sua identidade" de forma assíncrona quando
                a sessão de Verificação de utilizadores (KYC) ou de Verificação
                de empresas (KYB) é criada. A Didit também envia notificações de
                estado da verificação para sessões que exijam revisão manual
                para o endereço de e-mail fornecido.
            phone:
              type: string
              nullable: true
              description: >-
                Número de telefone do utilizador no formato E.164, se disponível
                (por exemplo, +14155552671). `null` quando apenas um e-mail foi
                fornecido na criação da sessão. Nota: Este campo devolve o
                número de telefone original fornecido durante a criação da
                sessão. Se o número for inválido, pode não estar no formato
                E.164.
          nullable: true
        callback:
          type: string
          format: uri
          description: O URL de retorno da sessão.
          nullable: true
        id_verifications:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de verificação de identidade (OCR)**
            produzidos por passos de documento de identificação no grafo do
            fluxo. Sempre um array JSON — leia `id_verifications[0]` e itere se
            o seu fluxo puder executar mais do que uma verificação de
            identificação (por exemplo, uma verificação principal mais uma
            verificação adicional). `null` até que pelo menos um passo de
            identificação tenha produzido dados. Cada item é o relatório
            completo, incluindo `node_id`, `status` ao nível da funcionalidade,
            campos do documento extraídos, URLs de imagens, pontuações de
            qualidade, MRZ, análise da morada, correspondências entre sessões e
            `warnings[]`.
          items:
            type: object
            description: >-
              Um relatório de Verificação de identidade - o relatório completo
              de um único passo de Verificação de identidade.
              `verification_method` indica qual dos três métodos o gerou
              (captura de documento, consulta sem documento ou início de sessão
              com carteira) e o bloco de evidências específico do método é
              preenchido em conformidade.
            properties:
              node_id:
                type: string
                description: >-
                  ID do nó do grafo do fluxo do passo de OCR que gerou este
                  relatório.
              verification_method:
                type: string
                enum:
                  - document
                  - id_lookup
                  - wallet
                description: >-
                  Qual o método de Verificação de identidade que gerou este
                  relatório. `document` - o utilizador fotografou um documento
                  de identificação físico (a predefinição e o valor em todas as
                  sessões criadas antes da existência dos outros métodos).
                  `id_lookup` - o utilizador introduziu o seu número de
                  identificação nacional e este foi verificado num registo
                  governamental ou noutra fonte oficial desse país
                  (`id_lookup.source` indica qual). `wallet` - o utilizador
                  iniciou sessão com uma identidade digital governamental ou
                  bancária.
              assurance:
                type: string
                enum:
                  - documentary
                  - data_match
                  - cryptographic
                description: >-
                  Nível de garantia derivado de `verification_method`:
                  `documentary` para um documento que foi capturado e
                  verificado, `data_match` para detalhes que corresponderam a um
                  registo mantido pela fonte consultada, `cryptographic` para
                  atributos autenticados e assinados por um fornecedor de
                  identidade.
              wallet_provider:
                type: string
                nullable: true
                description: >-
                  ID de catálogo da carteira quando `verification_method` é
                  `wallet` (`mitid`, `bankid_se`, `itsme`, ...). Caso contrário,
                  `null`.
              fallback_from:
                type: object
                nullable: true
                description: >-
                  O motivo pelo qual um método não documental não concluiu o
                  passo de identificação. Definido quando uma consulta ou um
                  início de sessão com carteira falhou: na verificação de
                  documentos com a qual o utilizador continuou quando a opção de
                  recurso do país era `fallback_to_document` (`action` é
                  `fallback_to_document`), ou no relatório recusado quando era
                  `decline`. `null` nos restantes casos.
                properties:
                  method:
                    type: string
                    enum:
                      - id_lookup
                      - wallet
                    description: O método que falhou.
                  reason:
                    type: string
                    description: >-
                      O resultado que determinou o seu fim, por exemplo,
                      `no_match`, `provider_error`, `cancelled`, `timeout`.
                  action:
                    type: string
                    enum:
                      - fallback_to_document
                      - decline
                    description: >-
                      A ação configurada que foi executada:
                      `fallback_to_document` ou `decline`.
              id_lookup:
                type: object
                nullable: true
                description: >-
                  Comprovativo do registo de empresas. Presente apenas quando
                  `verification_method` é `id_lookup`; `null` caso contrário.
                properties:
                  source:
                    type: string
                    description: >-
                      Nome visível ao cliente da fonte consultada, por exemplo,
                      `Department of Home Affairs` (um registo governamental) ou
                      `UK credit bureau and financial services records` (não é
                      um registo governamental). Esta é a única declaração de
                      proveniência para a consulta; não assuma uma fonte
                      governamental.
                  checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: Quando o registo respondeu.
                  attempts:
                    type: integer
                    description: >-
                      Número da tentativa, indexado a partir de 1, que deu
                      origem a este relatório.
                  max_attempts:
                    type: integer
                    description: >-
                      Orçamento de tentativas configurado para o país (1 a 5,
                      predefinição 1).
                  outcome:
                    type: string
                    enum:
                      - match
                      - partial_match
                      - no_match
                      - provider_error
                      - format_rejected
                    nullable: true
                    description: >-
                      O que o registo respondeu. Apenas `match`, `partial_match`
                      e `no_match` contam para o orçamento de tentativas e a
                      faturação.
                  comparison:
                    type: array
                    description: >-
                      Uma linha por campo comparável ao qual a fonte respondeu,
                      mais uma linha por erro da fonte. As linhas de comparação
                      utilizam os nomes de campo normalizados abaixo em vez das
                      chaves dos campos de pedido específicas do país, porque
                      vários campos do pedido (primeiro e último nome, ou
                      qualquer um dos aliases de identificador) colapsam numa
                      única comparação. Uma fonte que tenha falhado anexa uma
                      linha com `field: "provider"` e `result: "error"`, pelo
                      que deve consultar `result` antes de tratar uma linha como
                      um veredito do campo.
                    items:
                      type: object
                      required:
                        - field
                        - label
                        - provided
                        - record
                        - result
                      properties:
                        field:
                          type: string
                          enum:
                            - identification_number
                            - full_name
                            - date_of_birth
                            - address
                            - provider
                          description: >-
                            Campo de comparação normalizado. `provider` não é um
                            campo de utilizador: marca uma linha de erro de
                            origem.
                        label:
                          type: string
                          description: >-
                            Etiqueta visível da linha, por exemplo `ID number`,
                            `Full name`, `Provider`.
                        provided:
                          type: string
                          nullable: true
                          description: >-
                            O que o utilizador introduziu. `null` numa linha de
                            erro de `provider`.
                        record:
                          type: string
                          nullable: true
                          description: >-
                            O que a fonte continha. Numa linha de erro de
                            `provider`, este campo contém a mensagem de erro.
                        result:
                          type: string
                          enum:
                            - match
                            - partial
                            - no_match
                            - error
                          description: >-
                            Resultado de comparação por campo. `error` surge
                            apenas numa linha `provider` e significa que essa
                            fonte não respondeu; trate-o como uma evidência
                            sobre o pedido, nunca como uma divergência de campo.
                  registry_portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL pré-assinado de curta duração para o retrato devolvido
                      pela fonte. Apenas para os quatro registos governamentais
                      que devolvem um (África do Sul, Nigéria, Argentina,
                      Panamá).
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      Selfie em comparação com o retrato do registo, 0-100.
                      Apenas quando o registo devolve um retrato.
              wallet_verification:
                type: object
                nullable: true
                description: >-
                  Evidência da credencial. Presente apenas quando
                  `verification_method` é `wallet`; `null` caso contrário.
                properties:
                  provider:
                    type: string
                    description: ID de catálogo da carteira, por ex. `mitid`.
                  provider_name:
                    type: string
                    nullable: true
                    description: >-
                      Nome da carteira tal como o utilizador final a conhece,
                      por ex. `MitID`.
                  issuing_authority:
                    type: string
                    nullable: true
                    description: >-
                      A autoridade responsável pela carteira, por exemplo
                      `Danish Agency for Digital Government`.
                  issuing_country:
                    type: string
                    description: >-
                      País ISO 3166-1 alfa-3 no qual a carteira foi
                      disponibilizada.
                  credential_type:
                    type: string
                    nullable: true
                    description: >-
                      Credencial apresentada pela carteira, ex.:
                      `person_identification`.
                  level_of_assurance:
                    type: string
                    enum:
                      - low
                      - substantial
                      - high
                    nullable: true
                    description: >-
                      O nível de garantia que a carteira declarou. Um início de
                      sessão que declare menos do que o nível pedido falha em
                      vez de reduzir o nível.
                  verified_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: O instante de autenticação da carteira.
                  signature_valid:
                    type: boolean
                    nullable: true
                    description: >-
                      Se a asserção assinada devolvida pela carteira foi
                      validada.
                  attributes:
                    type: object
                    additionalProperties: true
                    description: >-
                      Os atributos partilhados pela carteira, com as chaves
                      indicadas na entrada correspondente do catálogo da
                      carteira.
                  portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL pré-assinado de curta duração para o retrato
                      partilhado pela carteira, quando esta partilhar algum.
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      Selfie em comparação com o retrato da carteira, 0-100,
                      quando a carteira partilha um retrato.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
                description: >-
                  Estado ao nível da funcionalidade deste passo de verificação
                  de identidade. Independente do `status` da sessão de nível
                  superior — uma sessão pode alcançar a sua decisão global
                  enquanto uma funcionalidade individual permanece `In Review`.
              document_type:
                type: string
                description: Tipo de documento de identificação
              document_subtype:
                type: string
                nullable: true
                description: >-
                  Código de subtipo de documento aceite das definições de
                  documentos do fluxo, incluindo a região do documento quando
                  aplicável. Exemplos: `ID_CARD_GENERIC`,
                  `QUEENSLAND_DRIVER_LICENSE_GENERIC`.
              document_number:
                type: string
                description: Número de identificação do documento
              personal_number:
                type: string
                description: Número de identificação pessoal
              portrait_image:
                type: string
                format: uri
                description: URL da imagem de retrato
              front_image:
                type: string
                format: uri
                description: URL da imagem da frente do documento
              front_video:
                type: string
                format: uri
                description: URL do vídeo da frente do documento
              back_image:
                type: string
                format: uri
                description: URL da imagem do verso do documento
              back_video:
                type: string
                format: uri
                description: URL do vídeo do verso do documento
              full_front_image:
                type: string
                format: uri
                description: URL da imagem completa da frente do documento
              full_back_image:
                type: string
                format: uri
                description: URL da imagem completa do verso do documento
              front_image_camera_front:
                type: string
                format: uri
                description: >-
                  URL da imagem da frente do documento capturada a partir da
                  câmara frontal
              back_image_camera_front:
                type: string
                format: uri
                description: >-
                  URL da imagem do verso do documento capturada a partir da
                  câmara frontal
              date_of_birth:
                type: string
                format: date
                description: Data de nascimento do documento
              age:
                type: integer
                description: Idade calculada a partir da data de nascimento
              expiration_date:
                type: string
                format: date
                description: Data de validade do documento
              date_of_issue:
                type: string
                format: date
                description: Data de emissão do documento
              issuing_state:
                type: string
                description: Código ISO do estado emissor
              issuing_state_name:
                type: string
                description: Nome completo do estado emissor
              first_name:
                type: string
                description: Primeiro nome do documento
              last_name:
                type: string
                description: Apelido extraído do documento
              full_name:
                type: string
                description: Nome completo constante do documento
              gender:
                type: string
                description: Género constante do documento
              address:
                type: string
                description: Morada em bruto do documento
              formatted_address:
                type: string
                description: Morada completa formatada
              place_of_birth:
                type: string
                description: Local de nascimento a partir do documento
              marital_status:
                type: string
                description: Estado civil a partir do documento
              nationality:
                type: string
                description: Código ISO de nacionalidade
              extra_fields:
                type: object
                description: >-
                  Campos adicionais do documento. Inclui atributos específicos
                  do documento (por exemplo, `dl_categories`, `blood_group`,
                  `sponsor`, `employer`, `dl_class_code_b_from`,
                  `dl_class_code_b_to`). As datas de validade das categorias da
                  carta de condução são devolvidas como
                  `dl_class_code_<class>_from` e `dl_class_code_<class>_to`, e
                  os códigos de restrição/informação por categoria (por exemplo,
                  coluna 12 das cartas do Reino Unido) como
                  `dl_class_code_<class>_notes`. Quando o documento contém
                  nomes, morada ou local de nascimento em múltiplos sistemas de
                  escrita, este objeto também inclui versões desses campos nos
                  sistemas de escrita alternativos. A definição de fluxo
                  `preferred_characters` (`latin` ou `non_latin`) controla qual
                  o sistema de escrita que preenche os campos de nível superior
                  (`first_name`, `last_name`, `full_name`, `address`,
                  `place_of_birth`); o sistema de escrita oposto aparece aqui
                  como `first_name_non_latin` / `last_name_non_latin` /
                  `full_name_non_latin` / `middle_name_non_latin` /
                  `address_non_latin` / `place_of_birth_non_latin` (quando
                  `preferred_characters` é `latin`) ou com o sufixo `_latin`
                  (quando `preferred_characters` é `non_latin`). As chaves
                  surgem apenas quando o OCR extrai efetivamente um valor real
                  no sistema de escrita alternativo — um campo cujo valor
                  alternativo esteja no mesmo sistema de escrita do conjunto
                  preferencial (por exemplo, um campo com rótulo em cirílico
                  cujo valor de OCR tenha retornado em homóglifos latinos) é
                  ignorado. Quando `preferred_characters` é `latin` mas o
                  documento apenas contém texto não latino, a Didit translitera
                  os valores extraídos e disponibiliza `first_name_latin` /
                  `last_name_latin` / etc. como recurso de contingência.
                additionalProperties: true
                properties:
                  dl_categories:
                    type: array
                    items:
                      type: string
                  blood_group:
                    type: string
                    nullable: true
                  first_name_non_latin:
                    type: string
                    description: >-
                      Primeiro nome no sistema de escrita não latino quando
                      `preferred_characters=latin` e uma versão não latina está
                      presente no documento (ex.: `Айна` para uma identificação
                      do Quirguistão).
                  last_name_non_latin:
                    type: string
                    description: >-
                      Apelido no sistema de escrita não latino quando
                      `preferred_characters=latin` e uma versão não latina
                      estiver presente no documento.
                  middle_name_non_latin:
                    type: string
                    description: >-
                      Segundo nome / patronímico no sistema de escrita não
                      latino quando `preferred_characters=latin` e uma versão
                      não latina está presente no documento.
                  full_name_non_latin:
                    type: string
                    description: >-
                      Nome completo composto no sistema de escrita não latino.
                      Reconstruído a partir dos componentes individuais quando o
                      nome próprio e os apelidos estão disponíveis.
                  address_non_latin:
                    type: string
                    description: >-
                      Morada no sistema de escrita não latino quando
                      `preferred_characters=latin` e uma versão não latina está
                      presente no documento.
                  place_of_birth_non_latin:
                    type: string
                    description: >-
                      Local de nascimento no sistema de escrita não latino
                      quando `preferred_characters=latin` e uma versão não
                      latina estiver presente no documento.
                  first_name_latin:
                    type: string
                    description: >-
                      Primeiro nome em sistema de escrita latino. Preenchido
                      quando `preferred_characters=non_latin` e uma versão em
                      carateres latinos está presente no documento, ou — como
                      alternativa de transliteração — quando
                      `preferred_characters=latin` mas o documento apenas contém
                      texto não latino.
                  last_name_latin:
                    type: string
                    description: >-
                      Apelido no sistema de escrita latino. As mesmas regras que
                      `first_name_latin`.
                  middle_name_latin:
                    type: string
                    description: >-
                      Segundo nome / patronímico em sistema de escrita latino.
                      Aplicam-se as mesmas regras que a `first_name_latin`.
                  full_name_latin:
                    type: string
                    description: >-
                      Nome completo composto em sistema de escrita latino.
                      Sempre reconstruído a partir dos componentes individuais
                      quando o nome próprio e os apelidos estão disponíveis.
                  address_latin:
                    type: string
                    description: >-
                      Morada em sistema de escrita latino. Aplicam-se as mesmas
                      regras que a `first_name_latin`.
                  place_of_birth_latin:
                    type: string
                    description: >-
                      Local de nascimento em sistema de escrita latino. As
                      mesmas regras que para `first_name_latin`.
              mrz:
                type: object
                nullable: true
                description: >-
                  Campos analisados da Zona de Leitura Ótica (MRZ) extraídos do
                  documento. `null` se nenhuma MRZ foi detetada.
                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: Detalhes de morada estruturada
                properties:
                  city:
                    type: string
                  label:
                    type: string
                  region:
                    type: string
                  country:
                    type: string
                    description: Código de país de duas letras
                  category:
                    type: string
                    description: Categoria de morada (por exemplo, Residential, Commercial)
                  street_1:
                    type: string
                  street_2:
                    type: string
                    nullable: true
                  is_verified:
                    type: boolean
                    description: Indica se a morada foi verificada
                  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: Ficheiros adicionais de verificação de documentos
              front_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  Pontuação de correspondência facial entre o retrato extraído
                  da imagem da frente do documento e a imagem da câmara frontal
              back_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  Pontuação de correspondência facial entre o retrato extraído
                  da imagem do verso do documento e a imagem da câmara frontal
              document_selfie_face_matches:
                type: array
                description: >-
                  Sessões anteriores ou entradas na lista de bloqueio facial
                  cujo rosto correspondeu à selfie tirada pela câmara frontal
                  durante a captura do documento (Silent Capture Face Search). O
                  mesmo formato de entrada que `liveness_checks[].matches`.
                  `null` para sessões criadas antes da existência deste campo ou
                  quando a pesquisa não foi executada; um array vazio quando foi
                  executada e não encontrou nada. `match_image_url` é um URL
                  pré-assinado que expira.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID de sessão do rosto correspondente. `null` quando
                        `source` é `imported`, `list_entry` ou
                        `retained_template`.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: >-
                        Semelhança facial entre as duas imagens, limitada a
                        0–100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` da sessão correspondente ou utilizador
                        associado para rostos importados e com modelo retido.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID do utilizador vinculado para correspondências de
                        `imported` e `retained_template` e para correspondências
                        de sessão vinculadas a um utilizador. `null` para
                        entradas de lista e sessões sem utilizador.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID do template biométrico retido. Definido apenas quando
                        `source` é `retained_template`; `null` caso contrário.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Quando o rosto correspondente foi capturado ou quando um
                        modelo retido foi criado. `null` para entradas de lista.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        Dados de identidade da sessão correspondente ou do
                        perfil de Utilizador importado. Sempre `null` para
                        correspondências de `retained_template` e `list_entry`.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Imagem de referência para correspondências baseadas em
                        imagens. Sempre `null` para correspondências de
                        `retained_template` porque os modelos retidos não contêm
                        imagem.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        Estado do ciclo de vida da sessão correspondente. `null`
                        para fontes que não sejam sessões.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Indica se o rosto correspondente está numa lista de
                        bloqueio.
                    is_allowlisted:
                      type: boolean
                      description: >-
                        Indica se o rosto correspondente está numa lista de
                        permissões.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Serviço da API autónomo da sessão correspondente (por
                        exemplo, `PASSIVE_LIVENESS`, `FACE_MATCH`); `null` para
                        sessões de fluxo e origens que não sejam sessões.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        Origem da face correspondente: `session`, `imported`
                        (carregamento de face de utilizador), `list_entry`
                        (lista de permissão/bloqueio) ou `retained_template` (um
                        modelo biométrico sem imagem armazenado num utilizador,
                        listado em `/v3/biometric-templates/`).
                nullable: true
              front_image_quality_score:
                type: object
                nullable: true
                description: >-
                  Métricas de qualidade para a imagem da frente do documento.
                  Cada subpontuação varia de 0 a 100.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      Nitidez da imagem medida através da variância Laplaciana
                      local dos 10% superiores. Robusta para documentos com
                      fundos uniformes alargados. Valores mais altos indicam uma
                      imagem mais nítida e menos desfocada.
                  brightness_score:
                    type: number
                    description: >-
                      O nível de iluminação da imagem. Penaliza imagens
                      demasiado escuras ou sobre-expostas, sendo a luminosidade
                      ideal no intervalo médio.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      Indica a direção do problema de luminosidade quando o
                      brightness_score é baixo. 'ok' significa que a
                      luminosidade é aceitável, 'too_dark' significa que a
                      imagem está subexposta, 'too_bright' significa que a
                      imagem está sobre-exposta.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true se os quatro cantos do documento estiverem totalmente
                      visíveis dentro do enquadramento da imagem, false se algum
                      canto estiver cortado. Null quando as coordenadas dos
                      cantos não estiverem disponíveis.
                  resolution_score:
                    type: number
                    description: >-
                      Resolução efetiva da imagem com base no número total de
                      píxeis.
                  overall_score:
                    type: number
                    description: >-
                      Composto ponderado de subpontuações (foco 45%, brilho 30%,
                      resolução 25%).
              back_image_quality_score:
                type: object
                nullable: true
                description: >-
                  Métricas de qualidade para a imagem do verso do documento.
                  Mesma estrutura que front_image_quality_score.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      Nitidez da imagem medida através da variância Laplaciana
                      local dos 10% superiores. Robusta para documentos com
                      fundos uniformes alargados. Valores mais altos indicam uma
                      imagem mais nítida e menos desfocada.
                  brightness_score:
                    type: number
                    description: >-
                      O nível de iluminação da imagem. Penaliza imagens
                      demasiado escuras ou sobre-expostas, sendo a luminosidade
                      ideal no intervalo médio.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      Indica a direção do problema de luminosidade quando o
                      brightness_score é baixo. 'ok' significa que a
                      luminosidade é aceitável, 'too_dark' significa que a
                      imagem está subexposta, 'too_bright' significa que a
                      imagem está sobre-exposta.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true se os quatro cantos do documento estiverem totalmente
                      visíveis dentro do enquadramento da imagem, false se algum
                      canto estiver cortado. Null quando as coordenadas dos
                      cantos não estiverem disponíveis.
                  resolution_score:
                    type: number
                    description: >-
                      Resolução efetiva da imagem com base no número total de
                      píxeis.
                  overall_score:
                    type: number
                    description: >-
                      Composto ponderado de subpontuações (foco 45%, brilho 30%,
                      resolução 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: >-
                        A funcionalidade que gerou este aviso (por exemplo,
                        `ID_VERIFICATION`, `NFC`, `LIVENESS`). O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo, mas o
                        enum acima é a referência autoritativa para todos os
                        avisos de funcionalidades no payload da decisão.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                      description: Dados contextuais adicionais sobre o aviso
                    log_type:
                      type: string
                      description: 'Tipo de registo: informação, aviso ou erro'
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        O ID do nó do grafo do fluxo que gerou este aviso (para
                        fluxos baseados em grafos)
                description: Avisos de verificação de documentos
              matches:
                type: array
                description: >-
                  Documentos correspondentes encontrados durante a deteção de
                  duplicados/lista de bloqueio (até 5 correspondências)
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: ID de sessão do documento correspondente
                    session_number:
                      type: integer
                      description: Número de sessão do documento correspondente
                    vendor_data:
                      type: string
                      nullable: true
                      description: Dados do fornecedor associados à sessão correspondente
                    verification_date:
                      type: string
                      format: date-time
                      description: Data em que a sessão correspondente foi verificada
                    user_details:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Nome completo constante do documento correspondente
                        document_type:
                          type: string
                          description: Tipo do documento correspondente
                        document_number:
                          type: string
                          description: Número do documento correspondente
                    status:
                      type: string
                      description: Estado da sessão correspondente
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Indica se o documento correspondente está na lista de
                        bloqueio
                    api_service:
                      type: string
                      nullable: true
                      description: Tipo de serviço de API da sessão correspondente
                    front_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: URL da imagem da frente do documento correspondente
              document_liveness:
                type: object
                nullable: true
                description: >-
                  Pontuações de prova de vida do documento por tipo de fraude,
                  comunicadas independentemente de ter sido acionado um aviso,
                  para que um documento aprovado possa continuar a ser auditado.
                  `null` quando a verificação não foi executada.
                properties:
                  portrait_replace:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Probabilidade de o documento ser genuíno para este
                          tipo de fraude, 0-100 (mais elevado = maior
                          probabilidade de ser genuíno). O valor mais baixo de
                          ambos os lados - o valor utilizado na decisão. `null`
                          quando nenhum dos lados produziu uma pontuação
                          utilizável.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Pontuação para a frente; `null` quando não capturada
                          ou quando a pontuação foi descartada.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Pontuação para o verso; `null` quando não capturado ou
                          quando a pontuação foi descartada.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          O limiar de recusa guardado quando este documento foi
                          avaliado. Edições posteriores do fluxo não o alteram.
                          Null quando as evidências históricas de avaliação não
                          estiverem disponíveis.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          O limiar de revisão guardado quando este documento foi
                          avaliado. Edições posteriores do fluxo não o alteram.
                          Null quando os elementos de prova da avaliação
                          histórica não estiverem disponíveis.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          A categoria de tipo de fraude guardada no momento da
                          avaliação. Nulo quando não existe pontuação
                          utilizável, a verificação não foi aplicada ou as
                          provas de avaliação histórica não estão disponíveis.
                          Edições posteriores do fluxo não a alteram.
                  printed_copy:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Probabilidade de o documento ser genuíno para este
                          tipo de fraude, 0-100 (mais elevado = maior
                          probabilidade de ser genuíno). O valor mais baixo de
                          ambos os lados - o valor utilizado na decisão. `null`
                          quando nenhum dos lados produziu uma pontuação
                          utilizável.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Pontuação para a frente; `null` quando não capturada
                          ou quando a pontuação foi descartada.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Pontuação para o verso; `null` quando não capturado ou
                          quando a pontuação foi descartada.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          O limiar de recusa guardado quando este documento foi
                          avaliado. Edições posteriores do fluxo não o alteram.
                          Null quando as evidências históricas de avaliação não
                          estiverem disponíveis.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          O limiar de revisão guardado quando este documento foi
                          avaliado. Edições posteriores do fluxo não o alteram.
                          Null quando os elementos de prova da avaliação
                          histórica não estiverem disponíveis.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          A categoria de tipo de fraude guardada no momento da
                          avaliação. Nulo quando não existe pontuação
                          utilizável, a verificação não foi aplicada ou as
                          provas de avaliação histórica não estão disponíveis.
                          Edições posteriores do fluxo não a alteram.
                  screen_replay:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Probabilidade de o documento ser genuíno para este
                          tipo de fraude, 0-100 (mais elevado = maior
                          probabilidade de ser genuíno). O valor mais baixo de
                          ambos os lados - o valor utilizado na decisão. `null`
                          quando nenhum dos lados produziu uma pontuação
                          utilizável.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Pontuação para a frente; `null` quando não capturada
                          ou quando a pontuação foi descartada.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Pontuação para o verso; `null` quando não capturado ou
                          quando a pontuação foi descartada.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          O limiar de recusa guardado quando este documento foi
                          avaliado. Edições posteriores do fluxo não o alteram.
                          Null quando as evidências históricas de avaliação não
                          estiverem disponíveis.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          O limiar de revisão guardado quando este documento foi
                          avaliado. Edições posteriores do fluxo não o alteram.
                          Null quando os elementos de prova da avaliação
                          histórica não estiverem disponíveis.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          A categoria de tipo de fraude guardada no momento da
                          avaliação. Nulo quando não existe pontuação
                          utilizável, a verificação não foi aplicada ou as
                          provas de avaliação histórica não estão disponíveis.
                          Edições posteriores do fluxo não a alteram.
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  Validação de endereço da morada impressa neste documento: se
                  existe e a sua forma normalizada, tal como lida no documento
                  (uma correção posterior de `address` não a executa novamente).
                  Presente quando este passo de Verificação de identidade ativou
                  o suplemento de Validação de endereço; `null` caso contrário.
              region:
                type: string
                nullable: true
                description: >-
                  Região ou estado do país emissor do documento, quando o
                  documento identifica algum.
              extracted_data:
                type: object
                nullable: true
                additionalProperties: true
                description: >-
                  Instantâneo dos dados extraídos do documento e apresentados à
                  pessoa para revisão, mantidos ao lado dos valores confirmados
                  para que possa comparar o que foi lido com o que a pessoa
                  confirmou. `null` quando não foi pedido à pessoa que fizesse a
                  revisão.
              barcodes:
                type: array
                items:
                  type: object
                  additionalProperties: true
                description: >-
                  Dados lidos dos códigos de barras do documento. Vazio quando o
                  documento não tem nenhum ou nenhum foi lido.
        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: >-
            O motivo pelo qual a verificação do chip NFC não foi executada,
            preenchido sempre que o fluxo incluir um passo de NFC. `null`
            enquanto o NFC estiver pendente ou quando o chip tiver sido
            efetivamente lido. Valores: `USER_SKIPPED` - o utilizador optou por
            ignorar num dispositivo compatível com NFC (permitido por
            `allow_nfc_skip`); `DOCUMENT_WITHOUT_CHIP` - o documento não possui
            nenhum chip NFC legível (não é um documento eletrónico ICAO 9303);
            `CHIP_CERTIFICATE_UNAVAILABLE` - o certificado de assinatura do país
            emissor (CSCA) que abrange o período de emissão do documento não
            está disponível, pelo que a assinatura do chip não pode ser
            verificada; `DEVICE_WITHOUT_NFC` - o dispositivo indicou que não tem
            leitor NFC; `INTEGRATION_WITHOUT_NFC_ACCESS` - a verificação foi
            executada sem um SDK nativo (por exemplo, num navegador web), que
            não tem acesso ao leitor NFC do telemóvel; `MRZ_KEY_UNAVAILABLE` -
            não foi possível obter a chave de acesso ao chip a partir da MRZ do
            documento; `JPKI_UNAVAILABLE` - o documento é um Japan My Number
            Card, cujo chip é lido através de JPKI, e o JPKI não estava
            disponível para esta verificação: não está ativado, ou o SDK nativo
            da aplicação não consegue ler My Number Cards.
        nfc_verifications:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de NFC / passaporte eletrónico** produzidos
            por passos de NFC no grafo do fluxo. **Isto é sempre um array JSON,
            nunca um objeto `nfc` singular** — leia `nfc_verifications[0]` e
            itere se o seu fluxo puder executar NFC mais do que uma vez. `null`
            até que pelo menos um passo de NFC tenha produzido dados. Cada item
            é o relatório completo, incluindo `node_id`, `status` ao nível da
            funcionalidade, `chip_protocol`, `chip_data`, `authenticity`
            (integridade de SOD + DG), `certificate_summary` e `warnings[]`. O
            cartão My Number do Japão é lido através de JPKI em vez do ICAO
            9303: o seu item tem `chip_protocol: "jpki"`, contém as suas
            evidências em `jpki` e deixa os campos ICAO a `null`. Quando o passo
            de NFC foi ignorado antes de poder ser oferecido (documento sem
            chip, certificado em falta, nenhuma capacidade NFC reportada, chave
            MRZ ilegível, JPKI indisponível para um cartão My Number), este
            permanece `null` e `nfc_skip_reason` explica o motivo; ignorar no
            próprio passo (o utilizador tocou em «Ignorar», ou o leitor
            revelou-se indisponível no momento da leitura) continua a produzir
            um relatório com `is_nfc_skipped: true`.
          items:
            type: object
            description: >-
              Um relatório NFC: o relatório completo de uma única leitura de
              chip (um chip de passaporte eletrónico ou eID ICAO 9303, ou um
              Japan My Number Card lido através de JPKI).
            properties:
              node_id:
                type: string
                description: >-
                  ID do nó do grafo do fluxo do passo de NFC que gerou este
                  relatório. Utilize-o para correlacionar o relatório com a
                  definição do fluxo.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Estado ao nível da funcionalidade deste passo de NFC.
                  Independente do `status` da sessão de nível superior — uma
                  sessão pode alcançar a sua decisão global enquanto uma
                  funcionalidade individual permanece `In Review`.
              is_nfc_skipped:
                type: boolean
                description: >-
                  `true` quando este passo de NFC foi explicitamente ignorado em
                  vez de lido; `skip_reason` indica o motivo.
              skip_reason:
                type: string
                nullable: true
                enum:
                  - USER_SKIPPED
                  - DOCUMENT_WITHOUT_CHIP
                  - CHIP_CERTIFICATE_UNAVAILABLE
                  - DEVICE_WITHOUT_NFC
                  - INTEGRATION_WITHOUT_NFC_ACCESS
                  - MRZ_KEY_UNAVAILABLE
                  - JPKI_UNAVAILABLE
                description: >-
                  O motivo pelo qual este passo de NFC foi ignorado. Definido
                  apenas quando `is_nfc_skipped` é `true`. Mesma taxonomia de
                  `nfc_skip_reason` ao nível da sessão, que cobre adicionalmente
                  os casos em que o NFC nunca chegou a produzir um relatório.
              chip_protocol:
                type: string
                enum:
                  - icao
                  - jpki
                description: >-
                  Como o passo de NFC lê o chip. `icao`: chip de ePassport ou
                  eID ICAO 9303, aberto com a chave de acesso do MRZ. `jpki`:
                  Japan My Number Card, em que o cartão assina um desafio de
                  utilização única após o titular introduzir o PIN do cartão num
                  SDK nativo; o resultado encontra-se sob `jpki`. Também
                  definido em passos ignorados, para que possa distinguir a
                  leitura de um My Number Card que foi ignorada.
              jpki:
                type: object
                nullable: true
                description: >-
                  O que a leitura de um cartão My Number do Japão através de
                  JPKI comprovou. Presente quando `chip_protocol` é `jpki` e o
                  cartão foi lido. `null` para chips ICAO, para passos ignorados
                  e quando o passo de NFC terminou sem a leitura de qualquer
                  cartão (nesse caso é gerado `JPKI_SIGNATURE_INVALID`). Nunca
                  inclui os certificados, os respetivos números de série, as
                  assinaturas ou o My Number de 12 dígitos.
                properties:
                  certificate_types:
                    type: array
                    items:
                      type: string
                      enum:
                        - user_authentication
                        - signature
                    description: >-
                      Os certificados do cartão lidos. `user_authentication`
                      (PIN de 4 dígitos) é sempre lido; `signature` (PIN de
                      assinatura) é lido quando a definição
                      `jpki_request_attributes` do nó NFC está ativada.
                  chain_valid:
                    type: boolean
                    description: >-
                      `true` quando cada certificado lido forma uma cadeia até à
                      autoridade de certificação JPKI, está dentro do seu
                      período de validade e é um certificado My Number Card do
                      respetivo tipo.
                  signature_valid:
                    type: boolean
                    description: >-
                      `true` quando todas as assinaturas efetuadas pelo cartão
                      sobre o desafio de utilização única são verificadas. O
                      cartão só assina após a introdução do respetivo PIN, pelo
                      que isto comprova a posse do cartão e o conhecimento do
                      PIN.
                  revocation_status:
                    type: string
                    enum:
                      - good
                      - revoked
                      - unchecked
                    description: >-
                      `good` quando a verificação de revogação confirmou que
                      todos os certificados são válidos, `revoked` quando algum
                      certificado está revogado (por exemplo, um cartão
                      reportado como perdido), `unchecked` quando nenhuma
                      resposta de revogação estava disponível. `unchecked` nunca
                      é tratado como `good`: o
                      `jpki_revocation_unchecked_action` do nó NFC decide o
                      resultado (padrão `REVIEW`).
                  ca_generation:
                    type: string
                    nullable: true
                    description: >-
                      Geração da autoridade de certificação JPKI que emitiu os
                      certificados, por exemplo `2023`. `null` quando nenhum
                      certificado forma uma cadeia até uma autoridade desse
                      tipo.
                  certificate_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      A data de validade mais próxima entre os certificados
                      lidos.
                  certificates:
                    type: array
                    items:
                      type: object
                      description: >-
                        O que um certificado lido a partir do cartão comprovou.
                        Nunca o certificado em si ou o seu número de série.
                      properties:
                        type:
                          type: string
                          enum:
                            - user_authentication
                            - signature
                          description: >-
                            Qual o certificado do cartão que esta entrada
                            descreve.
                        chain_valid:
                          type: boolean
                          description: >-
                            `true` quando o certificado forma uma cadeia até à
                            autoridade de certificação JPKI do seu tipo, está
                            dentro do seu período de validade e é um certificado
                            My Number Card desse tipo.
                        signature_valid:
                          type: boolean
                          description: >-
                            `true` quando a assinatura do cartão sobre o desafio
                            de utilização única é verificada com este
                            certificado.
                        ca_generation:
                          type: string
                          nullable: true
                          description: >-
                            Geração da autoridade de certificação JPKI que
                            emitiu o certificado, por exemplo `2023`. `null`
                            quando não foi encontrado nenhum emissor fidedigno.
                        not_valid_before:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Início do período de validade do certificado. `null`
                            quando não foi possível ler o certificado.
                        not_valid_after:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Fim do período de validade do certificado. `null`
                            quando não foi possível ler o certificado.
                        failure:
                          type: string
                          nullable: true
                          enum:
                            - unreadable_certificate
                            - untrusted_issuer
                            - expired
                            - not_yet_valid
                            - wrong_policy
                            - key_usage
                            - null
                          description: >-
                            O motivo pelo qual `chain_valid` é `false`:
                            `unreadable_certificate`, `untrusted_issuer` (não
                            emitido pela autoridade de certificação JPKI do seu
                            tipo), `expired`, `not_yet_valid`, `wrong_policy`
                            (não é um certificado My Number Card desse tipo) ou
                            `key_usage` (a chave não pode assinar). `null`
                            quando a cadeia é válida.
                    description: >-
                      Resultados por certificado, uma entrada por certificado
                      lido.
                  attributes:
                    type: object
                    nullable: true
                    description: >-
                      Os dados do titular extraídos do certificado de
                      assinatura, assim que a respetiva cadeia seja válida.
                      `null` quando o certificado de assinatura não foi
                      solicitado ou não encadeou até à autoridade de
                      certificação JPKI.
                    properties:
                      full_name:
                        type: string
                        nullable: true
                        description: >-
                          Nome conforme registado, habitualmente no sistema de
                          escrita japonês.
                      date_of_birth:
                        type: string
                        format: date
                        nullable: true
                        description: >-
                          Data de nascimento, `YYYY-MM-DD`. `null` quando a data
                          registada está incompleta.
                      gender:
                        type: string
                        nullable: true
                        enum:
                          - M
                          - F
                          - null
                        description: '`M`, `F`, ou `null` quando não registado.'
                      address:
                        type: string
                        nullable: true
                        description: Morada registada.
                      name_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          String de posição que marca os caracteres de
                          `full_name` que foram substituídos por um substituto
                          porque o caractere original está fora do conjunto de
                          caracteres padrão. `null` quando nenhum foi
                          substituído.
                      address_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          String de posição que marca caracteres de substituição
                          em `address`, tal como para
                          `name_substitute_characters`.
                  attributes_match_ocr:
                    type: boolean
                    nullable: true
                    description: >-
                      `true` quando os atributos correspondem aos dados lidos da
                      fotografia do mesmo cartão, `false` quando qualquer
                      atributo for diferente (`JPKI_AND_OCR_DATA_NOT_SAME`),
                      `null` quando nada pôde ser comparado, incluindo sempre
                      que `attributes` seja `null`.
                  mismatched_attributes:
                    type: array
                    items:
                      type: string
                      enum:
                        - full_name
                        - date_of_birth
                        - gender
                        - address
                    description: >-
                      Nomes dos atributos que diferem dos dados da fotografia,
                      nunca os seus valores. Vazio quando tudo o que foi
                      comparado coincide.
              portrait_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  URL pré-assinado para o retrato lido a partir do chip (ICAO
                  DG2). `null` para uma leitura JPKI (`chip_protocol: "jpki"`) e
                  para passos ignorados.
              signature_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  URL pré-assinado para a imagem da assinatura do titular lida a
                  partir do chip (ICAO DG7), quando o chip contém uma. `null`
                  para uma leitura JPKI (`chip_protocol: "jpki"`) e para passos
                  ignorados.
              chip_data:
                type: object
                nullable: true
                description: >-
                  Dados pessoais analisados a partir dos Data Groups do chip
                  ICAO. `null` para uma leitura JPKI (`chip_protocol: "jpki"`) e
                  para passos ignorados.
                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: >-
                  Autenticação passiva ICAO: assinatura SOD (`sod_integrity`) e
                  hashes de Data Group (`dg_integrity`). `null` para uma leitura
                  JPKI, que reporta a sua prova em `jpki`.
                properties:
                  sod_integrity:
                    type: boolean
                  dg_integrity:
                    type: boolean
              certificate_summary:
                type: object
                nullable: true
                description: >-
                  Resumo do certificado de assinatura de documentos da ICAO.
                  `null` para uma leitura JPKI (`chip_protocol: "jpki"`) e para
                  passos ignorados.
                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: >-
                        A funcionalidade que gerou este aviso. O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo (por
                        exemplo, `PHONE` dentro de
                        `phone_verifications[].warnings`), mas o enum acima é a
                        referência autoritativa para todos os avisos de
                        funcionalidades no payload da decisão.
                    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: O ID do nó do grafo do fluxo que gerou este aviso
        liveness_checks:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de prova de vida** produzidos por passos de
            prova de vida no grafo do fluxo. Sempre um array JSON — nunca um
            objeto `liveness` singular. `null` até que pelo menos um passo de
            prova de vida tenha produzido dados. Cada item é o relatório
            completo, incluindo `node_id`, `status` ao nível da funcionalidade,
            `method`, `score`, `reference_image`, `video_url`, `age_estimation`
            opcional, `matches[]` entre sessões e `warnings[]`.
          items:
            type: object
            description: >-
              Um relatório de prova de vida — o relatório completo de uma única
              verificação de prova de vida.
            properties:
              node_id:
                type: string
                description: >-
                  ID do nó do grafo do fluxo do passo de prova de vida que gerou
                  este relatório.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Estado ao nível da funcionalidade deste passo de prova de
                  vida. Independente do `status` da sessão de nível superior —
                  uma sessão pode alcançar a sua decisão global enquanto uma
                  funcionalidade individual permanece `In Review`.
              method:
                type: string
                description: Método utilizado para a prova de vida
              score:
                type: number
                description: Pontuação de confiança da prova de vida
              reference_image:
                type: string
                format: uri
                description: URL da imagem de referência utilizada
              video_url:
                type: string
                format: uri
                description: URL do vídeo da verificação de prova de vida
              age_estimation:
                type: number
                description: Idade estimada da pessoa
              matches:
                type: array
                description: >-
                  Rostos semelhantes encontrados pela pesquisa de rostos
                  duplicados (melhores correspondências, entradas na lista de
                  bloqueio/lista de permissões em primeiro lugar). O campo
                  `source` de cada entrada indica de onde veio o rosto
                  correspondente: `session` (outra sessão de verificação),
                  `imported` (um rosto carregado associado a um utilizador do
                  fornecedor), `list_entry` (um rosto da lista de
                  permissões/bloqueio gerida pela organização) ou
                  `retained_template` (um template biométrico sem imagem
                  armazenado num utilizador, listado em
                  `/v3/biometric-templates/`). `session_id`, `session_number`,
                  `status` e `api_service` são `null` para fontes que não sejam
                  sessões. As correspondências `imported` continuam a preencher
                  `vendor_data`, `verification_date` e — quando o utilizador do
                  fornecedor tem um nome registado — `user_details` (apenas com
                  `full_name`) a partir do registo do utilizador do fornecedor;
                  as correspondências `retained_template` preenchem
                  `vendor_user_id`, `vendor_data`, `biometric_template_id` e
                  `verification_date`, enquanto os seus campos de imagem e
                  identidade são `null`; as correspondências `list_entry`
                  devolvem todos estes como `null`.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID de sessão do rosto correspondente. `null` quando
                        `source` é `imported`, `list_entry` ou
                        `retained_template`.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: >-
                        Semelhança facial entre as duas imagens, limitada a
                        0–100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` da sessão correspondente ou utilizador
                        associado para rostos importados e com modelo retido.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID do utilizador vinculado para correspondências de
                        `imported` e `retained_template` e para correspondências
                        de sessão vinculadas a um utilizador. `null` para
                        entradas de lista e sessões sem utilizador.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID do template biométrico retido. Definido apenas quando
                        `source` é `retained_template`; `null` caso contrário.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Quando o rosto correspondente foi capturado ou quando um
                        modelo retido foi criado. `null` para entradas de lista.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        Dados de identidade da sessão correspondente ou do
                        perfil de Utilizador importado. Sempre `null` para
                        correspondências de `retained_template` e `list_entry`.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Imagem de referência para correspondências baseadas em
                        imagens. Sempre `null` para correspondências de
                        `retained_template` porque os modelos retidos não contêm
                        imagem.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        Estado do ciclo de vida da sessão correspondente. `null`
                        para fontes que não sejam sessões.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Indica se o rosto correspondente está numa lista de
                        bloqueio.
                    is_allowlisted:
                      type: boolean
                      description: >-
                        Indica se o rosto correspondente está numa lista de
                        permissões.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Serviço da API autónomo da sessão correspondente (por
                        exemplo, `PASSIVE_LIVENESS`, `FACE_MATCH`); `null` para
                        sessões de fluxo e origens que não sejam sessões.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        Origem da face correspondente: `session`, `imported`
                        (carregamento de face de utilizador), `list_entry`
                        (lista de permissão/bloqueio) ou `retained_template` (um
                        modelo biométrico sem imagem armazenado num utilizador,
                        listado em `/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: >-
                        A funcionalidade que gerou este aviso. O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo (por
                        exemplo, `PHONE` dentro de
                        `phone_verifications[].warnings`), mas o enum acima é a
                        referência autoritativa para todos os avisos de
                        funcionalidades no payload da decisão.
                    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: O ID do nó do grafo do fluxo que gerou este aviso
              face_quality:
                type: number
                nullable: true
                description: >-
                  Pontuação de qualidade da imagem facial (0-100%). Disponível
                  apenas para prova de vida passiva.
              face_luminance:
                type: number
                nullable: true
                description: >-
                  Pontuação de luminância/brilho do rosto (0-100%). Disponível
                  apenas para prova de vida passiva.
        face_matches:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de correspondência facial** produzidos por
            passos de correspondência facial no grafo do fluxo. Sempre um array
            JSON — nunca um objeto `face_match` singular. `null` até que pelo
            menos um passo de correspondência facial tenha produzido dados. Cada
            item é o relatório completo, incluindo `node_id`, `status` ao nível
            da funcionalidade, `score` de similaridade, `source_image`,
            `target_image` e `warnings[]`.
          items:
            type: object
            description: Um relatório de correspondência facial — o relatório completo.
            properties:
              node_id:
                type: string
                description: >-
                  ID do nó do grafo do fluxo do passo de correspondência facial
                  que gerou este relatório.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Estado ao nível da funcionalidade deste passo de
                  correspondência facial. Independente do `status` da sessão de
                  nível superior — uma sessão pode alcançar a sua decisão global
                  enquanto uma funcionalidade individual permanece `In Review`.
              score:
                type: number
                description: Pontuação de confiança da correspondência facial
              source_image_session_id:
                type: string
                format: uuid
                nullable: true
                description: >-
                  ID de sessão sob o qual o retrato de origem (referência) está
                  armazenado. Em fluxos de autenticação biométrica, este é o
                  próprio id da sessão (o retrato submetido é armazenado sob a
                  nova sessão). `null` quando a imagem de origem é o retrato do
                  documento da mesma sessão.
              source_image:
                type: string
                format: uri
                description: URL da imagem de origem utilizada para comparação
              target_image:
                type: string
                format: uri
                description: URL da imagem de destino utilizada para comparação
              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: >-
                        A funcionalidade que gerou este aviso. O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo (por
                        exemplo, `PHONE` dentro de
                        `phone_verifications[].warnings`), mas o enum acima é a
                        referência autoritativa para todos os avisos de
                        funcionalidades no payload da decisão.
                    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: O ID do nó do grafo do fluxo que gerou este aviso
                description: Avisos de verificação da correspondência facial
              face_coverage:
                type: object
                nullable: true
                description: >-
                  Indica se os olhos, a boca e o rosto estão tapados na imagem
                  capturada. Devolvido apenas por `GET
                  /v3/session/{sessionId}/decision/`; não faz parte dos payloads
                  de webhook. `null` quando não existe uma leitura de cobertura.
                properties:
                  eyes:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` significa que a leitura é apenas evidência
                          auxiliar e não desencadeia nenhum aviso.
                      visibility_score:
                        type: number
                        nullable: true
                  mouth:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` significa que a leitura é apenas evidência
                          auxiliar e não desencadeia nenhum aviso.
                      visibility_score:
                        type: number
                        nullable: true
                  face:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` significa que a leitura é apenas evidência
                          auxiliar e não desencadeia nenhum aviso.
                      visibility_score:
                        type: number
                        nullable: true
        phone_verifications:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de verificação de telefone** — sempre um array
            JSON, nunca um objeto `phone` singular. `null` até que pelo menos um
            passo de telefone tenha produzido dados. Cada item é o relatório
            completo, incluindo `node_id`, `status` ao nível da funcionalidade,
            o número de telefone e metadados do país, `lifecycle[]`, `matches[]`
            e `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificador único para este passo de telefone no grafo do
                  fluxo.
              status:
                type: string
                description: >-
                  Estado ao nível da funcionalidade deste passo de verificação
                  de telefone. Independente do `status` da sessão de nível
                  superior — uma sessão pode alcançar a sua decisão global
                  enquanto uma funcionalidade individual permanece `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              phone_number_prefix:
                type: string
                description: Prefixo do indicativo telefónico do país
              phone_number:
                type: string
                description: Número de telefone sem prefixo de país
              full_number:
                type: string
                description: Número de telefone completo com indicativo do país
              country_code:
                type: string
                description: Código de país de duas letras (ISO 3166-1 alfa-2)
              country_name:
                type: string
                description: Nome completo do país
              carrier:
                type: object
                properties:
                  name:
                    type: string
                    description: Nome da operadora telefónica
                  type:
                    type: string
                    description: Tipo de linha telefónica (móvel, fixa, etc.)
              is_disposable:
                type: boolean
                description: Se o número de telefone é de um serviço descartável
              is_virtual:
                type: boolean
                description: Se o número de telefone é virtual
              verification_method:
                type: string
                description: Método utilizado para verificar o número de telefone
              verification_attempts:
                type: integer
                description: Número de tentativas de verificação realizadas
              verified_at:
                type: string
                format: date-time
                description: Carimbo de data/hora de quando o telefone foi verificado
              lifecycle:
                type: array
                description: >-
                  Lista cronológica de eventos no ciclo de vida da verificação
                  de telefone.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        Payload específico do evento. Os eventos de envio contêm
                        `status`, `reason`, `channel`, `actual_channel`; os
                        eventos de entrega contêm `channel`, `status`; os
                        eventos de verificação de código contêm `code_tried`,
                        `status`; os eventos de estado final contêm `reason` —
                        ou `null` quando não há motivo a reportar (por exemplo,
                        `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: Lista de avisos relacionados com a verificação de telefone
                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: >-
                        A funcionalidade que gerou este aviso. O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo (por
                        exemplo, `PHONE` dentro de
                        `phone_verifications[].warnings`), mas o enum acima é a
                        referência autoritativa para todos os avisos de
                        funcionalidades no payload da decisão.
                    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: O ID do nó do grafo do fluxo que gerou este aviso
              matches:
                type: array
                description: >-
                  Correspondências encontradas para este número de telefone.
                  Cada correspondência tem uma `source`: `session` (outra sessão
                  de verificação na sua aplicação correspondeu ao mesmo número,
                  devolvida com
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  ou `list_entry` (o número está numa lista de
                  permissão/bloqueio gerida pela organização — consulte
                  `/management-api/lists/overview`). As correspondências entre
                  sessões utilizam diferentes `vendor_data` e estão limitadas a
                  5.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    phone_number:
                      type: string
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        Origem desta correspondência. `session` significa que
                        outra sessão de verificação na sua aplicação
                        correspondeu a este valor. `list_entry` significa que o
                        valor coincidiu com uma lista gerida pela organização
                        (lista de permissões/lista de bloqueio) — consulte a
                        visão geral de listas da API de gestão em
                        `/management-api/lists/overview` para saber como gerir
                        essas listas.
              phone_intelligence:
                allOf:
                  - $ref: '#/components/schemas/PhoneIntelligence'
                description: >-
                  Sinais de inteligência telefónica. Presente apenas quando o
                  módulo adicional de inteligência telefónica foi executado para
                  este número.
              phone_social:
                allOf:
                  - $ref: '#/components/schemas/PhoneSocialFootprint'
                description: >-
                  Presença social (social footprint) do número. Presente apenas
                  quando o suplemento de presença social foi executado para este
                  número.
        email_verifications:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de verificação de e-mail** — sempre um array
            JSON, nunca um objeto `email` singular. `null` até que pelo menos um
            passo de e-mail tenha produzido dados. Cada item é o relatório
            completo, incluindo `node_id`, `status` ao nível da funcionalidade,
            o endereço de e-mail, dados de violações de segurança,
            `lifecycle[]`, `matches[]` e `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificador único para este passo de e-mail no grafo do
                  fluxo.
              status:
                type: string
                description: >-
                  Estado ao nível da funcionalidade deste passo de verificação
                  de e-mail. Independente do `status` da sessão de nível
                  superior — uma sessão pode alcançar a sua decisão global
                  enquanto uma funcionalidade individual permanece `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              email:
                type: string
                description: O endereço de e-mail que está a ser verificado
              is_breached:
                type: boolean
                description: Indica se o e-mail foi encontrado em fugas de dados conhecidas
              breaches:
                type: array
                description: >-
                  Lista de violações conhecidas em que este e-mail foi
                  encontrado
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Nome da violação
                    domain:
                      type: string
                      description: Domínio afetado pela violação
                    logo_path:
                      type: string
                      description: URL para o logótipo do serviço comprometido
                    breach_date:
                      type: string
                      format: date
                      description: Data em que a violação ocorreu
                    description:
                      type: string
                      description: Descrição da violação
                    is_verified:
                      type: boolean
                      description: Indica se a violação foi verificada
                    data_classes:
                      type: array
                      description: Tipos de dados expostos na violação de dados
                      items:
                        type: string
                    breach_emails_count:
                      type: integer
                      description: >-
                        Número de endereços de e-mail afetados na violação de
                        dados
              is_disposable:
                type: boolean
                description: Indica se o e-mail é de um fornecedor de e-mail descartável
              is_undeliverable:
                type: boolean
                description: Indica se o endereço de e-mail não pode ser entregue
              verification_attempts:
                type: integer
                description: Número de tentativas de verificação para este e-mail
              verified_at:
                type: string
                format: date-time
                description: Carimbo de data/hora de quando o e-mail foi verificado
              warnings:
                type: array
                description: Lista de avisos relacionados com a verificação de e-mail
                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: >-
                        A funcionalidade que gerou este aviso. O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo (por
                        exemplo, `PHONE` dentro de
                        `phone_verifications[].warnings`), mas o enum acima é a
                        referência autoritativa para todos os avisos de
                        funcionalidades no payload da decisão.
                    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: O ID do nó do grafo do fluxo que gerou este aviso
              lifecycle:
                type: array
                description: >-
                  Lista cronológica de eventos no ciclo de vida da verificação
                  de e-mail.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        Payload específico do evento. Os eventos de envio contêm
                        `status`, `reason`; os eventos de verificação de código
                        contêm `code_tried`, `status`; os eventos de estado
                        final contêm `reason` — ou `null` quando não há motivo a
                        reportar (por exemplo, `EMAIL_VERIFICATION_APPROVED`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              matches:
                type: array
                description: >-
                  Correspondências encontradas para este endereço de e-mail.
                  Cada correspondência tem uma `source`: `session` (outra sessão
                  de verificação na sua aplicação correspondeu ao mesmo e-mail,
                  devolvida com
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  ou `list_entry` (o e-mail está numa lista de
                  permissão/bloqueio gerida pela organização — consulte
                  `/management-api/lists/overview`). As correspondências entre
                  sessões utilizam diferentes `vendor_data` e estão limitadas a
                  5.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    email:
                      type: string
                      format: email
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        Origem desta correspondência. `session` significa que
                        outra sessão de verificação na sua aplicação
                        correspondeu a este valor. `list_entry` significa que o
                        valor coincidiu com uma lista gerida pela organização
                        (lista de permissões/lista de bloqueio) — consulte a
                        visão geral de listas da API de gestão em
                        `/management-api/lists/overview` para saber como gerir
                        essas listas.
              email_intelligence:
                allOf:
                  - $ref: '#/components/schemas/EmailIntelligence'
                description: >-
                  Sinais de inteligência de e-mail. Presentes apenas quando o
                  complemento de inteligência de e-mail foi executado para este
                  endereço.
              email_social:
                allOf:
                  - $ref: '#/components/schemas/EmailSocialFootprint'
                description: >-
                  Presença social (social footprint) do endereço. Presente
                  apenas quando o suplemento de presença social foi executado
                  para este endereço.
        poa_verifications:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de Comprovativo de morada (POA)** — sempre um
            array JSON, nunca um objeto `poa` singular. `null` até que pelo
            menos um passo de POA tenha produzido dados. Cada item é o relatório
            completo, incluindo `node_id`, `status` ao nível da funcionalidade,
            o URL do ficheiro do documento, emissor, datas, morada analisada e
            `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificador exclusivo para este passo de POA no grafo do
                  fluxo.
              status:
                type: string
                description: >-
                  Estado ao nível da funcionalidade deste passo de Comprovativo
                  de morada. Independente do `status` da sessão de nível
                  superior — uma sessão pode alcançar a sua decisão global
                  enquanto uma funcionalidade individual permanece `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              document_file:
                type: string
                format: uri
                description: URL do documento de comprovativo de morada
              issuing_state:
                type: string
                description: Código de país de duas letras do Estado emissor
              document_type:
                type: string
                description: Tipo de documento comprovativo de morada
              document_subtype:
                type: string
                nullable: true
                description: >-
                  Classificação mais específica do documento de comprovativo de
                  morada dentro do seu `document_type`, quando detetada. `null`
                  caso contrário.
              document_language:
                type: string
                description: Código de idioma do documento
              document_metadata:
                type: object
                properties:
                  file_size:
                    type: integer
                    description: Tamanho do documento
                  content_type:
                    type: string
                    description: Tipo de conteúdo do documento
                  creation_date:
                    type: string
                    format: date
                    description: Data em que o documento foi criado
                  modified_date:
                    type: string
                    format: date
                    description: Data em que o documento foi modificado
                  overlay_manipulation:
                    type: object
                    nullable: true
                    description: >-
                      Análise forense de PDF para suspeita de manipulação de
                      texto sobreposto. Nulo quando não forem encontradas
                      evidências de manipulação de texto sobreposto ou o
                      documento não for um PDF.
                    properties:
                      detected:
                        type: boolean
                        description: >-
                          Se foram detetadas evidências de manipulação de texto
                          sobreposto.
                      analyzed:
                        type: boolean
                        description: Indica se foi possível analisar o PDF.
                      analysis_incomplete:
                        type: boolean
                        description: >-
                          Presente e verdadeiro apenas quando o ficheiro não
                          pôde ser verificado na íntegra. O que foi verificado
                          mantém as suas conclusões sempre que possível, e o
                          documento apresenta o aviso de substituição de texto
                          não comprovada.
                      signals:
                        type: array
                        items:
                          type: string
                        description: >-
                          Sinais forenses detetados, tais como
                          duplicate_font_subset ou glyph_fragmentation.
                      manipulated_regions:
                        type: array
                        description: >-
                          Áreas com suspeita de manipulação nas coordenadas da
                          página do PDF.
                        items:
                          type: object
                          properties:
                            page:
                              type: integer
                            x:
                              type: number
                            'y':
                              type: number
                            width:
                              type: number
                            height:
                              type: number
                            page_width:
                              type: number
                            page_height:
                              type: number
                  creator:
                    type: string
                    nullable: true
                    description: >-
                      Aplicação que criou o documento, registada nos metadados
                      do documento.
                  producer:
                    type: string
                    nullable: true
                    description: >-
                      Software utilizado para criar o PDF, registado nos
                      respetivos metadados.
                  software:
                    type: string
                    nullable: true
                    description: >-
                      Software de edição/processamento registado nos metadados
                      do ficheiro.
                  encryption:
                    type: string
                    nullable: true
                    description: Esquema de encriptação do documento, quando encriptado.
                  is_signed:
                    type: boolean
                    nullable: true
                    description: Indica se o PDF contém uma assinatura digital.
                  is_tampered:
                    type: boolean
                    nullable: true
                    description: >-
                      Se a validação da assinatura indica que o ficheiro foi
                      modificado após a assinatura.
                  signature_info:
                    type: object
                    nullable: true
                    description: >-
                      Detalhes da(s) assinatura(s) digital(ais), quando
                      presentes.
                  exif_original_date:
                    type: string
                    nullable: true
                    description: >-
                      Data de captura original EXIF, para carregamentos de
                      imagens.
                  exif_digitized_date:
                    type: string
                    nullable: true
                    description: Data de digitalização EXIF, para carregamentos de imagens.
                  processed_by_known_editor:
                    type: boolean
                    nullable: true
                    description: >-
                      Indica se os metadados do ficheiro sugerem processamento
                      por um editor de documentos conhecido.
                  has_different_creation_mod_date:
                    type: boolean
                    nullable: true
                    description: >-
                      Indica se as datas de criação e de modificação diferem —
                      um sinal comum de manipulação.
                description: >-
                  Metadados forenses do ficheiro extraídos do documento de
                  comprovativo de morada carregado. Contém sempre as chaves
                  abaixo (os valores são `null` quando não aplicável, por
                  exemplo, datas EXIF para ficheiros PDF). `null` quando não foi
                  possível extrair metadados.
                nullable: true
              issuer:
                type: string
                description: Nome do emissor do documento
              issue_date:
                type: string
                format: date
                description: Data em que o documento foi emitido
              expiration_date:
                type: string
                format: date
                nullable: true
                description: Data de validade do documento, se disponível
              poa_address:
                type: string
                description: Morada em bruto do documento de comprovativo de morada
              poa_formatted_address:
                type: string
                description: >-
                  Morada formatada a partir do documento de comprovativo de
                  morada
              poa_parsed_address:
                type: object
                properties:
                  address_type:
                    type: string
                    description: Tipo de morada (Rua, Avenida, etc.)
                  street_1:
                    type: string
                    description: Morada principal
                  street_2:
                    type: string
                    nullable: true
                    description: Morada secundária
                  city:
                    type: string
                    description: Nome da cidade
                  region:
                    type: string
                    description: Nome da região ou estado
                  country:
                    type: string
                    description: Código de país de duas letras
                  postal_code:
                    type: string
                    description: Código postal
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                        description: Coordenada de latitude
                      longitude:
                        type: number
                        description: Coordenada de longitude
              name_on_document:
                type: string
                nullable: true
                description: >-
                  Nome do titular da conta / destinatário extraído do documento
                  de comprovativo de morada (POA), utilizado para
                  correspondência de nomes. `null` quando não foi possível
                  extrair nenhum nome.
              name_match_score_expected_details:
                type: number
                nullable: true
                description: >-
                  Pontuação de semelhança (0-100) entre `name_on_document` e o
                  nome esperado fornecido na criação da sessão. `null` quando
                  faltar algum dos lados.
              name_match_score_id_verification:
                type: number
                nullable: true
                description: >-
                  Pontuação de semelhança (0-100) entre `name_on_document` e o
                  nome extraído pelo passo de verificação de identidade. `null`
                  quando faltar algum dos lados.
              expected_details_address:
                type: string
                nullable: true
                description: Morada bruta esperada para verificação
              expected_details_formatted_address:
                type: string
                nullable: true
                description: Morada formatada esperada para verificação
              expected_details_parsed_address:
                type: object
                description: Detalhes analisados da morada esperada para verificação
              extra_fields:
                type: object
                description: >-
                  Dados bancários e de contacto adicionais extraídos do
                  documento.
                properties:
                  bank_account_number:
                    type: string
                    nullable: true
                  bank_iban:
                    type: string
                    nullable: true
                  bank_sort_code:
                    type: string
                    nullable: true
                  bank_routing_number:
                    type: string
                    nullable: true
                  bank_swift_bic:
                    type: string
                    nullable: true
                  bank_branch_name:
                    type: string
                    nullable: true
                  bank_branch_address:
                    type: string
                    nullable: true
                  document_phone_number:
                    type: string
                    nullable: true
                  additional_names:
                    type: array
                    items:
                      type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: Ficheiros adicionais de comprovativo de morada
              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: >-
                        A funcionalidade que gerou este aviso. O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo (por
                        exemplo, `PHONE` dentro de
                        `phone_verifications[].warnings`), mas o enum acima é a
                        referência autoritativa para todos os avisos de
                        funcionalidades no payload da decisão.
                    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: O ID do nó do grafo do fluxo que gerou este aviso
              detected_codes:
                type: array
                description: >-
                  Códigos QR e códigos de barras detetados em todas as páginas
                  processadas do documento. Vazio quando nenhum é encontrado. Um
                  código QR localizado mas não descodificável tem
                  `parsed_payload: null`.
                items:
                  $ref: '#/components/schemas/DocumentAIDetectedCode'
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  Validação de endereço da morada constante deste comprovativo
                  de morada: se existe e a sua forma normalizada, tal como lida
                  no documento (uma correção posterior de `poa_address` não a
                  executa novamente). Presente quando este passo de Comprovativo
                  de morada ativou o suplemento de Validação de endereço e o
                  carregamento passou nas verificações de documentos; `null`
                  caso contrário.
        document_ai_documents:
          type: array
          nullable: true
          description: >-
            **Relatórios do Document AI agrupados por nó do fluxo** — sempre um
            array JSON, nunca um objeto singular. `null` até que pelo menos um
            passo do Document AI tenha produzido dados. Presente apenas quando
            `session_kind = user`. Cada item é um grupo de nós com um `status`
            agregado, o `node_id`, um array `items[]` dos resultados por
            documento (dados extraídos indexados pela chave de campo
            configurada) e `warnings`.
          items:
            type: object
            description: Resultados de Document AI agrupados por nó do fluxo.
            properties:
              status:
                type: string
                description: >-
                  Estado agregado do Document AI para este nó, compilado a
                  partir dos seus `items[]`.
                enum:
                  - Approved
                  - Declined
                  - In Review
                  - Not Finished
              node_id:
                type: string
                nullable: true
                description: >-
                  Identificador exclusivo para este passo de Document AI no
                  grafo do fluxo.
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    node_id:
                      type: string
                      nullable: true
                      description: Nó do grafo do fluxo que gerou este documento.
                    document_key:
                      type: string
                      description: >-
                        Chave do documento configurado no Document AI a que este
                        ficheiro corresponde.
                    original_filename:
                      type: string
                      nullable: true
                      description: Nome do ficheiro tal como carregado pelo utilizador.
                    file_size:
                      type: integer
                      nullable: true
                      description: Tamanho do ficheiro em bytes.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Ligação pré-assinada de curta duração para o ficheiro
                        carregado.
                    status:
                      type: string
                      enum:
                        - Approved
                        - Declined
                        - In Review
                        - Not Finished
                      description: Estado do Document AI por documento.
                    extracted_data:
                      type: object
                      additionalProperties: true
                      nullable: true
                      description: >-
                        Valores extraídos pelo Document AI, indexados pela chave
                        de campo configurada `key`. Cada valor é uma string,
                        número ou `null`.
                    detected_codes:
                      type: array
                      description: >-
                        Códigos QR e códigos de barras detetados em todas as
                        páginas processadas. Vazio quando nenhum é encontrado.
                        Um código QR localizado mas não descodificável tem
                        `parsed_payload: null`.
                      items:
                        $ref: '#/components/schemas/DocumentAIDetectedCode'
                    fields:
                      type: array
                      description: Os campos de extração configurados para este documento.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: >-
                              Chave de campo estável utilizada como a chave em
                              `extracted_data`.
                          name:
                            type: string
                            description: Nome de campo legível.
                          instruction:
                            type: string
                            description: Instrução de extração apresentada ao modelo.
                          type:
                            type: string
                            enum:
                              - text
                              - number
                              - date
                            description: Tipo de valor esperado do campo extraído.
                          required:
                            type: boolean
                            description: Whether this field is required.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        Metadados forenses do ficheiro extraídos do documento
                        carregado (por exemplo, `is_tampered`). `null` quando
                        não foi possível extrair nada.
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        Referência cruzada dos campos extraídos do documento com
                        outros dados da sessão. `null` se não tiver sido
                        realizada qualquer verificação cruzada.
                    created_at:
                      type: string
                      format: date-time
              warnings:
                type: array
                nullable: true
                items:
                  type: object
                description: Registos de aviso gerados para este nó do Document AI.
        questionnaire_responses:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de respostas a questionários** — sempre um
            array JSON, nunca um objeto `questionnaire` singular. `null` até que
            pelo menos um passo de questionário tenha produzido dados. Cada item
            é o relatório completo, incluindo `node_id`, os metadados do
            questionário, secções com elementos de formulário e as respostas do
            utilizador.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificador único para este passo de questionário no grafo
                  do fluxo.
              questionnaire_id:
                type: string
                description: Identificador exclusivo do questionário
              title:
                type: string
                description: Título do questionário
              description:
                type: string
                description: Descrição do questionário
              languages:
                type: array
                items:
                  type: string
                description: Idiomas suportados
              default_language:
                type: string
                description: Idioma predefinido
              is_active:
                type: boolean
                description: Se o questionário está ativo
              is_simple_questionnaire:
                type: boolean
                description: >-
                  Se o questionário é um formulário linear simples (sem grafo de
                  ramificação).
              questionnaire_group_id:
                type: string
                format: uuid
                nullable: true
                description: Identificador estável do grupo de questionários entre versões.
              version:
                type: integer
                nullable: true
                description: Número da versão do questionário que foi respondido.
              published_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Carimbo de data/hora em que esta versão do questionário foi
                  publicada.
              sections:
                type: array
                items:
                  type: object
                  properties:
                    title:
                      type: string
                      nullable: true
                      description: Título da secção
                    description:
                      type: string
                      nullable: true
                      description: Descrição da secção
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          uuid:
                            type: string
                            description: Identificador exclusivo do item
                          value:
                            type: string
                            nullable: true
                            description: >-
                              Identificador de nó estável deste elemento de
                              formulário no grafo do questionário.
                          element_type:
                            type: string
                            description: Tipo do elemento do questionário
                          is_required:
                            type: boolean
                            description: Indica se o item é obrigatório
                          title:
                            type: string
                            description: Título do item
                          description:
                            type: string
                            nullable: true
                            description: Descrição do item
                          placeholder:
                            type: string
                            nullable: true
                            description: Texto de marcador de posição
                          choices:
                            type: array
                            nullable: true
                            items:
                              type: object
                              properties:
                                label:
                                  type: string
                                value:
                                  type: string
                                requires_text_input:
                                  type: boolean
                                  description: >-
                                    Se esta opção requer introdução de texto
                                    adicional
                                  nullable: true
                              required:
                                - label
                                - value
                            description: >-
                              Opções para elementos de menu suspenso ou de
                              escolha única
                          max_files:
                            type: integer
                            description: Número máximo de ficheiros permitidos
                            nullable: true
                          answer:
                            type: object
                            description: Resposta fornecida para o item
                            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: >-
                              Regra de requisito condicional, quando o elemento
                              só é obrigatório para determinadas respostas.
                          repeatable_config:
                            type: object
                            nullable: true
                            description: >-
                              Configuração para grupos de elementos repetíveis,
                              quando aplicável.
                        required:
                          - uuid
                          - value
                          - element_type
                          - is_required
                          - title
              status:
                type: string
                description: Estado do questionário
        bank_verifications:
          type: array
          nullable: true
          description: >-
            Resultados da Verificação bancária, um item por passo de Verificação
            bancária, para Verificação de utilizadores e Verificação de empresas
            (KYB). `null` até que um passo produza um. O `method` de cada item
            indica como a conta foi verificada: `open_banking` (início de sessão
            bancário) ou `account_lookup` (verificação de conta), ou uma
            alternativa por `statement` ou `microdeposits`, e `none` quando a
            pessoa continuou sem banco antes de qualquer tentativa ser avaliada
            (`continued_without_bank`). Consulte [Métodos de verificação
            bancária](/pt/core-technology/bank-verification/verification-methods).
          items:
            $ref: '#/components/schemas/BankVerificationResult'
        signatures:
          type: array
          description: >-
            Resultados da Assinatura eletrónica, um item por signatário e passo
            de assinatura, para Verificação de utilizadores e Verificação de
            empresas. Presente apenas quando o fluxo tem um passo de Assinatura
            eletrónica; uma matriz vazia até que um signatário o atinja.
            Consulte o [Relatório de assinatura
            eletrónica](/pt/core-technology/electronic-signature/report-electronic-signature).
          items:
            $ref: '#/components/schemas/SignatureResult'
        aml_screenings:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de triagem AML** — sempre um array JSON, nunca
            um objeto `aml` no singular. `null` até que pelo menos um passo de
            AML tenha produzido dados. Cada item é o relatório completo,
            incluindo `node_id`, `status` ao nível da funcionalidade,
            `total_hits`, `entity_type`, `hits[]`, `score`, `screened_data`,
            `is_ongoing_monitoring_enabled` e `warnings[]`.
          items:
            $ref: '#/components/schemas/AMLScreening'
        ip_analyses:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de Análise de dispositivo e IP** — sempre um
            array JSON, nunca um objeto `ip_analysis` singular. `null` até que
            pelo menos um passo de análise de IP tenha produzido dados. Cada
            item é o relatório completo, incluindo `node_id`, `status` ao nível
            da funcionalidade, dados de IP e geolocalização, impressão digital
            do dispositivo e `warnings[]`. As entradas com `(node_id,
            ip_address, device_fingerprint)` duplicados são deduplicadas no
            servidor.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Identificador exclusivo para este passo de Análise de
                  dispositivo e IP no grafo do fluxo.
              status:
                type: string
                description: >-
                  Estado ao nível da funcionalidade desta entrada de Análise de
                  dispositivo e IP. Independente do `status` da sessão de nível
                  superior — uma sessão pode alcançar a sua decisão global
                  enquanto uma funcionalidade individual permanece `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              device_brand:
                type: string
                description: Marca do dispositivo utilizado
              device_model:
                type: string
                description: Modelo do dispositivo utilizado
              browser_family:
                type: string
                description: Família de navegador utilizada
              os_family:
                type: string
                description: Família do sistema operativo
              platform:
                type: string
                description: Tipo de plataforma (mobile, desktop, etc)
              device_fingerprint:
                type: string
                nullable: true
                description: Identificador exclusivo da impressão digital do dispositivo
              ip_country:
                type: string
                description: País detetado a partir do IP
              ip_country_code:
                type: string
                description: Código de país de duas letras a partir do IP
              ip_state:
                type: string
                description: Estado/região detetado a partir do IP
              ip_city:
                type: string
                description: Cidade detetada a partir do IP
              latitude:
                type: number
                description: Coordenada de latitude da localização do IP
              longitude:
                type: number
                description: Coordenada de longitude da localização do IP
              ip_address:
                type: string
                description: Endereço IP
              isp:
                type: string
                nullable: true
                description: Fornecedor de Serviços de Internet
              organization:
                type: string
                nullable: true
                description: Organização associada ao IP
              is_vpn_or_tor:
                type: boolean
                description: Se o IP é proveniente de uma VPN ou rede Tor
              is_data_center:
                type: boolean
                description: Se o IP é proveniente de um centro de dados
              time_zone:
                type: string
                description: Fuso horário detetado a partir do IP
              time_zone_offset:
                type: string
                description: Desvio do fuso horário
              ip:
                type: object
                description: >-
                  Geolocalização por IP desta entrada mais distâncias de grande
                  círculo (km) até à morada do documento de identificação e à
                  morada do documento de comprovativo de morada. As distâncias
                  são `null` quando qualquer um dos lados não tem uma
                  localização resolúvel.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Coordenadas, ou `null` quando não disponíveis.
                  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: >-
                  Localização extraída da morada do documento de identificação
                  mais as distâncias (km) até à geolocalização do IP e à morada
                  do documento de comprovativo de morada (POA). `location` é
                  `null` quando nenhuma morada do documento pôde ser
                  geocodificada.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Coordenadas, ou `null` quando não disponíveis.
                  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: >-
                  Localização extraída do documento de comprovativo de morada
                  mais as distâncias (km) até à geolocalização do IP e à morada
                  do documento de identificação. `location` é `null` quando a
                  sessão não tem nenhum passo de POA ou a morada não pôde ser
                  geocodificada.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Coordenadas, ou `null` quando não disponíveis.
                  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: >-
                        A funcionalidade que gerou este aviso. O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo (por
                        exemplo, `PHONE` dentro de
                        `phone_verifications[].warnings`), mas o enum acima é a
                        referência autoritativa para todos os avisos de
                        funcionalidades no payload da decisão.
                    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: O ID do nó do grafo do fluxo que gerou este aviso
              matches:
                type: array
                description: >-
                  Correspondências entre sessões encontradas para o endereço IP
                  ou identidade do dispositivo desta entrada. Cada
                  correspondência é outra sessão de verificação na sua aplicação
                  (a `source` é sempre `session`) que partilha o mesmo valor,
                  pertencendo sempre a um utilizador do fornecedor /
                  `vendor_data` diferente do da sessão atual, limitada a 5 por
                  coletor (`device_fingerprint` soma dois coletores com limites
                  independentes, pelo que são possíveis até 10 entradas). Cada
                  item inclui `match_source`, `confidence`, `match_mode`,
                  `device_info` e `location_info`; as chaves
                  `recovery_similarity`, `tls_ja4_corroborated` e
                  `recovery_gate_reason` só estão presentes quando
                  `match_source` é `recovered_high`.
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: ID de sessão da sessão correspondente.
                    session_number:
                      type: integer
                      description: Número sequencial da sessão correspondente.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` da sessão correspondente — sempre
                        diferente do utilizador do fornecedor da sessão atual.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Data de criação da sessão correspondente
                        (`YYYY-MM-DDTHH:MM:SSZ`).
                    match_type:
                      type: string
                      enum:
                        - ip_address
                        - device_fingerprint
                      description: >-
                        Indica se a correspondência ocorreu no endereço IP ou na
                        impressão digital do dispositivo
                    match_source:
                      type: string
                      enum:
                        - ip_address
                        - persistent_id
                        - legacy_fp
                        - recovered_high
                      description: >-
                        Como esta correspondência foi obtida: `ip_address`
                        (endereço IP partilhado — colocalização de rede, não uma
                        afirmação de identidade do dispositivo), `persistent_id`
                        (identificador de dispositivo persistente exato
                        armazenado), `legacy_fp` (hash de fingerprint de
                        dispositivo legado `didit-fp-*`) ou `recovered_high`
                        (resultado de recuperação difusa de fingerprint de
                        elevada confiança). Candidatos de recuperação com menor
                        confiança surgem apenas como avisos de risco, nunca
                        neste array.
                    matched_value:
                      type: string
                      nullable: true
                      description: >-
                        O valor correspondente: o endereço IP partilhado, o
                        identificador persistente de dispositivo ou o hash de
                        fingerprint legado ou — para `recovered_high` — o UUID
                        do dispositivo recuperado.
                    status:
                      type: string
                      description: Estado do ciclo de vida da sessão correspondente.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Indica se o valor correspondente se encontra numa lista
                        de bloqueio. Atualmente sempre `false` para
                        correspondências de dispositivo/IP.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Serviço da API autónomo da sessão correspondente; `null`
                        para sessões de fluxo.
                    source:
                      type: string
                      enum:
                        - session
                      description: >-
                        Sempre `session` para correspondências de dispositivo/IP
                        — cada correspondência é outra sessão de verificação na
                        sua aplicação.
                    device_info:
                      type: object
                      description: >-
                        Detalhes do dispositivo observados na sessão
                        correspondente.
                      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: >-
                        Detalhes de rede e geolocalização observados na sessão
                        correspondente.
                      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: >-
                        Confiança de identificação do lado do servidor,
                        calculada como `1 - P(false positive)`: `1.0` para
                        correspondências determinísticas (`persistent_id`, ou
                        `recovered_high` assente em hardware), `0.5` para
                        `legacy_fp`, `0.0` para `ip_address` (apenas
                        colocalização), e um valor ajustado por corroboração
                        inferior a `1.0` para correspondências probabilísticas
                        recuperadas (mais elevado quando a impressão digital TLS
                        JA4 e o país do IP coincidem de forma independente).
                    match_mode:
                      type: string
                      enum:
                        - deterministic
                        - probabilistic
                        - co_occurrence
                      description: >-
                        Classe de evidência da correspondência: `deterministic`
                        (identificador exato armazenado ou enraizado no hardware
                        que não pode colidir entre dispositivos físicos),
                        `probabilistic` (evidência de impressão digital difusa)
                        ou `co_occurrence` (apenas rede partilhada, sem
                        reivindicação de identidade do dispositivo).
                    recovery_similarity:
                      type: number
                      description: >-
                        Similaridade de cosseno da correspondência de
                        recuperação da impressão digital, arredondada a 4 casas
                        decimais. Presente apenas quando `match_source` é
                        `recovered_high`.
                    tls_ja4_corroborated:
                      type: boolean
                      description: >-
                        Indica se as impressões digitais TLS JA4 das duas
                        observações coincidem — um sinal observado pelo servidor
                        que o navegador não consegue falsificar. Presente apenas
                        quando `match_source` é `recovered_high`.
                    recovery_gate_reason:
                      type: string
                      description: >-
                        O motivo pelo qual a correspondência de recuperação
                        passou na barreira rígida contra falsos positivos:
                        `hardware_root_match` (um identificador de dispositivo
                        ancorado em hardware correspondeu exatamente) ou, em
                        configurações que admitem evidências apenas de sondagem,
                        `exact_composite_plus_<n>_families` /
                        `very_high_similarity_plus_<n>_families`. Presente
                        apenas quando `match_source` é `recovered_high`.
              browser_version:
                type: string
                nullable: true
              os_version:
                type: string
                nullable: true
              user_agent:
                type: string
                nullable: true
                description: A string de user agent do navegador.
              accept_language:
                type: string
                nullable: true
                description: O cabeçalho `Accept-Language` enviado pelo navegador.
              session_identifier:
                type: string
                nullable: true
                description: >-
                  Identificador da sessão de navegação na qual a verificação foi
                  executada.
              session_age_ms:
                type: integer
                nullable: true
                description: >-
                  Idade dessa sessão de navegação em milissegundos quando o
                  passo foi executado.
              coords_accuracy:
                type: number
                nullable: true
                description: >-
                  Raio de precisão, em metros, das coordenadas comunicadas pelo
                  dispositivo.
              raw_device_data:
                type: object
                nullable: true
                additionalProperties: true
                description: Sinais do dispositivo em bruto recolhidos para o passo.
        geolocation_checks:
          type: array
          nullable: true
          description: >-
            **Array de resultados de verificação de localização**, um por passo
            de verificação de localização: a tentativa aceite desse passo.
            `null` até que um passo de verificação de localização tenha
            produzido dados. As tentativas anteriores do mesmo passo estão em
            `geolocation_attempts`.
          items:
            $ref: '#/components/schemas/GeolocationCheck'
        geolocation_attempts:
          type: array
          nullable: true
          description: >-
            Cada tentativa de cada passo de verificação de Localização desta
            sessão, da mais antiga para a mais recente. As tentativas
            substituídas por um novo envio são excluídas. Um fluxo que omita
            `geolocation_checks` através dos respetivos atributos de resposta
            também omite esta lista.
          items:
            $ref: '#/components/schemas/GeolocationAttempt'
        database_validations:
          type: array
          nullable: true
          description: >-
            **Array de relatórios de Validação de base de dados** — sempre um
            array JSON, nunca um objeto `database_validation` singular. `null`
            até que pelo menos um passo de validação de base de dados tenha
            gerado dados. Cada item é o relatório completo, incluindo `node_id`,
            o `status` ao nível da funcionalidade, `screened_data`, as
            `validations[]` por serviço (cada uma com o seu `source_data` do
            registo) e `warnings[]`. Os campos `screened_data` e `source_data`
            variam por país:


            **ARG (Argentina)**: screened_data: {document_number, selfie,
            gender, first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, date_of_death,
            tax_id, tax_id_type, face_match_score, sit_1_since, banks,
            last_position, highest_position, rejected_checks}. Utiliza a
            validação biométrica de correspondência facial do RENAPER. O género
            é inferido automaticamente a partir da análise facial ou do nome
            próprio quando não se encontra presente no documento (por exemplo,
            em cartas de condução)


            **BOL (Bolívia)**: 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 (Brasil)**: screened_data: {tax_number, first_name, last_name,
            date_of_birth}. source_data inclui sempre {identification_number,
            first_name, last_name, date_of_birth, lgpd_minor, minor_under_18,
            minor_under_16} para correspondências bem-sucedidas de CPF.
            Consultas de adultos bem-sucedidas definem esses sinalizadores como
            false. O serviço Consulta CPF da Receita Federal pode devolver HTTP
            422 (menor de 18 anos) ou 451 (menor de 16 anos) com dados retidos
            pela LGPD; nesses casos, source_data define os sinalizadores de
            menor como true conforme apropriado, inclui o código de estado HTTP
            do serviço a montante e a validação ao nível do campo é no_match.
            Consulte a secção do Brasil da referência de Códigos de Resultado de
            Validação de base de dados para a lista completa de códigos.


            **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 (Colômbia)**: 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 (República Dominicana)**: screened_data: {personal_number}.
            source_data: {identification_number} (devolve apenas valid/invalid)


            **ECU (Equador)**: 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 (Espanha)**: 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 (México)**: 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}. Utiliza o registo civil do RENAPO.
            Está também disponível um serviço independente de verificação de
            validade do INE para o MEX como uma validação adicional individual.


            **PAN (Panamá)**: screened_data: {personal_number, selfie}.
            source_data: {identification_number}. Utiliza a validação biométrica
            do SIB


            **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 (Paraguai)**: 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 (Uruguai)**: 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: >-
                  Identificador único para este passo de validação de base de
                  dados no grafo do fluxo.
              issuing_state:
                type: string
                description: >-
                  Código ISO 3166-1 alfa-3 do país cujas fontes
                  governamentais/de registo foram consultadas (por exemplo,
                  `BRA`, `MEX`, `ESP`, `NGA`, `IDN`). A Validação de base de
                  dados abrange 60+ países nas Américas, Europa, África, Médio
                  Oriente e Ásia-Pacífico, além de fontes globais multipaís — a
                  cobertura expande-se regularmente, pelo que deve tratar o
                  valor como um conjunto aberto e não como um enum fixo.
              validation_type:
                type: string
                enum:
                  - one_by_one
                  - two_by_two
                  - not_enabled
                description: >-
                  Como o resultado foi corroborado: `one_by_one` (resultado de
                  serviço único), `two_by_two` (dois ou mais serviços distintos
                  estabeleceram correspondência total com o número de
                  identificação de forma independente) ou `not_enabled`
                  (persistido quando nenhum serviço produziu uma correspondência
                  utilizável). O valor nunca é `null`. Modos de validação
                  biométrica 2x2 dedicados estão atualmente disponíveis para
                  `ECU` e `PER`.
              screened_data:
                type: object
                description: >-
                  Os dados de entrada utilizados para validação. Os campos
                  variam consoante o país — consulte a documentação de Validação
                  de base de dados
                  (`/core-technology/database-validation/overview`) para obter
                  os formatos específicos de cada país.
                properties:
                  last_name:
                    type: string
                  first_name:
                    type: string
                  tax_number:
                    type: string
                    description: 'Brasil: CPF (11 dígitos)'
                  personal_number:
                    type: string
                    description: >-
                      Chile: RUT, DOM: Cédula (11 dígitos), ECU: Cédula (10
                      dígitos), ESP: DNI/NIE, MEX: CURP (18 carateres), PER: DNI
                      (8 dígitos), 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: Obrigatório para ESP
              validations:
                type: array
                description: >-
                  Uma entrada por serviço de registo que devolveu um payload de
                  validação. Cada entrada identifica o serviço (`service_id`,
                  `service_name`) e inclui a comparação de `validation` por
                  campo, o `outcome_code` / `outcome_detail` do serviço quando
                  reportado e o registo normalizado do serviço de registo em
                  `source_data`.
                items:
                  type: object
                  properties:
                    service_id:
                      type: string
                      description: >-
                        Identificador do serviço de registo que produziu este
                        resultado de validação.
                      example: bra_cpf
                    service_name:
                      type: string
                      description: Nome legível do serviço de registo.
                      example: Brazil - CPF status check
                    validation:
                      type: object
                      description: Os resultados das validações dos campos.
                      properties:
                        full_name:
                          type: string
                          description: >-
                            Resultado da correspondência para o nome completo
                            (ex.: 'full_match', 'partial_match', 'no_match').
                        date_of_birth:
                          type: string
                          description: >-
                            Resultado da correspondência para a data de
                            nascimento.
                        identification_number:
                          type: string
                          description: >-
                            Resultado da correspondência para o número de
                            identificação.
                    outcome_code:
                      type: string
                      nullable: true
                      description: >-
                        Resultado legível por máquina da consulta ao registo
                        (por exemplo, `MATCH`, `NO_MATCH`, `PARTIAL_MATCH`,
                        `INCONCLUSIVE`, códigos específicos da fonte). Presente
                        quando o serviço reporta um.
                    outcome_detail:
                      type: string
                      nullable: true
                      description: >-
                        Explicação legível de `outcome_code`, quando fornecida
                        pelo serviço.
                    source_data:
                      type: object
                      description: >-
                        Os dados devolvidos pela base de dados governamental.
                        Campos comuns: identification_number, first_name,
                        last_name, full_name, date_of_birth, gender. Campos
                        adicionais por país: BRA inclui sempre lgpd_minor,
                        minor_under_18 e minor_under_16 em correspondências de
                        CPF bem-sucedidas; também inclui o código de estado HTTP
                        a montante quando os dados do CPF são retidos ao abrigo
                        da LGPD (HTTP 422/451). ECU adiciona street,
                        formatted_address, nationality, education,
                        marital_status, spouse, mother_name, father_name,
                        profession. PER adiciona paternal_name, maternal_name,
                        verification_number, verification_letter. ESP adiciona
                        document_type, expiration_date. VEN/COL adicionam
                        document_type.
                      additionalProperties: true
              errors:
                type: array
                description: >-
                  Erros devolvidos pelos serviços de registo durante a
                  validação, cada um etiquetado com o `service_id` que o gerou.
                  **Esta chave é totalmente omitida quando não existem erros.**
                items:
                  type: object
                  description: >-
                    O objeto de erro do serviço a montante expandido tal como
                    está — as respetivas chaves variam consoante o serviço
                    (habitualmente uma mensagem/código e quaisquer detalhes
                    específicos do fornecedor) — além de `service_id`, que
                    identifica o serviço com erro.
                  properties:
                    service_id:
                      type: string
                      nullable: true
                      description: Identificador do serviço de registo que gerou o erro.
                  additionalProperties: true
              match_type:
                type: string
                enum:
                  - no_match
                  - partial_match
                  - full_match
                nullable: true
                description: >-
                  O resultado de correspondência agregado entre os serviços
                  consultados. `null` até que a validação tenha sido avaliada.
              status:
                type: string
                description: >-
                  Estado ao nível da funcionalidade desta validação de base de
                  dados. Independente do `status` da sessão de nível superior —
                  uma sessão pode alcançar a sua decisão global enquanto uma
                  funcionalidade individual permanece `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        A funcionalidade que gerou este aviso. O valor
                        identifica o bloco de funcionalidade a que o aviso
                        pertence. O array de avisos de cada módulo utiliza
                        tipicamente o valor correspondente ao seu módulo (por
                        exemplo, `PHONE` dentro de
                        `phone_verifications[].warnings`), mas o enum acima é a
                        referência autoritativa para todos os avisos de
                        funcionalidades no payload da decisão.
                    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: O ID do nó do grafo do fluxo que gerou este aviso
                description: Avisos relacionados com a validação de base de dados.
        database_validation_not_performed_reason:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            O motivo pelo qual uma validação de base de dados configurada não
            produziu nenhum resultado, como `{code, message}` mais campos de
            contexto. Presente apenas quando `database_validations` é `null` num
            fluxo que tem o passo, para que possa distinguir "o registo
            concordou" de "nada foi executado". `null` nos restantes casos.
          properties:
            code:
              type: string
              description: Motivo legível por máquina estável.
            message:
              type: string
              description: Explicação legível.
        reviews:
          type: array
          items:
            type: object
            properties:
              user:
                type: string
                description: >-
                  Quem realizou a revisão. Normalmente o identificador do
                  revisor na consola (o respetivo e-mail), mas o valor é `"API
                  Client"` para atualizações de estado feitas com uma chave de
                  API e `"Unknown"` quando não foi possível resolver nenhum
                  interveniente — portanto, não processe este campo como um
                  endereço de e-mail.
              new_status:
                type: string
              comment:
                type: string
              created_at:
                type: string
                format: date-time
        assignee:
          type: object
          nullable: true
          description: >-
            O revisor da consola ao qual a sessão está atribuída, ou `null`
            quando não está atribuída a ninguém.
          properties:
            email:
              type: string
              format: email
            assigned_at:
              type: string
              format: date-time
              nullable: true
        waiting_since:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando a sessão começou a aguardar revisão. `null` a menos que a
            sessão esteja `In Review` e a sua aplicação defina um prazo de
            revisão.
        sla_due_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando a revisão deve ser concluída. `null` a menos que a sessão
            esteja `In Review` e a sua aplicação defina um prazo de revisão.
        created_at:
          type: string
          format: date-time
          description: Carimbo de data/hora em que a sessão foi criada (ISO 8601, UTC).
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Carimbo de data/hora em que esta sessão está agendada para expirar.
            Definido em sessões de Verificação de utilizadores (KYC) quando foi
            configurada uma expiração no momento da criação (ou assim que o
            estado `Approved` acionar o cálculo de expiração do KYC). `null`
            para sessões sem uma expiração configurada e para tipos que não
            utilizam expiração (por exemplo, sessões de Verificação de empresas
            (KYB) que nunca receberam um `expires_at`).
        registry_checks:
          type: array
          nullable: true
          description: >-
            Verificações no registo de empresas. Presente apenas quando
            `session_kind = business`. Cada item contém o payload completo do
            registo de empresas.
          items:
            type: object
            description: >-
              Uma verificação de registo de empresas — o payload completo de
              registo de empresas enriquecido com a estrutura de propriedade e
              avisos. Presente apenas quando `session_kind = business`.
            properties:
              status:
                type: string
                description: Estado do ciclo de vida da funcionalidade.
              node_id:
                type: string
                nullable: true
              data_resolved:
                type: boolean
              company:
                type: object
                description: >-
                  Payload completo do registo de empresas para a empresa
                  (registo de empresas combinado com quaisquer dados fornecidos
                  pelo utilizador ou editados na consola).
                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: >-
                      País de constituição (ISO 3166-1 alpha-2, por ex., `GB`,
                      `DE`, `US`).
                  region:
                    type: string
                    nullable: true
                    description: >-
                      Código de subdivisão ISO 3166-2 quando aplicável (por
                      exemplo, `CA`, `NY` para estados dos EUA).
                  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: >-
                      Nomes alternativos, comerciais, anteriores ou no idioma
                      original da empresa em texto, quando comunicados.
                  nature_of_business:
                    type: string
                    nullable: true
                  registered_capital:
                    type: string
                    nullable: true
                  registered_capital_amount:
                    type: string
                    format: decimal
                    nullable: true
                    description: >-
                      Montante do capital registado/capital social como string
                      decimal (ex.: `"100.00"`), analisado a partir do registo
                      de empresas. `null` quando não disponível.
                  registered_capital_currency:
                    type: string
                    nullable: true
                    description: >-
                      Código de moeda ISO 4217 de `registered_capital_amount`
                      (por exemplo, `"GBP"`). `null` quando não estiver
                      disponível.
                  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: >-
                      Número de IVA da UE, quando recolhido durante o passo de
                      registo alojado ou editado posteriormente.
                  vat_validation_status:
                    type: string
                    enum:
                      - valid
                      - invalid
                      - format_valid
                      - invalid_format
                      - could_not_validate
                      - not_applicable
                    description: >-
                      Resultado da validação do número de IVA ou, quando
                      inexistente, do `tax_number`, no envio do registo. `valid`
                      / `invalid`: decidido pelo registo oficial do país (VIES
                      da UE, Noruega, Suíça, Brasil, Colômbia, Costa Rica,
                      Equador, Paraguai; Polónia também pelo seu registo
                      doméstico de IVA). `format_valid` / `invalid_format`:
                      decidido pelas regras de formato e de dígito de controlo
                      do país quando nenhum registo pode ser consultado.
                      `could_not_validate`: o registo estava indisponível.
                      `not_applicable`: sem número, um país sem registo ou
                      regras, ou uma sessão de sandbox.
                  vat_validated_number:
                    type: string
                    nullable: true
                    description: >-
                      O número que foi verificado, tal como a fonte o conhece
                      (por exemplo, o número de IVA derivado de um SIREN francês
                      ou de um RSIN neerlandês). `null` quando nenhuma
                      verificação foi executada.
                  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: >-
                      A origem que determinou o `vat_validation_status`: um
                      registo oficial ou `format_rules`. `null` quando nenhuma
                      verificação foi executada.
                  vat_validated_name:
                    type: string
                    nullable: true
                    description: >-
                      Nome registado na fonte que validou o número, quando esta
                      o divulga. Apenas definido quando o estado for `valid`.
                  vat_validated_address:
                    type: string
                    nullable: true
                    description: >-
                      Morada registada junto da fonte que validou o número,
                      quando esta a divulga. Apenas definida quando o estado é
                      `valid`.
                  vat_checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Carimbo de data/hora da verificação. `null` quando nenhuma
                      verificação foi executada.
                  financial_summary:
                    type: object
                    nullable: true
                  officers:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        designation:
                          type: string
                          nullable: true
                        role:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            Nome próprio quando explicitamente indicado pelo
                            registo; não deduzido a partir do nome completo.
                        last_name:
                          type: string
                          nullable: true
                          description: >-
                            Apelido quando explicitamente comunicado pelo
                            registo.
                        address:
                          type: string
                          nullable: true
                          description: Morada do administrador indicada pelo registo.
                        appointment_date:
                          type: string
                          nullable: true
                          description: Data em que o administrador foi nomeado.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: Data em que a nomeação terminou, quando reportada.
                          format: date
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            Data de nascimento completa comunicada pelo registo
                            de empresas. Nulo quando apenas o ano ou mês de
                            nascimento é conhecido.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            Ano de nascimento reportado pelo registo de
                            empresas, incluindo quando a data completa não está
                            disponível.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            Mês de nascimento reportado pelo registo de
                            empresas. Nulo quando apenas o ano é conhecido.
                  beneficial_owners:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        roles:
                          type: array
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            Limite inferior da percentagem de propriedade
                            conforme reportada pelo registo. String de formato
                            livre (por exemplo, `"25.00"`, `"50"`); utilize
                            `effective_ownership_percent` para um valor numérico
                            processado.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            Limite superior da percentagem de propriedade
                            conforme comunicada pelo registo. String de formato
                            livre; utilize `effective_ownership_percent` para um
                            valor numérico processado.
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        effective_ownership_percent:
                          type: number
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: Data de nascimento completa quando comunicada.
                          format: date
                        appointment_date:
                          type: string
                          nullable: true
                          description: Data de nomeação quando comunicada.
                          format: date
                        shareholding:
                          $ref: '#/components/schemas/KYBRegistryShareholding'
                  addresses:
                    type: array
                    nullable: true
                    description: >-
                      Todas as moradas indicadas pelo registo, num formato
                      canónico. Nulo quando este não indicar nenhuma.
                    items:
                      $ref: '#/components/schemas/KYBRegistryAddress'
                  industries:
                    type: array
                    nullable: true
                    description: >-
                      As atividades sob as quais o registo classifica a empresa,
                      num formato canónico. Null quando não indica nenhuma.
                    items:
                      $ref: '#/components/schemas/KYBRegistryIndustry'
                  accounts:
                    type: object
                    nullable: true
                    additionalProperties: true
                    description: >-
                      Datas de submissão no registo de empresas, quando
                      disponíveis. As declarações anuais e assembleias gerais
                      utilizam last_annual_return_date e last_agm_date; são
                      distintas das contas financeiras.
                  registry_data:
                    $ref: '#/components/schemas/KYBRegistryData'
                  user_provided_data:
                    type: object
                    description: Dados confirmados ou editados pelo utilizador final.
                  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: >-
                      O nível de registo encomendado pelo fluxo: `basic`,
                      `shareholders` ou `ubo`. Também em
                      `ownership.tier_requested`.
                  registry_tier_delivered:
                    type: string
                    nullable: true
                    description: >-
                      O nível entregue pelo registo e que é faturado. Também em
                      `ownership.tier_delivered`.
                  registry_ownership_status:
                    type: string
                    nullable: true
                    description: >-
                      `not_requested`, `pending`, `delivered`, `not_held` ou
                      `unavailable`. Também em `ownership.status`.
                  registry_monitoring:
                    type: object
                    nullable: true
                    description: >-
                      A monitorização mais recente do registo para a empresa, ou
                      `null` quando não existir nenhuma.
                    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: Os campos da empresa que o monitor acompanha.
              ownership_structure:
                $ref: '#/components/schemas/KYBOwnershipStructure'
              warnings:
                type: array
                items:
                  type: object
        key_people_checks:
          type: array
          nullable: true
          description: >-
            Verificações agregadas de pessoas-chave. Presente apenas quando
            `session_kind = business`. Cada item usa o formato de dois
            contentores (`registry`, `submitted`, `ubo_kyc_summary`).
          items:
            type: object
            description: >-
              Verificação agregada sobre os responsáveis + UBOs da empresa. Usa
              o formato `registry` / `submitted`. Presente apenas quando
              session_kind = business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              registry:
                type: object
                description: Partes identificadas através da verificação do registo.
                properties:
                  officers:
                    type: array
                    description: >-
                      Administradores identificados através da verificação no
                      registo, cada um enriquecido com o estado de qualquer
                      sessão de KYC filha e triagem AML criadas para eles.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            Nome completo do administrador conforme consta no
                            registo.
                        designation:
                          type: string
                          nullable: true
                          description: >-
                            Designação em texto livre do registo (por exemplo,
                            `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: Função de dirigente normalizada.
                        nationality:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: Data em que o administrador foi nomeado.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: Data em que a nomeação terminou, quando reportada.
                          format: date
                        is_active:
                          type: boolean
                        address:
                          type: string
                          nullable: true
                          description: Morada do administrador indicada pelo registo.
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            Estado da triagem AML executada para este
                            administrador. `null` quando nenhuma triagem AML
                            tiver sido executada.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Estado do ciclo de vida em bruto da sessão
                            secundária de KYC gerada para este responsável da
                            empresa. Este é o enum de estado completo da sessão
                            (e não um conjunto reduzido
                            Approved/Declined/Pending). `null` quando não existe
                            uma sessão secundária de KYC.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL partilhável da sessão filha de KYC. `null`
                            quando não existe qualquer sessão filha.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID de sessão da sessão KYC subordinada. Transmita-o
                            a este mesmo endpoint de decisão para obter o
                            relatório KYC completo da pessoa. `null` quando não
                            existe nenhuma sessão subordinada.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo de fluxo base do fluxo da sessão filha (por
                            exemplo, `kyc`). `null` para fluxos baseados em
                            grafos ou quando não existe nenhuma sessão filha.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID do fluxo utilizado pela sessão subordinada.
                            `null` quando não existe sessão subordinada.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Rótulo legível do fluxo da sessão dependente. `null`
                            quando não definido.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Progresso por funcionalidade da sessão de
                            verificação filha, por exemplo, `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`
                            quando a sessão filha não tem uma lista de
                            funcionalidades que possa ser resolvida.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nome de apresentação da funcionalidade (por
                                  exemplo, `ID_VERIFICATION`, `LIVENESS`,
                                  `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Estado ao nível da funcionalidade dentro da
                                  sessão filha.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Identificador interno estável do indivíduo
                            verificado subjacente à sessão subordinada — útil
                            para a ligação entre sessões. `null` quando não
                            existe sessão subordinada ou o utilizador ainda não
                            foi resolvido.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo de documento apresentado na sessão KYC
                            subordinada (por exemplo, `P`, `ID`, `DL`). `null`
                            até a sessão subordinada ter um resultado de
                            verificação de identidade.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            Nacionalidade extraída do documento na sessão KYC
                            filha. `null` até estar disponível.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            Indica se a verificação de prova de vida da sessão
                            de KYC secundária foi aprovada. `null` quando
                            nenhuma prova de vida tiver sido executada.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Quando a sessão de KYC subordinada atingiu
                            `Approved`. `null` enquanto a sessão subordinada
                            tiver qualquer outro estado.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            Resumo por categoria derivado das correspondências
                            de AML da pessoa. `null` quando não existem
                            correspondências.
                          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: >-
                            Carimbo de data/hora ISO 8601 da última notificação
                            de convite de verificação enviada para a sessão
                            dependente desta pessoa. `null` quando nenhuma tiver
                            sido enviada.
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            Nome próprio quando explicitamente indicado pelo
                            registo; não deduzido a partir do nome completo.
                        last_name:
                          type: string
                          nullable: true
                          description: >-
                            Apelido quando explicitamente comunicado pelo
                            registo.
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            Data de nascimento completa comunicada pelo registo
                            de empresas. Nulo quando apenas o ano ou mês de
                            nascimento é conhecido.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            Ano de nascimento reportado pelo registo de
                            empresas, incluindo quando a data completa não está
                            disponível.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            Mês de nascimento reportado pelo registo de
                            empresas. Nulo quando apenas o ano é conhecido.
                  beneficial_owners:
                    type: array
                    description: >-
                      Beneficiários efetivos descobertos através da verificação
                      no registo, cada um enriquecido com o estado de qualquer
                      sessão de KYC dependente e triagem AML iniciada para eles.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            Nome completo do beneficiário efetivo (ou nome da
                            empresa para UBOs empresariais).
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: Data de nascimento completa quando comunicada.
                          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: >-
                            Nomes das funções desempenhadas por este
                            proprietário, por exemplo `["ubo", "shareholder"]`.
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            Limite inferior da percentagem de propriedade
                            conforme reportada pelo registo. String de formato
                            livre (por exemplo, `"25"`, `"25-50%"`); utilize
                            `effective_ownership_percent` para um valor numérico
                            processado.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            Limite superior da percentagem de propriedade
                            conforme comunicada pelo registo. String de formato
                            livre; utilize `effective_ownership_percent` para um
                            valor numérico processado.
                        is_active:
                          type: boolean
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            Estado da triagem AML executada para este
                            beneficiário efetivo. `null` quando nenhuma triagem
                            AML tiver sido executada.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Estado do ciclo de vida em bruto da sessão
                            secundária de KYC gerada para este beneficiário
                            efetivo. Este é o enum de estado completo da sessão
                            (e não um conjunto reduzido
                            Approved/Declined/Pending). `null` quando não existe
                            uma sessão secundária de KYC.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL partilhável da sessão filha de KYC. `null`
                            quando não existe qualquer sessão filha.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID de sessão da sessão KYC subordinada. Transmita-o
                            a este mesmo endpoint de decisão para obter o
                            relatório KYC completo da pessoa. `null` quando não
                            existe nenhuma sessão subordinada.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo de fluxo base do fluxo da sessão filha (por
                            exemplo, `kyc`). `null` para fluxos baseados em
                            grafos ou quando não existe nenhuma sessão filha.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID do fluxo utilizado pela sessão subordinada.
                            `null` quando não existe sessão subordinada.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Rótulo legível do fluxo da sessão dependente. `null`
                            quando não definido.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Progresso por funcionalidade da sessão de
                            verificação filha, por exemplo, `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`
                            quando a sessão filha não tem uma lista de
                            funcionalidades que possa ser resolvida.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nome de apresentação da funcionalidade (por
                                  exemplo, `ID_VERIFICATION`, `LIVENESS`,
                                  `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Estado ao nível da funcionalidade dentro da
                                  sessão filha.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Identificador interno estável do indivíduo
                            verificado subjacente à sessão subordinada — útil
                            para a ligação entre sessões. `null` quando não
                            existe sessão subordinada ou o utilizador ainda não
                            foi resolvido.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo de documento apresentado na sessão KYC
                            subordinada (por exemplo, `P`, `ID`, `DL`). `null`
                            até a sessão subordinada ter um resultado de
                            verificação de identidade.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            Nacionalidade extraída do documento na sessão KYC
                            filha. `null` até estar disponível.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            Indica se a verificação de prova de vida da sessão
                            de KYC secundária foi aprovada. `null` quando
                            nenhuma prova de vida tiver sido executada.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Quando a sessão de KYC subordinada atingiu
                            `Approved`. `null` enquanto a sessão subordinada
                            tiver qualquer outro estado.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            Resumo por categoria derivado das correspondências
                            de AML da pessoa. `null` quando não existem
                            correspondências.
                          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: >-
                            Carimbo de data/hora ISO 8601 da última notificação
                            de convite de verificação enviada para a sessão
                            dependente desta pessoa. `null` quando nenhuma tiver
                            sido enviada.
                        child_beneficial_owners:
                          type: array
                          description: >-
                            Para UBOs corporativos: os próprios beneficiários
                            efetivos da entidade proprietária, como objetos em
                            bruto extraídos do registo. Array vazio quando não
                            for aplicável.
                          items:
                            type: object
                        effective_ownership_percent:
                          type: number
                          nullable: true
                          description: >-
                            Percentagem de propriedade numérica analisada — o
                            limite máximo quando disponível, caso contrário o
                            limite mínimo. `null` quando nenhum dos limites pôde
                            ser analisado.
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: Data de nomeação quando comunicada.
                          format: date
              submitted:
                type: object
                description: >-
                  Partes submetidas pelo administrador da empresa durante o
                  fluxo de Pessoas-chave (linhas BusinessParty onde
                  source=USER).
                properties:
                  parties:
                    type: array
                    items:
                      type: object
                      description: >-
                        Parte submetida pelo administrador da empresa através do
                        fluxo de Pessoas-chave (source=USER).
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        source:
                          type: string
                          enum:
                            - USER
                          description: >-
                            Sempre `USER` aqui — esta categoria contém apenas
                            partes introduzidas ou confirmadas pelo utilizador
                            final no fluxo de pessoas-chave (as pessoas
                            descobertas no registo aparecem sob `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: >-
                            Nacionalidade para pessoas singulares; país de
                            constituição para partes empresariais.
                        phone_number:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          format: date
                          nullable: true
                        position:
                          type: string
                          nullable: true
                          description: >-
                            Cargo/posição em texto livre (apenas pessoas
                            singulares).
                        custom_fields:
                          type: object
                          description: >-
                            Campos personalizados definidos pelo fluxo
                            recolhidos para esta parte; as chaves são definidas
                            pelos descritores de campos de pessoas-chave do
                            fluxo.
                        is_active:
                          type: boolean
                        is_skipped:
                          type: boolean
                          description: >-
                            True quando o utilizador final ignorou a verificação
                            para esta parte (apenas possível quando a função
                            permite ignorar).
                        requires_verification:
                          type: boolean
                          description: >-
                            True quando é necessária uma subsessão secundária de
                            KYC / KYB para esta parte, com base nas definições
                            de funções e limiares de propriedade.
                        roles:
                          type: array
                          description: >-
                            Todas as funções desempenhadas por esta parte, cada
                            uma com as suas próprias percentagens de propriedade
                            e de voto. Não existe um campo escalar
                            `role`/`ownership_percent` na própria parte.
                          items:
                            type: object
                            properties:
                              role:
                                type: string
                                enum:
                                  - director
                                  - non_executive_director
                                  - secretary
                                  - chairman
                                  - ubo
                                  - shareholder
                                  - representative
                                  - founder
                                  - legal_advisor
                                  - authorized_signatory
                                  - trustee
                                  - beneficiary
                                  - settlor
                                  - protector
                                  - company_officer
                                  - investor
                                  - other
                              ownership_percent:
                                type: number
                                nullable: true
                              voting_percent:
                                type: number
                                nullable: true
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID da sessão KYC dependente para partes individuais
                            que requerem verificação. `null` caso contrário.
                        kyc_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Estado do ciclo de vida da sessão-filha de KYC.
                            `null` quando não existe nenhuma sessão-filha de
                            KYC.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        kyb_sub_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID da subsessão KYB dependente para partes
                            empresariais que requerem verificação. `null` caso
                            contrário.
                        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: >-
                            Estado do ciclo de vida da subsessão-filha de KYB.
                            `null` quando não existe nenhuma subsessão.
                        kyb_sub_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL partilhável da subsessão filha de KYB. `null`
                            quando não existe qualquer subsessão.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipo de fluxo base do fluxo da sessão filha (sessão
                            de KYC preferencial, recorrendo à subsessão de KYB
                            como alternativa). `null` para fluxos baseados em
                            grafos ou quando não existe nenhuma sessão filha.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID do fluxo utilizado pela sessão subordinada.
                            `null` quando não existe sessão subordinada.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Rótulo legível do fluxo da sessão dependente. `null`
                            quando não definido.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Progresso por funcionalidade da sessão de
                            verificação filha, por exemplo, `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`. `null`
                            quando a sessão filha não tem uma lista de
                            funcionalidades que possa ser resolvida.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nome de apresentação da funcionalidade (por
                                  exemplo, `ID_VERIFICATION`, `LIVENESS`,
                                  `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: >-
                                  Estado ao nível da funcionalidade dentro da
                                  sessão filha.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Identificador interno estável do indivíduo
                            verificado subjacente à sessão subordinada. `null`
                            quando não resolvido.
              ubo_kyc_summary:
                type: object
                nullable: true
                description: >-
                  Progresso agregado de KYC de UBOs, ou null quando nenhum UBO
                  tem uma sessão de KYC associada.
                properties:
                  total:
                    type: integer
                  approved:
                    type: integer
                  flagged:
                    type: integer
                    description: UBOs cujo KYC se encontra recusada ou em análise.
                  pending:
                    type: integer
              warnings:
                type: array
                items:
                  type: object
        document_verifications:
          type: array
          nullable: true
          description: >-
            Verificações de documentos agrupadas por nó do fluxo. Presente
            apenas quando `session_kind = business`.
          items:
            type: object
            description: >-
              Documentos agrupados por nó do fluxo. Presente apenas quando
              session_kind = business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    document_type:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        Grupo de documentos de KYB de alto nível no qual o
                        ficheiro foi classificado. `null` enquanto não estiver
                        classificado.
                    document_subtype:
                      type: string
                      nullable: true
                      description: >-
                        Subtipo específico detetado pelo OCR (por exemplo,
                        `CERTIFICATE_OF_INCORPORATION`, `SHAREHOLDER_REGISTRY`);
                        `UNKNOWN` quando o OCR não conseguiu classificar o
                        documento com confiança.
                    document_group:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        Alias de `document_type` — o nome do grupo usado por
                        `groups` e `required_groups`.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Ligação pré-assinada de curta duração para o ficheiro
                        carregado. `null` para marcadores de posição de pedidos
                        de documentos criados por analistas (`is_requested =
                        true`) que ainda não tenham sido cumpridos.
                    original_filename:
                      type: string
                      nullable: true
                      description: >-
                        Nome do ficheiro tal como carregado pelo utilizador ou
                        analista.
                    file_size:
                      type: integer
                      nullable: true
                      description: Tamanho do ficheiro em bytes.
                    status:
                      type: string
                      enum:
                        - Not Finished
                        - Approved
                        - Declined
                        - In Review
                        - Resub Requested
                      description: Estado da verificação por documento.
                    created_at:
                      type: string
                      format: date-time
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        Referência cruzada dos campos do documento extraídos por
                        OCR com o perfil da empresa no registo. Um objeto com as
                        secções `critical`, `non_critical` e `people`, cada uma
                        das quais mapeia o nome de um campo (ex.:
                        `company_name`, `registration_number`,
                        `incorporation_date`, `registered_address`) para um
                        registo de comparação como `{"document": "...",
                        "registry": "...", "match": true, "score": 0.97}`.
                        `null` quando o documento não continha dados de OCR ou
                        não existia nenhuma empresa no registo para comparar.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        Metadados extraídos do documento empresarial carregado.
                        Quando a extração de metadados for bem-sucedida, todas
                        as 16 chaves estão sempre presentes (os valores
                        individuais são `null` quando não aplicáveis ao tipo de
                        ficheiro); o objeto completo é `null` quando nada pôde
                        ser extraído. Para ficheiros PDF, `overlay_manipulation`
                        contém a análise forense de texto sobreposto.
                      properties:
                        file_size:
                          type: integer
                          nullable: true
                          description: Tamanho do documento.
                        content_type:
                          type: string
                          nullable: true
                          description: Tipo de conteúdo do documento.
                        creation_date:
                          type: string
                          nullable: true
                          description: Data em que o documento foi criado.
                        modified_date:
                          type: string
                          nullable: true
                          description: Data em que o documento foi modificado.
                        creator:
                          type: string
                          nullable: true
                          description: >-
                            Ferramenta ou utilizador de autoria registado nos
                            metadados do ficheiro (`Creator` do PDF).
                        producer:
                          type: string
                          nullable: true
                          description: Software que gerou o ficheiro (PDF `Producer`).
                        software:
                          type: string
                          nullable: true
                          description: >-
                            Software de edição registado nos metadados do
                            ficheiro.
                        encryption:
                          type: string
                          nullable: true
                          description: >-
                            Esquema de encriptação do ficheiro, quando
                            encriptado.
                        is_signed:
                          type: boolean
                          nullable: true
                          description: Indica se o documento contém uma assinatura digital.
                        is_tampered:
                          type: boolean
                          nullable: true
                          description: >-
                            Indica se a assinatura digital falhou a validação
                            (modificação após assinatura).
                        signature_info:
                          type: object
                          nullable: true
                          description: >-
                            Detalhes da(s) assinatura(s) digital(ais), quando
                            presentes.
                        exif_original_date:
                          type: string
                          nullable: true
                          description: >-
                            Data de captura original EXIF, para carregamentos de
                            imagens.
                        exif_digitized_date:
                          type: string
                          nullable: true
                          description: >-
                            Data de digitalização EXIF, para carregamentos de
                            imagens.
                        processed_by_known_editor:
                          type: boolean
                          nullable: true
                          description: >-
                            Se os metadados indicam que o ficheiro passou por um
                            editor de imagem/PDF conhecido.
                        has_different_creation_mod_date:
                          type: boolean
                          nullable: true
                          description: >-
                            Se as datas de criação e modificação diferem — um
                            possível sinal (mas não conclusivo) de edição.
                        overlay_manipulation:
                          type: object
                          nullable: true
                          description: >-
                            Análise forense de PDF para suspeita de manipulação
                            de texto sobreposto. Nulo quando não forem
                            encontradas evidências de manipulação de texto
                            sobreposto ou o documento não for um PDF.
                          properties:
                            detected:
                              type: boolean
                              description: >-
                                Se foram detetadas evidências de manipulação de
                                texto sobreposto.
                            analyzed:
                              type: boolean
                              description: Indica se foi possível analisar o PDF.
                            analysis_incomplete:
                              type: boolean
                              description: >-
                                Presente e verdadeiro apenas quando o ficheiro
                                não pôde ser verificado na íntegra. O que foi
                                verificado mantém as suas conclusões sempre que
                                possível, e o documento apresenta o aviso de
                                substituição de texto não comprovada.
                            signals:
                              type: array
                              items:
                                type: string
                              description: >-
                                Sinais forenses detetados, tais como
                                duplicate_font_subset ou glyph_fragmentation.
                            manipulated_regions:
                              type: array
                              description: >-
                                Áreas com suspeita de manipulação nas
                                coordenadas da página do PDF.
                              items:
                                type: object
                                properties:
                                  page:
                                    type: integer
                                  x:
                                    type: number
                                  'y':
                                    type: number
                                  width:
                                    type: number
                                  height:
                                    type: number
                                  page_width:
                                    type: number
                                  page_height:
                                    type: number
                    description:
                      type: string
                      nullable: true
                      description: >-
                        Rótulo ou motivo fornecido pelo analista para um pedido
                        de documento. `null` para carregamentos normais.
                    is_requested:
                      type: boolean
                      description: >-
                        True para marcadores de posição de pedidos de documentos
                        criados por analistas a aguardar um carregamento.
                    ocr_data:
                      type: object
                      nullable: true
                    is_console_upload:
                      type: boolean
                      description: >-
                        True para documentos carregados a partir da consola em
                        vez do fluxo do utilizador final. Os carregamentos pela
                        consola nunca alteram o estado agregado ao nível da
                        funcionalidade.
                    is_confirmed:
                      type: boolean
                      description: >-
                        Os carregamentos através da consola começam como `false`
                        e passam a `true` assim que o administrador os
                        confirmar; os carregamentos do utilizador final são
                        sempre `true`.
              groups:
                type: object
                description: >-
                  Contadores de progresso por grupo indexados pelo nome do grupo
                  (por exemplo, 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: >-
                        Marcadores de posição pedidos sem qualquer ficheiro
                        carregado até ao momento.
              required_groups:
                type: array
                items:
                  type: string
              warnings:
                type: array
                items:
                  type: object
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            Se a sessão foi criada por uma aplicação em produção (`live`) ou por
            uma aplicação sandbox (`sandbox`). As sessões sandbox são gratuitas,
            totalmente simuladas e nunca consomem créditos.
        sandbox_scenario:
          type: string
          nullable: true
          description: >-
            O cenário de sandbox com o qual a sessão foi criada. `null` para
            sessões de produção e para sessões de sandbox criadas sem nenhum.
        resubmissions:
          type: array
          description: >-
            Retornado apenas com `include=resubmissions`, para sessões de
            utilizador e de empresa. Uma entrada por pedido de nova submissão,
            da mais antiga para a mais recente. Cada entrada contém os
            resultados que os passos ressubmetidos retornaram antes do pedido,
            para que as submissões anteriores permaneçam legíveis. A eliminação
            da sessão elimina todas as submissões.
          items:
            type: object
            properties:
              number:
                type: integer
                description: >-
                  1 para a primeira nova submissão da sessão, 2 para a segunda e
                  assim sucessivamente.
              created_at:
                type: string
                format: date-time
                description: Quando a resubmissão foi solicitada.
              previous_status:
                type: string
                description: O estado da sessão imediatamente antes do pedido.
              nodes:
                type: array
                description: Os passos do fluxo enviados de volta ao utilizador.
                items:
                  type: object
                  properties:
                    node_id:
                      type: string
                    feature:
                      type: string
              reasons:
                type: object
                nullable: true
                additionalProperties:
                  type: string
                description: O motivo indicado para cada passo, indexado por `node_id`.
              requested_by:
                type: object
                nullable: true
                description: Quem solicitou o novo envio.
                properties:
                  name:
                    type: string
                  email:
                    type: string
                  type:
                    type: string
              results:
                type: object
                additionalProperties: true
                description: >-
                  O que os passos reenviados devolveram antes do pedido, sob as
                  mesmas chaves e com a mesma estrutura que os resultados atuais
                  desta resposta (`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`; para sessões de empresas também
                  `document_verifications`). Apenas surgem as chaves dos passos
                  que foram reenviados.
        biometric_consent:
          type: object
          nullable: true
          description: >-
            Se a sessão exigiu consentimento biométrico explícito antes de uma
            captura facial, o motivo e a evidência da resposta. Apenas sessões
            de Verificação de utilizadores (KYC); o mesmo objeto está na
            `decision` dos webhooks da sessão. `null` quando a sessão nunca foi
            avaliada, por exemplo, num fluxo sem captura facial. Campos sem
            valor registado são `null`. Um SDK nativo anterior à versão 4.10.0,
            ou um que não reporte a sua versão, não consegue apresentar o passo
            de consentimento: as respetivas capturas faciais são executadas como
            anteriormente, e uma sessão que tenha exigido consentimento reporta
            `status: "pending"` com `reason:
            "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Consulte [Consentimento
            biométrico](/pt/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: >-
                O motivo pelo qual o consentimento é obrigatório, ou como foi
                satisfeito. `declared_state`: declarou um estado abrangido
                (`user_state`, ou uma morada nos EUA em `expected_details`).
                `ip_state`: o IP da pessoa está num estado abrangido (Illinois,
                Texas, Colorado). `ip_unknown`: as evidências colocam a pessoa
                nos EUA, mas o estado não pode ser determinado (o IP está nos
                EUA sem indicação de estado, ou não pode ser localizado enquanto
                os seus dados ou o documento colocam a pessoa nos EUA).
                `document_issuer`: o documento de identidade foi emitido por um
                estado abrangido. `forced`: o modo da aplicação é Always.
                `customer_collected`: enviou `biometric_consent` ao criar a
                sessão. `null` enquanto não for obrigatório.
            status:
              type: string
              enum:
                - not_required
                - pending
                - given
                - declined
              description: >-
                `not_required`; `pending` (obrigatório e não fornecido: a pessoa
                ainda não respondeu, ou `reason` indica por que não foi
                recolhido); `given`; `declined` (foi registada uma recusa e a
                sessão terminou como `Declined`; nenhum ecrã da Didit
                disponibiliza atualmente uma opção de recusa).
            given_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando o consentimento foi fornecido. Para `customer_collected`,
                o `given_at` que enviou.
            declined_at:
              type: string
              format: date-time
              nullable: true
              description: Quando uma recusa foi registada.
            text_version:
              type: string
              nullable: true
              description: >-
                ID da versão do texto de consentimento ao qual a pessoa
                respondeu, ou o que enviou.
            text_hash:
              type: string
              nullable: true
              description: >-
                SHA-256 (hex) do texto de consentimento exato apresentado, no
                idioma em que foi apresentado.
            locale:
              type: string
              nullable: true
              description: Idioma no qual o texto de consentimento foi apresentado.
            policy_url:
              type: string
              format: uri
              nullable: true
              description: >-
                A política de dados biométricos ligada pelo passo de
                consentimento.
            step:
              type: string
              nullable: true
              description: >-
                Passo do fluxo em que a sessão se encontrava quando a pessoa
                respondeu, por exemplo `LIVENESS`.
            node_id:
              type: string
              nullable: true
              description: >-
                Nó do grafo do fluxo em que a sessão se encontrava quando a
                pessoa respondeu.
            ip_address:
              type: string
              nullable: true
              description: IP de onde veio a resposta.
            ip_country_code:
              type: string
              nullable: true
              description: País ISO 3166-1 alfa-2 do IP da resposta.
            ip_state:
              type: string
              nullable: true
              description: Subdivisão ISO 3166-2 do IP da resposta, por exemplo `US-IL`.
            ip_city:
              type: string
              nullable: true
              description: Cidade do IP da resposta.
            user_agent:
              type: string
              nullable: true
              description: Agente do utilizador do pedido da resposta.
            detected_ip_address:
              type: string
              nullable: true
              description: >-
                O IP da pessoa a partir do qual o requisito foi avaliado pela
                última vez. Pode ser diferente de `ip_address` quando a pessoa
                respondeu noutro dispositivo.
            detected_country_code:
              type: string
              nullable: true
              description: País ISO 3166-1 alfa-2 do IP detetado.
            detected_state:
              type: string
              nullable: true
              description: Subdivisão ISO 3166-2 do IP detetado.
            detected_city:
              type: string
              nullable: true
              description: Cidade do IP detetado.
            declared_state:
              type: string
              nullable: true
              description: >-
                Subdivisão ISO 3166-2 declarada por si: `user_state`, ou o
                estado de uma morada dos EUA em `expected_details`.
            document_state:
              type: string
              nullable: true
              description: >-
                Subdivisão ISO 3166-2 que emitiu o documento de identidade, lida
                na captura do documento de identificação.
            jurisdictions:
              type: array
              items:
                type: string
              description: >-
                Estados dos EUA (códigos USPS, por exemplo `IL`) cuja legislação
                biométrica abrange a pessoa. `US` quando os dados comprovativos
                situam a pessoa nos EUA mas nenhum estado é conhecido. Vazio
                quando nenhum se aplica.
            retention_months:
              type: integer
              nullable: true
              description: >-
                O limite de conservação biométrica mais curto, em meses, entre
                as `jurisdictions`. `null` quando nenhum se aplica.
            reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_UNSUPPORTED_SDK
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_UNSUPPORTED_SDK`: o consentimento era
                obrigatório e um SDK nativo anterior a 4.10.0, ou que não
                comunicou a sua versão, capturou um rosto sem o passo de
                consentimento; `status` permanece `pending`, ou `given` se a
                pessoa tiver concordado posteriormente no fluxo alojado.
                `BIOMETRIC_CONSENT_DECLINED`: foi registada uma recusa
                (substitui o motivo do SDK). Caso contrário, `null`, e sempre
                `null` quando a sessão não exigiu consentimento.
            decline_reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_DECLINED` quando uma recusa registada
                encerrou a sessão; caso contrário, `null`.
            face_data_deleted_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando a recusa eliminou as imagens faciais, vídeos e templates
                biométricos da sessão. `null` a menos que tenha sido registada
                uma recusa.
        investigator:
          $ref: '#/components/schemas/InvestigatorBlock'
        biometric_retention:
          $ref: '#/components/schemas/BiometricRetention'
        fraud_check:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            O resultado de uma chamada à API Fraud Check. `null` para qualquer
            outra sessão.
        full_session_video:
          type: string
          format: uri
          nullable: true
          description: >-
            URL temporário da gravação completa da sessão. Devolvido apenas
            quando a sua organização grava vídeo da sessão completa.
        full_session_video_recorded_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando a gravação de sessão completa foi feita. Devolvido apenas
            quando a sua organização grava vídeo de sessão completa.
    AddressValidationResult:
      type: object
      description: >-
        O resultado de uma Address Validation: se a morada existe e a sua forma
        normalizada. Confirma apenas a morada; nunca associa a morada a uma
        pessoa.
      required:
        - status
        - verification_level
        - address
        - formatted_address
        - latitude
        - longitude
      properties:
        status:
          type: string
          enum:
            - verified
            - partially_verified
            - not_verified
            - unavailable
          description: >-
            `verified`: a morada foi confirmada até ao edifício (ou
            fração/apartamento ou apartado). `partially_verified`: foi
            confirmada apenas até à rua, ou até ao nível mais preciso que os
            dados de referência postal contêm para essa localização.
            `not_verified`: apenas a região ou a cidade corresponderam, ou nada
            correspondeu. `unavailable`: não foi possível executar a validação
            (por exemplo, o serviço de referência não respondeu); não é cobrada
            e nunca afeta uma verificação.
        verification_level:
          type: string
          nullable: true
          enum:
            - administrative_area
            - locality
            - thoroughfare
            - premise
            - delivery_point
            - null
          description: >-
            O nível mais preciso com o qual a morada foi correspondida. `null`
            quando nada correspondeu ou `status` for `unavailable`.
        address:
          type: object
          nullable: true
          description: A morada normalizada. `null` quando `status` é `unavailable`.
          properties:
            address_line_1:
              type: string
              nullable: true
              description: >-
                Primeira linha de entrega, escrita da forma como o país a
                escreve.
              example: 1600 Amphitheatre Pkwy
            address_line_2:
              type: string
              nullable: true
              description: >-
                Segunda linha de entrega (um apartamento, edifício ou bairro),
                quando a morada possuir uma.
            city:
              type: string
              nullable: true
              example: Mountain View
            region:
              type: string
              nullable: true
              description: Estado, província ou região.
              example: CA
            postal_code:
              type: string
              nullable: true
              example: 94043-1351
            country:
              type: string
              nullable: true
              description: Código de país ISO 3166-1 alpha-2.
              example: US
        formatted_address:
          type: string
          nullable: true
          description: A morada normalizada numa única linha.
          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: >-
        Bloco de inteligência de telefone normalizado. Presente apenas quando o
        suplemento de inteligência foi executado para esta consulta; quando
        presente, também é exposto sob o alias `enrichment` com valores
        idênticos.
      properties:
        score:
          type: number
          nullable: true
          description: Pontuação de risco normalizada de 0-100. Mais alto é mais arriscado.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low`, `Medium` ou `High`, derivado da pontuação.'
        phone_trust_index:
          type: number
          nullable: true
          description: >-
            Inverso da pontuação, para painéis que preferem que quanto maior,
            melhor.
        network_stability_index:
          type: number
          nullable: true
          description: Estabilidade da rede associada à linha.
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando o número parece descartável ou virtual.'
        is_ported:
          type: boolean
          nullable: true
          description: '`true` quando o número mudou de operadora.'
        is_recently_ported:
          type: boolean
          nullable: true
          description: '`true` quando a portabilidade ocorreu recentemente.'
        carrier_type:
          type: string
          nullable: true
          description: >-
            Classificação da linha comunicada pela consulta (por exemplo,
            `mobile`).
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificador Didit estável do sinal, por exemplo
                  `IR-5AC67A32`. Opaco: agrupe e filtre por ele, não tente
                  analisá-lo.
              value:
                nullable: true
                description: >-
                  Para um sinalizador de risco (por exemplo, `voip`, `leaked`,
                  `disposable`, `spam_trap`), o respetivo valor: um booleano, um
                  nível ou uma data. Nulo para um código de motivo com
                  pontuação.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: Se o sinal aumentou o risco ou adicionou confiança.
              message:
                type: string
                description: Explicação legível do sinal, em inglês.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Com que intensidade o sinal influenciou a pontuação, por
                  exemplo `low`, `medium` ou `high`.
          description: >-
            Sinais que explicam a pontuação, cada um com um código Didit
            estável, uma direção, uma mensagem e um nível de impacto. Podem
            surgir novos códigos ao longo do tempo, pelo que não deve rejeitar
            códigos desconhecidos.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        Presença social (social footprint) do número de telefone: as plataformas
        online em que está registado. Presente apenas quando `enable_social` foi
        definido e a verificação foi concluída. Cada contagem pode ser nula
        quando não foram devolvidos dados para ela. `profiles_registered: 0`
        significa que as plataformas foram verificadas e o número de telefone
        não foi encontrado em nenhuma delas - uma resposta válida, faturável e
        um sinal comum de identidade sintética.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: >-
            Plataformas onde o número de telefone está confirmado como
            registado.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Plataformas avaliadas quanto ao registo.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plataformas que devolveram um nome associado.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plataformas que devolveram uma fotografia de perfil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Plataformas de comunicação com presença detetada.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorias de plataforma distintas com presença detetada.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicador composto de maturidade digital, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicador do nível de detalhe do perfil, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Distribuição da plataforma gratuita vs paga, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas gratuitas.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas totalmente pagas.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Grau de preenchimento do perfil do WhatsApp. Apenas para telefone;
            nulo para e-mail.
          example: Partial
        registered_platforms:
          type: array
          description: Plataformas onde o registo está confirmado.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Plataformas verificadas com resultado negativo.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Contagem e proporção de registos por categoria de plataforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Detalhes de perfil por plataforma, indexados por plataforma, quando
            a plataforma os disponibiliza.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    EmailIntelligence:
      type: object
      description: >-
        Bloco de inteligência de e-mail normalizado. Presente apenas quando o
        suplemento de inteligência foi executado para este e-mail; quando
        presente, também é exposto como o alias `enrichment` com valores
        idênticos.
      properties:
        score:
          type: number
          nullable: true
          description: Pontuação de risco normalizada de 0-100. Mais alto é mais arriscado.
        deliverable:
          type: string
          nullable: true
          description: Faixa de capacidade de entrega (por exemplo, `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` ou `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Índice numérico de risco de violação.
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true` quando o endereço surge numa violação recente.'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true` quando o endereço surge em muitas violações.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando o domínio é de um fornecedor descartável.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true` quando o domínio é de um fornecedor de e-mail gratuito.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true` quando o endereço surge em violações conhecidas.'
        no_of_breaches:
          type: number
          nullable: true
          description: Número de violações de dados conhecidas que contêm o endereço.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificador Didit estável do sinal, por exemplo
                  `IR-5AC67A32`. Opaco: agrupe e filtre por ele, não tente
                  analisá-lo.
              value:
                nullable: true
                description: >-
                  Para um sinalizador de risco (por exemplo, `voip`, `leaked`,
                  `disposable`, `spam_trap`), o respetivo valor: um booleano, um
                  nível ou uma data. Nulo para um código de motivo com
                  pontuação.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: Se o sinal aumentou o risco ou adicionou confiança.
              message:
                type: string
                description: Explicação legível do sinal, em inglês.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Com que intensidade o sinal influenciou a pontuação, por
                  exemplo `low`, `medium` ou `high`.
          description: >-
            Sinais que explicam a pontuação, cada um com um código Didit
            estável, uma direção, uma mensagem e um nível de impacto. Podem
            surgir novos códigos ao longo do tempo, pelo que não deve rejeitar
            códigos desconhecidos.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Presença social do endereço de e-mail: as plataformas online em que está
        registado. Presente apenas quando `enable_social` foi definido e a
        verificação foi concluída. Cada contagem pode ser nula quando não foram
        devolvidos dados para ela. `profiles_registered: 0` significa que as
        plataformas foram verificadas e o endereço de e-mail não foi encontrado
        em nenhuma delas - uma resposta válida, faturável e um sinal comum de
        identidade sintética.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: >-
            Plataformas onde o endereço de e-mail está confirmado como
            registado.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Plataformas avaliadas quanto ao registo.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plataformas que devolveram um nome associado.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plataformas que devolveram uma fotografia de perfil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Plataformas de comunicação com presença detetada.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorias de plataforma distintas com presença detetada.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicador composto de maturidade digital, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicador do nível de detalhe do perfil, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Distribuição da plataforma gratuita vs paga, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas gratuitas.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas totalmente pagas.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registos em plataformas freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            Grau de preenchimento do perfil do WhatsApp. Apenas para telefone;
            nulo para e-mail.
          example: Partial
        registered_platforms:
          type: array
          description: Plataformas onde o registo está confirmado.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Plataformas verificadas com resultado negativo.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Contagem e proporção de registos por categoria de plataforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Detalhes de perfil por plataforma, indexados por plataforma, quando
            a plataforma os disponibiliza.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    DocumentAIDetectedCode:
      type: object
      required:
        - type
        - page_number
        - position
        - x
        - 'y'
        - width
        - height
        - page_width
        - page_height
        - raw_payload
        - parsed_payload
      properties:
        type:
          type: string
          description: >-
            Simbologia detetada, por exemplo `QR_CODE`, `CODE_128`, `EAN_13`,
            `DATA_MATRIX` ou `PDF_417`.
        page_number:
          type: integer
          minimum: 1
          description: Número de página de base 1.
        position:
          type: array
          nullable: true
          description: >-
            Polígono detetado em coordenadas de píxeis da página renderizada.
            `null` quando não está disponível nenhuma localização fiável.
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: integer
        x:
          type: integer
          nullable: true
          description: >-
            Margem esquerda da caixa delimitadora em píxeis da página
            renderizada.
        'y':
          type: integer
          nullable: true
          description: >-
            Limite superior da caixa delimitadora em píxeis da página
            renderizada.
        width:
          type: integer
          nullable: true
          description: Largura da caixa delimitadora em píxeis da página renderizada.
        height:
          type: integer
          nullable: true
          description: Altura da caixa delimitadora em píxeis da página renderizada.
        page_width:
          type: integer
          description: Largura da página renderizada em píxeis.
        page_height:
          type: integer
          description: Altura da página renderizada em píxeis.
        raw_payload:
          type: string
          description: >-
            Payload do descodificador em bruto como string base64 quando
            disponível; caso contrário, uma string vazia.
        parsed_payload:
          nullable: true
          description: >-
            String descodificada ou valor estruturado. `null` quando o código
            foi localizado mas não pôde ser descodificado.
    BankVerificationResult:
      type: object
      description: >-
        O resultado de um passo de Verificação Bancária, para Verificação de
        utilizadores e de empresas. `method` indica como a conta foi verificada,
        e `none` que a pessoa continuou sem banco antes de qualquer tentativa
        ser avaliada. `continued_without_bank` indica que a pessoa continuou sem
        banco, inclusive após uma tentativa avaliada. Consulte [Métodos de
        verificação
        bancária](/pt/core-technology/bank-verification/verification-methods) e
        [Quando a pessoa não consegue verificar o seu
        banco](/pt/core-technology/bank-verification/fallbacks).
      properties:
        schema_version:
          type: integer
          description: Versão desta estrutura de resultados. Atualmente `1`.
        bank_verification_id:
          type: string
          format: uuid
          description: O ID deste resultado.
        node_id:
          type: string
          description: O nó do fluxo a que este resultado pertence.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Expired
          description: O veredito do passo, após as suas ações e regras de estado.
        original_status:
          type: string
          nullable: true
          description: >-
            O primeiro veredito a que o passo chegou, antes de qualquer
            alteração posterior, como uma revisão manual.
        method:
          type: string
          nullable: true
          enum:
            - open_banking
            - account_lookup
            - microdeposits
            - statement
            - none
          description: >-
            Como a conta foi verificada: `open_banking` (início de sessão
            bancário: a pessoa iniciou sessão no respetivo banco),
            `account_lookup` (verificação de conta: a pessoa introduziu os dados
            da conta e o banco confirmou o nome), `microdeposits` ou `statement`
            (carregamento de extrato). `none` quando a pessoa continuou sem
            banco antes de qualquer tentativa ser avaliada, pelo que nenhuma
            conta foi verificada. Após uma tentativa avaliada, permanece o
            método dessa tentativa. `null` até que uma conta seja avaliada e
            quando o fluxo restringe os dados que devolve. As regras do fluxo
            leem o mesmo valor que `bank.method`.
        provider:
          type: string
          nullable: true
          description: >-
            A chave da rota que executou a ligação. Consulte `method`, e não
            esta chave, para saber como a conta foi verificada.
        credential_source:
          type: string
          nullable: true
          enum:
            - native
            - byok
          description: >-
            `native`: rota própria da Didit, faturada ao seu saldo Didit.
            `byok`: um fornecedor do marketplace que associou à sua conta
            utilizando as suas próprias credenciais.
        route:
          type: object
          nullable: true
          description: A rota escolhida antes do consentimento. Nunca muda posteriormente.
          properties:
            provider_key:
              type: string
              nullable: true
              description: A chave da rota.
            credential_source:
              type: string
              enum:
                - native
                - byok
            is_fallback:
              type: boolean
              description: >-
                Se a rota própria da Didit substituiu um fornecedor do
                marketplace que não conseguiu ligar-se.
            provider_connection_id:
              type: string
              nullable: true
              description: A ligação ao marketplace utilizada, para `byok`.
            requested_scopes:
              type: array
              items:
                type: string
              description: >-
                Os dados que a ligação solicitou, por exemplo `ownership` ou
                `balances`.
        connection:
          type: object
          nullable: true
          description: >-
            A ligação da tentativa mais recente. `null` antes da primeira
            tentativa.
          properties:
            status:
              type: string
              enum:
                - pending
                - connected
                - cancelled
                - timeout
                - failed
                - unsupported
                - revoked
                - expired
            institution_id:
              type: string
              nullable: true
              description: >-
                O ID do banco. `null` para uma verificação de conta em que não
                seja escolhido nenhum banco.
            institution_name:
              type: string
              nullable: true
              description: O nome do banco. `null` para uma verificação de conta.
            institution_country:
              type: string
              nullable: true
              description: O país da conta, ISO 3166-1 alfa-3.
            oauth:
              type: boolean
              nullable: true
              description: >-
                Indica se o início de sessão bancário foi realizado por OAuth ou
                app-to-app. `null` para uma verificação de conta.
            connected_at:
              type: string
              format: date-time
              nullable: true
              description: Quando a ligação foi bem-sucedida.
            consent_expires_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando o consentimento bancário termina, para o início de sessão
                bancário.
            last_refreshed_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando os dados financeiros foram lidos novamente pela última
                vez.
            attempts:
              type: integer
              description: >-
                As tentativas que a pessoa despendeu neste passo, com todos os
                métodos combinados.
            reason_code:
              type: string
              nullable: true
              description: >-
                O motivo pelo qual a ligação não está simplesmente `connected`,
                por exemplo `USER_CANCELLED`, `INSTITUTION_DOWN`,
                `ACCOUNT_NOT_FOUND`, `REFERENCE_IDENTITY_MISSING` ou
                `VERIFICATION_COMPLETED`.
        account:
          type: object
          nullable: true
          description: A conta avaliada. `null` até que uma conta seja avaliada.
          properties:
            account_id_masked:
              type: string
              nullable: true
              description: O número de conta, mascarado.
            iban_masked:
              type: string
              nullable: true
              description: O IBAN, mascarado.
            sort_code:
              type: string
              nullable: true
              description: O sort code, no Reino Unido.
            routing_number_masked:
              type: string
              nullable: true
              description: O routing number, mascarado.
            type:
              type: string
              nullable: true
              enum:
                - checking
                - current
                - savings
                - business
                - other
            subtype:
              type: string
              nullable: true
              description: O subtipo de conta do próprio banco.
            currency:
              type: string
              nullable: true
              description: Moeda ISO 4217 da conta.
            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: >-
            Como o titular da conta foi comparado com a identidade verificada.
            `null` até que uma conta seja avaliada.
          properties:
            result:
              type: string
              enum:
                - match
                - partial_match
                - no_match
                - unknown
                - not_verifiable
              description: >-
                `partial_match` é uma correspondência próxima. `not_verifiable`:
                o banco respondeu sem titular para comparar. `unknown`: o
                comprovativo não pôde ser lido ou não havia identidade para
                comparar.
            reference_identity_source:
              type: string
              nullable: true
              description: >-
                O passo cuja identidade foi comparada com a do titular: `kyc`,
                `database_validation`, `expected_details`, `questionnaire`,
                `document_ai` ou `kyb`.
            name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Pontuação do nome do titular da Didit.
            provider_name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                A pontuação do nome do titular dada pelo próprio banco, quando
                fornecida.
            address_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                A pontuação da morada do titular, quando a correspondência de
                morada foi executada.
            email_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                A pontuação do e-mail do titular, quando a correspondência de
                e-mail foi executada.
            phone_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                A pontuação do telefone do titular, quando a correspondência de
                telefone foi executada.
            dob_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                A pontuação da data de nascimento do titular, quando o banco
                partilhou essa informação.
            close_match:
              type: boolean
              nullable: true
              description: Se o nome ficou no intervalo de correspondência aproximada.
            holder_confirmation:
              type: string
              nullable: true
              enum:
                - pending
                - confirmed
                - rejected
              description: >-
                A resposta da pessoa quando solicitada a confirmar um nome de
                correspondência aproximada. `null` se nunca tiver sido
                solicitada.
            method:
              type: string
              nullable: true
              enum:
                - exact
                - token_set
                - nickname
                - transliteration
                - fuzzy
                - provider_only
                - microdeposits
              description: >-
                Qual a comparação de nomes que gerou a pontuação. Este não é o
                método de verificação: consulte o `method` de nível superior
                para isso.
            matched_holder_index:
              type: integer
              nullable: true
            holders:
              type: array
              items:
                type: object
              description: Cada titular listado pelo banco, com as respetivas pontuações.
            owner_identity_available:
              type: boolean
              nullable: true
            evidence_freshness:
              type: string
              nullable: true
              enum:
                - live
                - cached
                - refreshed
            evaluated_at:
              type: string
              format: date-time
              nullable: true
              description: Quando o veredito foi calculado.
        financial_data:
          type: object
          description: >-
            Os dados financeiros que o passo leu. Apenas o início de sessão
            bancário os lê.
          properties:
            balances:
              type: object
              nullable: true
              description: Com o âmbito `balances`.
            transactions:
              type: object
              nullable: true
              description: Com o âmbito `transactions`.
            income:
              type: object
              nullable: true
              description: Com o âmbito `income`.
            categorization:
              type: object
              nullable: true
              description: >-
                Categorização da Didit das transações consultadas. `null` na
                ausência das mesmas.
            not_collected:
              type: array
              items:
                type: string
                enum:
                  - balances
                  - income
                  - transactions
              description: >-
                Os dados solicitados pelo passo que o método utilizado para
                verificar a conta não recolhe. Saldos, transações e rendimentos
                são obtidos exclusivamente através do início de sessão bancário,
                pelo que uma conta verificada por verificação de conta lista-os
                aqui. Nunca constitui uma falha. Vazio caso contrário.
        billing:
          type: object
          nullable: true
          properties:
            route:
              type: string
              enum:
                - native
                - byok
            billed:
              type: boolean
            marketplace_fee:
              type: string
              nullable: true
              description: A taxa da plataforma de marketplace cobrada, para `byok`.
            usage_type:
              type: string
              nullable: true
              description: >-
                A linha de utilização na qual a cobrança foi registada:
                `bank_verification` para um início de sessão bancário ou uma
                verificação de conta, `bank_statement_upload` para o
                carregamento de um extrato sem tentativa bancária cobrada
                anterior e `bank_byok_fee` para a comissão de marketplace no seu
                próprio fornecedor. `null` se nada foi faturado.
        reference_identity:
          type: object
          nullable: true
          description: >-
            A identidade com a qual o titular foi comparado, com a respetiva
            origem.
        signals:
          type: object
          nullable: true
          description: >-
            Sinais de conta lidos a partir do histórico de transações, quando o
            passo leu um desses sinais.
        connection_abandoned:
          type: boolean
          nullable: true
          description: >-
            Se o passo terminou sem correspondência após a pessoa ter saído no
            seu banco.
        not_covered:
          type: boolean
          nullable: true
          description: >-
            Se não foi possível aceder ao banco ou ao país da pessoa neste
            passo. Também é `true` quando a pessoa continuou sem um banco porque
            nenhum método conseguiu verificar o seu país ou banco.
        continued_without_bank:
          type: boolean
          description: >-
            Se a pessoa saiu do passo com **Continue without your bank**. O
            campo `continuation` indica o motivo. `method` é `none` quando
            nenhuma tentativa foi avaliada antes de continuar. Após uma
            tentativa avaliada, como um titular que não corresponde, `method`
            mantém o método dessa tentativa e o respetivo veredicto e códigos de
            motivo mantêm-se. Devolvido mesmo quando o fluxo restringe os dados
            que devolve.
        continuation:
          type: object
          nullable: true
          description: >-
            Como a pessoa continuou sem um banco. `null` se não o tiver feito.
            Quando o fluxo restringe os dados que devolve, `reason` continua a
            ser devolvido e todas as outras chaves ficam com `null`.
          properties:
            reason:
              type: string
              enum:
                - no_route
                - institution_unsupported
                - attempts_exhausted
                - person_choice
              description: >-
                O motivo, conforme apurado pela Didit quando a pessoa continuou:
                `no_route` (nenhum início de sessão bancário ou verificação de
                conta serve o respetivo país), `institution_unsupported` (o
                banco selecionado não pode ser utilizado neste passo),
                `attempts_exhausted` (todas as tentativas já foram gastas e
                nenhuma estava em curso) ou `person_choice` (existia uma forma
                de verificação disponível e optou por continuar, inclusive
                quando o banco não pôde ser contactado no momento). `no_route` e
                `institution_unsupported` seguem `bank_unsupported_action`,
                `attempts_exhausted` segue `bank_attempts_exhausted_action` e
                `person_choice` segue `bank_skipped_action`, salvo se uma
                tentativa avaliada já tiver decidido o passo.
            country:
              type: string
              nullable: true
              description: >-
                O país onde a pessoa estava a efetuar a verificação, ISO 3166-1
                alfa-3. `null` se tiver prosseguido antes de selecionar um.
            offered:
              type: array
              items:
                type: string
                enum:
                  - statement
                  - microdeposits
              nullable: true
              description: >-
                As outras formas de verificar esse país disponibilizadas à
                pessoa quando esta continuou, pela ordem em que foram
                disponibilizadas: `statement` (carregamento de um extrato) e, em
                seguida, `microdeposits`. Vazio se não tiver sido
                disponibilizada nenhuma.
            institution_id:
              type: string
              nullable: true
              description: >-
                Para `institution_unsupported`, o ID do banco que a pessoa não
                conseguiu utilizar: o banco que selecionou ou o banco em que a
                sua última tentativa terminou. A Didit obtém-no a partir da sua
                própria lista de bancos, nunca do dispositivo da pessoa, pelo
                que um banco que não conste dessa lista é `null`. `null` para
                qualquer outro motivo.
            institution_name:
              type: string
              nullable: true
              description: >-
                Para `institution_unsupported`, o nome desse banco, proveniente
                da mesma lista que `institution_id`. `null` quando essa lista
                não tiver o banco e para qualquer outro motivo.
            continued_at:
              type: string
              format: date-time
              nullable: true
              description: Quando a pessoa continuou.
        evidence_purged_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando as provas bancárias foram eliminadas ao abrigo de
            `bank_evidence_retention_days`. Caso contrário, `null`.
        warnings:
          type: array
          items:
            type: string
          description: >-
            Códigos informativos, por exemplo `holder_declared`. Um aviso nunca
            altera o estado por si só.
        reason_codes:
          type: array
          items:
            type: string
          description: >-
            O motivo pelo qual o veredito ocorreu dessa forma, por exemplo
            `OWNER_NAME_PARTIAL`. Podem aplicar-se vários. `NOT_COVERED`: a
            pessoa continuou sem um banco porque nenhum método conseguiu
            verificar o seu país ou banco. `SKIPPED`: a pessoa optou por
            continuar sem um banco existindo uma forma de verificação
            disponível. Nenhum deles é adicionado quando uma tentativa avaliada
            já decidiu o passo.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    SignatureResult:
      type: object
      description: >-
        O resultado de um signatário para um passo de Assinatura eletrónica.
        Consulte o [relatório de Assinatura
        eletrónica](/pt/core-technology/electronic-signature/report-electronic-signature).
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Passe como `signature_id` para descarregar o comprovativo deste
            signatário ou validar a respetiva assinatura.
        node_id:
          type: string
          description: O passo do fluxo que o produziu.
        status:
          type: string
          enum:
            - intro
            - review
            - code
            - signing
            - signed
            - declined
          description: >-
            O ponto em que o signatário se encontra no passo. Apenas `signed`
            significa que os documentos estão assinados.
        verdict:
          type: string
          enum:
            - Not Finished
            - Approved
            - In Review
            - Declined
          description: >-
            O resultado do passo. Um aviso define-o através da sua regra; as
            regras de estado personalizadas aplicam-se depois.
        level:
          type: string
          enum:
            - simple
            - aes
            - qes
          description: >-
            `simple` (predefinição) ou `aes`. `qes` (Assinatura Eletrónica
            Qualificada, QES) é um suplemento que ainda não se encontra
            disponível.
        format:
          type: string
          enum:
            - pdf
            - pades
          description: '`pdf` para uma assinatura Simple, `pades` para Advanced (AES).'
        profile:
          type: string
          nullable: true
          description: >-
            `PAdES-B-LT` assim que uma assinatura avançada (AES) for assinada;
            caso contrário, null.
        signer:
          type: object
          properties:
            name:
              type: string
              nullable: true
              description: >-
                O nome do signatário. Verificado (a partir da verificação de
                identidade aprovada ou da sessão), exceto no nível Simple sem um
                nome de sessão verificado, onde corresponde ao nome que o
                signatário introduziu e não é verificado.
            capacity:
              type: string
              enum:
                - self
                - company
            company:
              type: string
              nullable: true
            role:
              type: string
              nullable: true
              description: O cargo da pessoa-chave, conforme declarado.
            roles:
              type: array
              items:
                type: string
              description: >-
                As funções estruturadas da pessoa-chave, conforme declaradas
                para a empresa.
            identity_session_id:
              type: string
              format: uuid
              description: A sessão de KYC que verificou o signatário.
        identity_used:
          type: object
          description: >-
            A identidade verificada na qual a assinatura se baseia. Vazio para
            uma assinatura Simples sem identidade verificada.
          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: O nome com o qual o signatário tinha de corresponder.
        certificate:
          type: object
          nullable: true
          description: >-
            O certificado com o qual os documentos foram assinados. `null` até à
            assinatura e sempre `null` para uma assinatura Simple.
          properties:
            issuer:
              type: string
            issued_to:
              type: string
            serial:
              type: string
              description: Número de série, hexadecimal.
            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` para uma assinatura Simple, que não tem código.'
            destination:
              type: string
              nullable: true
              description: O contacto mascarado para o qual o código foi enviado.
            confirmed_at:
              type: string
              format: date-time
              nullable: true
            attempts:
              type: integer
              description: Códigos introduzidos, incluindo o correto.
        timestamp:
          type: object
          nullable: true
          description: >-
            O carimbo de data/hora RFC 3161 na assinatura, emitido pela Didit.
            `null` até ser assinado e sempre `null` para uma assinatura Simples.
          properties:
            time:
              type: string
              format: date-time
            qualified:
              type: boolean
              description: Sempre `false` para AES.
            valid:
              type: boolean
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: >-
                  O documento na cópia deste signatário. Utilize-o para
                  descarregar o ficheiro assinado.
              uuid:
                type: string
                format: uuid
                description: Igual a `id`.
              title:
                type: string
              file_name:
                type: string
              pages:
                type: integer
                description: Páginas do documento assinado. Para Word, do PDF convertido.
              size_bytes:
                type: integer
              sha256_original:
                type: string
                description: SHA-256 do documento tal como foi apresentado ao signatário.
              sha256_signed:
                type: string
                nullable: true
                description: SHA-256 do PDF assinado, após a assinatura.
              status:
                type: string
                enum:
                  - signed
                  - declined
                  - not_signed
                  - not_reached
                description: >-
                  `not_signed`: aberto mas não assinado. `not_reached`: nunca
                  foi aberto.
              opened_at:
                type: string
                format: date-time
                nullable: true
              read_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Quando o signatário chegou ao fim de um documento sem campos,
                  quando o passo o exige.
              read_to_end:
                type: boolean
              consented_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Quando o signatário concordou com um documento sem campos ou
                  preencheu os campos de um documento com campos.
              consent:
                type: boolean
              signed_file:
                type: string
                nullable: true
                description: >-
                  Caminho do PDF assinado, assim que estiver assinado. Consulte
                  [Transferir um documento
                  assinado](/pt/sessions-api/electronic-signature/download-signed-document).
              mode:
                type: string
                enum:
                  - fields
                  - read_and_agree
                description: >-
                  `fields` para um documento com campos, `read_and_agree` para
                  um documento sem campos.
              source_format:
                type: string
                enum:
                  - pdf
                  - docx
                description: >-
                  `pdf`, ou `docx` para um documento Word convertido para PDF
                  pela Didit.
              conversion:
                type: object
                nullable: true
                description: >-
                  `null` para um PDF. Para um documento Word, o ficheiro
                  original e a conversão.
                properties:
                  from:
                    type: string
                    enum:
                      - docx
                  file_name:
                    type: string
                    description: O nome original do seu ficheiro Word.
                  sha256:
                    type: string
                    description: SHA-256 do seu ficheiro Word original.
                  size_bytes:
                    type: integer
                    description: Tamanho do seu ficheiro Word original.
                  converter:
                    type: string
                    description: Versão do conversor que gerou o PDF.
              fields:
                type: array
                description: >-
                  Campos no documento, com os respetivos valores. Vazio para um
                  documento sem campos.
                items:
                  $ref: '#/components/schemas/SignatureFieldResult'
        adopted_signature:
          type: object
          nullable: true
          description: >-
            A assinatura e as iniciais que o signatário adotou para os campos de
            assinatura e iniciais. `null` até que o signatário adote uma.
          properties:
            method:
              type: string
              enum:
                - typed
                - drawn
              description: >-
                `typed`: o nome verificado num estilo de caligrafia. `drawn`:
                desenhado com o dedo ou com o rato.
            font:
              type: string
              nullable: true
              description: >-
                O estilo caligráfico de uma assinatura digitada. `null` quando
                desenhada à mão.
            adopted_at:
              type: string
              format: date-time
        electronic_signature_consent_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando o signatário concordou, no ecrã de revisão, em assinar
            eletronicamente os documentos. Definido quando qualquer documento
            tiver campos.
        evidence_file:
          type: string
          nullable: true
          description: >-
            Caminho do PDF de evidências, depois de assinado. Consulte
            [Descarregar as evidências da
            assinatura](/pt/sessions-api/electronic-signature/download-evidence).
        warnings:
          type: array
          description: >-
            Avisos gerados para este signatário. Consulte os [Avisos de
            assinatura
            eletrónica](/pt/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: >-
            A última verificação criptográfica dos documentos assinados. `null`
            até que os documentos sejam assinados. Se a Didit não conseguir
            confirmar o resultado da assinatura, o valor será `{"valid": null,
            "reason": "signature_provider_outcome_unknown", "checked_at": ...}`
            e o `status` permanecerá `signing`: trate-o como não assinado.
          properties:
            valid:
              type: boolean
              nullable: true
              description: >-
                `true` quando todos os documentos são válidos. `null` quando o
                resultado da assinatura não pôde ser confirmado.
            reason:
              type: string
              description: >-
                Definido quando `valid` é `null`:
                `signature_provider_outcome_unknown`.
            checked_at:
              type: string
              format: date-time
            documents:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  checked_at:
                    type: string
                    format: date-time
                  valid:
                    type: boolean
                    description: >-
                      `true` quando a assinatura e o carimbo de data/hora são
                      ambos válidos e fidedignos.
                  integrity:
                    type: boolean
                    description: >-
                      `true` quando o documento não foi alterado desde a
                      assinatura.
                  trusted:
                    type: boolean
                    description: >-
                      `true` quando a cadeia do certificado de assinatura liga a
                      uma raiz fidedigna.
                  revoked:
                    type: boolean
                  trusted_list:
                    type: object
                    description: >-
                      Verificação da Lista Confiável da UE. Para AES:
                      `{"status": "not_applicable", "reason":
                      "aes_not_qualified"}`.
                    properties:
                      status:
                        type: string
                      reason:
                        type: string
                  certificate:
                    type: object
                    nullable: true
                    description: >-
                      O certificado com o qual os documentos foram assinados.
                      `null` até à assinatura e sempre `null` para uma
                      assinatura Simple.
                    properties:
                      issuer:
                        type: string
                      issued_to:
                        type: string
                      serial:
                        type: string
                        description: Número de série, hexadecimal.
                      valid_from:
                        type: string
                        format: date-time
                      valid_until:
                        type: string
                        format: date-time
                  timestamp:
                    type: object
                    nullable: true
                    description: >-
                      O carimbo de data/hora RFC 3161 na assinatura, emitido
                      pela Didit. `null` até ser assinado e sempre `null` para
                      uma assinatura Simples.
                    properties:
                      time:
                        type: string
                        format: date-time
                      qualified:
                        type: boolean
                        description: Sempre `false` para AES.
                      valid:
                        type: boolean
        declined_at:
          type: string
          format: date-time
          nullable: true
        declined_action:
          type: string
          enum:
            - DECLINE
            - REVIEW
            - NO_ACTION
        signed_at:
          type: string
          format: date-time
          nullable: true
        expires_at:
          type: string
          format: date-time
          description: Quando a ligação de assinatura deixa de funcionar.
        email_sent_at:
          type: string
          format: date-time
          nullable: true
        email_unavailable_reason:
          type: string
          nullable: true
        ip_address:
          type: string
          nullable: true
          description: O endereço IP do signatário quando pediu o seu código.
        place:
          type: string
          nullable: true
          description: 'Não recolhido: sempre `null`.'
        place_unavailable_reason:
          type: string
          nullable: true
          enum:
            - not_collected
    AMLScreening:
      type: object
      properties:
        node_id:
          type: string
          description: Identificador exclusivo para este passo de AML no grafo do fluxo.
        status:
          type: string
          description: >-
            Estado ao nível da funcionalidade desta triagem AML. Independente do
            `status` da sessão de nível superior — uma sessão pode alcançar a
            sua decisão global enquanto uma funcionalidade individual permanece
            `In Review`.
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
        total_hits:
          type: integer
          description: Número total de correspondências encontradas
        entity_type:
          type: string
          description: 'Tipo de entidade analisada: pessoa ou empresa'
        hits:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  Identificador estável da Didit para o resultado (hit): `hit_`
                  seguido de 24 carateres hexadecimais. A mesma entidade
                  correspondente mantém o mesmo `id` quando o sujeito é
                  novamente analisado. Transmita-o como `hit_id` para os
                  endpoints de revisão de resultados AML.
              url:
                type: string
                format: uri
                description: URL de origem para a correspondência
              match:
                type: boolean
                description: Se esta é uma correspondência confirmada
              score:
                type: number
                format: float
                nullable: true
                minimum: 0
                maximum: 1
                description: >-
                  Pontuação de correspondência ponderada descontinuada no
                  intervalo 0-1 (por exemplo, `0.73`). Utilize `match_score`
                  (0-100) em alternativa.
                deprecated: true
              target:
                type: boolean
                nullable: true
                description: >-
                  Indica se a entidade correspondente é o alvo direto da
                  listagem (em oposição a uma parte relacionada). `null` quando
                  a fonte não o especificar.
              caption:
                type: string
                description: Legenda ou título da correspondência
              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: >-
                  Lista de categorias de conjuntos de dados onde a
                  correspondência foi encontrada. Indica se a entidade apareceu
                  em listas de PEP (com nível), bases de dados de sanções,
                  notícias adversas, avisos/fiscalização regulamentar ou outros
                  conjuntos de dados de conformidade. `Other Lists` quando a
                  fonte da entidade não indicar nenhuma destas categorias.
              features:
                type: object
                nullable: true
                description: Funcionalidades adicionais da correspondência
              rca_name:
                type: string
                description: Nome da RCA, se aplicável
              last_seen:
                type: string
                format: date-time
                description: Data em que a correspondência foi vista pela última vez
              risk_view:
                type: object
                properties:
                  crimes:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  countries:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  categories:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  custom_list:
                    type: object
              first_seen:
                type: string
                format: date-time
                description: Data em que a correspondência foi vista pela primeira vez
              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: >-
                  Pontuação de confiança da identidade ponderada (0-100)
                  calculada a partir da semelhança do nome, data de nascimento e
                  correspondência do país. Utilizada para determinar se a
                  ocorrência é um falso positivo ou uma possível
                  correspondência.
                format: float
                nullable: true
              risk_score:
                type: number
                description: >-
                  Pontuação de risco da entidade (0-100). Utilizada para
                  determinar o estado final de AML (Aprovada/Em
                  análise/Recusada) com base no risk_score mais elevado entre os
                  resultados que não sejam falsos positivos.
              review_status:
                type: string
                description: >-
                  Estado de revisão para esta correspondência. Pode ser
                  'Unreviewed', 'Confirmed Match', 'False Positive' ou
                  'Inconclusive'.
                enum:
                  - Unreviewed
                  - Confirmed Match
                  - False Positive
                  - Inconclusive
              score_breakdown:
                type: object
                description: >-
                  Detalhamento pormenorizado de como o match_score foi
                  calculado.
                properties:
                  name_score:
                    type: integer
                    description: Percentagem de semelhança de nome em bruto (0-100).
                  name_weight:
                    type: integer
                    description: >-
                      Ponderação original para nome a partir da configuração
                      (0-100).
                  name_weight_normalized:
                    type: number
                    description: >-
                      Peso normalizado para o nome após nova ponderação para
                      dados em falta (0-100).
                  name_contribution:
                    type: number
                    description: Pontos com que o nome contribuiu para a pontuação total.
                  dob_score:
                    type: integer
                    description: >-
                      Pontuação de correspondência da data de nascimento (-100 a
                      100).
                  dob_weight:
                    type: integer
                    description: >-
                      Ponderação original para data de nascimento a partir da
                      configuração (0-100).
                  dob_weight_normalized:
                    type: number
                    description: >-
                      Peso normalizado para a data de nascimento após nova
                      ponderação para dados em falta (0-100).
                  dob_contribution:
                    type: number
                    description: >-
                      Pontos com que a data de nascimento contribuiu para a
                      pontuação total.
                  country_score:
                    type: integer
                    description: Pontuação de correspondência do país (-100 a 100).
                  country_weight:
                    type: integer
                    description: >-
                      Ponderação original para país a partir da configuração
                      (0-100).
                  country_weight_normalized:
                    type: number
                    description: >-
                      Peso normalizado para o país após nova ponderação para
                      dados em falta (0-100).
                  country_contribution:
                    type: number
                    description: Pontos com que o país contribuiu para a pontuação total.
                  document_number_match_type:
                    type: string
                    description: >-
                      Resultado da avaliação da 'Golden Key' do número do
                      documento.
                    enum:
                      - MATCH
                      - NEUTRAL
                      - HARD_MISMATCH
                  document_number_effect:
                    type: string
                    description: >-
                      Descrição legível do efeito do número do documento na
                      pontuação.
                  total_score:
                    type: integer
                    description: Pontuação de correspondência ponderada final (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: >-
                  Lista de correspondências de avisos e fiscalização
                  regulamentar. Inclui entradas das categorias: Warning, SIP,
                  Warnings and Regulatory Enforcement, Fitness and Probity, SIE
                  e Insolvency.
                items:
                  type: object
                  properties:
                    list_name:
                      type: string
                      description: Nome do publicador da lista de avisos
                    matched_name:
                      type: string
                      description: Nome encontrado na lista de avisos
                    description:
                      type: string
                      description: Descrição da entrada do aviso
                    publisher:
                      type: string
                      description: Publicador ou fonte do aviso
                    source_url:
                      type: string
                      format: uri
                      description: URL da fonte do aviso
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: URLs de fontes adicionais
                    countries:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Países associados ao aviso
                    created_at:
                      type: string
                      nullable: true
                      description: Data em que a entrada de aviso foi criada
                    updated_at:
                      type: string
                      nullable: true
                      description: >-
                        Data em que a entrada de aviso foi atualizada pela
                        última vez
                    additional_data:
                      type: object
                      description: >-
                        Dados adicionais da fonte do aviso. Pode conter um
                        objeto `data` com uma matriz `case_details`.
                      properties:
                        data:
                          type: object
                          properties:
                            case_details:
                              type: array
                              description: >-
                                Detalhes dos casos de aviso associados a esta
                                correspondência
                              items:
                                type: object
                                properties:
                                  case_type:
                                    type: string
                                    description: Tipo do caso de aviso
                                    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: >-
                  Lista de correspondências encontradas em listas de sanções
                  para esta entidade.
                items:
                  type: object
                  properties:
                    list_name:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Nome(s) da(s) lista(s) de sanções
                    matched_name:
                      type: string
                      description: Nome encontrado na lista de sanções
                    description:
                      type: string
                      description: Descrição da entrada da sanção
                    reason:
                      type: string
                      nullable: true
                      description: >-
                        Motivo em texto livre pelo qual a entidade foi
                        sancionada. Combinado a partir das entradas de motivo da
                        lista de sanções. Exemplos: '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 da fonte da sanção
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: URLs de fontes adicionais
                    details:
                      type: array
                      items:
                        type: string
                      description: Detalhes adicionais sobre a sanção
                    legal_basis:
                      type: array
                      items:
                        type: string
                      description: Base jurídica da sanção
                    listed_on:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Data(s) em que a entidade foi listada
                    sanction_list:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Identificador(es) da lista de sanções
                    sanction_program:
                      type: array
                      items:
                        type: string
                      description: Programa(s) de sanções em que a entidade está listada
                    sanctioning_authority:
                      type: array
                      items:
                        type: string
                      description: Autoridade/autoridades que aplicaram a sanção
                    updated_on:
                      type: array
                      items:
                        type: string
                      description: >-
                        Data(s) em que a entrada de sanção foi atualizada pela
                        última vez
                    additional_data:
                      type: object
                      description: >-
                        Dados adicionais da fonte de sanções não recolhidos nos
                        campos principais
              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: >-
            Pontuação global da triagem AML — a pontuação de risco mais elevada
            em todas as correspondências (float, 0-100). `null` até ser
            calculada.
        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: >-
            Se a monitorização AML contínua está ativada para esta triagem.
            Quando `true`, a entidade é submetida periodicamente a nova triagem
            e quaisquer novas ocorrências atualizam o relatório.
        next_ongoing_monitoring_bill_date:
          type: string
          format: date
          nullable: true
          description: >-
            Data (YYYY-MM-DD) em que esta subscrição de monitorização contínua
            será faturada da próxima vez. Calculada como a data da última
            faturação de monitorização contínua mais 365 dias quando
            `is_ongoing_monitoring_enabled = true`; caso contrário, `null`. Esta
            é uma data de faturação, não uma data de triagem - utilize
            `last_ongoing_screening_at` para isso.
        last_ongoing_screening_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando a monitorização contínua concluiu pela última vez uma nova
            triagem deste registo, quer o resultado tenha mudado ou não. `null`
            quando o registo nunca foi submetido a uma nova triagem; nunca é
            preenchido retroativamente a partir da data de ativação ou de
            faturação.
        last_ongoing_screening_datasets_updated_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            A data de atualização do conjunto de dados AML mais recente
            reportada pelo fornecedor no momento dessa triagem. `null` quando o
            fornecedor não tiver reportado datas do conjunto de dados; nunca é
            estimada.
        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: >-
                  A funcionalidade que gerou este aviso. O valor identifica o
                  bloco de funcionalidade a que o aviso pertence. Numa triagem
                  AML, este é tipicamente `AML`, mas o enum acima é a referência
                  autoritativa para todos os avisos de funcionalidades no
                  payload da decisão.
              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: O ID do nó do grafo do fluxo que gerou este aviso
    GeolocationCheck:
      type: object
      description: >-
        Um resultado de verificação de Localização, a tentativa aceite de um nó
        do fluxo. Medição, incerteza e autenticidade são chaves separadas, de
        modo que uma determinação precisa sem atestação é interpretada de forma
        diferente de uma determinação imprecisa com atestação.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            Nó do fluxo que gerou este resultado, para que um fluxo com dois
            passos de verificação de localização permaneça legível.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            Estado ao nível da funcionalidade deste passo de verificação de
            localização, determinado a partir dos respetivos avisos.
            Independente do `status` da sessão.
        outcome:
          type: string
          nullable: true
          description: O que aconteceu nesta tentativa.
          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: >-
            O que o sistema operativo ou navegador concedeu. `not_requested`
            significa que o passo utiliza apenas a localização IP da ligação,
            pelo que nunca é solicitada uma permissão à pessoa.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: >-
            Latitude WGS84 da localização obtida. `null` quando não existe
            localização.
          format: double
        longitude:
          type: number
          nullable: true
          description: >-
            Longitude WGS84 da localização obtida. `null` quando não existe
            localização.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            Raio de incerteza em metros, no nível de confiança indicado em
            `accuracy_confidence`.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            Nível de confiança que a plataforma atribui a `accuracy_m`: `p95`
            (navegadores), `p68` (Android) ou `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: >-
            Quando o dispositivo obteve a correção, de acordo com o seu próprio
            relógio.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: Segundos entre o dispositivo obter a posição e a Didit a receber.
        source:
          type: string
          nullable: true
          description: >-
            De onde proveio a localização, quando a plataforma o indicar. `ip`
            significa que a posição é a localização IP da ligação.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: O cliente que produziu a correção.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: Versão do SDK que gerou a correção.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            `true` quando o dispositivo indica que a localização obtida veio de
            um fornecedor de localização simulada ou software de simulação.
            `null` quando a plataforma não o comunica (os navegadores não
            conseguem determinar); `null` não é `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            Apenas iOS: `true` quando a localização foi determinada por um
            acessório externo. `null` noutros casos.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            Se a atestação de dispositivo suporta a correção. `unsupported` é o
            que os navegadores comunicam, porque a Web não tem qualquer
            mecanismo de atestação; não é uma falha.
        country_code:
          type: string
          nullable: true
          description: País ISO 3166-1 alfa-2 onde se encontra a localização.
        region_code:
          type: string
          nullable: true
          description: Subdivisão ISO 3166-2 onde se encontra a posição geográfica.
        city:
          type: string
          nullable: true
          description: Localidade povoada mais próxima, uma etiqueta para os revisores.
        geofence:
          type: object
          description: Resultado das regras de país e área do passo.
          properties:
            enabled:
              type: boolean
              description: Se o passo aplica alguma regra de país ou área.
            result:
              type: string
              nullable: true
              description: >-
                Onde a posição se situa em relação às regras. `undetermined`
                significa que o círculo de precisão abrange a fronteira ou que
                não foi possível determinar o país da posição; não constitui
                prova de estar fora.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `true` quando `geofence.result` é `inside`, `false` quando
            `outside`, `null` caso contrário.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            A partir de que posição o resultado da área foi avaliado: a
            localização do `device` ou a localização do `ip` da ligação.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: >-
            IDs das áreas permitidas configuradas dentro das quais se encontra a
            posição.
        blocked_areas:
          type: array
          items:
            type: string
          description: IDs das áreas bloqueadas configuradas em que a posição se encontra.
        position_source:
          type: string
          nullable: true
          description: >-
            De onde o passo obtém a posição, conforme configurado: o dispositivo
            comparado com a localização do IP, apenas o dispositivo ou apenas a
            localização do IP.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            Como se apresentam a ligação e o dispositivo, cada um `true`,
            `false` ou `null` quando a origem não consegue determinar.
          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: >-
            Distância até à localização IP da sessão após subtrair ambos os
            raios de incerteza; `0` quando se sobrepõem.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            Raio combinado que foi subtraído: o raio da localização por IP mais
            a precisão desta localização.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            Se `ip_distance_km` está dentro da distância configurada no passo.
            `null` quando algum dos lados for desconhecido.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            Distância até à morada geocodificada no documento de identificação
            ou comprovativo de morada. `null` quando não existe nenhuma morada
            registada.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            Se a tolerância de deslocação do passo dispensou a distância em
            relação à morada. `null` quando a tolerância está desativada.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            Na tentativa final: esta verificação mais as discrepâncias
            anteriores da mesma pessoa consecutivas.
        attempts:
          type: integer
          description: Número desta tentativa dentro do nó, a começar em 1.
        consent:
          type: object
          nullable: true
          description: >-
            O consentimento dado pela pessoa antes da instrução do sistema,
            registado com a versão do texto e o idioma apresentados.
          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: >-
                  A funcionalidade que gerou este aviso. O valor identifica o
                  bloco de funcionalidade a que o aviso pertence. O array de
                  avisos de cada módulo utiliza tipicamente o valor
                  correspondente ao seu módulo (por exemplo, `PHONE` dentro de
                  `phone_verifications[].warnings`), mas o enum acima é a
                  referência autoritativa para todos os avisos de
                  funcionalidades no payload da decisão.
              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: O ID do nó do grafo do fluxo que gerou este aviso
          description: >-
            Avisos gerados por este passo de verificação de localização, com
            `feature` definido como `GEOLOCATION`. Os códigos de aviso começam
            com `LOCATION_`.
    GeolocationAttempt:
      type: object
      description: >-
        Uma tentativa de um passo de verificação de localização: as mesmas
        chaves que `geolocation_checks[]` exceto `warnings`, mais o momento em
        que a Didit a recebeu.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            Nó do fluxo que gerou este resultado, para que um fluxo com dois
            passos de verificação de localização permaneça legível.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            Estado ao nível da funcionalidade deste passo de verificação de
            localização, determinado a partir dos respetivos avisos.
            Independente do `status` da sessão.
        outcome:
          type: string
          nullable: true
          description: O que aconteceu nesta tentativa.
          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: >-
            O que o sistema operativo ou navegador concedeu. `not_requested`
            significa que o passo utiliza apenas a localização IP da ligação,
            pelo que nunca é solicitada uma permissão à pessoa.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: >-
            Latitude WGS84 da localização obtida. `null` quando não existe
            localização.
          format: double
        longitude:
          type: number
          nullable: true
          description: >-
            Longitude WGS84 da localização obtida. `null` quando não existe
            localização.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            Raio de incerteza em metros, no nível de confiança indicado em
            `accuracy_confidence`.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            Nível de confiança que a plataforma atribui a `accuracy_m`: `p95`
            (navegadores), `p68` (Android) ou `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: >-
            Quando o dispositivo obteve a correção, de acordo com o seu próprio
            relógio.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: Segundos entre o dispositivo obter a posição e a Didit a receber.
        source:
          type: string
          nullable: true
          description: >-
            De onde proveio a localização, quando a plataforma o indicar. `ip`
            significa que a posição é a localização IP da ligação.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: O cliente que produziu a correção.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: Versão do SDK que gerou a correção.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            `true` quando o dispositivo indica que a localização obtida veio de
            um fornecedor de localização simulada ou software de simulação.
            `null` quando a plataforma não o comunica (os navegadores não
            conseguem determinar); `null` não é `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            Apenas iOS: `true` quando a localização foi determinada por um
            acessório externo. `null` noutros casos.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            Se a atestação de dispositivo suporta a correção. `unsupported` é o
            que os navegadores comunicam, porque a Web não tem qualquer
            mecanismo de atestação; não é uma falha.
        country_code:
          type: string
          nullable: true
          description: País ISO 3166-1 alfa-2 onde se encontra a localização.
        region_code:
          type: string
          nullable: true
          description: Subdivisão ISO 3166-2 onde se encontra a posição geográfica.
        city:
          type: string
          nullable: true
          description: Localidade povoada mais próxima, uma etiqueta para os revisores.
        geofence:
          type: object
          description: Resultado das regras de país e área do passo.
          properties:
            enabled:
              type: boolean
              description: Se o passo aplica alguma regra de país ou área.
            result:
              type: string
              nullable: true
              description: >-
                Onde a posição se situa em relação às regras. `undetermined`
                significa que o círculo de precisão abrange a fronteira ou que
                não foi possível determinar o país da posição; não constitui
                prova de estar fora.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `true` quando `geofence.result` é `inside`, `false` quando
            `outside`, `null` caso contrário.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            A partir de que posição o resultado da área foi avaliado: a
            localização do `device` ou a localização do `ip` da ligação.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: >-
            IDs das áreas permitidas configuradas dentro das quais se encontra a
            posição.
        blocked_areas:
          type: array
          items:
            type: string
          description: IDs das áreas bloqueadas configuradas em que a posição se encontra.
        position_source:
          type: string
          nullable: true
          description: >-
            De onde o passo obtém a posição, conforme configurado: o dispositivo
            comparado com a localização do IP, apenas o dispositivo ou apenas a
            localização do IP.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            Como se apresentam a ligação e o dispositivo, cada um `true`,
            `false` ou `null` quando a origem não consegue determinar.
          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: >-
            Distância até à localização IP da sessão após subtrair ambos os
            raios de incerteza; `0` quando se sobrepõem.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            Raio combinado que foi subtraído: o raio da localização por IP mais
            a precisão desta localização.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            Se `ip_distance_km` está dentro da distância configurada no passo.
            `null` quando algum dos lados for desconhecido.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            Distância até à morada geocodificada no documento de identificação
            ou comprovativo de morada. `null` quando não existe nenhuma morada
            registada.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            Se a tolerância de deslocação do passo dispensou a distância em
            relação à morada. `null` quando a tolerância está desativada.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            Na tentativa final: esta verificação mais as discrepâncias
            anteriores da mesma pessoa consecutivas.
        attempts:
          type: integer
          description: Número desta tentativa dentro do nó, a começar em 1.
        consent:
          type: object
          nullable: true
          description: >-
            O consentimento dado pela pessoa antes da instrução do sistema,
            registado com a versão do texto e o idioma apresentados.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        received_at:
          type: string
          nullable: true
          description: Quando a Didit recebeu a tentativa.
          format: date-time
        created_at:
          type: string
          format: date-time
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        O que um proprietário detém, no mesmo formato para todos os países e
        fontes de registo. Nulo quando o registo não indicar qualquer
        participação. Um intervalo (por exemplo, os 25-50% de um PSC do Reino
        Unido) não é uma participação: `percentage` é nulo e o intervalo
        permanece em `ownership_min_shares` / `ownership_max_shares`.
      properties:
        share_class:
          type: string
          nullable: true
          description: Classe ou tipo de ação conforme designado no registo.
        number_of_shares:
          type: number
          nullable: true
          description: Número de ações detidas.
        currency:
          type: string
          nullable: true
          description: Moeda ISO 4217 dos valores abaixo.
        nominal_value:
          type: number
          nullable: true
          description: Valor nominal por ação.
        total_value:
          type: number
          nullable: true
          description: Valor total da posição detida.
        percentage:
          type: number
          nullable: true
          description: Participação exata em percentagem, até quatro casas decimais.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        Uma morada indicada pelo registo, com o mesmo formato para todos os
        países e fontes de registo. Todas as chaves estão sempre presentes; uma
        parte que o registo não publique é null.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            Tipo de morada em minúsculas: `registered` para a sede social;
            outros tipos conforme designados pelo registo (por exemplo,
            `postal`, `office`). `null` quando o registo não indica o tipo de
            morada.
        address:
          type: string
          description: A morada completa numa linha. Sempre presente em todas as moradas.
        street:
          type: string
          nullable: true
          description: Rua e número.
        city:
          type: string
          nullable: true
          description: Cidade ou localidade.
        postal_code:
          type: string
          nullable: true
          description: Código postal.
        region:
          type: string
          nullable: true
          description: Região, estado ou província.
        country_code:
          type: string
          nullable: true
          description: Código de país ISO 3166-1 alpha-2.
        description:
          type: string
          nullable: true
          description: A etiqueta própria do registo para a morada, quando este a fornece.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: >-
        Uma atividade na qual o registo classifica a empresa, com o mesmo
        formato para todos os países e fontes de registo.
      properties:
        code:
          type: string
          nullable: true
          description: >-
            Código de atividade conforme consta do registo (por exemplo
            `73110`).
        description:
          type: string
          nullable: true
          description: Rótulo da atividade, quando o registo publica um.
        scheme:
          type: string
          nullable: true
          description: >-
            Sistema de classificação, um nome por sistema independentemente da
            fonte que o comunicou: `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`; outros sistemas nacionais mantêm o nome original
            do registo. Nulo quando o registo não especifica o sistema.
        is_primary:
          type: boolean
          description: >-
            True para a atividade principal da empresa. Exatamente uma entrada é
            principal quando a lista não está vazia.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        Detalhe de registo normalizado da Didit para a empresa: o resultado da
        propriedade (`ownership_error`, `section_errors`, `ubo_resolution`,
        `lite_enrichment`), as correções feitas com update-data e factos de
        registo que não têm um campo próprio. Nunca transporta o registo próprio
        da fonte de registo. Todas as chaves são opcionais e estão presentes
        apenas quando a empresa tem um valor para as mesmas; podem ser
        adicionadas novas chaves. Leia os campos canónicos (`addresses`,
        `industries`, `ownership`, `beneficial_owners[].shareholding`) para tudo
        o que abrangem.
      properties:
        company_name:
          type: string
          description: Nome da empresa conforme corrigido na consola.
        registration_number:
          type: string
          description: >-
            Número de registo conforme indicado pelo registo de empresas ou por
            uma correção na consola.
        country_code:
          type: string
          description: >-
            País do registo conforme indicado pelo registo de empresas ou por
            uma correção na consola.
        region:
          type: string
          description: Região ou estado do registo.
        incorporation_date:
          type: string
          description: Data de constituição (ISO 8601).
        registration_date:
          type: string
          description: >-
            Data de registo (ISO 8601) quando o registo de empresas indica uma
            diferente da data de constituição.
        dissolution_date:
          type: string
          description: Data de dissolução (ISO 8601) quando o registo a indicar.
        tax_number:
          type: string
          description: Número de identificação fiscal.
        vat_number:
          type: string
          description: Número de IVA (NIF).
        legal_address:
          type: string
          description: Sede social conforme corrigida na consola.
        registered_address:
          type: string
          description: Morada registada conforme indicada no registo.
        company_type:
          type: string
          description: Forma jurídica.
        registry_status:
          type: string
          description: Estado da empresa no registo de empresas.
        verification_status:
          type: string
          description: Estado da verificação.
        alternative_names:
          type: string
          description: Outros nomes com os quais a empresa opera ou operou.
        nature_of_business:
          type: string
          description: Descrição da atividade.
        registered_capital:
          type: string
          description: Capital social registado conforme impresso.
        registered_capital_amount:
          type: string
          description: >-
            Montante do capital social registado, como cadeia de caracteres
            decimal.
        registered_capital_currency:
          type: string
          description: Moeda do capital social registado (ISO 4217).
        website:
          type: string
          description: Website.
        email:
          type: string
          description: E-mail de contacto.
        phone:
          type: string
          description: Telefone de contacto.
        legal_entity_identifier:
          type: string
          description: Identificador de Entidade Jurídica (LEI).
        location_of_registration:
          type: string
          description: Local de registo.
        control_scheme:
          type: string
          description: Regime de governação quando o registo o disponibiliza.
        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: >-
            O motivo pelo qual um nível de propriedade solicitado não foi
            fornecido, nos mesmos códigos que `ownership.unavailable_reason`.
            `no_owners_on_record` (o registo respondeu e não indica nenhum
            proprietário) e `ownership_section_unavailable` (o registo não
            devolveu a secção de propriedade) são conclusões diferentes.
        section_errors:
          type: object
          description: >-
            Secções que o registo não devolveu, indexadas por secção
            (`officers`, `shareholders`, `group_structure`). Uma secção listada
            aqui nunca foi entregue: uma lista vazia ao lado não diz nada sobre
            a empresa.
          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: >-
            Os campos próprios do registo para a empresa, indexados tal como o
            registo os nomeia, como valores simples (registos legados). Apenas
            estão incluídos os campos revistos como factos do registo.
        registry_sources:
          type: array
          description: >-
            Os registos oficiais a partir dos quais o registo foi lido (registos
            legados). Outras fontes não são indicadas.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: >-
            Nomes sob os quais a empresa esteve registada anteriormente
            (registos históricos).
        parent_companies:
          type: array
          items:
            type: string
          description: Empresas-mãe identificadas pelo registo (registos legados).
        documents_available:
          type: integer
          description: >-
            Quantos registos o registo disponibiliza para a empresa (registos
            legados).
    KYBRegistryOwnership:
      type: object
      description: >-
        O resultado do nível de propriedade (Acionistas / UBO), no mesmo formato
        para todos os países e fontes de registo.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            `delivered` quando o registo disponibilizou os dados de propriedade;
            `not_held` quando o registo de propriedade respondeu e não lista de
            todo a empresa (consulte `unavailable_reason`); `unavailable` quando
            não disponibilizou os dados de propriedade por qualquer outro motivo
            (consulte `unavailable_reason`); `pending` enquanto o registo ainda
            os estiver a obter; `not_requested` para o nível Basic.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: O nível encomendado pelo fluxo.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            O nível entregue pelo registo (e que é faturado). Um pedido de UBO
            respondido apenas com acionistas diretos é `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: >-
            O motivo pelo qual um nível de propriedade solicitado não foi
            fornecido. Nulo, exceto se `status` for `unavailable` ou `pending`.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            True quando as participações declaradas dos acionistas diretos
            perfazem 100% (dentro de uma margem de arredondamento de um ponto
            percentual); false quando não perfazem; null quando a propriedade
            não foi fornecida ou uma participação não está declarada.
        unresolved:
          type: array
          description: >-
            Partes da cadeia de propriedade que o registo não conseguiu
            resolver, por exemplo, a ausência de registo da estrutura do grupo
            acima dos proprietários diretos.
          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: >-
        A tabela de capitalização comprovada pelo registo, tal como constava
        quando o nível de propriedade foi entregue: `shareholders` e
        `beneficial_owners` diretos. Nulo quando o registo não comprovou
        qualquer propriedade. Nunca contém as próprias linhas da fonte de
        registo; consulte `company.beneficial_owners` e `company.ownership` para
        o registo atual.
      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: >-
        A revisão mais recente do Investigator sobre o item, ou nulo se nunca
        tiver tido nenhuma. Transmitida pela decisão da sessão V3 e da sessão
        empresarial (e, portanto, por webhooks `status.updated`).
      properties:
        run_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - running
            - completed
            - failed
        stage:
          type: string
          enum:
            - shadow
            - live
        queue:
          type: string
          enum:
            - kyc
            - kyb
            - aml
            - transactions
            - cases
        is_open:
          type: boolean
        recommendation:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
          nullable: true
        recommendation_detail:
          type: string
          nullable: true
        confidence:
          type: string
          enum:
            - high
            - moderate
            - low
          nullable: true
        summary:
          type: string
          nullable: true
        ready_to_accept:
          type: boolean
        prepared_at:
          type: string
          format: date-time
          nullable: true
        automated:
          type: boolean
          description: >-
            O investigador decidiu autonomamente, mesmo que a decisão tenha sido
            posteriormente substituída.
        decided_by:
          type: string
          enum:
            - investigator
            - member
          nullable: true
        decision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/InvestigatorDecision'
          type: object
    BiometricRetention:
      type: object
      description: Quando os dados biométricos em tempo real desta sessão são eliminados.
      required:
        - jurisdictions
        - deletes_at
      properties:
        jurisdictions:
          type: array
          items:
            type: string
          description: >-
            Códigos dos estados dos EUA cujas regras biométricas definem um
            limite de eliminação para esta pessoa (`US` quando o estado é
            desconhecido). Vazio se nenhum se aplicar.
        deletes_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            A data em que os dados biométricos em tempo real (imagens faciais e
            modelos) desta sessão são eliminados, com base na definição de
            conservação da sua aplicação e, quando aplicável, no limite legal
            para a jurisdição da pessoa. `null` quando ainda não se aplica
            nenhuma data.
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Identificador da plataforma.
          example: whatsapp
        category:
          type: string
          description: >-
            Categoria da plataforma, por exemplo, MESSAGING, SOCIAL_MEDIA,
            ECOMMERCE, PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` para plataformas mundiais, `local` para plataformas
            específicas de uma região.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: Plataformas nesta categoria onde o registo está confirmado.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Percentagem de plataformas verificadas da categoria com registo,
            0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nome do perfil, quando a plataforma o disponibiliza.
        photo:
          type: string
          nullable: true
          description: URL da fotografia de perfil, quando a plataforma o disponibiliza.
        about:
          type: string
          nullable: true
          description: >-
            Texto de biografia/apresentação do perfil, quando a plataforma o
            disponibiliza.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilidade do perfil, quando a plataforma a disponibiliza.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Se o perfil é uma conta empresarial, quando a plataforma o
            disponibiliza.
    SignatureFieldResult:
      type: object
      description: >-
        Um campo de um documento assinado, com o respetivo valor na cópia deste
        signatário. Consulte
        [Campos](/pt/core-technology/electronic-signature/report-electronic-signature#campos).
      properties:
        key:
          type: string
          description: A chave do campo, conforme utilizada em `sign.field_values`.
        type:
          type: string
          enum:
            - signature
            - initials
            - full_name
            - date_signed
            - text
            - checkbox
            - email
            - data
        role:
          type: string
          enum:
            - verified_person
            - legal_representative
            - key_people
        label:
          type: string
        page:
          type: integer
          description: >-
            Número da página, a começar em 1. Para um documento Word, uma página
            do PDF convertido.
        x:
          type: number
          description: Margem esquerda, como fração da largura da página.
        'y':
          type: number
          description: Limite superior, como uma fração da altura da página.
        width:
          type: number
          description: Largura, como uma fração da largura da página.
        height:
          type: number
          description: Altura, como fração da altura da página.
        required:
          type: boolean
        value:
          nullable: true
          description: >-
            Uma cadeia de carateres para `text`, `email`, `full_name`,
            `date_signed` e `data`, um booleano para uma `checkbox`, e `true`
            para uma assinatura ou iniciais aplicadas. `null` quando vazio.
        display_value:
          type: string
          nullable: true
          description: >-
            O valor tal como estampado na página: datas no `date_format` do
            campo, `Yes` ou `No` para uma caixa de seleção, `Signed` para uma
            assinatura ou rubrica.
        value_source:
          type: string
          nullable: true
          enum:
            - signer
            - identity
            - contact
            - company
            - session
            - metadata
            - api
            - signing_time
            - null
          description: >-
            De onde o valor proveio: `signer` (introduzido, assinalado ou
            aplicado pelo signatário), `identity` (a identificação verificada),
            `contact` (o e-mail ou telefone verificado), `company` (a empresa
            verificada), `session` (`vendor_data`), `metadata`, `api`
            (`sign.field_values`) ou `signing_time` (a data de assinatura).
        filled_at:
          type: string
          format: date-time
          nullable: true
        image_url:
          type: string
          nullable: true
          description: >-
            Apenas assinatura e rubricas: o caminho da imagem aplicada. Consulte
            [Descarregar uma imagem de
            assinatura](/pt/sessions-api/electronic-signature/download-field-image).
        value_unavailable_reason:
          type: string
          nullable: true
          enum:
            - source_empty
            - null
          description: >-
            `source_empty` quando um campo pré-preenchido não tinha qualquer
            valor na sessão e `signature_field_data_missing_action` permitiu que
            o signatário assinasse mesmo assim.
    KYBRegistrySectionError:
      type: object
      description: Uma secção que o registo não devolveu.
      properties:
        status_code:
          type: integer
          nullable: true
          description: O estado retornado pelo registo para a secção.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: Como o nível de UBO percorreu a cadeia de propriedade acima da empresa.
      properties:
        parent_chain:
          type: array
          description: Empresas-mãe desde a entidade-mãe final até à empresa.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: Empresas diretamente abaixo da empresa no seu grupo empresarial.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: >-
            Partes da cadeia que o registo não conseguiu resolver (as mesmas
            entradas que `ownership.unresolved`).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  O motivo, por exemplo `no_group_structure_on_record`,
                  `selected_company_not_in_group_structure` ou `section_error`.
              section:
                type: string
                nullable: true
                description: A secção em causa, por exemplo `group_structure`.
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: >-
        Campos vazios do perfil Lite que outra das fontes de registo do país
        preencheu. A fonte não é indicada.
      properties:
        fields:
          type: array
          items:
            type: string
          description: Os campos da empresa que foram preenchidos.
        people_added:
          type: integer
          description: Quantos administradores ou proprietários foram adicionados.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: >-
        Um registo oficial a partir do qual os dados foram obtidos. Apenas são
        nomeados registos governamentais oficiais, reguladores e o sistema
        oficial de identificadores; qualquer outra fonte é omitida.
      properties:
        name:
          type: string
          description: Nome do registo, por exemplo `UK Companies House`.
        source_type:
          type: string
          enum:
            - official
          description: Sempre `official`.
      required:
        - name
        - source_type
    KYBOwnershipStructureOwner:
      type: object
      description: >-
        Um proprietário do instantâneo da propriedade: a mesma identidade de
        registo e participação que `company.beneficial_owners[]`, e a respetiva
        `shareholding` canónica.
      properties:
        name:
          type: string
          nullable: true
          description: Nome do proprietário conforme indicado no registo.
        first_name:
          type: string
          nullable: true
          description: Nome próprio, para uma pessoa singular, quando o registo o indicar.
        last_name:
          type: string
          nullable: true
          description: Apelido, para uma pessoa singular, quando o registo o indica.
        date_of_birth:
          type: string
          nullable: true
          description: Data de nascimento (ISO 8601) quando o registo a publica.
        country_of_birth:
          type: string
          nullable: true
          description: País de nascimento quando o registo o publica.
        company_name:
          type: string
          nullable: true
          description: Nome da empresa, para um proprietário empresarial.
        registration_number:
          type: string
          nullable: true
          description: Número de registo, para um proprietário societário.
        entity_type:
          type: string
          nullable: true
          enum:
            - person
            - company
            - null
          description: Se o proprietário é uma pessoa singular ou uma empresa.
        nationality:
          type: string
          nullable: true
          description: Nacionalidade quando o registo a indicar.
        designation:
          type: string
          nullable: true
          description: O cargo ou a função do titular tal como consta no registo.
        roles:
          type: array
          items:
            type: string
          description: >-
            `shareholder` para um titular direto, `ubo` para um beneficiário
            efetivo.
        ownership_min_shares:
          type: string
          nullable: true
          description: >-
            Limite inferior da participação, em percentagem (igual ao limite
            superior no caso de uma participação exata).
        ownership_max_shares:
          type: string
          nullable: true
          description: Limite superior da participação, em percentagem.
        voting_min_shares:
          type: string
          nullable: true
          description: Limite inferior dos direitos de voto, em percentagem.
        voting_max_shares:
          type: string
          nullable: true
          description: Limite superior dos direitos de voto, em percentagem.
        appointment_date:
          type: string
          nullable: true
          description: Data em que o cargo ou a nomeação teve início (ISO 8601).
        is_active:
          type: boolean
          nullable: true
          description: Falso para um antigo proprietário.
        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: >-
        Como o elemento saiu da fila do Investigator. `decided_by`,
        `original_outcome` e `overrides` são devolvidos pelos endpoints de
        aceitação e substituição e pelo relatório; o bloco `investigator` de uma
        decisão de sessão inclui os restantes campos.
      properties:
        outcome:
          type: string
          enum:
            - accepted
            - edited
            - overridden
            - decided_elsewhere
            - automated
          description: >-
            `accepted` ou `edited` aceitou a recomendação (`edited` com uma
            narrativa reescrita), `overridden` aplicou outra ação,
            `decided_elsewhere` é uma decisão tomada fora do Investigator
            enquanto o relatório estava aberto, `automated` é uma decisão tomada
            pelo próprio Investigator.
        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: O estado do item após a decisão.
        agreed:
          type: boolean
          description: Indica se a decisão coincidiu com a recomendação.
          nullable: true
        decided_at:
          type: string
          format: date-time
        billed:
          type: boolean
          description: A revisão foi cobrada.
        decided_by:
          type: string
          enum:
            - investigator
            - member
        original_outcome:
          type: object
          description: >-
            A decisão tomada autonomamente pelo investigador, inalterada por
            sobreposições posteriores. Null para uma decisão tomada pela equipa.
          properties:
            action:
              type: string
            final_status:
              type: string
            decided_at:
              type: string
              format: date-time
          nullable: true
        overrides:
          type: array
          description: >-
            Cada anulação de uma decisão tomada autonomamente pelo investigador,
            da mais antiga para a mais recente.
          items:
            type: object
            properties:
              action:
                type: string
              actor_email:
                type: string
                nullable: true
              actor_name:
                type: string
                nullable: true
              override_category:
                type: string
              override_reason:
                type: string
              previous_status:
                type: string
              final_status:
                type: string
              agreed:
                type: boolean
                nullable: true
              overridden_at:
                type: string
                format: date-time
    KYBRegistryGroupCompany:
      type: object
      description: Uma empresa do grupo empresarial, pela sua identidade de registo.
      properties:
        name:
          type: string
          nullable: true
          description: Nome da empresa.
        country_code:
          type: string
          nullable: true
          description: País de registo.
        registration_number:
          type: string
          nullable: true
          description: Número de registo.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por
        recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de
        endereços IP e a uma data de validade. 401 significa que a chave está
        incorreta, revogada ou expirada; 403 significa que nenhuma chave foi
        enviada, que a chave não tem acesso a este recurso ou ação, ou que o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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