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

# Relatório de autenticação biométrica: Esquema JSON

> Analise respostas de autenticação biométrica da Didit com prova de vida e correspondência facial opcional em liveness_checks e face_matches.

O relatório de Autenticação biométrica é a forma como a Didit comunica o resultado da reverificação de um utilizador recorrente. O fluxo executa uma nova verificação de prova de vida e, quando a Correspondência facial está ativada no fluxo, uma correspondência facial 1:1 com o rosto de referência determinado na criação da sessão (a `portrait_image` que forneceu, ou o rosto guardado do utilizador pesquisado por `vendor_data`). Ambas as verificações surgem como itens padrão de funcionalidade na resposta de decisão da sessão V3.

![Relatório de autenticação biométrica da Didit combinando verificação de prova de vida e correspondência facial com um retrato guardado](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/biometric-auth-report.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=c02e5558780972797d4b2feea685bc73)

## Visão geral

A Autenticação biométrica é um tipo de fluxo (`workflow_type: "biometric_authentication"`), e não um objeto de resposta separado. Quando o fluxo é executado, emite:

* Uma **verificação de prova de vida** que captura uma selfie em direto e avalia-a quanto a spoofing.
* Uma **correspondência facial** que compara o rosto capturado com o rosto de referência determinado na criação da sessão (apenas quando a Correspondência facial está ativada no fluxo).

Sempre que o fluxo inclui Correspondência facial, a criação da sessão necessita de um rosto de referência. Envie `portrait_image` (imagem codificada em base64, máximo de 2 MB), ou omita-o e a Didit reutiliza o rosto já guardado para o utilizador com esse `vendor_data`: primeiro um rosto obtido numa prova de vida aprovada, depois a fotografia do chip do passaporte eletrónico, a seguir o retrato do documento de identificação e, por fim, um rosto de perfil registado manualmente. Se nem `portrait_image` nem um rosto guardado estiverem disponíveis, a criação da sessão devolve `400` com `{"portrait_image": "No stored face image was found for this user. Send a portrait_image, or complete an approved verification with face liveness or an ID document for this vendor_data first."}`. Em ambos os casos, a referência determinada é registada na nova sessão, pelo que o `source_image_session_id` do item de correspondência facial é definido como o próprio `session_id` dessa sessão (isto indica que a referência veio do retrato guardado da sessão em vez de um retrato de documento capturado na mesma sessão, o que deixaria o campo `null`).

## Onde aparece

| Chave da resposta de decisão | Plural | Esquema do item |
| - | - | - |
| `liveness_checks[]` | Uma por passo de prova de vida (normalmente 1 na autenticação biométrica) | [data-models#liveness-check](https://docs.didit.me/pt/reference/data-models.md#verificação-de-prova-de-vida) |
| `face_matches[]` | Uma por passo de correspondência facial (`null` em fluxos apenas de prova de vida) | [data-models#face-match](https://docs.didit.me/pt/reference/data-models.md#correspondência-facial) |

Ambos os arrays são devolvidos por [`GET /v3/session/{sessionId}/decision/`](https://docs.didit.me/pt/sessions-api/retrieve-session) para sessões cujo tipo de fluxo é `biometric_authentication`. São sempre arrays — nunca objetos singulares — e cada um é `null` até que o seu passo tenha produzido dados. Cada item inclui um `node_id` para que fluxos com várias instâncias possam desambiguar os passos.

## Referência do esquema

A lista completa de campos é definida uma única vez na página de modelos de dados, para que todos os relatórios que apresentam estas funcionalidades partilhem a mesma fonte de referência:

* [Esquema do item de prova de vida](https://docs.didit.me/pt/reference/data-models.md#verificação-de-prova-de-vida) — `status`, `method`, `score`, `reference_image`, `video_url`, `age_estimation`, `matches[]`, `face_quality`, `face_luminance`, `warnings[]`, `node_id`.
* [Esquema do item de correspondência facial](https://docs.didit.me/pt/reference/data-models.md#correspondência-facial) — `status`, `score`, `source_image_session_id`, `source_image`, `target_image`, `warnings[]`, `node_id`.
* [Estrutura do registo de aviso](https://docs.didit.me/pt/reference/data-models.md#objeto-de-aviso) — `feature`, `risk`, `additional_data`, `log_type`, `short_description`, `long_description`, `node_id`.

## Valores de estado

Tanto `liveness_checks[].status` como `face_matches[].status` utilizam o ciclo de vida partilhado de funcionalidades ([estados ao nível da funcionalidade](https://docs.didit.me/pt/reference/data-models.md#estados-ao-nível-da-funcionalidade)):

| Estado | Significado |
| - | - |
| `Not Finished` | O passo ainda não produziu um resultado final (o utilizador não o concluiu ou abandonou o processo). Antes de um passo ser iniciado, o respetivo array fica simplesmente a `null` na resposta de decisão. |
| `Approved` | A verificação passou todos os limiares configurados. |
| `In Review` | A pontuação situou-se no intervalo de análise, ou um aviso configurável foi definido para análise. |
| `Declined` | A pontuação situou-se no limiar de recusa ou abaixo dele, ou foi acionado um aviso de recusa automática (ataque facial, nenhum rosto detetado, rosto na lista de bloqueio, ausência de imagem de referência para correspondência facial). |
| `Resub Requested` | Um revisor solicitou ao utilizador que tentasse novamente este passo. |

O `status` geral da sessão agrega ambos os itens: qualquer funcionalidade em `Declined` recusa a sessão, qualquer uma em `In Review` coloca a sessão em `In Review`; caso contrário, é `Approved` (depois de todas as funcionalidades terminarem).

Para o comportamento dos limiares e a lista completa de códigos de aviso, consulte [Avisos de Autenticação biométrica](https://docs.didit.me/pt/core-technology/biometric-auth/warnings-biometric-authentication.md).

## Exemplo — prova de vida + correspondência facial (aprovada)

Os exemplos são abreviados: o envelope completo da decisão inclui também `session_url`, `metadata`, `callback`, `reviews`, `contact_details`, `expected_details`, `environment`, `created_at` e `expires_at`.

```json theme={null}
{
  "session_id": "11111111-2222-3333-4444-555555555555",
  "session_kind": "user",
  "session_number": 1234,
  "status": "Approved",
  "workflow_id": "018e7b2c-5555-7777-9999-aaaaaaaaaaaa",
  "features": ["LIVENESS", "FACE_MATCH"],
  "vendor_data": "user-123",
  "liveness_checks": [
    {
      "node_id": "feature_liveness",
      "status": "Approved",
      "method": "PASSIVE",
      "score": 89.92,
      "reference_image": "https://<media-host>/.../reference.jpg",
      "video_url": "https://<media-host>/.../video.mp4",
      "age_estimation": null,
      "matches": [],
      "face_quality": 92.4,
      "face_luminance": 58.1,
      "warnings": []
    }
  ],
  "face_matches": [
    {
      "node_id": "feature_face_match",
      "status": "Approved",
      "score": 88.47,
      "source_image_session_id": "11111111-2222-3333-4444-555555555555",
      "source_image": "https://<media-host>/.../source.jpg",
      "target_image": "https://<media-host>/.../target.jpg",
      "warnings": []
    }
  ],
  "id_verifications": null,
  "nfc_verifications": null,
  "poa_verifications": null,
  "phone_verifications": null,
  "email_verifications": null,
  "aml_screenings": null
}
```

## Exemplo — apenas prova de vida (Correspondência facial desativada no fluxo)

```json theme={null}
{
  "session_id": "22222222-3333-4444-5555-666666666666",
  "session_kind": "user",
  "status": "Approved",
  "workflow_id": "018e7b2c-6666-7777-9999-bbbbbbbbbbbb",
  "features": ["LIVENESS"],
  "vendor_data": "user-456",
  "liveness_checks": [
    {
      "node_id": "feature_liveness",
      "status": "Approved",
      "method": "ACTIVE_3D",
      "score": 96.10,
      "reference_image": "https://<media-host>/.../reference.jpg",
      "video_url": "https://<media-host>/.../video.mp4",
      "age_estimation": null,
      "matches": [],
      "face_quality": null,
      "face_luminance": null,
      "warnings": []
    }
  ],
  "face_matches": null
}
```

O modo apenas de prova de vida é uma configuração de fluxo: quando a Correspondência facial está desativada, não é necessário qualquer rosto de referência na criação da sessão e `face_matches` permanece a `null`. Quando a Correspondência facial **está** ativada, omitir `portrait_image` não ativa o modo de apenas prova de vida: a Didit reutiliza o rosto guardado para o utilizador com esse `vendor_data` e, se não existir nenhum rosto guardado, a criação da sessão falha com `400`.

## Exemplo — correspondência facial recusada por baixa similaridade

```json theme={null}
{
  "session_id": "33333333-4444-5555-6666-777777777777",
  "status": "Declined",
  "workflow_id": "018e7b2c-5555-7777-9999-aaaaaaaaaaaa",
  "liveness_checks": [
    {
      "node_id": "feature_liveness",
      "status": "Approved",
      "method": "PASSIVE",
      "score": 91.20,
      "reference_image": "https://<media-host>/.../reference.jpg",
      "video_url": "https://<media-host>/.../video.mp4",
      "age_estimation": null,
      "matches": [],
      "face_quality": 90.15,
      "face_luminance": 55.30,
      "warnings": []
    }
  ],
  "face_matches": [
    {
      "node_id": "feature_face_match",
      "status": "Declined",
      "score": 41.18,
      "source_image_session_id": "33333333-4444-5555-6666-777777777777",
      "source_image": "https://<media-host>/.../source.jpg",
      "target_image": "https://<media-host>/.../target.jpg",
      "warnings": [
        {
          "feature": "FACEMATCH",
          "risk": "LOW_FACE_MATCH_SIMILARITY",
          "additional_data": null,
          "log_type": "error",
          "short_description": "Low face match similarity",
          "long_description": "The facial features of the provided image don't closely match the reference image, suggesting a potential identity mismatch.",
          "node_id": "feature_face_match"
        }
      ]
    }
  ]
}
```

## Nota de segurança

`reference_image`, `video_url`, `source_image` e `target_image` são URLs assinados que expiram após uma janela de validade limitada (4 horas por predefinição). Apontam para dados biométricos — não os guarde em cache nem os exponha publicamente. Guarde o resultado da verificação (status, score, `source_image_session_id`) do seu lado; volte a consultar o endpoint de decisão se necessitar de novos URLs.

## Relacionado

> [card] [Avisos de autenticação biométrica](https://docs.didit.me/pt/core-technology/biometric-auth/warnings-biometric-authentication.md)
>
> Códigos de aviso, limiares e condições de recusa automática.

> [card] [Relatório de prova de vida](https://docs.didit.me/pt/core-technology/liveness/report-liveness.md)
>
> Referência completa dos campos para itens de `liveness_checks[]`.

> [card] [Relatório de correspondência facial](https://docs.didit.me/pt/core-technology/face-match/report-face-match.md)
>
> Referência completa dos campos para itens de `face_matches[]`.


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