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

# Advertències i codis d'error de la prova de vida

> Totes les advertències del mòdul de prova de vida de Didit: atacs facials, qualitat, llistes de bloqueig i cares duplicades, amb causa i solució.

## Visió general

Les advertències de l'informe de prova de vida assenyalen cada condició que Didit ha observat en executar la comprovació de prova de vida. S'inclouen a la matriu `warnings[]` de cada element de `liveness_checks[]` (consulta l'[informe de prova de vida](https://docs.didit.me/ca/core-technology/liveness/report-liveness.md)), amb `feature` establert a `"LIVENESS"`. Cada entrada segueix l'estructura compartida de l'[objecte d'advertència](https://docs.didit.me/ca/reference/data-models.md#objecte-d’advertència): `feature`, `risk`, `additional_data`, `log_type`, `short_description`, `long_description`, `node_id`.

Cada advertència té tres capes:

1. **El codi `risk`**: un identificador estable amb què pots fer una coincidència al teu codi (els codis llistats a continuació).
2. **El `log_type`**: un dels següents valors: `information`, `warning` o `error`. Els riscos de rebuig automàtic sempre porten `error`. Per als riscos configurables, es deriva de l'acció configurada: **Sense acció** → `information`, **Revisió** → `warning`, **Rebutjar** → `error`. Per als riscos basats en llindars (`LOW_LIVENESS_SCORE`, `LOW_FACE_QUALITY`), és `error` quan el valor creua el llindar de rebuig i `warning` quan només creua el llindar de revisió.
3. **L'impacte en la decisió**: el mateix encaminament determina el `status` de l'informe de prova de vida: una acció de Revisió el passa a `In Review`, una acció de rebuig (o qualsevol risc de rebuig automàtic) a `Declined`, i Sense acció el deixa sense canvis.

Alguns riscos només s'emeten quan el mètode de prova de vida és `PASSIVE` (comprovacions de múltiples cares, de qualitat i de luminància). Les taules següents mostren el conjunt complet de codis de risc de prova de vida i les seves severitats; no hi ha altres codis de risc de prova de vida.

## Condicions de rebuig automàtic

Els riscos següents sempre forcen l'informe de prova de vida (i la sessió) a `Declined`, amb `log_type: "error"`:

| Risc | Activador |
| - | - |
| `NO_FACE_DETECTED` | No s'ha localitzat cap cara durant la captura de prova de vida, o l'usuari ha esgotat els intents disponibles. |
| `LIVENESS_FACE_ATTACK` | El model ha detectat un atac de presentació (màscara, reproducció en pantalla, suplantació de classe deepfake). |
| `FACE_IN_BLOCKLIST` | La cara ha coincidit amb una entrada de la llista de bloqueig de cares de la teva aplicació. |
| `AGE_BELOW_MINIMUM` | Edat estimada inferior al mínim configurat. Només s'emet en fluxos de treball adaptatius de verificació d'edat i nodes `AGE_ESTIMATION`. |
| `AGE_NOT_DETECTED` | No s'ha pogut estimar l'edat. Només s'emet en fluxos d'estimació d'edat amb el mecanisme de reserva de verificació d'identitat desactivat. |

Quan s'activa `NO_FACE_DETECTED`, `LOW_LIVENESS_SCORE` se suprimeix (no hi ha cap cara per puntuar).

## Configuració de verificació

A la consola de Didit, els riscos de prova de vida s'agrupen sota les configuracions del flux de treball següents:

| Grup | Riscos | Configuració |
| - | - | - |
| **Llindars de puntuació de prova de vida** | `LOW_LIVENESS_SCORE` | Llindar de revisió + llindar de rebuig a `score`. Igual o inferior al llindar de revisió → `In Review`; igual o inferior al llindar de rebuig → `Declined`. |
| **Acció per cara duplicada** | `DUPLICATED_FACE`, `POSSIBLE_DUPLICATED_FACE` | Una configuració compartida: Sense acció (per defecte) / Revisió / Rebutjar. S'omet completament quan la cara coincident és a la teva llista de cares permeses. |
| **Discrepància d'identitat de cara duplicada** | `DUPLICATED_FACE_NAME_MISMATCH` | Configuració pròpia (`face_liveness_duplicated_face_name_mismatch_action`): Sense acció / Revisió (per defecte) / Rebutjar. Només s'avalua quan `DUPLICATED_FACE` també s'activa; consulta més avall. |
| **Coincidència facial amb un atac de prova de vida** | `FACE_MATCHES_LIVENESS_ATTACK` | Configuració pròpia (`face_liveness_attack_face_match_action`): Sense acció (per defecte) / Revisió. Si s'estableix Rebutjar aquí, s'accepta però s'aplica com a Revisió. També disponible al node d'Estimació d'edat. |
| **Possible coincidència d'una cara amb la llista de bloqueig** | `POSSIBLE_FACE_IN_BLOCKLIST` | No és configurable en fluxos de treball; sempre s'encamina a Revisió (`log_type: "warning"`). |
| **Acció per a múltiples cares** *(només en mode passiu)* | `MULTIPLE_FACES_DETECTED` | Sense acció (per defecte) / Revisió / Rebutjar. |
| **Llindars de qualitat de la cara** *(només en mode passiu)* | `LOW_FACE_QUALITY` | Llindar de revisió (15 per defecte) + llindar de rebuig (0 per defecte, és a dir, rebuig desactivat). |
| **Luminància de la cara** *(només en mode passiu)* | `LOW_FACE_LUMINANCE`, `HIGH_FACE_LUMINANCE` | Llindars mínims / màxims (valors per defecte 20 / 80 a l'escala normalitzada de 0 a 100) + una acció per direcció (Revisió per defecte). |
| **Llindars d'edat** *(fluxos de treball adaptatius / node `AGE_ESTIMATION`)* | `AGE_BELOW_MINIMUM`, `AGE_NOT_DETECTED` | Llindars d'edat mínima i d'edat límit; ambdós riscos rebutgen automàticament el pas de prova de vida. Amb el mecanisme de reserva de verificació d'identitat activat, el flux de treball redirigeix l'usuari a una comprovació de documents en lloc de finalitzar la sessió. |

## Advertències generades

### Prova de vida principal

| Risc | Causa | Severitat | Afecta l'estat? | Resolució |
| - | - | - | - | - |
| `NO_FACE_DETECTED` | No s'ha localitzat cap rostre durant la captura, o l'usuari ha esgotat els intents de reintent (`MAX_ATTEMPTS_REACHED`). | `error` | **Rebuig automàtic** | Torna a capturar amb millor il·luminació; assegura't que el rostre estigui centrat. |
| `LIVENESS_FACE_ATTACK` | El model ha detectat un atac de presentació. | `error` | **Rebuig automàtic** | Tracta-ho com a frau. La sessió es rebutja automàticament. |
| `LOW_LIVENESS_SCORE` | `score` igual o inferior al llindar de revisió del flux de treball. S'omet quan `NO_FACE_DETECTED` també està present. | `warning`; escala a `error` quan la puntuació és igual o inferior al llindar de rebuig | Configurable (llindars de revisió / rebuig) | Torna a capturar; ajusta els llindars si observes falsos positius. |

### Integritat del canal de captura

Senyals d'atac d'injecció notificats pel client en el moment de la captura. A diferència dels atacs de presentació (un artefacte sostingut davant d'una càmera real), aquests descriuen la substitució o intercepció del propi senyal de la càmera.

Cadascun és configurable per flux de treball i té per defecte el valor **sense acció**, de manera que activar la funcionalitat no canvia cap decisió fins que ho configuris expressament.

| Risc | Causa | Clau de configuració | Per defecte |
| - | - | - | - |
| `VIRTUAL_CAMERA_DETECTED` | El dispositiu de captura s'ha identificat com una càmera virtual per programari (OBS, ManyCam, Snap Camera, DroidCam i similars) en lloc d'una càmera física. | `virtual_camera_action` | `NO_ACTION` |
| `EXTERNAL_CAPTURE_DEVICE_DETECTED` | El dispositiu de captura era una càmera externa o una capturadora de vídeo en lloc d'una càmera integrada. | `external_capture_device_action` | `NO_ACTION` |
| `FRAME_INJECTION_SUSPECTED` | Els fotogrames capturats mostren indicadors de composició per programari o d'injecció al conducte de la càmera en lloc d'una captura en directe genuïna, **o** la captura s'ha dut a terme en maquinari emulat o virtualitzat (un emulador d'Android o una màquina virtual d'escriptori), on no existeix cap sensor de càmera físic i cada fotograma el subministra l'amfitrió. | `frame_injection_action` | `NO_ACTION` |
| `INJECTION_ATTACK_DETECTED` | La captura ha estat injectada en lloc de capturada per la càmera pròpia del dispositiu: una càmera virtual per programari, un senyal de càmera generat per la pàgina o per automatització del navegador, una càmera interceptada per hooking o una eina d'instrumentació connectada a l'aplicació. `additional_data.reasons` només llista els motius que ho demostren. Els senyals que una persona genuïna pot produir mai no l'activen. En la prova de vida i en la coincidència facial, segueix `frame_injection_action`, de manera que les decisions de selfie no canvien. | `frame_injection_action` | `NO_ACTION` |
| `SCREEN_CAPTURE_DURING_CAPTURE` | L'enregistrament de pantalla o l'ús compartit de pantalla estaven actius al dispositiu durant la captura biomètrica. | `screen_capture_action` | `NO_ACTION` |

> [!NOTE]
>
> Els navegadors no exposen cap atestació de l'origen de la càmera a nivell de sistema operatiu a cap proveïdor, de manera que a la web aquests senyals són proves corroborants i no pas una prova. A la web, un veredicte de `null` significa **no determinat** (les etiquetes dels dispositius no estan disponibles fins que no s'atorga el permís de la càmera) i mai no activa cap risc.

Una càmera virtual s'identifica pel nom del seu dispositiu, de manera que una càmera que el sistema operatiu presenta amb un nom ordinari no es reconeix d'aquesta manera. Dins d'un emulador d'Android, la càmera reassignada s'etiqueta com una càmera integrada, motiu pel qual el cas de maquinari emulat es notifica a través de `FRAME_INJECTION_SUSPECTED`: es detecta a partir de l'entorn del dispositiu (la pila de renderització i el model de dispositiu notificat a l'agent d'usuari) en lloc del nom de la càmera. Les troballes generades a partir de l'entorn del dispositiu inclouen `additional_data.reason: "emulated_capture_device"`, diferenciant-se així de l'anàlisi de fotogrames propi del model de prova de vida.

> [!NOTE]
>
> Detectar la màquina des d'un navegador és un indici, no una atestació, i un atacant decidit hi pot interferir. Els SDK natius per a mòbils reporten senyals d'integritat més sòlids a nivell de sistema operatiu que un navegador no pot veure (emulador, dispositiu amb root o jailbreak, hooking en temps d'execució, depurador connectat), cadascun amb la seva pròpia acció configurable a [Integritat del dispositiu i del temps d'execució](https://docs.didit.me/ca/core-technology/ip-analysis/warnings-ip-analysis.md#integritat-del-dispositiu-i-del-temps-d’execució). Aquests senyals incrementen considerablement el cost per a l'atacant, però per si sols no demostren que una captura provingui d'un dispositiu genuí. Els senyals d'integritat del dispositiu són independents del mètode de prova de vida, per la qual cosa es combinen amb qualsevol de Passive, 3D Flash o 3D Action & Flash.

### Anàlisi forense de la integritat de la gravació

`LIVENESS_VIDEO_ANOMALY` es calcula **al servidor a partir de la gravació de prova de vida emmagatzemada**, de manera independent del model de prova de vida. Detecta una seqüència en moviment repetida al llarg de múltiples cicles, coherent amb un senyal en bucle.

| Risc | Causa | Clau de configuració | Per defecte |
| - | - | - | - |
| `LIVENESS_VIDEO_ANOMALY` | La gravació conté una seqüència en moviment repetida. Les interrupcions de la càmera, els fotogrames estàtics repetits, els inicis foscos i el lliurament lent de fotogrames per si sols no activen aquest senyal. | `face_liveness_video_anomaly_action` | `NO_ACTION` |

Configura l'acció al teu node de Prova de vida o d'Estimació d'edat: `NO_ACTION` registra una troballa informativa, `REVIEW` pot escalar una verificació ja decidida a En revisió, i `DECLINE` pot escalar-la a Rebutjada. La comprovació s'executa de manera asíncrona, de manera que una escalada pot arribar després del resultat inicial. Una decisió existent més greu no es degrada, i les decisions de revisió manual es mantenen.

Les troballes de la versió 2 inclouen `forensics_version: 2`, l'evidència `repeated_sequence` i `repeated_moving_sequence` a `anomaly_reasons`. Les mètriques de lliurament com ara `unique_frame_ratio`, `static_pair_ratio`, `decoded_fps_ratio` i `max_frame_gap_seconds` continuen sent diagnòstics; no poden establir una reproducció per si soles. Les troballes més antigues descriuen la versió del detector utilitzada en aquell moment i no es reclassifiquen retroactivament.

> [!NOTE]
>
> Aquest és un senyal addicional conservador, no una detecció exhaustiva de mitjans sintètics o vídeo injectat. Una gravació sense anomalies no és una prova concloent de vida. Les captures curtes o ambigües i les captures sense proves de reproducció utilitzables no són marcades per aquesta comprovació. Les gravacions que falten o són il·legibles no produeixen cap troballa d'aquesta comprovació; la resta de comprovacions de verificació continuen aplicant-se.

### Coincidència facial entre sessions

| Risc | Causa | Dades addicionals | Gravetat |
| - | - | - | - |
| `FACE_IN_BLOCKLIST` | La cara ha coincidit amb una cara de la llista de bloqueig. | `blocklisted_session_id`, `blocklisted_session_number`, `api_service` | `error` — **rebuig automàtic** |
| `POSSIBLE_FACE_IN_BLOCKLIST` | La cara ha coincidit amb una cara de la llista de bloqueig en una franja de confiança més baixa. | `blocklisted_session_id`, `blocklisted_session_number`, `api_service` | `warning` — sempre es desvia a Revisió als fluxos de treball |
| `FACE_IN_ALLOWLIST` | La cara ha coincidit amb una cara de la llista de permesos. | `allowlisted_session_id`, `allowlisted_session_number`, `api_service` | `information` — s'omet l'acció per cara duplicada |
| `POSSIBLE_FACE_IN_ALLOWLIST` | La cara ha coincidit amb una cara de la llista de permesos en una franja de confiança més baixa. | `allowlisted_session_id`, `allowlisted_session_number`, `api_service` | `information` — s'omet l'acció per possible cara duplicada |
| `DUPLICATED_FACE` | La cara ha coincidit amb una cara ja aprovada d'un altre usuari (una sessió `Approved` amb un `vendor_data` diferent, o una cara importada per a un dels teus usuaris del proveïdor). | `duplicated_session_id`, `duplicated_session_number`, `api_service` | Configurable — `information` per defecte |
| `POSSIBLE_DUPLICATED_FACE` | La cara ha coincidit amb una altra cara aprovada o importada en una franja de confiança més baixa. | `duplicated_session_id`, `duplicated_session_number`, `api_service` | Configurable — `information` per defecte |
| `DUPLICATED_FACE_NAME_MISMATCH` | S'emet conjuntament amb `DUPLICATED_FACE` quan la identitat de la sessió coincident no coincideix amb el nom resolt d'aquesta sessió (document d'identitat, `expected_details` o usuari del proveïdor vinculat), utilitzant la mateixa puntuació i llindar de coincidència de noms que la verificació d'identitat. Una cara reutilitzada amb un nom diferent és un senyal de frau més fort que un simple duplicat, per la qual cosa té la seva pròpia acció configurable. | `duplicated_session_id`, `duplicated_session_number`, `api_service`, `name_match_score` | Configurable — `warning` per defecte. Mai rebaixa el resultat configurat de `DUPLICATED_FACE`, només l'escala. |
| `DUPLICATED_FACE_DOCUMENT_MISMATCH` | S'emet conjuntament amb `DUPLICATED_FACE` quan el document d'identitat de l'usuari coincident mostra una data de naixement diferent de la del document d'aquesta sessió. La mateixa persona presentant un document diferent (per exemple un passaport després d'un document d'identitat) o un document renovat no es marca, i dues sessions que comparteixen el mateix número de document del mateix país mai es marquen. | `duplicated_session_id`, `duplicated_session_number`, `api_service`, `mismatch_dimensions` | Configurable (`face_liveness_duplicated_face_document_mismatch_action`) - `Review` per defecte. Mai rebaixa el resultat configurat de `DUPLICATED_FACE`, només l'escala. |
| `FACE_MATCHES_LIVENESS_ATTACK` | La cara coincideix amb una cara d'una sessió anterior d'aquesta aplicació, d'un altre usuari, la captura de prova de vida del qual es va considerar un atac amb alta confiança. Evidència per revisar, no una prova d'un atac. | `liveness_attack_session_id`, `liveness_attack_session_number`, `similarity_percentage`, `liveness_attack_sessions_count` | Configurable - `information` per defecte (Sense acció) |

Per a coincidències amb cares importades o cares que són entrades de llista (que no tenen cap sessió), els valors de `*_session_id`, `*_session_number` i `api_service` a `additional_data` són `null`.

Les cares que pertanyen al mateix usuari (mateix `vendor_data`, o el mateix usuari del proveïdor quan estigui disponible) s'exclouen de **tota** la cerca a l'índex: tant de la detecció de duplicats com del cribratge de llistes de bloqueig. La precedència de coincidència és: llista de bloqueig exacta → llista de permesos exacta → duplicat exacte → llista de bloqueig possible → llista de permesos possible → duplicat possible; només un d'aquests sis codis mútuament excloents apareix per informe. `DUPLICATED_FACE_NAME_MISMATCH` no forma part d'aquest grup de precedència: és un codi addicional que s'emet **a més de** `DUPLICATED_FACE` quan la comprovació d'identitat també falla, mai en el seu lloc. `additional_data.name_match_score` mai conté els noms que es comparen; només identificadors i una puntuació, de manera que cap informació d'identificació personal (PII) arriba al payload de l'advertència.

Un nom escrit en un sistema d'escriptura diferent en cada document (per exemple en hebreu en un i en llatí en l'altre) pot obtenir una puntuació inferior al llindar fins i tot quan ambdues sessions pertanyen a la mateixa persona. En aquest únic cas, `DUPLICATED_FACE_NAME_MISMATCH` no s'emet quan els documents d'identitat de les dues sessions es corroboren mútuament en tots aquests punts:

* Ambdós documents indiquen el mateix estat emissor.
* Un identificador coincideix exactament entre els dos documents. `document_number` i `personal_number` compten indistintament, ja que el mateix número nacional pot aparèixer en qualsevol dels dos camps segons el tipus de document.
* Quan ambdós documents inclouen una data de naixement, és la mateixa data.

Si els noms estan en el mateix sistema d'escriptura, si l'identificador o l'estat emissor difereix o falta, o si les dates de naixement es contradiuen, l'advertència s'emet igualment tal com s'ha descrit anteriorment.

### Qualitat de la prova de vida passiva (només quan `method = "PASSIVE"`)

| Risc | Causa | Gravetat | Resolució |
| - | - | - | - |
| `MULTIPLE_FACES_DETECTED` | Hi havia més d'una cara visible durant la captura. La cara més gran s'utilitza sempre per a la puntuació i la coincidència. | Configurable — `information` per defecte | Tornar a fer la captura en solitari. |
| `LOW_FACE_QUALITY` | Qualitat facial per sota del llindar de revisió (15 per defecte). | `warning`; `error` quan està per sota del llindar de rebuig (0 per defecte: rebuig desactivat) | Millor enfocament / menys oclusió / cara centrada. |
| `LOW_FACE_LUMINANCE` | Lluminositat normalitzada per sota del llindar mínim (20 per defecte). | Configurable — `warning` per defecte (l'acció per defecte és Revisió) | Millor il·luminació. |
| `HIGH_FACE_LUMINANCE` | Lluminositat normalitzada per sobre del llindar màxim (80 per defecte). | Configurable — `warning` per defecte (l'acció per defecte és Revisió) | Reduir la il·luminació; evitar el contrallum. |

`LOW_FACE_LUMINANCE` i `HIGH_FACE_LUMINANCE` són mútuament excloents: la lluminositat està per sota del mínim o per sobre del màxim, mai ambdues coses a la vegada.

### Estimació d'edat (fluxos de treball adaptatius i nodes `AGE_ESTIMATION`)

| Risc | Causa | Gravetat | Mesures correctores |
| - | - | - | - |
| `AGE_BELOW_MINIMUM` | Edat estimada per sota del mínim configurat (o llindar límit quan l'alternativa de verificació d'identitat està activada). | `error` | El flux de treball recorre a la verificació d'identitat si està configurat. |
| `AGE_NOT_DETECTED` | No s'ha pogut estimar l'edat i l'alternativa de verificació d'identitat està desactivada. | `error` | Activa l'alternativa o torna a fer la captura. |

## Cadenes de descripció exactes

L'API retorna exactament aquestes cadenes de `short_description` i `long_description` per a cada risc:

| `risk` | `short_description` | `long_description` |
| - | - | - |
| `NO_FACE_DETECTED` | No s'ha detectat cap cara a la prova de vida | El sistema no ha pogut identificar cap cara durant la verificació de prova de vida, cosa que pot ser deguda a una mala qualitat de la imatge, una col·locació incorrecta o problemes tècnics. |
| `LIVENESS_FACE_ATTACK` | Atac facial a la prova de vida | El sistema ha detectat un possible intent d'eludir la comprovació de prova de vida. |
| `LOW_LIVENESS_SCORE` | Puntuació de prova de vida baixa | La comprovació de prova de vida ha donat una puntuació baixa, cosa que indica un possible ús de representacions facials no vives o dades biomètriques de baixa qualitat. |
| `LIVENESS_VIDEO_ANOMALY` | Anomalia en el flux de vídeo de prova de vida | El vídeo de prova de vida enregistrat conté una seqüència en moviment repetida coherent amb una emissió en bucle. Les aturades de la càmera, els fotogrames estàtics repetits i el lliurament lent de fotogrames per si sols no activen aquest senyal. Aquesta és una comprovació d'enregistrament independent, no una avaluació completa de si la captura és en viu. |
| `FACE_IN_BLOCKLIST` | Cara a la llista de bloqueig | El sistema ha identificat una cara a la llista de bloqueig, la qual cosa significa que no es permet verificar la cara. |
| `POSSIBLE_FACE_IN_BLOCKLIST` | Possible cara a la llista de bloqueig | El sistema ha identificat una possible cara a la llista de bloqueig, la qual cosa significa que no es permet verificar la cara. |
| `FACE_IN_ALLOWLIST` | Cara a la llista d'autoritzats | La cara coincideix amb la llista de cares autoritzades de l'aplicació, per la qual cosa s'han omès les accions relacionades amb cares duplicades per a aquest senyal. |
| `POSSIBLE_FACE_IN_ALLOWLIST` | Possible cara a la llista d'autoritzats | La cara possiblement coincideix amb la llista de cares autoritzades de l'aplicació, per la qual cosa s'han omès les possibles accions relacionades amb cares duplicades per a aquest senyal. |
| `DUPLICATED_FACE` | Cara duplicada d'una altra sessió aprovada | El sistema ha identificat una cara duplicada d'una altra sessió aprovada, cosa que requereix una investigació addicional. |
| `POSSIBLE_DUPLICATED_FACE` | Possible cara duplicada d'una altra sessió aprovada | El sistema ha identificat una possible cara duplicada d'una altra sessió aprovada, cosa que requereix una investigació addicional. |
| `DUPLICATED_FACE_NAME_MISMATCH` | Cara duplicada amb un nom diferent | La mateixa cara ja s'havia aprovat en una altra sessió, però amb un nom diferent. La identitat que hi ha darrere del duplicat no coincideix amb la identitat declarada en aquesta sessió, cosa que constitueix un indici clar de frau d'identitat. |
| `FACE_MATCHES_LIVENESS_ATTACK` | La cara coincideix amb un atac a la prova de vida | La cara d'aquesta captura de prova de vida coincideix amb una cara d'una sessió anterior d'aquesta aplicació la captura de la qual el motor de prova de vida va considerar un atac amb un alt grau de confiança, en una sessió d'un altre usuari. Un usuari legítim pot ser rebutjat per error, de manera que aquest és un senyal per a revisió, no una prova d'un atac. |
| `MULTIPLE_FACES_DETECTED` | S'han detectat múltiples cares | S'han detectat múltiples cares a la imatge de prova de vida. El sistema utilitza la cara més gran per a la verificació de prova de vida i la comparació facial, però la presència de múltiples cares pot requerir una revisió addicional. |
| `LOW_FACE_QUALITY` | Baixa qualitat facial | La qualitat de la imatge facial està per sota del llindar acceptable, cosa que pot afectar la fiabilitat de la detecció de prova de vida. Això es podria deure a la resolució de la càmera, l'enfocament o artefactes de compressió. |
| `LOW_FACE_LUMINANCE` | Baixa lluminositat facial | La imatge facial és massa fosca, cosa que pot afectar la precisió de la detecció de prova de vida. Es recomana millorar les condicions d'il·luminació. |
| `HIGH_FACE_LUMINANCE` | Alta lluminositat facial | La imatge facial és massa brillant o sobreexposada, cosa que pot afectar la precisió de la detecció de prova de vida. Es recomana reduir la il·luminació o evitar la llum directa. |
| `AGE_BELOW_MINIMUM` | Edat per sota del mínim | L'edat de la cara està per sota del llindar d'edat mínima per a l'aplicació. |
| `AGE_NOT_DETECTED` | Edat no detectada | El sistema no ha pogut identificar l'edat de la cara, que és necessària per a la verificació de documents. |

## API independent de prova de vida passiva

L'[API de prova de vida](https://docs.didit.me/ca/standalone-apis/passive-liveness.md) independent reutilitza els mateixos codis de risc amb algunes diferències de comportament:

* `NO_FACE_DETECTED` i `LOW_LIVENESS_SCORE` són mútuament excloents: la comprovació de la puntuació només s'executa quan s'ha trobat una cara. `LOW_LIVENESS_SCORE` s'activa en funció del `face_liveness_score_decline_threshold` de la sol·licitud (30 per defecte) i sempre inclou `log_type: "error"`.
* `POSSIBLE_FACE_IN_BLOCKLIST` es tracta com un rebuig (`log_type: "error"`) en lloc d'una revisió.
* `MULTIPLE_FACES_DETECTED` inclou `log_type: "warning"`, mentre que els riscos de cares duplicades es mantenen com a informatius. Només les advertències de nivell `error` canvien l'`status` de la resposta independent a `Declined`.
* Les entrades d'advertència independents inclouen `feature`, però no `node_id`.

## Exemples

### Rebuig automàtic per atac detectat

```json theme={null}
"warnings": [
  {
    "feature": "LIVENESS",
    "risk": "LIVENESS_FACE_ATTACK",
    "additional_data": null,
    "log_type": "error",
    "short_description": "Liveness Face Attack",
    "long_description": "The system detected a potential attempt to bypass the liveness check.",
    "node_id": "liveness_primary"
  }
]
```

### Advertències configurables en una captura passiva

```json theme={null}
"warnings": [
  {
    "feature": "LIVENESS",
    "risk": "LOW_FACE_QUALITY",
    "additional_data": null,
    "log_type": "warning",
    "short_description": "Low face quality",
    "long_description": "The facial image quality is below the acceptable threshold, which may affect the reliability of liveness detection. This could be due to camera resolution, focus, or compression artifacts.",
    "node_id": "liveness_primary"
  },
  {
    "feature": "LIVENESS",
    "risk": "LOW_FACE_LUMINANCE",
    "additional_data": null,
    "log_type": "warning",
    "short_description": "Low face luminance",
    "long_description": "The facial image is too dark, which may affect the accuracy of liveness detection. Better lighting conditions are recommended.",
    "node_id": "liveness_primary"
  },
  {
    "feature": "LIVENESS",
    "risk": "MULTIPLE_FACES_DETECTED",
    "additional_data": null,
    "log_type": "information",
    "short_description": "Multiple faces detected",
    "long_description": "Multiple faces were detected in the liveness image. The system uses the largest face for liveness verification and face comparison, but the presence of multiple faces may require additional review.",
    "node_id": "liveness_primary"
  }
]
```

### Cara duplicada amb payload

```json theme={null}
"warnings": [
  {
    "feature": "LIVENESS",
    "risk": "DUPLICATED_FACE",
    "additional_data": {
      "duplicated_session_id": "8d2f1c4e-6b7a-4c8d-9e0f-1a2b3c4d5e6f",
      "duplicated_session_number": 123,
      "api_service": null
    },
    "log_type": "warning",
    "short_description": "Duplicated face from other approved session",
    "long_description": "The system identified a duplicated face from another approved session, requiring further investigation.",
    "node_id": "liveness_primary"
  }
]
```

Aquí l'acció per a cara duplicada està configurada a Review, de manera que l'advertència inclou `log_type: "warning"` i l'estat de l'informe de prova de vida és `In Review`. Amb el valor per defecte (No action) inclouria `log_type: "information"`. `api_service` és `null` perquè la cara coincident prové d'una sessió de flux de treball, no pas d'una crida d'API independent.

### Cara duplicada sota un nom diferent

```json theme={null}
"warnings": [
  {
    "feature": "LIVENESS",
    "risk": "DUPLICATED_FACE",
    "additional_data": {
      "duplicated_session_id": "8d2f1c4e-6b7a-4c8d-9e0f-1a2b3c4d5e6f",
      "duplicated_session_number": 123,
      "api_service": null
    },
    "log_type": "information",
    "short_description": "Duplicated face from other approved session",
    "long_description": "The system identified a duplicated face from another approved session, requiring further investigation.",
    "node_id": "liveness_primary"
  },
  {
    "feature": "LIVENESS",
    "risk": "DUPLICATED_FACE_NAME_MISMATCH",
    "additional_data": {
      "duplicated_session_id": "8d2f1c4e-6b7a-4c8d-9e0f-1a2b3c4d5e6f",
      "duplicated_session_number": 123,
      "api_service": null,
      "name_match_score": 42.5
    },
    "log_type": "warning",
    "short_description": "Duplicated face under a different name",
    "long_description": "The same face was already approved on another session, but under a different name. The identity behind the duplicate does not match the identity declared on this session, which is a strong indicator of identity fraud.",
    "node_id": "liveness_primary"
  }
]
```

`DUPLICATED_FACE` es manté en la seva pròpia acció configurada (aquí, No action — `log_type: "information"`) mentre que `DUPLICATED_FACE_NAME_MISMATCH` inclou la seva pròpia acció, que per defecte és Review (`log_type: "warning"`). L'estat de l'informe de prova de vida adopta la més greu de les dues: aquí `In Review`, tot i que la configuració bàsica de cara duplicada per si sola no l'hauria marcat.

### Anomalia de coherència de la gravació amb les seves mesures

```json theme={null}
"warnings": [
  {
    "feature": "LIVENESS",
    "risk": "LIVENESS_VIDEO_ANOMALY",
    "additional_data": {
      "forensics_version": 2,
      "duration_seconds": 6.0,
      "repeated_sequence": {
        "period_frames": 6,
        "cycles": 3,
        "matched_pairs": 12
      },
      "anomaly_reasons": ["repeated_moving_sequence"]
    },
    "log_type": "information",
    "short_description": "Liveness video stream anomaly",
    "long_description": "The recorded liveness video contains a repeated moving sequence consistent with a looped feed. Camera stalls, repeated still frames and slow frame delivery alone do not raise this signal. This is an independent recording check, not a complete assessment of whether the capture is live.",
    "node_id": "liveness_primary"
  }
]
```

Aquest exemple mostra les proves de reproducció d'una gravació que conté tres còpies d'una seqüència en moviment. `log_type` és `information` perquè l'acció configurada és `NO_ACTION`. Els diagnòstics de lliurament de fotogrames, omesos en aquest exemple per brevetat, no activen aquesta detecció.

## Tipus d'advertència

A cada risc se li assigna una gravetat basada en la configuració de la teva aplicació. Les tres gravetats són:

## Relacionat

* [Informe de prova de vida](https://docs.didit.me/ca/core-technology/liveness/report-liveness.md) — esquema complet de l'informe i estats.
* [Advertències de coincidència facial](https://docs.didit.me/ca/core-technology/face-match/warnings-face-match.md) — advertències complementàries de coincidència facial 1:1.
* [Webhooks](https://docs.didit.me/ca/integration/webhooks.md) — `session.status.updated` inclou les advertències tan bon punt finalitza el pas de prova de vida.
* [Models de dades — Comprovació de prova de vida](https://docs.didit.me/ca/reference/data-models.md#prova-de-vida) — esquema canònic amb tots els camps.
* [Models de dades — Objecte d'advertència](https://docs.didit.me/ca/reference/data-models.md#objecte-d’advertència) — l'estructura de cada entrada a `warnings[]`.


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