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

# ライブネス検出の警告とエラーコード一覧

> Diditのライブネスモジュールが出すすべての警告を、原因と対処法つきで解説します。顔攻撃、低スコアや画質によるトリガー、ブロックリストとの一致、重複する顔を扱います。

## 概要

ライブネスレポートの警告は、Diditがライブネスチェックの実行中に検出したすべての状況を示します。警告は`liveness_checks[]`の各項目にある`warnings[]`配列に格納され（[ライブネスレポート](https://docs.didit.me/ja/core-technology/liveness/report-liveness.md)を参照）、`feature`は`"LIVENESS"`に設定されます。各エントリーは共通の[警告オブジェクト](https://docs.didit.me/ja/reference/data-models.md#警告オブジェクト)の形式に従います：`feature`、`risk`、`additional_data`、`log_type`、`short_description`、`long_description`、`node_id`。

すべての警告は3つの層で構成されます。

1. **`risk`コード**：コード内で照合に使える安定した識別子です（以下に記載のコード）。
2. **`log_type`**：`information`、`warning`、`error`のいずれかです。自動却下となるリスクには常に`error`が設定されます。設定可能なリスクでは、設定されたアクションから決まります：**No action** → `information`、**Review** → `warning`、**Decline** → `error`。しきい値に基づくリスク（`LOW_LIVENESS_SCORE`、`LOW_FACE_QUALITY`）では、値が却下しきい値を超えた場合は`error`、レビューしきい値のみを超えた場合は`warning`になります。
3. **判定への影響**：同じ振り分けがライブネスレポートの`status`も決定します。Reviewアクションでは`In Review`に、Declineアクション（または自動却下となるいずれかのリスク）では`Declined`に移行し、アクションなしでは変更されません。

一部のリスク（複数の顔、品質、明るさのチェック）は、ライブネス方式が`PASSIVE`の場合にのみ発生します。以下の表には、ライブネスのリスクコードとその重大度をすべて記載しています。これ以外のライブネスのリスクコードは存在しません。

## 自動却下の条件

以下のリスクは、常にライブネスレポート（およびセッション）を`Declined`にし、`log_type: "error"`が設定されます：

| リスク | トリガー |
| - | - |
| `NO_FACE_DETECTED` | ライブネスの撮影中に顔が検出されなかったか、ユーザーが再試行回数の上限に達しました。 |
| `LIVENESS_FACE_ATTACK` | モデルがプレゼンテーション攻撃（マスク、画面の再生、ディープフェイク型のなりすまし）を検知しました。 |
| `FACE_IN_BLOCKLIST` | 顔がアプリケーションの顔ブロックリストのエントリと一致しました。 |
| `AGE_BELOW_MINIMUM` | 推定年齢が設定された最低年齢を下回りました。適応型の年齢確認ワークフローと`AGE_ESTIMATION`ノードでのみ発生します。 |
| `AGE_NOT_DETECTED` | 年齢を推定できませんでした。本人確認へのフォールバックが無効になっている年齢推定フローでのみ発生します。 |

`NO_FACE_DETECTED`が発生した場合、`LOW_LIVENESS_SCORE`は抑制されます（スコアを算出する顔がないため）。

## 設定可能な検証設定

Diditコンソールでは、ライブネスのリスクは以下のワークフロー設定にまとめられています：

| グループ | リスク | 設定 |
| - | - | - |
| **ライブネススコアのしきい値** | `LOW_LIVENESS_SCORE` | `score`に対するレビューしきい値と却下しきい値。レビューしきい値以下 → `In Review`、却下しきい値以下 → `Declined`。 |
| **重複顔のアクション** | `DUPLICATED_FACE`、`POSSIBLE_DUPLICATED_FACE` | 共通の1つの設定：アクションなし（デフォルト）/ レビュー / 却下。一致した顔が顔の許可リストに含まれている場合は、評価全体がスキップされます。 |
| **重複顔の本人情報不一致** | `DUPLICATED_FACE_NAME_MISMATCH` | 個別の設定（`face_liveness_duplicated_face_name_mismatch_action`）：アクションなし / レビュー（デフォルト）/ 却下。`DUPLICATED_FACE`も発生した場合にのみ評価されます（下記参照）。 |
| **ライブネス攻撃の顔照合** | `FACE_MATCHES_LIVENESS_ATTACK` | 個別の設定（`face_liveness_attack_face_match_action`）：アクションなし（デフォルト）/ 確認。ここで却下を設定することもできますが、レビューとして適用されます。年齢推定ノードでも利用できます。 |
| **ブロックリストに登録されている可能性がある顔** | `POSSIBLE_FACE_IN_BLOCKLIST` | ワークフローでは設定できません。常にレビューに振り分けられます（`log_type: "warning"`）。 |
| **複数の顔のアクション** *（パッシブのみ）* | `MULTIPLE_FACES_DETECTED` | アクションなし（デフォルト）/ レビュー / 却下。 |
| **顔品質のしきい値** *（パッシブのみ）* | `LOW_FACE_QUALITY` | レビューしきい値（デフォルト15）と却下しきい値（デフォルト0、つまり却下は無効）。 |
| **顔の明るさ** *（パッシブのみ）* | `LOW_FACE_LUMINANCE`、`HIGH_FACE_LUMINANCE` | 最小/最大しきい値（正規化された0〜100のスケールでデフォルト20 / 80）と、方向ごとのアクション（デフォルトはレビュー）。 |
| **年齢のしきい値** *（適応型ワークフロー / `AGE_ESTIMATION`ノード）* | `AGE_BELOW_MINIMUM`、`AGE_NOT_DETECTED` | 最低年齢と境界年齢のしきい値。どちらのリスクもライブネスステップを自動却下します。本人確認へのフォールバックが有効な場合、ワークフローはセッションを終了せずに、ユーザーを書類チェックへ振り分けます。 |

## 生成される警告

### コアライブネス

| リスク | 原因 | 重大度 | ステータスへの影響 | 対処法 |
| - | - | - | - | - |
| `NO_FACE_DETECTED` | キャプチャ中に顔が検出されなかった、またはユーザーが再試行回数の上限に達した（`MAX_ATTEMPTS_REACHED`）。 | `error` | **自動却下** | より明るい環境で再撮影し、顔が中央に収まるようにしてください。 |
| `LIVENESS_FACE_ATTACK` | モデルがプレゼンテーション攻撃を検知した。 | `error` | **自動却下** | 不正として扱ってください。セッションは自動的に却下されます。 |
| `LOW_LIVENESS_SCORE` | `score`がワークフローのレビューしきい値以下。`NO_FACE_DETECTED`も存在する場合は抑制されます。 | `warning`。スコアが却下しきい値以下の場合は`error`に引き上げられます | 設定可能（レビュー/却下しきい値） | 再撮影してください。誤検知が見られる場合はしきい値を調整してください。 |

### キャプチャチャネルの完全性

キャプチャ時にクライアントから報告されるインジェクション攻撃のシグナルです。プレゼンテーション攻撃（本物のカメラの前に偽造物をかざすもの）とは異なり、これらはカメラ映像そのものが差し替えられたり傍受されたりしていることを示します。

いずれもワークフローごとに設定でき、デフォルトは**アクションなし**です。そのため、この機能を有効にしても、明示的に設定するまで判定は変わりません。

| リスク | 原因 | 設定キー | デフォルト |
| - | - | - | - |
| `VIRTUAL_CAMERA_DETECTED` | キャプチャデバイスが物理カメラではなく、ソフトウェアの仮想カメラ（OBS、ManyCam、Snap Camera、DroidCamなど）と識別された。 | `virtual_camera_action` | `NO_ACTION` |
| `EXTERNAL_CAPTURE_DEVICE_DETECTED` | キャプチャデバイスが内蔵カメラではなく、外付けカメラまたはキャプチャカードだった。 | `external_capture_device_action` | `NO_ACTION` |
| `FRAME_INJECTION_SUSPECTED` | キャプチャされたフレームに、本物のライブキャプチャではなく、ソフトウェアによる合成やカメラパイプラインへのインジェクションの兆候が見られる、**または**キャプチャがエミュレートまたは仮想化されたハードウェア（Androidエミュレーターやデスクトップの仮想マシン）上で行われた。この場合、物理的なカメラセンサーは存在せず、すべてのフレームがホストから供給されます。 | `frame_injection_action` | `NO_ACTION` |
| `INJECTION_ATTACK_DETECTED` | キャプチャがデバイス自体のカメラで撮影されたものではなく、注入されたものだった。ソフトウェアの仮想カメラ、ページやブラウザ自動化によって生成されたカメラ映像、フックされたカメラ、またはアプリにアタッチされたインストルメンテーションツールなどが該当します。`additional_data.reasons`には、それを証明する理由のみが列挙されます。本物の人物でも発生しうるシグナルでは、この警告は発生しません。ライブネス検知と顔照合では`frame_injection_action`に従うため、セルフィーの判定は変わりません。 | `frame_injection_action` | `NO_ACTION` |
| `SCREEN_CAPTURE_DURING_CAPTURE` | 生体情報のキャプチャ中に、デバイス上で画面録画または画面共有が有効になっていた。 | `screen_capture_action` | `NO_ACTION` |

> [!NOTE]
>
> ブラウザはOSレベルのカメラソース認証をどのベンダーにも公開していないため、Webではこれらのシグナルは証明ではなく裏付けとなる証拠です。Webでは、判定結果が`null`の場合は**未判定**（カメラの権限が付与されるまでデバイスラベルを取得できないため）を意味し、リスクが発生することはありません。

仮想カメラはデバイス名によって識別されるため、オペレーティングシステムが通常の名前で提示するカメラは、この方法では仮想カメラとして認識されません。Androidエミュレーター内では、再マッピングされたカメラは他の内蔵カメラと同じようにラベル付けされます。そのため、エミュレートされたハードウェアのケースは`FRAME_INJECTION_SUSPECTED`で報告されます。これはカメラ名ではなく、デバイス環境（レンダリングスタックと、ユーザーエージェントで報告されるデバイスモデル）から検出されます。デバイス環境に基づく検出結果には`additional_data.reason: "emulated_capture_device"`が付与され、ライブネスモデル自体によるフレーム分析と区別されます。

> [!NOTE]
>
> ブラウザからのマシン検出は証拠であって認証ではなく、意図的な攻撃者はこれを妨害できます。ネイティブのモバイルSDKは、ブラウザからは確認できない、より強力なオペレーティングシステムレベルの完全性シグナル（エミュレーター、root化またはジェイルブレイクされたデバイス、ランタイムフッキング、アタッチされたデバッガー）を報告し、それぞれに[デバイスとランタイムの完全性](https://docs.didit.me/ja/core-technology/ip-analysis/warnings-ip-analysis.md#デバイスとランタイムの完全性)で設定可能なアクションがあります。これらのシグナルは攻撃者のコストを大幅に引き上げますが、それだけではキャプチャが本物のデバイスから行われたことを証明するものではありません。デバイスの完全性シグナルはライブネスの方式とは独立しているため、Passive、3D Flash、3D Action & Flashのいずれとも組み合わせられます。

### 録画の健全性フォレンジック

`LIVENESS_VIDEO_ANOMALY`は、ライブネスモデルとは独立して、**保存されたライブネス録画に対してサーバー側で**算出されます。複数のサイクルにわたって繰り返される動きのあるシーケンスを検出します。これはループ再生された映像と一致する特徴です。

| リスク | 原因 | 設定キー | デフォルト |
| - | - | - | - |
| `LIVENESS_VIDEO_ANOMALY` | 録画に、繰り返される動きのあるシーケンスが含まれている。カメラの停止、静止フレームの繰り返し、冒頭の暗い映像、フレーム配信の遅延だけでは、このシグナルは発生しません。 | `face_liveness_video_anomaly_action` | `NO_ACTION` |

アクションはライブネス検知または年齢推定のノードで設定します。`NO_ACTION`は情報レベルの検出結果を記録し、`REVIEW`は判定済みの認証をレビュー中に引き上げ、`DECLINE`は却下に引き上げることがあります。このチェックは非同期で実行されるため、引き上げは最初の結果の後に届く場合があります。既存の判定がより重大な場合は引き下げられず、手動レビューによる判定は維持されます。

バージョン2の検出結果には、`forensics_version: 2`、`repeated_sequence`の証拠、および`anomaly_reasons`内の`repeated_moving_sequence`が含まれます。`unique_frame_ratio`、`static_pair_ratio`、`decoded_fps_ratio`、`max_frame_gap_seconds`などの配信に関する測定値は診断情報にとどまり、それだけではリプレイを立証できません。以前の検出結果は当時使用された検出器のバージョンに基づくものであり、遡って再分類されることはありません。

> [!NOTE]
>
> これは控えめな追加シグナルであり、合成メディアや注入された映像を完全に検出するものではありません。異常のない録画がライブネスの証明になるわけではありません。短いキャプチャや判断が曖昧なキャプチャ、有効なリプレイの証拠がないキャプチャは、このチェックではフラグが立てられません。録画が存在しないか読み取れない場合、このチェックによる検出結果は生成されませんが、他の認証チェックは引き続き適用されます。

### セッション横断の顔照合

| リスク | 原因 | 追加データ | 重大度 |
| - | - | - | - |
| `FACE_IN_BLOCKLIST` | 顔がブロックリストに登録された顔と一致しました。 | `blocklisted_session_id`、`blocklisted_session_number`、`api_service` | `error`、**自動却下** |
| `POSSIBLE_FACE_IN_BLOCKLIST` | 顔がブロックリストに登録された顔と、より低い信頼度帯で一致しました。 | `blocklisted_session_id`、`blocklisted_session_number`、`api_service` | `warning`、ワークフローでは常にレビューに振り分け |
| `FACE_IN_ALLOWLIST` | 顔が許可リストに登録された顔と一致しました。 | `allowlisted_session_id`、`allowlisted_session_number`、`api_service` | `information`、重複顔のアクションはスキップ |
| `POSSIBLE_FACE_IN_ALLOWLIST` | 顔が許可リストに登録された顔と、より低い信頼度帯で一致しました。 | `allowlisted_session_id`、`allowlisted_session_number`、`api_service` | `information`、重複の可能性がある顔のアクションはスキップ |
| `DUPLICATED_FACE` | 顔が別のユーザーの承認済みの顔(`vendor_data`が異なる`Approved`セッション、またはお客様のvendorユーザーのいずれかに対してインポートされた顔)と一致しました。 | `duplicated_session_id`、`duplicated_session_number`、`api_service` | 設定可能、デフォルトは`information` |
| `POSSIBLE_DUPLICATED_FACE` | 顔が別の承認済みまたはインポート済みの顔と、より低い信頼度帯で一致しました。 | `duplicated_session_id`、`duplicated_session_number`、`api_service` | 設定可能、デフォルトは`information` |
| `DUPLICATED_FACE_NAME_MISMATCH` | 一致したセッションの本人情報が、このセッションで確定した氏名(身分証明書類、`expected_details`、または紐付けられたvendorユーザー)と一致しない場合に、`DUPLICATED_FACE`と同時に出力されます。判定には本人確認と同じ氏名照合スコアリングとしきい値を使用します。異なる氏名で再利用された顔は単純な重複よりも強い不正のシグナルであるため、独自に設定可能なアクションを持ちます。 | `duplicated_session_id`、`duplicated_session_number`、`api_service`、`name_match_score` | 設定可能、デフォルトは`warning`。`DUPLICATED_FACE`自体に設定された結果を緩和することはなく、より厳しくするのみです。 |
| `DUPLICATED_FACE_DOCUMENT_MISMATCH` | 一致したユーザーの身分証明書類に、このセッションの書類とは異なる生年月日が記載されている場合に、`DUPLICATED_FACE`と同時に出力されます。同一人物が別の書類(例えばIDカードの後にパスポート)や更新された書類を提示した場合はフラグされません。また、同じ国の同じ書類番号を共有する2つのセッションがフラグされることはありません。 | `duplicated_session_id`、`duplicated_session_number`、`api_service`、`mismatch_dimensions` | 設定可能(`face_liveness_duplicated_face_document_mismatch_action`)、デフォルトは`Review`。`DUPLICATED_FACE`自体に設定された結果を緩和することはなく、より厳しくするのみです。 |
| `FACE_MATCHES_LIVENESS_ATTACK` | 顔が、このアプリケーションの以前のセッションのうち別のユーザーのもので、そのライブネスキャプチャが高い信頼度で攻撃と判定されたセッションの顔と一致しました。これはレビューのための証拠であり、攻撃の証明ではありません。 | `liveness_attack_session_id`、`liveness_attack_session_number`、`similarity_percentage`、`liveness_attack_sessions_count` | 設定可能、デフォルトは`information`(アクションなし) |

インポートされた顔やリスト登録された顔(セッションを持たない顔)との一致の場合、`additional_data`内の`*_session_id`、`*_session_number`、`api_service`の値は`null`になります。

同じユーザー(同じ`vendor_data`、または利用可能な場合は同じvendorユーザー)に属する顔は、インデックス検索の**全体**から除外されます。これは重複検知とブロックリストスクリーニングの両方に適用されます。一致の優先順位は、ブロックリスト完全一致 → 許可リスト完全一致 → 重複完全一致 → ブロックリスト一致の可能性 → 許可リスト一致の可能性 → 重複の可能性の順で、相互に排他的なこれら6つのコードのうち、1件のレポートに表示されるのは1つだけです。`DUPLICATED_FACE_NAME_MISMATCH`はこの優先順位グループには含まれません。これは本人情報の確認も失敗した場合に`DUPLICATED_FACE`に**加えて**出力される追加のコードであり、その代わりに出力されることはありません。`additional_data.name_match_score`に比較対象の氏名が含まれることはありません。含まれるのはIDとスコアのみであるため、警告ペイロードにPIIが入ることはありません。

書類ごとに異なる文字体系で書かれた氏名(例えば一方はヘブライ文字、もう一方はラテン文字)は、両方のセッションが同一人物のものであってもしきい値を下回るスコアになることがあります。この場合に限り、2つのセッションの身分証明書類が以下のすべてについて互いに裏付けられているときは、`DUPLICATED_FACE_NAME_MISMATCH`は出力されません。

* 両方の書類の発行国が同じであること。
* 2つの書類の間で識別子が完全に一致すること。書類の種類によって同じ国民番号がどちらのフィールドにも記載されうるため、`document_number`と`personal_number`は相互に同等として扱われます。
* 両方の書類に生年月日が記載されている場合、それが同じ日付であること。

氏名が同じ文字体系で書かれている場合、識別子または発行国が異なるか欠落している場合、あるいは生年月日が互いに矛盾する場合は、上記のとおり警告が引き続き出力されます。

### パッシブライブネスの品質 (`method = "PASSIVE"`の場合のみ)

| リスク | 原因 | 重大度 | 対処方法 |
| - | - | - | - |
| `MULTIPLE_FACES_DETECTED` | キャプチャ中に複数の顔が映っていました。スコアリングと照合には常に最も大きい顔が使用されます。 | 設定可能、デフォルトは`information` | 1人だけで撮影し直してください。 |
| `LOW_FACE_QUALITY` | 顔の品質がレビューのしきい値(デフォルトは15)を下回っています。 | `warning`。却下のしきい値(デフォルトは0、却下は無効)を下回る場合は`error` | ピントを合わせる、遮蔽物を減らす、顔を中央に配置する。 |
| `LOW_FACE_LUMINANCE` | 正規化された輝度が最小しきい値(デフォルトは20)を下回っています。 | 設定可能、デフォルトは`warning`(アクションのデフォルトはレビュー) | 照明を明るくしてください。 |
| `HIGH_FACE_LUMINANCE` | 正規化された輝度が最大しきい値(デフォルトは80)を上回っています。 | 設定可能、デフォルトは`warning`(アクションのデフォルトはレビュー) | 照明を弱め、逆光を避けてください。 |

`LOW_FACE_LUMINANCE`と`HIGH_FACE_LUMINANCE`は相互に排他的です。輝度は最小値を下回るか最大値を上回るかのいずれかであり、両方になることはありません。

### 年齢推定 (アダプティブワークフローと`AGE_ESTIMATION`ノード)

| リスク | 原因 | 重大度 | 対処 |
| - | - | - | - |
| `AGE_BELOW_MINIMUM` | 推定年齢が設定された最低年齢を下回っています(本人確認へのフォールバックが有効な場合は、境界しきい値を下回っています)。 | `error` | 設定されている場合、ワークフローは本人確認にフォールバックします。 |
| `AGE_NOT_DETECTED` | 年齢を推定できず、本人確認へのフォールバックが無効になっています。 | `error` | フォールバックを有効にするか、再撮影してください。 |

## 完全一致の説明文字列

APIは、各リスクについて次の`short_description`と`long_description`の文字列をそのまま返します。

| `risk` | `short_description` | `long_description` |
| - | - | - |
| `NO_FACE_DETECTED` | No Face Detected in liveness | The system couldn't identify a face during the liveness check, which may be due to poor image quality, improper positioning, or technical issues. |
| `LIVENESS_FACE_ATTACK` | Liveness Face Attack | The system detected a potential attempt to bypass the liveness check. |
| `LOW_LIVENESS_SCORE` | Low liveness score | The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data. |
| `LIVENESS_VIDEO_ANOMALY` | Liveness video stream anomaly | 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. |
| `FACE_IN_BLOCKLIST` | ブロックリスト内の顔 | The system identified a face in the blocklist, which means the face is not allowed to be verified. |
| `POSSIBLE_FACE_IN_BLOCKLIST` | Possible face in blocklist | The system identified a possible face in the blocklist, which means the face is not allowed to be verified. |
| `FACE_IN_ALLOWLIST` | 許可リスト内の顔 | The face matched the application's face allowlist, so duplicate-face actions were skipped for this signal. |
| `POSSIBLE_FACE_IN_ALLOWLIST` | Possible face in allowlist | The face possibly matched the application's face allowlist, so possible duplicate-face actions were skipped for this signal. |
| `DUPLICATED_FACE` | 他の承認済みセッションとの重複顔 | The system identified a duplicated face from another approved session, requiring further investigation. |
| `POSSIBLE_DUPLICATED_FACE` | Possible duplicated face from other approved session | The system identified a possible duplicate face from another approved session, requiring further investigation. |
| `DUPLICATED_FACE_NAME_MISMATCH` | Duplicated face under a different name | 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. |
| `FACE_MATCHES_LIVENESS_ATTACK` | Face matches a liveness attack | The face in this liveness capture matches a face from an earlier session of this application whose own capture the liveness engine judged to be an attack with high confidence, in a session of another user. A genuine user can be rejected by mistake, so this is a signal for review, not proof of an attack. |
| `MULTIPLE_FACES_DETECTED` | Multiple faces detected | 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. |
| `LOW_FACE_QUALITY` | Low face quality | 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. |
| `LOW_FACE_LUMINANCE` | Low face luminance | The facial image is too dark, which may affect the accuracy of liveness detection. Better lighting conditions are recommended. |
| `HIGH_FACE_LUMINANCE` | High face luminance | The facial image is too bright or overexposed, which may affect the accuracy of liveness detection. Reduced lighting or avoiding direct light is recommended. |
| `AGE_BELOW_MINIMUM` | Age below minimum | The age of the face is below the minimum age threshold for the application. |
| `AGE_NOT_DETECTED` | Age not detected | The system couldn't identify the age of the face, which is necessary for document verification. |

## スタンドアロンのパッシブライブネスAPI

スタンドアロンの[ライブネスAPI](https://docs.didit.me/ja/standalone-apis/passive-liveness.md)は同じリスクコードを使用しますが、動作にいくつか違いがあります。

* `NO_FACE_DETECTED`と`LOW_LIVENESS_SCORE`が同時に発生することはありません。スコアのチェックは顔が検出された場合にのみ実行されます。`LOW_LIVENESS_SCORE`はリクエストの`face_liveness_score_decline_threshold`(デフォルトは30)を基準に発生し、常に`log_type: "error"`を持ちます。
* `POSSIBLE_FACE_IN_BLOCKLIST`はレビューではなく却下(`log_type: "error"`)として扱われます。
* `MULTIPLE_FACES_DETECTED`は`log_type: "warning"`を持ち、顔の重複に関するリスクは情報として扱われたままです。スタンドアロンのレスポンスの`status`を`Declined`に変えるのは、`error`レベルの警告のみです。
* スタンドアロンの警告エントリには`feature`が含まれますが、`node_id`は含まれません。

## 例

### 攻撃検知時の自動却下

```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"
  }
]
```

### パッシブキャプチャでの設定可能な警告

```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"
  }
]
```

### ペイロード付きの重複顔

```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"
  }
]
```

この例では重複顔のアクションが「レビュー」に設定されているため、警告は`log_type: "warning"`を持ち、ライブネスレポートのステータスは`In Review`になります。デフォルト(アクションなし)の場合は、代わりに`log_type: "information"`になります。一致した顔がスタンドアロンのAPI呼び出しではなくワークフローのセッションから得られたものであるため、`api_service`は`null`です。

### 異なる氏名での重複顔

```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`は独自に設定されたアクション(ここではアクションなし、`log_type: "information"`)のままですが、`DUPLICATED_FACE_NAME_MISMATCH`は独自のアクションを持ち、デフォルトは「レビュー」(`log_type: "warning"`)です。ライブネスレポートのステータスは、2つのうち重大度の高いほうに従います。重複顔のみの設定ではフラグは立たなかったにもかかわらず、ここでは`In Review`になります。

### 測定値を伴う録画の整合性異常

```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"
  }
]
```

この例は、動きのあるシーケンスが3つ含まれる録画から得られたリプレイの証拠を示しています。設定されたアクションが`NO_ACTION`であるため、`log_type`は`information`です。簡潔にするためこの例では省略しているフレーム配信の診断情報は、この検出をトリガーしません。

## 警告の種類

各リスクには、アプリケーションの設定に基づいて重大度が割り当てられます。重大度は次の3つです。

## 関連情報

* [ライブネスレポート](https://docs.didit.me/ja/core-technology/liveness/report-liveness.md):レポートの完全なスキーマとステータス。
* [顔照合の警告](https://docs.didit.me/ja/core-technology/face-match/warnings-face-match.md):関連する1:1顔照合の警告。
* [Webhook](https://docs.didit.me/ja/integration/webhooks.md):`session.status.updated`は、ライブネスステップの完了後すぐに警告を含みます。
* [データモデル:ライブネスチェック](https://docs.didit.me/ja/reference/data-models.md#ライブネスチェック):すべてのフィールドを含む正式なスキーマ。
* [データモデル:警告オブジェクト](https://docs.didit.me/ja/reference/data-models.md#警告オブジェクト):`warnings[]`の各エントリの構造。


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