概要
機能ごとのレポートはすべて、service-didit-verificationで定義されたV3シリアライザーの形式に従います。同じオブジェクトが3か所に現れるため、ここに示すスキーマがそれらすべてに共通する唯一の信頼できる情報源です。
GET /v3/session/{sessionId}/decision/:各機能は複数形の配列として返されます(id_verifications[]、nfc_verifications[]、liveness_checks[]、face_matches[]、poa_verifications[]、phone_verifications[]、email_verifications[]、aml_screenings[]、ip_analyses[]、database_validations[]、questionnaire_responses[]、signatures[]、bank_verifications[](銀行認証の方法を参照)、およびKYBの対応項目であるregistry_checks[]、document_verifications[]、key_people_checks[])。- Webhookペイロード(
status.updated、data.updated):decisionエンベロープ内で同じ形式です。 - スタンドアロンAPI:単一オブジェクトのレスポンス(顔検索、年齢推定、生体認証)も同じフィールドセットを使用します。
V3ではマルチインスタンスのワークフローが導入されました。すべての機能オブジェクトには
node_idが含まれ、レポートを生成したワークフローグラフのノードにそのレポートを紐付けます。V2エンドポイント(単数形のkyc、face、amlなど)は後方互換性を維持していますが、最初のインスタンスのみを返します。共通フィールド
すべてのレポートオブジェクトは次のフィールドを持ちます。| フィールド | 型 | 説明 |
|---|---|---|
status | string | 機能レベルのライフサイクルステータス。ステータスenumのいずれかの値です。ソース:common/config/choices.py:FeatureStatusChoices(343〜348行目)。親セッションの最上位のstatusは、より範囲の広いセッションenum(StatusChoices、106〜117行目)を使用します。 |
node_id | string | null | ワークフローグラフのノード識別子。V3のマルチインスタンスワークフローでは値が設定され、従来の単一機能セッションではnullになります。 |
warnings | 警告オブジェクトの配列 | この機能とnode_idで絞り込まれたリスクシグナル。Session.get_logs(...)(sessions/models/session.py:1611)が返します。 |
portrait_image、front_image、document_fileなど)は、有効期間が限られた事前署名付きURLです。URLを保存するのではなく、速やかにダウンロードしてください。例ではhttps://<media-host>/...と表記しています。
警告オブジェクト
すべてのwarnings[]配列で返されます。スキーマはlogs/serializers/log.py:8-65(LogV3Serializer)に基づきます。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
feature | string(enum) | いいえ | 警告を出した機能。値はLogWarningChoices(common/config/choices.py:190-204)に由来し、ID_VERIFICATION、NFC、LIVENESS、FACEMATCH、PROOF_OF_ADDRESS、PHONE、EMAIL、AML、LOCATION、DATABASE_VALIDATION、QUESTIONNAIRE、KYB_REGISTRY、KYB_DOCUMENTS、KYB_KEY_PEOPLEのいずれかです。 | "ID_VERIFICATION" |
risk | string | いいえ | 固定のリスクコード(例:DOCUMENT_EXPIRED、LOW_LIVENESS_SCORE)。値はlogs/choices.py:RiskChoicesに由来します。説明テーブルのキーとして使用されます。 | "DOCUMENT_EXPIRED" |
additional_data | object | null | はい | リスク固有のコンテキスト(例:スコアのしきい値、一致したフィールド)。形式はリスクコードによって異なります。 | { "score": 42.1, "threshold": 70 } |
log_type | string(enum) | いいえ | error、warning、informationのいずれか。LogTypeChoices(common/config/choices.py:207-210)に由来します。 | "error" |
short_description | string | いいえ | リスクを表す、人が読める形式のラベル。logs/choices.py:RISK_SHORT_DESCRIPTIONSに由来します。 | "Document expired" |
long_description | string | いいえ | エンドユーザー向けの画面での表示に適した、人が読める形式の詳しい説明。logs/choices.py:RISK_LONG_DESCRIPTIONSに由来します。 | "The document's expiration date has passed, rendering it no longer valid for use." |
node_id | string | null | はい | 警告の発生元となったワークフローグラフのノード。node_idを持たない従来のV2ログではnullになります。 | "first_id_verification" |
{
"feature": "ID_VERIFICATION",
"risk": "DOCUMENT_EXPIRED",
"additional_data": null,
"log_type": "error",
"short_description": "Document expired",
"long_description": "The document's expiration date has passed, rendering it no longer valid for use.",
"node_id": "first_id_verification"
}
レポートオブジェクト
残りのセクションでは、機能ごとのレポートオブジェクトをそれぞれ説明します。H3の見出しのテキストは、他のドキュメントから直接リンクできるよう、意図的に変更しない設計です。本人確認
ユーザーが提出した各KYC/ID書類に対して返されます。GET /v3/session/{sessionId}/decision/ の id_verifications[] として、またV2レスポンスの kyc フィールド内に含まれます。出典: kyc/serializers/kyc.py:383-414(IDVerificationV3Serializer。kyc/serializers/kyc.py:320-380 の IDVerificationV2Serializer を拡張)。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
status | string | いいえ | ステータス列挙型を参照してください。 | "Approved" |
document_type | string | はい | 人が読める形式の書類クラス(Passport、Identity Card、Driver's License、Residence Permit、Health Insurance Card、Tax Card、Social Security Card、Work Permit、Visa、Public Service Card、Birth Certificate、Firearm License、Other)。出典: DOC_TYPE_MAPPING(common/config/choices.py:1275-1289)。 | "Passport" |
document_subtype | string | はい | Didit の書類レジストリにある書類サブタイプコード。ワークフローの書類設定で受け付けられるものに絞り込まれます。地域固有の書類には地域が含まれます。コードの全一覧: 書類サブタイプ。 | "QUEENSLAND_DRIVER_LICENSE_GENERIC" |
document_number | string | はい | OCRで抽出された書類番号。 | "AB1234567" |
personal_number | string | はい | OCRで抽出された個人番号または国民識別番号。 | "99999999R" |
portrait_image | string (URL) | はい | 顔部分の切り抜きへの事前署名付きURL。 | "https://<media-host>/.../portrait.jpg?..." |
front_image | string (URL) | はい | クリーンアップ済みの書類表面への事前署名付きURL。 | "https://<media-host>/.../front.jpg?..." |
front_video | string (URL) | はい | 表面の撮影動画への事前署名付きURL(利用可能な場合)。 | "https://<media-host>/.../front.mp4?..." |
back_image | string (URL) | はい | クリーンアップ済みの書類裏面への事前署名付きURL。 | "https://<media-host>/.../back.jpg?..." |
back_video | string (URL) | はい | 裏面の撮影動画への事前署名付きURL。 | null |
full_front_image | string (URL) | はい | 切り抜きなし(全体フレーム)の表面撮影画像。 | "https://<media-host>/.../full_front.jpg?..." |
full_back_image | string (URL) | はい | 切り抜きなし(全体フレーム)の裏面撮影画像。 | null |
front_image_camera_front | string (URL) | はい | 書類表面と同時に撮影された、フロントカメラの画像。 | null |
back_image_camera_front | string (URL) | はい | 書類裏面と同時に撮影された、フロントカメラの画像。 | null |
front_image_camera_front_face_match_score | float (0-100) | はい | 書類上の顔写真とフロントカメラの撮影画像の類似度。 | null |
back_image_camera_front_face_match_score | float (0-100) | はい | 上記と同じですが、裏面の撮影画像についての値です。 | null |
document_selfie_face_matches | array | はい | 書類撮影時に撮影されたセルフィーと一致した、過去のセッションまたは顔ブロックリストのエントリ。形式は liveness_checks[].matches と同じです。検索が実行されなかった場合は null、一致するものがなかった場合は [] になります。 | null |
front_image_quality_score | object | はい | 表面画像の品質指標。0〜100のスコア(focus_score、brightness_score、resolution_score、overall_score)に加え、brightness_issue(ok、too_dark、too_bright)と is_document_fully_visible(真偽値)を含みます。 | { "focus_score": 91.0, "overall_score": 88.5 } |
back_image_quality_score | object | はい | front_image_quality_score と同じ形式です。 | null |
date_of_birth | string (YYYY-MM-DD) | はい | OCRで抽出された生年月日。 | "1990-05-12" |
age | integer | はい | 抽出時点での年齢(年単位で算出)。 | 35 |
expiration_date | string (YYYY-MM-DD) | はい | 書類の有効期限。 | "2032-05-11" |
date_of_issue | string (YYYY-MM-DD) | はい | 書類の発行日。 | "2022-05-11" |
issuing_state | string (ISO 3166-1 alpha-3) | はい | 発行国コード。 | "ESP" |
issuing_state_name | string | はい | ローカライズされた発行国名。 | "Spain" |
first_name | string | はい | OCRで抽出された名(複数の場合あり)。 | "María" |
last_name | string | はい | OCRで抽出された姓(複数の場合あり)。 | "García López" |
full_name | string | はい | 正規化された氏名全体(ベンダー提供)。 | "María García López" |
gender | string | はい | M、F、またはベンダー提供のその他の値。 | "F" |
address | string | はい | OCRで抽出された住所の生データ行。 | "Calle Mayor 1, 28001 Madrid" |
formatted_address | string | はい | ジオコーディング済みの整形された住所(解析可能な場合)。 | "Calle Mayor 1, 28001 Madrid, Spain" |
parsed_address | object | はい | 構造化およびジオコーディング済みの住所。street_1、street_2、city、region、country、postal_code、address_type、formatted_address、document_location({latitude, longitude})、raw_results、is_best_match を含みます。出典: kyc/utils/address.py:147-197。 | { "street_1": "Calle Mayor 1", "city": "Madrid", "postal_code": "28001", "country": "ES" } |
place_of_birth | string | はい | OCRで抽出された出生地。 | "Madrid" |
marital_status | string | はい | 抽出可能な場合のみ。 | null |
nationality | string (ISO 3166-1 alpha-3) | はい | OCRで抽出された国籍。 | "ESP" |
extra_fields | object | はい | 標準スキーマに含まれない、書類タイプ固有のフィールド(例: 運転免許のカテゴリ)。 | { "DL Class": "B" } |
mrz | object | はい | 存在する場合の解析済みMRZフィールド(document_number、birth_date、expiry_date、surname、given_names、…)。 | { "document_number": "AB1234567", "surname": "GARCIA", "given_names": "MARIA" } |
extra_files | array of strings (URL) | いいえ | 追加でアップロードされたファイルへの事前署名付きURL。 | [] |
matches | array of objects | いいえ | セッションをまたぐ書類の一致。各項目は { session_id, session_number, vendor_data, verification_date, user_details: { name, document_type, document_number }, status, is_blocklisted, api_service, front_image_url } です。front_image_url は事前署名付きです。 | [] |
verification_method | 文字列 | いいえ | この行を生成した本人確認の方法。document、id_lookup、walletのいずれか。写真で撮影した書類の場合は常にdocumentで、他の方法が導入される前に作成されたすべてのセッションを含みます。 | "id_lookup" |
assurance | 文字列 | いいえ | verification_methodから導出される保証レベル。documentary、data_match、cryptographicのいずれか。 | "data_match" |
wallet_provider | 文字列 | null | はい | ウォレットがこの行を生成した場合の、カタログのウォレットID(mitid、bankid_se、itsmeなど)。それ以外の場合はnull。 | "mitid" |
fallback_from | オブジェクト | null | はい | ドキュメント以外の方法がID確認ステップを終了させた理由:{ method, reason, action }。ルックアップまたはウォレットサインインが失敗した場合に設定されます。国の切り替えがdecline(action: "decline")の場合は却下された行に、fallback_to_document(action: "fallback_to_document")の場合はユーザーが続行するドキュメント検証に設定されます。以前のドキュメント以外の失敗が記録されていない場合はnull。 | { "method": "id_lookup", "reason": "no_match", "action": "decline" } |
id_lookup | オブジェクト | null | はい | 情報源の証拠。verification_methodがid_lookupの場合にのみ存在します:source(照会された正確な情報源。多くの国では政府の登録簿、一部の国では信用情報機関または住民記録のファイル)、checked_at、attempts、max_attempts、outcome(match、partial_match、no_match、provider_error、format_rejected)、comparison[]({ field, label, provided, record, result }。fieldはidentification_number、full_name、date_of_birth、addressのいずれかで、resultはmatch、partial、no_matchのいずれか。以前のリリースではerrorを含むproviderの行が含まれる場合があります)、source_errors[](現在のステージング環境:情報源ごとの個別の診断。本番環境への展開は確認してください)、registry_portrait(事前署名付きURL。これを返す情報源のみ)、face_match_score。 | 下記を参照 |
wallet_verification | オブジェクト | null | はい | 資格情報の証拠。verification_methodがwalletの場合にのみ存在します:provider、provider_name、issuing_authority、issuing_country、credential_type、level_of_assurance(low、substantial、high)、verified_at、signature_valid、attributes(ウォレットが共有した情報)、portrait(ウォレットが共有する場合の事前署名付きURL)、face_match_score。 | 下記を参照 |
document_liveness | オブジェクト | null | はい | 不正の種類ごと(portrait_replace、printed_copy、screen_replay)の書類のライブネススコア。警告が発生したかどうかにかかわらず報告されます。各項目:score(0〜100。値が高いほど本物の可能性が高い。判定で使用された低い方の値)、front、back、decline_threshold、review_threshold、bucket(approve、review、decline、またはnull)。しきい値とバケットは評価時に保存されます。過去の評価の証拠が利用できない場合は3つすべてがnullになりますが、保存されたスコアは引き続き表示されます。検査が実行されなかった場合はnull。詳細は書類のライブネススコアを参照してください。V3のみ。 | { "portrait_replace": { "score": 96.46, "bucket": "approve" } } |
node_id | 文字列 | null | はい | ワークフローのノード識別子(V3)。 | "first_id_verification" |
warnings | 配列 | いいえ | 警告オブジェクトを参照。 | [] |
region | 文字列 | はい | 書類で特定できる場合の、発行国の地域または州。 | "CA" |
extracted_data | オブジェクト | はい | 本人に確認用として提示された書類から抽出されたデータのスナップショット。確定した値と並べて保存されるため、比較できます。本人に確認を求めなかった場合はnull。 | |
barcodes | オブジェクトの配列 | いいえ | 書類のバーコードから読み取ったデータ。バーコードごとに1件のエントリがあり、type、position、data、data_raw、sideを含みます。バーコードがない場合は[]。 | [] |
{
"status": "Approved",
"document_type": "Passport",
"document_subtype": "PASSPORT_GENERIC",
"document_number": "AB1234567",
"personal_number": "99999999R",
"portrait_image": "https://<media-host>/.../portrait.jpg?signature=...",
"front_image": "https://<media-host>/.../front.jpg?signature=...",
"front_video": null,
"back_image": "https://<media-host>/.../back.jpg?signature=...",
"back_video": null,
"full_front_image": "https://<media-host>/.../full_front.jpg?signature=...",
"full_back_image": null,
"front_image_camera_front": null,
"back_image_camera_front": null,
"front_image_camera_front_face_match_score": null,
"back_image_camera_front_face_match_score": null,
"front_image_quality_score": {
"focus_score": 91.0,
"brightness_score": 88.0,
"brightness_issue": "ok",
"is_document_fully_visible": true,
"resolution_score": 95.0,
"overall_score": 88.5
},
"back_image_quality_score": null,
"date_of_birth": "1990-05-12",
"age": 35,
"expiration_date": "2032-05-11",
"date_of_issue": "2022-05-11",
"issuing_state": "ESP",
"issuing_state_name": "Spain",
"first_name": "María",
"last_name": "García López",
"full_name": "María García López",
"gender": "F",
"address": "Calle Mayor 1, 28001 Madrid",
"formatted_address": "Calle Mayor 1, 28001 Madrid, Spain",
"parsed_address": { "street_1": "Calle Mayor 1", "street_2": null, "city": "Madrid", "region": "Madrid", "postal_code": "28001", "country": "ES", "address_type": "Calle" },
"place_of_birth": "Madrid",
"marital_status": null,
"nationality": "ESP",
"extra_fields": {},
"mrz": {
"document_number": "AB1234567",
"surname": "GARCIA",
"given_names": "MARIA",
"birth_date": "900512",
"expiry_date": "320511"
},
"extra_files": [],
"matches": [],
"node_id": "first_id_verification",
"verification_method": "document",
"assurance": "documentary",
"wallet_provider": null,
"fallback_from": null,
"id_lookup": null,
"wallet_verification": null,
"document_liveness": {
"portrait_replace": {
"score": 96.46,
"front": 96.46,
"back": 98.2,
"decline_threshold": 35,
"review_threshold": 70,
"bucket": "approve"
},
"printed_copy": {
"score": 91.2,
"front": 91.2,
"back": 93.7,
"decline_threshold": 35,
"review_threshold": 77,
"bucket": "approve"
},
"screen_replay": {
"score": 99.9,
"front": 99.9,
"back": 99.5,
"decline_threshold": 30,
"review_threshold": 70,
"bucket": "approve"
}
},
"warnings": []
}
nullになります。
{
"status": "Approved",
"issuing_state": "ZAF",
"first_name": "Thabo",
"last_name": "Mokoena",
"full_name": "Thabo Mokoena",
"date_of_birth": "1991-06-15",
"personal_number": "9106155043088",
"node_id": "first_id_verification",
"verification_method": "id_lookup",
"assurance": "data_match",
"wallet_provider": null,
"fallback_from": null,
"id_lookup": {
"source": "Department of Home Affairs",
"checked_at": "2026-09-04T09:12:44Z",
"attempts": 1,
"max_attempts": 2,
"outcome": "match",
"comparison": [
{ "field": "identification_number", "label": "ID number", "provided": "9106155043088", "record": "9106155043088", "result": "match" },
{ "field": "full_name", "label": "Full name", "provided": "Thabo Mokoena", "record": "Thabo Mokoena", "result": "match" },
{ "field": "date_of_birth", "label": "Date of birth", "provided": "1991-06-15", "record": "1991-06-15", "result": "match" }
],
"registry_portrait": "https://<media-host>/.../registry_portrait.jpg?signature=...",
"face_match_score": 96.4
},
"wallet_verification": null,
"warnings": []
}
{
"status": "Approved",
"issuing_state": "DNK",
"first_name": "Freja",
"last_name": "Nielsen",
"full_name": "Freja Nielsen",
"date_of_birth": "1988-03-02",
"node_id": "first_id_verification",
"verification_method": "wallet",
"assurance": "cryptographic",
"wallet_provider": "mitid",
"fallback_from": null,
"id_lookup": null,
"wallet_verification": {
"provider": "mitid",
"provider_name": "MitID",
"issuing_authority": "Danish Agency for Digital Government",
"issuing_country": "DNK",
"credential_type": "person_identification",
"level_of_assurance": "substantial",
"verified_at": "2026-09-04T09:12:44Z",
"signature_valid": true,
"attributes": {
"full_name": "Freja Nielsen",
"date_of_birth": "1988-03-02",
"cpr_alias": "b0f1c2d3-e4f5-4678-9abc-def012345678"
},
"portrait": null,
"face_match_score": null
},
"warnings": []
}
NFC認証
各チップ読み取りに対して返されます。対象は、ICAO 9303準拠のePassportまたはeIDチップ、あるいはJPKI経由で読み取られたマイナンバーカード(chip_protocol: "jpki")です。GET /v3/session/{sessionId}/decision/のnfc_verifications[]として表示されます(親のKYCレコードごとに1件)。出典:kyc/serializers/epassport.py:121-139(NFCV3Serializer、kyc/serializers/epassport.py:83-118のNFCV2Serializerを拡張)。
| 項目 | 型 | null許容 | 説明 | 例 |
|---|---|---|---|---|
status | 文字列 | いいえ | ステータス列挙型を参照。 | "Approved" |
portrait_image | 文字列(URL) | はい | チップから抽出された顔画像の事前署名付きURL。 | "https://<media-host>/.../nfc_portrait.jpg?..." |
signature_image | 文字列(URL) | はい | チップから抽出された署名画像の事前署名付きURL(チップに保存されている場合)。 | null |
chip_data | オブジェクト | はい | チップのData Groupsから解析された個人データ。フラット化されています(kyc/utils/epassport.py:165-212)。キーは次のとおりです:dgs(読み取られたData Groups)、surname、name、country、nationality、birth_date(YYYY-MM-DD)、expiry_date(YYYY-MM-DD)、sex(M/F)、document_type(MRZの書類コード)、document_number、optional_data、MRZのチェックディジット(birth_date_hash、expiry_date_hash、document_number_hash、optional_data_hash、final_hash)、mrz_string、mrz_type(TD1/TD2/TD3)。チップにDG11が含まれる場合は、さらにplace_of_birthとaddressが含まれ、非ラテン文字の氏名の場合はfull_nameとfull_name_non_latinも含まれます。DG11がない場合、これらのキーは存在しません。NFCステップがスキップされた場合はnull。 | { "document_number": "AB1234567", "name": "MARIA" } |
authenticity | オブジェクト | はい | { sod_integrity, dg_integrity }。JPKIの読み取りの場合はnull。sod_integrityは、Document Security Object(SOD)の署名が有効な発行国のCSCAにつながること(かつDSCが失効も期限切れもしていないこと)を検証します。dg_integrityは、各Data GroupのハッシュがSODと一致することを検証します。両方がtrueの場合、チップが本物で改ざんされていないことを示します。 | { "sod_integrity": true, "dg_integrity": true } |
certificate_summary | object | はい | 文書署名者証明書の要約(kyc/utils/epassport.py:338-348)。issuer、subject、serial_number(整数)、not_valid_before、not_valid_after(YYYY-MM-DD HH:MM:SS)を含みます。さらに、validation オブジェクト { csca_verified, dsc_revoked, dsc_expired, csca_expired }(kyc/views/epassport.py:86)を含みます。 | { "issuer": "Common Name: CSCA SPAIN, Country: ES", "not_valid_after": "2031-02-18 10:21:11" } |
node_id | string | null | はい | ワークフローノードの識別子(V3)。 | "first_nfc" |
is_nfc_skipped | boolean | いいえ | true の場合、このNFCステップは読み取られず、明示的にスキップされたことを示します。理由は skip_reason に記載されます。 | false |
skip_reason | string | はい | ステップがスキップされた理由です。is_nfc_skipped が true の場合にのみ設定されます。値は USER_SKIPPED、DOCUMENT_WITHOUT_CHIP、CHIP_CERTIFICATE_UNAVAILABLE、DEVICE_WITHOUT_NFC、INTEGRATION_WITHOUT_NFC_ACCESS、MRZ_KEY_UNAVAILABLE、JPKI_UNAVAILABLE のいずれかです。詳細は スキップ理由 を参照してください。判定ペイロードには、レポート作成前にバイパスされたNFCステップを対象とする、セッションレベルの nfc_skip_reason も含まれます。この値は同じ分類体系を使用します。 | null |
chip_protocol | string | いいえ | チップの読み取り方式です。icao(ICAO 9303 ePassportまたはeIDチップ)または jpki(マイナンバーカード)のいずれかです。jpki の場合、portrait_image、signature_image、chip_data、authenticity、certificate_summary は null になります。スキップされたステップにも設定されます。 | "icao" |
jpki | object | はい | マイナンバーカードの読み取りで検証された内容です。certificate_types、chain_valid、signature_valid、revocation_status(good、revoked、unchecked のいずれか)、ca_generation、certificate_expires_at、certificates[]、attributes(署名用証明書に含まれる氏名、生年月日、性別、住所)、attributes_match_ocr、mismatched_attributes を含みます。証明書、そのシリアル番号、署名は決して含まれません。ICAOチップの場合、スキップされたステップの場合、およびカードの読み取りなしにステップが終了した場合は null です。詳細は JPKIフィールド を参照してください。 | null |
warnings | array | いいえ | 警告オブジェクト を参照してください。 | [] |
{
"status": "Approved",
"portrait_image": "https://<media-host>/.../nfc_portrait.jpg?signature=...",
"signature_image": null,
"chip_data": {
"dgs": ["DG1", "DG2", "DG11"],
"surname": "GARCIA LOPEZ",
"name": "MARIA",
"country": "ESP",
"nationality": "ESP",
"birth_date": "1990-05-12",
"expiry_date": "2032-05-11",
"sex": "F",
"document_type": "P",
"document_number": "AB1234567",
"optional_data": "",
"birth_date_hash": "4",
"expiry_date_hash": "7",
"document_number_hash": "3",
"optional_data_hash": "",
"final_hash": "8",
"mrz_string": "P<ESPGARCIA<LOPEZ<<MARIA<<<<<<<<<<<<<<<<<<<<AB1234567ESP9005124F3205117<<<<<<<<<<<<<<08",
"mrz_type": "TD3",
"place_of_birth": "MADRID",
"address": "CALLE MAYOR 1, MADRID"
},
"authenticity": { "sod_integrity": true, "dg_integrity": true },
"certificate_summary": {
"issuer": "Common Name: CSCA SPAIN, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES",
"subject": "Common Name: DS n-eID SPAIN 2, Organizational Unit: PASSPORT, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES",
"serial_number": 118120836164494130086420187336801405660,
"not_valid_before": "2020-11-18 10:21:11",
"not_valid_after": "2031-02-18 10:21:11",
"validation": {
"csca_verified": true,
"dsc_revoked": false,
"dsc_expired": false,
"csca_expired": false
}
},
"node_id": "first_nfc",
"is_nfc_skipped": false,
"skip_reason": null,
"chip_protocol": "icao",
"jpki": null,
"warnings": []
}
ライブネスチェック
ライブネスセッションごとに返されます。GET /v3/session/{sessionId}/decision/ の liveness_checks[] として表示されます。ソース: face/serializers/face.py:301-320(LivenessV3Serializer。face/serializers/face.py:216-298 の LivenessV2Serializer を拡張)。
| フィールド | 型 | NULL許容 | 説明 | 例 |
|---|---|---|---|---|
status | string | いいえ | ステータス列挙型 を参照してください。 | "Approved" |
method | string (列挙型) | はい | ACTIVE_3D、FLASHING、PASSIVE のいずれか(LivenessMethodChoices、common/config/choices.py:514-517)。デスクトップセッションが許可されていて、ユーザーがデスクトップを使用している場合は、PASSIVEが実行されます。 | "PASSIVE" |
score | float (0-100) | はい | ライブネスの信頼度。小数点以下2桁に丸められます。 | 92.41 |
reference_image | string (URL) | はい | ユーザーの基準顔画像の切り抜きへの事前署名付きURLです。 | "https://<media-host>/.../reference.jpg?..." |
video_url | string (URL) | はい | キャプチャでライブネス録画が保存された場合、その録画への事前署名付きURLです。アクティブ、パッシブのどちらのライブネスでも同じです。セッションに録画が保存されなかった場合は null です。 | "https://<media-host>/.../liveness.webm?..." |
age_estimation | float | はい | 基準画像内で最も大きい顔の推定年齢(年単位)。 | 34.2 |
matches | array of objects | いいえ | セッションをまたぐ顔の一致。各項目は { session_id, session_number, similarity_percentage, vendor_data, vendor_user_id, biometric_template_id, verification_date, user_details: { full_name, document_type, document_number }, match_image_url, status, is_blocklisted, is_allowlisted, api_service, source } です。source は session、imported、list_entry、retained_template のいずれかです。保持テンプレートの一致には vendor_user_id、vendor_data、biometric_template_id が含まれます。そのセッション、画像、本人情報、ステータス、APIサービスのフィールドは null です。 | [] |
face_quality | float (0-100) | はい | パッシブライブネスの顔品質スコア(パーセンテージに正規化)。 | 87.50 |
face_luminance | float (0-100) | はい | パッシブライブネスの顔輝度スコア(0-255からパーセンテージに正規化)。 | 54.12 |
node_id | string | null | はい | ワークフローノードの識別子(V3)。 | "first_liveness" |
warnings | array | いいえ | 警告オブジェクト を参照してください。 | [] |
{
"status": "Approved",
"method": "PASSIVE",
"score": 92.41,
"reference_image": "https://<media-host>/.../reference.jpg?signature=...",
"video_url": null,
"age_estimation": 34.2,
"matches": [],
"face_quality": 87.50,
"face_luminance": 54.12,
"node_id": "first_liveness",
"warnings": []
}
null が返されます。上の例は、録画が保存されなかったセッションです。
顔照合
比較ごとに返されます(通常は、ユーザーのライブネス顔と書類の肖像写真の比較)。GET /v3/session/{sessionId}/decision/ の face_matches[] として表示されます。ソース: face/serializers/face.py:367-389(FaceMatchV3Serializer。face/serializers/face.py:323-364 の FaceMatchV2Serializer を拡張)。
| フィールド | 型 | NULL許容 | 説明 | 例 |
|---|---|---|---|---|
status | string | いいえ | ステータス列挙型 を参照してください。 | "Approved" |
score | float (0-100) | はい | 類似度。小数点以下2桁に丸められます。プロバイダーが unmatched_faces[].Confidence のみを返す場合は、100 - confidence に変換されます。 | 97.83 |
source_image_session_id | string (UUID) | はい | 保存された肖像写真が基準(ソース)画像を提供したセッションです。肖像写真ベースのフロー(生体認証、またはセッション作成時に提供された肖像写真)で設定されます。基準が同じセッションの書類の肖像写真である場合は null です。 | null |
source_image | string (URL) | はい | 基準(ソース)画像への事前署名付きURLです。通常は書類の肖像写真で、生体認証フローでは保存された肖像写真です。 | "https://<media-host>/.../source.jpg?..." |
target_image | string (URL) | はい | ライブネス中にキャプチャされた対象(ライブの顔)画像への事前署名付きURLです。 | "https://<media-host>/.../target.jpg?..." |
node_id | string | null | はい | ワークフローノードの識別子(V3)。 | "first_face_match" |
warnings | array | いいえ | 警告オブジェクト を参照してください。 | [] |
face_coverage | object | はい | キャプチャ画像で eyes、mouth、face が覆われているかどうか。各領域には covered、calibrated、visibility_score があります。calibrated: false は、影による証拠であり、警告の対象にはならないことを意味します。GET /v3/session/{sessionId}/decision/ でのみ返され、Webhookペイロードには決して含まれません。 | { "eyes": { "covered": false, "calibrated": true, "visibility_score": 0.98 } } |
{
"status": "Approved",
"score": 97.83,
"source_image_session_id": null,
"source_image": "https://<media-host>/.../source.jpg?signature=...",
"target_image": "https://<media-host>/.../target.jpg?signature=...",
"node_id": "first_face_match",
"warnings": []
}
顔検索
スタンドアロンの顔検索API(POST /v3/face-search/)が返します。顔検索が /v3/session/{sessionId}/decision/ で複数要素の配列として表示されることはありません。save_api_request=true で保存された場合、セッションは features[] 内の FACE_SEARCH エントリーと、保存された matches を含む liveness_checks[] の項目として表示されます。参照元:apis/serializers/face_search.py:8-79(FaceSearchResponseSerializer が FaceSearchDetailsSerializer をラップします)。一致結果の辞書は face/utils/utils.py:869-884 で構築されます。
トップレベルのレスポンス:
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
request_id | string (UUID) | いいえ | save_api_request=true の場合は保存されたセッションIDです(GET /v3/session/{sessionId}/decision/ で使用できます)。それ以外の場合は一時的な相関UUIDです。 | "4a1c2c4e-8b1b-4d6a-91b5-ee9a1f3a2c7f" |
face_search | object | いいえ | 検索詳細のペイロードです。以下のフィールドを参照してください。 | — |
vendor_data | string | はい | リクエストから返される vendor_data です。 | null |
metadata | object | はい | リクエストから返される metadata です。 | null |
created_at | string (ISO 8601) | いいえ | サーバー側のリクエストタイムスタンプです。 | "2026-06-12T01:04:42.763237+00:00" |
face_search オブジェクト:
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
status | string | いいえ | FACE_IN_BLOCKLIST または POSSIBLE_FACE_IN_BLOCKLIST の警告が発生した場合にのみ Declined になります。それ以外は Approved になります。重複する一致結果だけで却下されることはありません(apis/views/face_search.py:242-248)。 | "Approved" |
total_matches | integer | いいえ | matches[] に返された一致結果の件数です(0~5)。 | 1 |
matches | array of 顔検索の一致オブジェクト | いいえ | 類似度の下限を超えた一致結果を最大5件、類似度の降順で返します(search_type=blocklisted_or_approved の場合は、ブロックリスト登録済みのエントリーを先頭に返します)。 | […] |
user_image | object | いいえ | 送信された画像の検出結果です:{ entities: [{ bbox, confidence }], best_angle }。検出された顔ごとに1つのエンティティが含まれます。 | { "entities": [{ "bbox": [40, 40, 120, 120], "confidence": 0.73 }], "best_angle": 0 } |
warnings | array of objects | いいえ | このスタンドアロンAPIでは簡略化された警告の形式で、node_id は含まれません。シリアライザーの契約では { risk, additional_data, log_type, short_description, long_description } と定義されています(apis/serializers/face_search.py:49-54)。実行時のペイロードには feature も含まれ、その値は常に "LIVENESS" です(apis/views/face_search.py:332-341)。 | [] |
顔検索の一致オブジェクト
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
session_id | string (UUID) | はい | 一致した本人確認セッションです。source が imported、list_entry、retained_template の場合は null になります。 | "a3f2a6f1-…" |
session_number | integer | はい | 一致したセッションのコンソールで表示される番号です。セッション以外の一致では null になります。 | 1024 |
similarity_percentage | float (0-100) | いいえ | 送信された顔と一致した顔の類似度です。 | 96.42 |
source | string (enum) | いいえ | 一致した顔が登録された元です:session(本人確認セッションまたは保存されたスタンドアロン呼び出し)、imported(ユーザープロフィールへの顔画像の直接アップロード)、list_entry(リストに追加された顔)、retained_template(元のセッションが削除された後も保持されている、画像を含まない生体認証テンプレート)。 | "session" |
vendor_data | string | はい | 一致したセッションの vendor_data です。imported および retained_template の一致では、リンクされたユーザーの vendor_data になります。 | "user-12345" |
vendor_user_id | string (UUID) | はい | リンクされたユーザーのIDです。list_entry の一致、およびユーザーに紐づかないセッションでは null になります。 | "2f7c1a9e-…" |
biometric_template_id | string (UUID) | はい | 一致した保持済みテンプレートです。retained_template の一致でのみ設定され、GET/DELETE /v3/biometric-templates/{id}/ で使用します。 | null |
verification_date | string (ISO 8601) | はい | 一致した顔が撮影された日時、または retained_template が保持された日時です。list_entry の一致では null になります。 | "2024-11-04T09:14:02Z" |
user_details | object | はい | 一致したセッションの書類確認から取得した { full_name, document_type, document_number } です。imported の一致では full_name のみ設定されます。本人確認データが存在しない場合は null になり、retained_template の一致では常に null です。 | { "full_name": "María García López", "document_type": "Passport", "document_number": "AB1234567" } |
match_image_url | string (URL) | はい | 一致したユーザーの参照用の顔画像です。save_api_request=true の場合は署名付きURL、それ以外の場合はストレージの生のパスになります。画像を保持しない retained_template の一致では常に null になります。 | "https://<media-host>/.../matched.jpg?..." |
status | string | はい | 一致したセッションの本人確認ステータスです(ステータス列挙型を参照)。セッション以外の一致では null になります。 | "Approved" |
is_blocklisted | boolean | いいえ | 一致した顔がお客様の顔ブロックリストに含まれているかどうかです。retained_template の一致では常に false です。ブロックリストに登録された顔は、list_entry の一致として別途報告されます。 | false |
is_allowlisted | boolean | いいえ | 一致した顔がお客様のいずれかの許可リストに含まれているかどうかです。 | false |
api_service | string (enum) | はい | 一致したセッションのスタンドアロンAPI種別(大文字)です(例:PASSIVE_LIVENESS、FACE_MATCH)。ワークフローのセッションおよびセッション以外の一致では null になります。 | null |
{
"request_id": "4a1c2c4e-8b1b-4d6a-91b5-ee9a1f3a2c7f",
"face_search": {
"status": "Approved",
"total_matches": 1,
"matches": [
{
"session_id": "a3f2a6f1-1c1c-4eec-8b69-1c1c2f3a2c7f",
"session_number": 1024,
"similarity_percentage": 96.42,
"source": "session",
"vendor_data": "user-12345",
"verification_date": "2024-11-04T09:14:02Z",
"user_details": {
"full_name": "María García López",
"document_type": "Passport",
"document_number": "AB1234567"
},
"match_image_url": "https://<media-host>/.../matched.jpg?signature=...",
"status": "Approved",
"is_blocklisted": false,
"is_allowlisted": false,
"api_service": null
}
],
"user_image": {
"entities": [
{
"bbox": [40, 40, 120, 120],
"confidence": 0.732973
}
],
"best_angle": 0
},
"warnings": []
},
"vendor_data": null,
"metadata": null,
"created_at": "2026-06-12T01:04:42.763237+00:00"
}
AMLスクリーニング
スクリーニング対象のエンティティごとに返されます。KYCセッションとKYBセッションの両方について、GET /v3/session/{sessionId}/decision/ の aml_screenings[] として表示されます。参照元:aml/serializers/aml.py:63-85(AMLV3Serializer、aml/serializers/aml.py:28-60 の AMLV2Serializer を拡張しています)。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
status | string | いいえ | ステータス列挙型を参照してください。 | "Approved" |
total_hits | integer | いいえ | スクリーニングのヒット件数です(常に含まれ、既定値は 0 です)。 | 2 |
entity_type | string (enum) | はい | person または company です(EntityTypeChoices、common/config/choices.py:675-677)。 | "person" |
hits | array of objects | いいえ | ヒットごとに1件のエントリーがあります。主なフィールドは次のとおりです。id、caption、match(bool)、target(bool | null。エンティティがリストへの掲載の直接の対象かどうか)、match_score(float 0-100。本人性の信頼度)、risk_score(float 0-100。エンティティのリスク)、score(非推奨の 0-1 の float)、datasets[](例:PEP、PEP Level 1-4、Sanctions、Adverse Media、Warnings and Regulatory Enforcement、Fitness and Probity)、properties(氏名、別名、生年月日など)、features、url、first_seen、last_seen、rca_name、risk_view、score_breakdown、pep_matches、sanction_matches、warning_matches、adverse_media_matches、adverse_media_details、linked_entities、additional_information、review_status(Unreviewed、Confirmed Match、False Positive、Inconclusive。AML ヒットのステータス更新エンドポイントで編集できます。AMLHitStatusChoices)。 | […] |
score | float (0-100) | はい | 全体のスクリーニングスコア。False Positive とマークされていないヒットの中で最も高い risk_score(aml/services/aml.py:832-842)。すべてのヒットが誤検知の場合は 0。計算されるまでは null。 | 42.7 |
screened_data | object | はい | スクリーニングに送信されたデータのスナップショット:full_name、nationality、date_of_birth、document_number。 | { "full_name": "María García López", "date_of_birth": "1990-05-12" } |
is_ongoing_monitoring_enabled | boolean | いいえ | 継続的なモニタリングによる再スクリーニングに登録されているかどうか。 | false |
next_ongoing_monitoring_bill_date | string (YYYY-MM-DD) | はい | 継続的なモニタリングが有効な場合、last_aml_bill_date + 365 days として計算されます。請求日であり、スクリーニング日ではありません。 | null |
last_ongoing_screening_at | string (ISO 8601) | はい | 継続的なモニタリングがこのレコードの再スクリーニングを最後に完了した日時。結果が変わったかどうかは問いません。一度も再スクリーニングされていない場合は null。遡って補完されることはありません。 | "2026-09-12T04:03:11Z" |
last_ongoing_screening_datasets_updated_at | string (ISO 8601) | はい | このスクリーニングについてプロバイダーが報告した、最新のAMLデータセット更新日時。データセットの日付が報告されなかった場合は null。推定値が入ることはありません。 | null |
node_id | string | null | はい | ワークフローのノード識別子(V3)。 | "first_aml" |
warnings | array | いいえ | 詳細は 警告オブジェクト を参照してください。 | [] |
{
"status": "In Review",
"total_hits": 1,
"entity_type": "person",
"hits": [
{
"id": "Q7XW3-aml-hit-1",
"caption": "Maria Garcia Lopez",
"match": true,
"target": true,
"match_score": 86.4,
"risk_score": 42.7,
"datasets": ["PEP Level 2"],
"properties": {
"name": ["María García López", "M. García"],
"alias": ["Maria Garcia"],
"birthDate": ["1990-05-12"]
},
"url": "https://example.org/registry/entities/Q7XW3",
"first_seen": "2023-11-02T00:00:00Z",
"last_seen": "2026-05-01T00:00:00Z",
"review_status": "Unreviewed"
}
],
"score": 42.7,
"screened_data": {
"full_name": "María García López",
"date_of_birth": "1990-05-12",
"nationality": "ES",
"document_number": "AB1234567"
},
"is_ongoing_monitoring_enabled": false,
"next_ongoing_monitoring_bill_date": null,
"last_ongoing_screening_at": null,
"last_ongoing_screening_datasets_updated_at": null,
"node_id": "first_aml",
"warnings": []
}
IP分析
取得されたネットワークの位置情報ごとに返されます。KYCセッションとKYBセッションの両方で、GET /v3/session/{sessionId}/decision/ の ip_analyses[] として表示されます。ソース:kyc/serializers/location.py:196-243(IPAnalysisSerializerV3)。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
status | string | いいえ | 詳細は ステータスの列挙値 を参照してください。 | "Approved" |
node_id | string | null | はい | ワークフローのノード識別子(V3)。 | "first_ip_analysis" |
device_brand | string | はい | ユーザーエージェントから導出されたデバイスのブランド。 | "Apple" |
device_model | string | はい | デバイスのモデル。 | "iPhone" |
browser_family | string | はい | ブラウザーの種類。 | "Mobile Safari" |
os_family | string | はい | OSの種類。 | "iOS" |
platform | string | はい | 上位のプラットフォーム(mobile、desktop、tablet)。 | "mobile" |
device_fingerprint | string | はい | デバイスごとに固有で安定したフィンガープリントハッシュ。 | "f2a3…" |
ip_country | string | はい | IPから解決された国名。 | "Spain" |
ip_country_code | string (ISO 3166-1 alpha-2) | はい | IPから解決された国コード。 | "ES" |
ip_state | string | はい | IPから解決された地域・州。 | "Comunidad de Madrid" |
ip_city | string | はい | IPから解決された都市。 | "Madrid" |
latitude | float | はい | IPから導出された緯度。 | 40.4168 |
longitude | float | はい | IPから導出された経度。 | -3.7038 |
ip_address | string | はい | 取得されたIPアドレス。 | "203.0.113.42" |
isp | string | はい | ISP名。 | "Telefonica de Espana" |
organization | string | はい | 組織名(多くの場合ISPと同じ)。 | "Telefonica de Espana" |
is_vpn_or_tor | boolean | はい | IPがVPN、プロキシ、またはTorの出口ノードに属する場合は true。 | false |
is_data_center | boolean | はい | IPが既知のホスティング/データセンターのASNに属する場合は true。 | false |
time_zone | string | はい | IANAタイムゾーン名。 | "Europe/Madrid" |
time_zone_offset | string | はい | UTCオフセット。 | "+02:00" |
ip | object | いいえ | { location, distance_from_id_document, distance_from_poa_document }。location = { latitude, longitude }。距離はkm単位で、どちらかの位置が欠けている場合は null。 | { "location": { "latitude": 40.4168, "longitude": -3.7038 }, "distance_from_id_document": 3.4, "distance_from_poa_document": 1.1 } |
id_document | object | いいえ | { location, distance_from_ip, distance_from_poa_document }。issuing_state と解析された住所から解決された身分証書類の位置。 | { "location": { "latitude": 40.4165, "longitude": -3.7026 }, "distance_from_ip": 3.4, "distance_from_poa_document": 4.0 } |
poa_document | object | いいえ | { location, distance_from_ip, distance_from_id_document }。住所証明の住所をジオコーディングした位置。 | { "location": { "latitude": 40.4170, "longitude": -3.7040 }, "distance_from_ip": 1.1, "distance_from_id_document": 4.0 } |
matches | array of objects | いいえ | セッションをまたぐIP・デバイスの一致。各項目:{ session_id, session_number, vendor_data, verification_date, match_type, match_source, matched_value, status, is_blocklisted, api_service, source, device_info, location_info, confidence, match_mode }。match_type は ip_address または device_fingerprint。match_source は ip_address、persistent_id、legacy_fp、または recovered_high(回復された一致には recovery_similarity、tls_ja4_corroborated、recovery_gate_reason も含まれます)。IPの一致は5件、デバイスの一致は5件が上限です。 | [] |
warnings | array | いいえ | 詳細は 警告オブジェクト を参照してください。 | [] |
browser_version, os_version | string | はい | ユーザーエージェントから得られるブラウザーとOSのバージョン。 | "17.4" |
user_agent, accept_language | string | はい | ブラウザーが送信したユーザーエージェント文字列と Accept-Language ヘッダー。 | "en-US,en;q=0.9" |
session_identifier, session_age_ms | string, integer | はい | ステップが実行されたブラウジングセッションと、その経過時間(ミリ秒)。 | 48210 |
coords_accuracy | float | はい | デバイスが報告した座標の精度半径(メートル単位)。 | 35.0 |
raw_device_data | object | はい | ステップで収集された生のデバイスシグナル。 | {} |
{
"status": "Approved",
"node_id": "first_ip_analysis",
"device_brand": "Apple",
"device_model": "iPhone",
"browser_family": "Mobile Safari",
"os_family": "iOS",
"platform": "mobile",
"device_fingerprint": "f2a3c1de8b994a3f9e4cdf3a02b1a7c9",
"ip_country": "Spain",
"ip_country_code": "ES",
"ip_state": "Comunidad de Madrid",
"ip_city": "Madrid",
"latitude": 40.4168,
"longitude": -3.7038,
"ip_address": "203.0.113.42",
"isp": "Telefonica de Espana",
"organization": "Telefonica de Espana",
"is_vpn_or_tor": false,
"is_data_center": false,
"time_zone": "Europe/Madrid",
"time_zone_offset": "+02:00",
"ip": {
"location": { "latitude": 40.4168, "longitude": -3.7038 },
"distance_from_id_document": 3.4,
"distance_from_poa_document": 1.1
},
"id_document": {
"location": { "latitude": 40.4165, "longitude": -3.7026 },
"distance_from_ip": 3.4,
"distance_from_poa_document": 4.0
},
"poa_document": {
"location": { "latitude": 40.4170, "longitude": -3.7040 },
"distance_from_ip": 1.1,
"distance_from_id_document": 4.0
},
"matches": [],
"warnings": []
}
位置情報検証
位置情報検証 ステップごとに返されます。GET /v3/session/{sessionId}/decision/ の geolocation_checks[] として表示されます。ステップごとに1項目で、受理された試行の結果です。geolocation_attempts[] は、すべてのステップのすべての試行を古い順に並べたものです。ワークフローにそのステップがない場合は、どちらも null になります。ソース:GeolocationDecisionSerializer。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
node_id | string | はい | 結果を生成したワークフローのノード。 | "geolocation_1" |
status | string | いいえ | ステータス列挙型を参照してください。 | "Declined" |
outcome | string | はい | 試行で何が起きたかを示します: 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。 | "outside_geofence" |
permission | string | はい | システムが付与した内容: granted_precise、granted_approximate、denied、restricted、unavailable、timeout、dismissed、またはnot_requested。 | "granted_precise" |
latitude, longitude | float | はい | WGS84の位置情報。位置情報がない場合はnullになります。 | 48.8566 |
accuracy_m | float | はい | 不確かさの半径(メートル)。 | 35.0 |
accuracy_confidence | string | はい | p95、p68、またはunspecified。 | "p95" |
measured_at, age_seconds | datetime, integer | はい | 端末が位置情報を取得した日時と、Didit が受信するまでの秒数。 | 2 |
source, platform, sdk_version | string | はい | 位置情報の取得元、その位置情報を生成したクライアント、およびそのSDKバージョン。 | "browser" |
is_mock, produced_by_accessory | boolean | はい | プラットフォームが報告する、なりすましの証拠。nullは、プラットフォームがこの情報を報告しないことを意味します。 | null |
integrity | string | いいえ | attested、not_attested、failed、unsupported(Web)、またはnot_determined。 | "unsupported" |
country_code, region_code, city | string | はい | 位置情報が解決された場所。 | "FR" |
geofence, inside_geofence, geofence_basis, inside_areas, blocked_areas | object, boolean, string, arrays | はい | 国と地域の判定結果。 | { "enabled": true, "result": "outside" } |
position_source, anonymizers | string, object | はい | ステップが位置情報を取得する元、および匿名化サービス(VPN、プロキシ、Tor)、なりすまし、エミュレーターのシグナル。 | "device_and_ip" |
ip_distance_km, ip_distance_uncertainty_km, ip_consistent, document_distance_km, travel_excused, consecutive_mismatches | number, boolean, integer | はい | IPの位置情報および登録済みの住所との比較結果。 | 12.4 |
attempts | integer | いいえ | ステップ内でのこの試行の番号。 | 3 |
consent | object | はい | 本人が同意した通知のaccepted_at、version、locale。 | |
warnings | array of 警告オブジェクト | いいえ | そのステップのLOCATION_*警告。geolocation_attempts[]には含まれません。同配列にはreceived_atとcreated_atが追加されます。 | [] |
住所証明
送信された住所証明書類ごとに返されます。GET /v3/session/{sessionId}/decision/のpoa_verifications[]として表示されます。ソース: poa/serializers/poa.py:212-227(POAV3Serializer。poa/serializers/poa.py:173-209のPOAV2Serializerを拡張)。
| フィールド | 型 | null許容 | 説明 | 例 |
|---|---|---|---|---|
status | string | いいえ | ステータス列挙型を参照してください。 | "Approved" |
issuing_state | string (ISO 3166-1 alpha-3) | はい | 書類発行者の国コード。 | "ESP" |
document_type | string | いいえ | PoaDocumentTypeChoices(common/config/choices.py:868-873)の大分類: UTILITY_BILL、BANK_STATEMENT、GOVERNMENT_ISSUED_DOCUMENT、OTHER_POA_DOCUMENT。該当しない場合はUNKNOWNになり、nullにはなりません。 | "UTILITY_BILL" |
document_subtype | string | いいえ | PoaDocumentSubtypeChoicesのサブタイプコード(例: ELECTRICITY_BILL、WATER_BILL、ACCOUNT_STATEMENT)。該当しない場合はUNKNOWNになり、nullにはなりません。 | "ELECTRICITY_BILL" |
issuer | string | はい | 発行機関の名称。 | "Iberdrola" |
issue_date | string (YYYY-MM-DD) | はい | 書類の発行日。 | "2026-04-15" |
expiration_date | string (YYYY-MM-DD) | はい | 書類に記載されている有効期限(記載がある場合)。 | null |
poa_address | string | はい | OCRで抽出した生の住所。 | "Calle Mayor 1, 28001 Madrid" |
poa_formatted_address | string | はい | ジオコーディング済みの整形された住所。 | "Calle Mayor 1, 28001 Madrid, Spain" |
poa_parsed_address | object | はい | 構造化された住所(street_1、street_2、city、region、postal_code、country(alpha-2)、address_type、document_location、…)。 | { "street_1": "Calle Mayor 1", "city": "Madrid", "postal_code": "28001" } |
document_file | string (URL) | はい | アップロードされた書類への署名付きURL。 | "https://<media-host>/.../poa.pdf?..." |
document_language | string | はい | 検出された書類の言語(ISO 639-1)。 | "es" |
document_metadata | object | はい | フィルタリング済みのメタデータ: file_size、content_type、creation_date、modified_date、creator、producer、software、encryption、is_signed、is_tampered、signature_info、exif_original_date、exif_digitized_date、processed_by_known_editor、has_different_creation_mod_date、overlay_manipulation。 | { "file_size": 184221, "content_type": "application/pdf", "is_tampered": false } |
extra_fields | object | いいえ | 銀行口座フィールド(bank_account_number、bank_iban、bank_sort_code、bank_routing_number、bank_swift_bic、bank_branch_name、bank_branch_address)、document_phone_number、additional_names、およびレコードに保存されたカスタムキーすべて。 | { "bank_iban": null, "additional_names": [] } |
name_on_document | string | はい | 住所証明書類に記載された氏名。 | "María García López" |
expected_details_address | string | はい | 顧客が登録時に入力した住所(入力どおり)。 | "Calle Mayor 1, Madrid" |
expected_details_formatted_address | string | はい | ジオコーディング済みの想定住所。 | "Calle Mayor 1, 28001 Madrid, Spain" |
expected_details_parsed_address | object | はい | 構造化された想定住所。 | { "city": "Madrid", "postal_code": "28001" } |
name_match_score_expected_details | float (0-100) | はい | name_on_documentと、セッション作成時に指定された氏名とのあいまい一致。 | 94.0 |
name_match_score_id_verification | float (0-100) | はい | name_on_documentと、検証済みIDのfull_nameとのあいまい一致。 | 100.0 |
extra_files | 文字列の配列(URL) | いいえ | 追加でアップロードされたファイルの署名付きURL。 | [] |
detected_codes | オブジェクトの配列 | いいえ | 書類の処理済みのすべてのページで検出されたQRコードとバーコード。type、page_number(1始まり)、position(ポリゴン)、x/y/width/height(バウンディングボックス)、page_width/page_height、raw_payload(base64)、parsed_payload(デコード済みの値。コードは検出されたがデコードできなかった場合は null)。検出結果がない場合は空の配列。 | [{ "type": "QR_CODE", "page_number": 1, "parsed_payload": "https://issuer.example/inv/9981" }] |
node_id | 文字列 | null | はい | ワークフローのノード識別子(V3)。 | "first_poa" |
warnings | 配列 | いいえ | 警告オブジェクトを参照してください。 | [] |
{
"status": "Approved",
"issuing_state": "ESP",
"document_type": "UTILITY_BILL",
"document_subtype": "ELECTRICITY_BILL",
"issuer": "Iberdrola",
"issue_date": "2026-04-15",
"expiration_date": null,
"poa_address": "Calle Mayor 1, 28001 Madrid",
"poa_formatted_address": "Calle Mayor 1, 28001 Madrid, Spain",
"poa_parsed_address": { "street_1": "Calle Mayor 1", "city": "Madrid", "postal_code": "28001", "country": "ES" },
"document_file": "https://<media-host>/.../poa.pdf?signature=...",
"document_language": "es",
"document_metadata": {
"file_size": 184221,
"content_type": "application/pdf",
"creation_date": "2026-04-15T08:11:32Z",
"modified_date": "2026-04-15T08:11:32Z",
"creator": "Iberdrola Billing",
"producer": "Adobe PDF Library 15.0",
"software": null,
"encryption": null,
"is_signed": true,
"is_tampered": false,
"signature_info": { "signer_name": "Iberdrola Clientes", "date": "2026-04-15T08:11:32Z" },
"exif_original_date": null,
"exif_digitized_date": null,
"processed_by_known_editor": false,
"has_different_creation_mod_date": false,
"overlay_manipulation": null
},
"extra_fields": {
"bank_account_number": null,
"bank_iban": null,
"bank_sort_code": null,
"bank_routing_number": null,
"bank_swift_bic": null,
"bank_branch_name": null,
"bank_branch_address": null,
"document_phone_number": null,
"additional_names": []
},
"name_on_document": "María García López",
"expected_details_address": "Calle Mayor 1, Madrid",
"expected_details_formatted_address": "Calle Mayor 1, 28001 Madrid, Spain",
"expected_details_parsed_address": { "city": "Madrid", "postal_code": "28001", "country": "ES" },
"name_match_score_expected_details": 94.0,
"name_match_score_id_verification": 100.0,
"extra_files": [],
"detected_codes": [
{
"type": "QR_CODE",
"page_number": 1,
"position": [[820, 1120], [1002, 1120], [1002, 1302], [820, 1302]],
"x": 820,
"y": 1120,
"width": 182,
"height": 182,
"page_width": 1190,
"page_height": 1684,
"raw_payload": "aHR0cHM6Ly9pYmVyZHJvbGEuZXMvZmFjdHVyYS85OTgx",
"parsed_payload": "https://iberdrola.es/factura/9981"
},
{
"type": "CODE_128",
"page_number": 1,
"position": [[112, 1480], [560, 1480], [560, 1540], [112, 1540]],
"x": 112,
"y": 1480,
"width": 448,
"height": 60,
"page_width": 1190,
"page_height": 1684,
"raw_payload": "MDA5OTgxMDAwNDI=",
"parsed_payload": "0099810042"
}
],
"node_id": "first_poa",
"warnings": []
}
電話番号検証
電話番号検証の試行ごとに返されます。KYCセッションとKYBセッションの両方で、GET /v3/session/{sessionId}/decision/ の phone_verifications[] として表示されます。ソース: phone/serializers/phone.py:251-266(PhoneV3Serializer、phone/serializers/phone.py:103-248 の PhoneV2Serializer を拡張)。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
status | 文字列 | いいえ | ステータス列挙型を参照してください。 | "Approved" |
phone_number_prefix | 文字列 | いいえ | E.164の国番号(+を含む)。 | "+34" |
phone_number | 文字列 | いいえ | 国番号を除いた加入者番号。 | "612345678" |
full_number | 文字列 | いいえ | 完全なE.164番号(phone_number_prefix + phone_number)。 | "+34612345678" |
country_code | 文字列(ISO 3166-1 alpha-2) | はい | 番号の国。 | "ES" |
country_name | 文字列 | はい | ローカライズされた国名。 | "Spain" |
carrier | オブジェクト | いいえ | { name, type } の形式。type は LineTypeChoices の値(common/config/choices.py:648-667)で、mobile、fixed_line、voip、isp、vpn、toll_free、premium_rate、satellite、pager、payphone、voice_mail、unknown、その他の回線種別があります。 | { "name": "Movistar", "type": "mobile" } |
is_disposable | 真偽値 | いいえ | キャリアがこの番号を一時的/使い捨てとして表示している場合は true。 | false |
is_virtual | 真偽値 | いいえ | carrier.type が voip、isp、vpn のいずれかの場合は true。 | false |
verification_method | 文字列 | いいえ | OTPの配信に使用されたチャネル(whatsapp、sms、…)。最後の送信試行の actual_channel から読み取ります(ない場合は、リクエストされた channel、次に sms の順に使用します)。 | "whatsapp" |
verification_attempts | 整数 | いいえ | OTPの送信試行の合計(初回送信と再送信を含む)。 | 1 |
verified_at | 文字列(ISO 8601) | はい | OTPが正しく入力された時刻。 | "2026-05-17T10:14:02Z" |
lifecycle | オブジェクトの配列 | いいえ | 時系列順のイベント:送信試行、配信コールバック、コード確認、最終ステータスイベント。各イベントは { type, timestamp, details, fee } の形式です。イベントの種類は PhoneEventChoices に由来します。 | […] |
matches | オブジェクトの配列 | いいえ | セッションをまたいだ電話番号の一致。各項目は { session_id, session_number, vendor_data, verification_date, phone_number, status, is_blocklisted, api_service, source } の形式です。source は session または list_entry。 | [] |
node_id | 文字列 | null | はい | ワークフローのノード識別子(V3)。 | "first_phone" |
warnings | 配列 | いいえ | 警告オブジェクトを参照してください。 | [] |
phone_intelligence | オブジェクト | はい | 電話番号のインテリジェンスシグナル。インテリジェンスアドオンがこの番号に対して実行された場合にのみ存在します。 | |
phone_social | オブジェクト | はい | 番号のソーシャルな痕跡。ソーシャルフットプリントアドオンが実行された場合にのみ存在します。 |
{
"status": "Approved",
"phone_number_prefix": "+34",
"phone_number": "612345678",
"full_number": "+34612345678",
"country_code": "ES",
"country_name": "Spain",
"carrier": { "name": "Movistar", "type": "mobile" },
"is_disposable": false,
"is_virtual": false,
"verification_method": "whatsapp",
"verification_attempts": 1,
"verified_at": "2026-05-17T10:14:02Z",
"lifecycle": [
{
"type": "PHONE_VERIFICATION_MESSAGE_SENT",
"timestamp": "2026-05-17T10:13:51Z",
"details": { "status": "Success", "reason": null, "channel": "whatsapp", "actual_channel": "whatsapp" },
"fee": 0.02
},
{
"type": "PHONE_DELIVERY_DELIVERED",
"timestamp": "2026-05-17T10:13:52Z",
"details": { "channel": "whatsapp", "status": "delivered" },
"fee": 0
},
{
"type": "VALID_CODE_ENTERED",
"timestamp": "2026-05-17T10:14:02Z",
"details": { "code_tried": "482917", "status": "Approved" },
"fee": 0
},
{
"type": "PHONE_VERIFICATION_APPROVED",
"timestamp": "2026-05-17T10:14:02Z",
"details": null,
"fee": 0
}
],
"matches": [],
"node_id": "first_phone",
"warnings": []
}
メールアドレス認証
メールアドレス認証の試行ごとに返されます。KYCセッションとKYBセッションの両方で、GET /v3/session/{sessionId}/decision/ の email_verifications[] として表示されます。ソース: email_verification/serializers/email.py:149-164(EmailV3Serializer、email_verification/serializers/email.py:38-146 の EmailV2Serializer を拡張)。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
status | 文字列 | いいえ | ステータス列挙型を参照してください。 | "Approved" |
email | 文字列 | いいえ | 送信されたメールアドレス。 | "maria.garcia@example.com" |
is_breached | 真偽値 | いいえ | メールアドレスが既知のデータ漏えいに含まれている場合は true。 | false |
breaches | オブジェクトの配列 | いいえ | is_breached が true の場合の、漏えいごとの詳細:{ name, domain, logo_path, breach_date, description, is_verified, data_classes, breach_emails_count }。 | [] |
is_disposable | 真偽値 | いいえ | メールアドレスが使い捨てメールプロバイダーのものである場合は true。 | false |
is_undeliverable | 真偽値 | いいえ | SMTPによる配信確認で受信箱がメールを受け付けないと示された場合は true。 | false |
verification_attempts | 整数 | いいえ | OTP確認の試行の合計。 | 1 |
verified_at | 文字列(ISO 8601) | はい | OTPが正しく入力された時刻。 | "2026-05-17T10:15:22Z" |
lifecycle | オブジェクトの配列 | いいえ | 時系列順のイベント:送信試行、コード確認、最終ステータスイベント。各イベントは { type, timestamp, details, fee } の形式です。イベントの種類は EmailEventChoices に由来します。 | […] |
matches | オブジェクトの配列 | いいえ | セッションをまたいだメールアドレスの一致。各項目は { session_id, session_number, vendor_data, verification_date, email, status, is_blocklisted, api_service, source } の形式です。source は session または list_entry。 | [] |
node_id | 文字列 | null | はい | ワークフローのノード識別子(V3)。 | "first_email" |
warnings | 配列 | いいえ | 警告オブジェクトを参照してください。 | [] |
email_intelligence | オブジェクト | はい | メールアドレスのインテリジェンスシグナル。インテリジェンスアドオンがこのアドレスに対して実行された場合にのみ存在します。 | |
email_social | オブジェクト | はい | アドレスのソーシャルな痕跡。ソーシャルフットプリントアドオンが実行された場合にのみ存在します。 |
{
"status": "Approved",
"email": "maria.garcia@example.com",
"is_breached": false,
"breaches": [],
"is_disposable": false,
"is_undeliverable": false,
"verification_attempts": 1,
"verified_at": "2026-05-17T10:15:22Z",
"lifecycle": [
{
"type": "EMAIL_VERIFICATION_MESSAGE_SENT",
"timestamp": "2026-05-17T10:15:11Z",
"details": { "status": "Success", "reason": null },
"fee": 0.02
},
{
"type": "VALID_CODE_ENTERED",
"timestamp": "2026-05-17T10:15:22Z",
"details": { "code_tried": "739204", "status": "Approved" },
"fee": 0
},
{
"type": "EMAIL_VERIFICATION_APPROVED",
"timestamp": "2026-05-17T10:15:22Z",
"details": null,
"fee": 0
}
],
"matches": [],
"node_id": "first_email",
"warnings": []
}
データベース検証
ユーザーが送信したデータに対して実行されたデータベース照会ごとに返されます。GET /v3/session/{sessionId}/decision/ の database_validations[] として表示されます。ソース: database_validation/serializers/database_validation.py:21-142(DatabaseValidationV3Serializer、DatabaseValidationV2Serializer を拡張)。
| フィールド | 型 | null 許容 | 説明 | 例 |
|---|---|---|---|---|
issuing_state | string (ISO 3166-1 alpha-3) | はい | 照会先のレジストリがある国。 | "ESP" |
validation_type | string (enum) | いいえ | 結果の裏付けの方法:one_by_one(単一サービスの結果)、two_by_two(独立した2つ以上のサービスが識別番号を完全一致と判定)、または not_enabled(バリデーターがスキップされたか、どのプロバイダーも応答しなかった)。確定的な no_match の場合も one_by_one になります。null になることはありません。ソース:DatabaseValidationChoices(common/config/choices.py:1097-1100)。 | "one_by_one" |
screened_data | オブジェクト | いいえ | 登録機関に送信されたデータ。ファイル項目(selfie、cnh_qr_code_image、document_image)は読み取り時に事前署名付きURLになります。 | { "document_number": "99999999R", "date_of_birth": "1990-05-12" } |
validations | オブジェクトの配列 | いいえ | 一致が得られたカタログ内のサービスごとに1件のエントリ。各エントリには service_id、service_name、validation(プロバイダーの判定オブジェクト)、outcome_code、outcome_detail、source_data(整形済みの市民プロフィール:full_name、gender、date_of_birth、photo(事前署名付きURL)、signature(事前署名付きURL)、…)を含めることができます。 | […] |
errors | オブジェクトの配列 | はい | 照会が失敗した場合のサービスごとのエラー。空の場合はキーごと省略されます。各エントリは上流サービスのエラーオブジェクトに、それを生成した service_id を加えたものです。 | [] |
match_type | string (enum) | はい | 照会したサービス全体での集計一致判定:full_match、partial_match、no_match(DatabaseValidationMatchTypeChoices、common/config/choices.py:1103-1106)。評価されるまでは null です。 | "full_match" |
status | string | いいえ | ステータス列挙型を参照。 | "Approved" |
node_id | string | null | はい | ワークフローノードの識別子(V3)。 | "first_db_validation" |
warnings | 配列 | いいえ | 警告オブジェクトを参照。 | [] |
{
"issuing_state": "ESP",
"validation_type": "one_by_one",
"screened_data": {
"document_number": "99999999R",
"date_of_birth": "1990-05-12",
"first_name": "María",
"last_name": "García López"
},
"validations": [
{
"service_id": "esp_dni",
"service_name": "Spain - DNI/NIE verification",
"validation": { "is_valid": true, "match_score": 100 },
"outcome_code": "MATCH",
"outcome_detail": "All identifiers match the registry record.",
"source_data": {
"full_name": "María García López",
"gender": "F",
"date_of_birth": "1990-05-12",
"photo": "https://<media-host>/.../registry_photo.jpg?signature=...",
"signature": null
}
}
],
"match_type": "full_match",
"status": "Approved",
"node_id": "first_db_validation",
"warnings": []
}
アンケート回答
アンケートの送信ごとに返されます。KYCセッションとKYBセッションの両方について、GET /v3/session/{sessionId}/decision/ のレスポンスに questionnaire_responses[] として含まれます。ソース:questionnaires/serializers/questionnaire.py:591-597(questionnaires/serializers/questionnaire.py:520-588 の QuestionnaireResponseSerializer を拡張した QuestionnaireResponseV3Serializer)。
| フィールド | 型 | null 許容 | 説明 | 例 |
|---|---|---|---|---|
questionnaire_id | string (UUID) | いいえ | 回答されたアンケートのバージョンの識別子。 | "6a0f1c2c-…" |
title | string | いいえ | コンソールで設定されたアンケート名。 | "Customer risk profile" |
description | string | はい | アンケートの説明。 | "Short risk-profile questions." |
languages | 文字列の配列 | いいえ | アンケートが公開されている言語コード。 | ["en", "es"] |
default_language | string | いいえ | フォールバック用の言語コード。 | "en" |
is_active | boolean | いいえ | このアンケートのバージョンが有効版かどうか。 | true |
is_simple_questionnaire | boolean | いいえ | 分岐のない(フラットなリストの)場合は true。 | true |
questionnaire_group_id | string (UUID) | いいえ | 同じアンケートのバージョン間で共有される識別子。 | "a7c2c2c2-…" |
version | integer | いいえ | 有効なテンプレートのバージョン番号。 | 3 |
status | string | いいえ | Approved、In Review、Not Finished のいずれか(アンケートレベルの却下は In Review になります)。 | "Approved" |
published_at | string (ISO 8601) | はい | テンプレートが公開された日時。 | "2026-01-12T11:00:00Z" |
sections | オブジェクトの配列 | いいえ | グラフの走査と表示フィルタリングを適用した後の、順序付きセクション。各セクションは { title, description, items[] } です(titleとdescriptionは先頭の SECTION_HEADER から取得され、翻訳済みです)。各項目はフォーム要素で、uuid、value(ノードID)、element_type、is_required、title、description、placeholder、choices、max_files、required_if、repeatable_config に加えて、answer フィールドを持ちます。未回答の場合は null、HEADING、PARAGRAPH、SEPARATOR のレイアウト項目では省略されます。ファイルの回答は { files: [<presigned URL>, …] } を含みます。 | […] |
node_id | string | null | はい | ワークフローノードの識別子(V3)。 | "first_questionnaire" |
{
"questionnaire_id": "6a0f1c2c-3b7d-4d2c-9eb6-fdc6c7c92ef9",
"title": "Customer risk profile",
"description": "Short risk-profile questions.",
"languages": ["en", "es"],
"default_language": "en",
"is_active": true,
"is_simple_questionnaire": true,
"questionnaire_group_id": "a7c2c2c2-1111-4d2c-9eb6-fdc6c7c92ef9",
"version": 3,
"status": "Approved",
"published_at": "2026-01-12T11:00:00Z",
"sections": [
{
"title": "Source of funds",
"description": null,
"items": [
{
"uuid": "4f1d5e2c-aaaa-4d2c-9eb6-fdc6c7c92ef9",
"value": "q_source_of_funds",
"element_type": "SINGLE_CHOICE",
"is_required": true,
"title": "What is your main source of funds?",
"description": null,
"placeholder": null,
"choices": [
{ "label": "Salary", "value": "salary" },
{ "label": "Business income", "value": "business" },
{ "label": "Investments", "value": "investments" }
],
"max_files": 1,
"required_if": null,
"repeatable_config": null,
"answer": { "value": "salary" }
}
]
}
],
"node_id": "first_questionnaire"
}
電子署名
電子署名ステップの署名者ごとに返されます。ワークフローにそのステップが含まれている場合に限り、KYCセッションとKYBセッションの両方について、GET /v3/session/{sessionId}/decision/ のレスポンスに signatures[] として含まれます。他のレポートオブジェクトと異なり、status は署名の段階を表し、結果は verdict に格納されます。また、warnings[] の項目は 警告オブジェクト ではなく、{ code, node_id } です。
| フィールド | 型 | null 許容 | 説明 | 例 |
|---|---|---|---|---|
id | string (UUID) | いいえ | 署名者の署名の識別子。証拠用および検証用のエンドポイントで signature_id として使用します。 | "0e6c2a8e-…" |
node_id | string | いいえ | ワークフローノードの識別子。 | "feature_signature" |
status | string | いいえ | 署名の段階:intro、review、code、signing、signed、declined。書類が署名済みであることを意味するのは signed のみです。 | "signed" |
verdict | string | いいえ | Not Finished、Approved、In Review、Declined のいずれか。 | "Approved" |
level | string | いいえ | simple(デフォルト)、aes、または qes(Qualified、アドオン機能)。 | "aes" |
format | string | いいえ | Simple署名は pdf、Advanced(AES)とQualified(QES)は pades。 | "pades" |
profile | string | はい | Advanced(AES)またはQualified(QES)の署名が完了すると PAdES-B-LT、それ以外は null。 | "PAdES-B-LT" |
signer | オブジェクト | いいえ | { name, capacity, company, role, roles, identity_session_id }。capacity はKYCの場合 self、KYBの場合 company です。 | { "name": "Jane Doe", "capacity": "self", … } |
identity_used | オブジェクト | いいえ | { session_id, kyc_id, verified, expected_name }:署名が依拠する検証済みの本人情報。検証済みの本人情報がないSimple署名では空になります。 | { "verified": true, … } |
certificate | オブジェクト | はい | { issuer, issued_to, serial, valid_from, valid_until }。署名が完了するまでは null、Simple署名では常に null です。 | { "serial": "5A3F9C21", … } |
confirmation | object | いいえ | { channel, destination, confirmed_at, attempts }。destinationはマスク済みです。attemptsは入力されたコードの回数で、正しいコードの入力も含みます。Simple署名にはコードがないため、channelとdestinationはnullになります。 | { "channel": "email", … } |
timestamp | object | はい | { time, qualified, valid }。AESではqualifiedは常にfalseです。タイムスタンプはDiditが発行するためです。QESでは、適格トラストサービスプロバイダーがタイムスタンプを発行します。署名されるまではnullで、Simple署名の場合は常にnullです。 | { "qualified": false, … } |
documents | オブジェクトの配列 | いいえ | { id, uuid, title, language, source_revision, translation_id, file_name, pages, size_bytes, sha256_original, sha256_signed, status, opened_at, read_at, read_to_end, consented_at, consent, signed_file, mode, source_format, conversion, fields }。statusはsigned、declined、not_signed、not_reachedのいずれかです。modeはfieldsまたはread_and_agreeです。source_formatはpdfまたはdocxです。conversionは元のWordファイルを説明するもので、PDFの場合はnullです。 | […] |
documents[].language | string | はい | 試行の開始時に選択されていたバージョンの言語です。未設定の場合はnullです。言語が完全に一致する翻訳があればそれが使われ、なければ原文が使われます。署名後は、実際に署名された言語です。 | "en" |
documents[].source_revision | string (UUID) | いいえ | 翻訳が選択されている場合も含めて、試行にコピーされたソースリビジョンです。署名者の書類idとは別のものです。 | "22222222-2222-4222-8222-222222222222" |
documents[].translation_id | string (UUID) | はい | 選択された翻訳です。原文の場合はnullです。書類のコピーと言語の選択は、試行の開始後に固定されたままです。 | null |
documents[].fields | オブジェクトの配列 | いいえ | 書類内の各フィールドについての{ key, type, role, label, page, x, y, width, height, required, value, display_value, value_source, filled_at, image_url, value_unavailable_reason }。valueは文字列、チェックボックスの場合は真偽値、適用された署名またはイニシャルの場合はtrueです。フィールドのない書類では空になります。 | […] |
adopted_signature | object | はい | { method, font, adopted_at }。署名者が採用した署名とイニシャルです。methodはtypedまたはdrawnで、fontはタイプ入力された署名の手書きスタイルです。採用されるまではnullです。 | { "method": "drawn", … } |
electronic_signature_consent_at | string (ISO 8601) | はい | 署名者が書類に電子的に署名することに同意した日時です。いずれかの書類にフィールドがある場合に設定されます。 | "2026-11-03T10:41:40Z" |
evidence_file | string | はい | 署名後の証拠PDFのパスです。 | "/v3/session/…/evidence/?signature_id=…" |
warnings | オブジェクトの配列 | いいえ | { code, node_id }。codeはSIGNATURE_DECLINED、SIGNATURE_OTP_FAILED、SIGNATURE_NAME_MISMATCH、SIGNATURE_IDENTITY_NOT_VERIFIED、SIGNATURE_DOCUMENT_CHANGEDのいずれかです。 | [] |
validation | object | はい | { valid, checked_at, documents[] }。署名済み書類に対する最後の暗号学的検証です。署名されるまではnullです。署名処理の結果を確認できなかった場合は{ valid: null, reason: "signature_provider_outcome_unknown", checked_at }になります。 | { "valid": true, … } |
declined_at | string (ISO 8601) | はい | 署名者が却下した日時です。 | null |
declined_action | string | いいえ | ステップのsignature_declined_actionです。 | "REVIEW" |
signed_at | string (ISO 8601) | はい | 書類が署名された日時です。 | "2026-11-03T10:42:24Z" |
expires_at | string (ISO 8601) | いいえ | 署名リンクが機能しなくなる日時です。 | "2026-11-10T10:30:00Z" |
email_sent_at | string (ISO 8601) | はい | 署名者に署名済みコピーがメールで送信された日時です。 | "2026-11-03T10:42:30Z" |
email_unavailable_reason | string | はい | コピーの送信が要求されたものの、メールで送信されなかった理由です。 | null |
ip_address | string | はい | 署名者がコードを要求した時点の署名者のIPアドレスです。 | "203.0.113.10" |
place | string | はい | 収集されません。常にnullです。 | null |
place_unavailable_reason | string | はい | not_collectedです。 | "not_collected" |
年齢推定
スタンドアロンの年齢推定API(POST /v3/age-estimation/)から返されます。このレスポンスは、Liveness checkの形式の一部をage_estimationエンベロープの下に含みます。含まれるのはstatus、method、score、age_estimation、warningsです。さらに、スタンドアロンのみのuser_image顔検出ブロックが加わります。reference_image、video_url、matches、face_quality、face_luminanceは含まれません。ワークフローのセッションには個別の配列はなく、推定年齢はGET /v3/session/{sessionId}/decision/のliveness_checks[].age_estimationとして表示されます。出典:apis/serializers/age_estimation.py:50-55(AgeEstimationResponseSerializer)。エンベロープはapis/views/age_estimation.py:138-174で組み立てられます。
| フィールド | 型 | null許容 | 説明 | 例 |
|---|---|---|---|---|
request_id | string (UUID) | いいえ | save_api_request=true(デフォルト)の場合は保存されたセッションID。それ以外の場合は一時的な相関UUIDです。 | "3b1f1e2c-…" |
age_estimation | object | いいえ | 結果のエンベロープです。status(Approved / Declined)、method(常にPASSIVE)、score(ライブネス 0-100、null許容)、age_estimation(最も大きい顔の推定年齢(年単位)、null許容)、user_image(顔ごとのage、bbox [x_min, y_min, x_max, y_max]、confidence、genderを含むentities[]、およびbest_angle)、warnings[]です。 | { … } |
vendor_data | string | はい | リクエストのvendor_dataをそのまま返したものです。 | null |
metadata | object | はい | リクエストのmetadataをそのまま返したものです。 | null |
created_at | string (ISO 8601) | いいえ | サーバー側のリクエストのタイムスタンプです。 | "2026-05-17T10:22:13.512941+00:00" |
{
"request_id": "3b1f1e2c-7777-4d2c-9eb6-fdc6c7c92ef9",
"age_estimation": {
"status": "Approved",
"method": "PASSIVE",
"score": 94.10,
"age_estimation": 28.7,
"user_image": {
"entities": [
{ "age": 28.7, "bbox": [40, 40, 100, 100], "confidence": 0.72, "gender": "male" }
],
"best_angle": 0
},
"warnings": []
},
"vendor_data": null,
"metadata": null,
"created_at": "2026-05-17T10:22:13.512941+00:00"
}
生体認証
生体認証は、標準のKYCで使われるのと同じライブネス + 顔照合のパイプラインを実行します。ただし、OCRで読み取った書類の顔写真の代わりに、既存ユーザーの参照画像と撮影された顔を比較するように設定されています。専用のシリアライザーはありません。GET /v3/session/{sessionId}/decision/は、標準のライブネスチェックと顔照合のオブジェクトをliveness_checks[]とface_matches[]の下に返します。セッションのワークフローはworkflow_type = "biometric_authentication"(WorkflowTypeChoices、common/config/choices.py:636)として設定されます。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
liveness_checks | ライブネス検知の配列 | いいえ | 認証試行のライブネス結果です。 | [ { "status": "Approved", … } ] |
face_matches | 顔照合の配列 | いいえ | 登録済みの参照画像との照合結果です。source_image_session_idにはセッション自身のsession_idが設定されます。参照用の顔(指定されたportrait_image、またはportrait_imageを省略した場合にvendor_data経由で再利用される保存済みの顔)は、認証セッション自体の下に記録されます(face/views/face.py:656-659)。 | [ { "status": "Approved", "source_image_session_id": "…", … } ] |
status | 文字列 | いいえ | セッションの最上位ステータスです(ステータス列挙型を参照)。 | "Approved" |
{
"session_id": "9b1f1e2c-8888-4d2c-9eb6-fdc6c7c92ef9",
"status": "Approved",
"liveness_checks": [
{
"status": "Approved",
"method": "PASSIVE",
"score": 95.10,
"reference_image": "https://<media-host>/.../reference.jpg?signature=...",
"video_url": null,
"age_estimation": null,
"matches": [],
"face_quality": 91.20,
"face_luminance": 53.10,
"node_id": "biometric_auth_liveness",
"warnings": []
}
],
"face_matches": [
{
"status": "Approved",
"score": 98.42,
"source_image_session_id": "9b1f1e2c-8888-4d2c-9eb6-fdc6c7c92ef9",
"source_image": "https://<media-host>/.../source.jpg?signature=...",
"target_image": "https://<media-host>/.../target.jpg?signature=...",
"node_id": "biometric_auth_face_match",
"warnings": []
}
]
}
KYB法人登記情報
KYBワークフローで登記簿により確認された企業ごとに返されます。企業セッションのGET /v3/session/{sessionId}/decision/のレスポンスにregistry_checks[]として含まれます。出典:kyb/serializers/kyb.py:939-964(RegistryCheckV3Serializer)。
| フィールド | 型 | Null許容 | 説明 | 例 |
|---|---|---|---|---|
status | 文字列 | いいえ | ステータス列挙型を参照してください。 | "Approved" |
node_id | 文字列 | null | はい | ワークフローのノード識別子(V3)。 | "first_registry" |
data_resolved | 真偽値 | いいえ | 登記簿の取得が完了している場合はtrueです(またはis_from_registryがfalseの場合、データは手動で入力されたことを意味します)。 | true |
company | オブジェクト | いいえ | 企業データの全体を示します。下の企業オブジェクトを参照してください。 | { … } |
ownership_structure | オブジェクト | はい | 登記簿で裏付けられた株主構成です。shareholders[]とbeneficial_owners[]を含み、各所有者には登記上の識別情報、持分、正規化されたshareholdingが含まれます。 | { "shareholders": [...], "beneficial_owners": [] } |
warnings | 配列 | いいえ | 警告オブジェクトを参照してください。 | [] |
企業オブジェクト
出典:kyb/serializers/kyb.py:220-321(KYBCompanyResponseSerializer)。
| フィールド | 型 | Null許容 | 説明 |
|---|---|---|---|
uuid | 文字列(UUID) | いいえ | 内部の企業識別子です。 |
node_id | 文字列 | null | はい | ワークフローのノード識別子です。 |
status | 文字列 | いいえ | 機能のステータス(FeatureStatusChoices)です。 |
registry_status | 文字列 | はい | 登記簿に記載された企業のステータス(active、dissolved、…)です。 |
data_resolved | 真偽値 | いいえ | 親オブジェクトと同じ定義です。 |
company_name | 文字列 | はい | 登記上の企業名です。 |
registration_number | 文字列 | はい | 登記機関の識別子です。 |
country_code | 文字列(ISO 3166-1 alpha-2) | はい | 設立国です。 |
region | 文字列 | はい | 該当する場合のISO 3166-2の地域区分です(例: US-CA)。 |
company_type | 文字列 | はい | 法的形態です(LLC、SLなど)。 |
incorporation_date | 文字列(YYYY-MM-DD) | はい | 設立日です。 |
registered_address | 文字列 | はい | 登記上の法的住所です。 |
tax_number | 文字列 | はい | 税務/VATの識別番号です。 |
risk_level | 文字列 | はい | プロバイダーが提供するリスク評価です。 |
verification_status | 文字列 | はい | 内部の検証ステータス列挙型です。 |
is_from_registry | 真偽値 | いいえ | 登記簿から取得した場合はtrueです(手動入力の場合と区別されます)。 |
fetch_status | 文字列 | はい | pending、resolved、failedのいずれかです。 |
alternative_names | 文字列 | はい | カンマ区切りの別の商号(屋号)です。 |
nature_of_business | 文字列 | はい | 事業内容の自由記述です。 |
registered_capital | 文字列 | はい | 人間が読みやすい文字列形式の登記資本金です。 |
registered_capital_amount | 文字列(小数) | はい | 解析された登記資本金の金額です。 |
registered_capital_currency | 文字列(ISO 4217) | はい | 通貨コードです。 |
website | 文字列(URL) | はい | 企業のWebサイトです。 |
email | 文字列 | はい | 公開されている連絡先メールアドレスです。 |
phone | 文字列 | はい | 公開されている連絡先電話番号です。 |
legal_entity_identifier | 文字列 | はい | 利用可能な場合のLEIです。 |
location_of_registration | 文字列 | はい | 登記機関の事務所または地域です。 |
vat_number | 文字列 | はい | 企業に提出されたVAT番号です。 |
vat_validation_status | 文字列 | いいえ | VAT番号の検証結果です。VAT番号がない場合はtax_numberを検証した結果になります。valid、invalid、format_valid、invalid_format、could_not_validate、not_applicableのいずれかです。詳細はVATおよび納税者番号の検証を参照してください。 |
vat_validated_number | 文字列 | はい | 確認された番号です(情報源が保持している形式のまま)。 |
vat_validation_source | 文字列 | はい | ステータスを決定した情報源です: eu_vies、pl_vat_white_list、no_brreg、ch_uid_register、br_receita_federal、co_rues、cr_hacienda、ec_sri、py_dnit、format_rulesのいずれかです。 |
vat_validated_name | 文字列 | はい | 情報源に登録されている名称です(情報源が開示しない場合は空です)。 |
vat_validated_address | 文字列 | はい | 情報源に登録されている住所です(開示されない場合は空です)。 |
vat_checked_at | 文字列(ISO 8601) | はい | 確認のタイムスタンプです。確認が実行されなかった場合はnullです。 |
financial_summary | オブジェクト | はい | 登記簿が提供する場合の、最新の財務ハイライトのスナップショットです。 |
officers | オブジェクトの配列 | いいえ | B2Cで安全に公開できる役員一覧です: { uuid, name, designation, role, nationality, is_active, kyc_status, kyc_session_url }。 |
beneficial_owners | オブジェクトの配列 | いいえ | B2Cで安全に公開できる実質的支配者(UBO)の一覧です: { uuid, name, first_name, last_name, entity_type, roles, ownership_min_shares, ownership_max_shares, is_active, kyc_status, kyc_session_url, effective_ownership_percent }。 |
addresses | オブジェクトの配列 | はい | 登記簿からの住所ごとの詳細です。 |
industries | オブジェクトの配列 | はい | SIC/NAICS形式の業種分類です。 |
accounts | オブジェクトの配列 | はい | 提出済みの決算書のメタデータです。 |
registry_data | オブジェクト | はい | Diditが正規化した登記情報の詳細です(所有構造の結果、コンソールでの修正、専用フィールドのない登記事実を含みます)。安定した仕様ではありません。 |
user_provided_data | オブジェクト | はい | ユーザーが編集したフィールドのスナップショットです。 |
confirmed_by_user_at | 文字列(ISO 8601) | はい | ユーザーが抽出データを確認したタイムスタンプです。 |
last_console_edit_at | 文字列 (ISO 8601) | はい | コンソールでの最終編集のタイムスタンプ。 |
is_editable | 真偽値 | いいえ | 法人登記から取得したデータをエンドユーザーが編集できる間はtrue。 |
{
"status": "Approved",
"node_id": "first_registry",
"data_resolved": true,
"company": {
"uuid": "b1f1e2c2-9999-4d2c-9eb6-fdc6c7c92ef9",
"node_id": "first_registry",
"status": "Approved",
"registry_status": "active",
"data_resolved": true,
"company_name": "Sante Clinics SL",
"registration_number": "B12345678",
"country_code": "ES",
"region": null,
"company_type": "SL",
"incorporation_date": "2018-03-22",
"registered_address": "Calle Mayor 1, 28001 Madrid, Spain",
"tax_number": "B12345678",
"risk_level": "low",
"verification_status": "verified",
"is_from_registry": true,
"fetch_status": "resolved",
"alternative_names": "Sante Clinics",
"nature_of_business": "Medical clinic operations",
"registered_capital": "EUR 50,000",
"registered_capital_amount": "50000.00",
"registered_capital_currency": "EUR",
"website": "https://santeclinics.com",
"email": "info@santeclinics.com",
"phone": "+34911223344",
"legal_entity_identifier": null,
"location_of_registration": "Registro Mercantil de Madrid",
"vat_number": "ESB12345678",
"vat_validation_status": "valid",
"vat_validated_name": "SANTE CLINICS SL",
"vat_validated_address": "CALLE MAYOR 1, 28001 MADRID",
"vat_checked_at": "2026-05-17T10:11:05Z",
"financial_summary": null,
"officers": [
{
"uuid": "c1f1e2c2-aaaa-4d2c-9eb6-fdc6c7c92ef9",
"name": "María García López",
"designation": "Administrador único",
"role": "Director",
"nationality": "ESP",
"is_active": true,
"kyc_status": "Approved",
"kyc_session_url": "https://verify.didit.me/s/…"
}
],
"beneficial_owners": [
{
"uuid": "d1f1e2c2-bbbb-4d2c-9eb6-fdc6c7c92ef9",
"name": "María García López",
"first_name": "María",
"last_name": "García López",
"entity_type": "person",
"roles": ["UBO"],
"ownership_min_shares": "75.00",
"ownership_max_shares": "75.00",
"is_active": true,
"kyc_status": "Approved",
"kyc_session_url": "https://verify.didit.me/s/…",
"effective_ownership_percent": 75.0
}
],
"addresses": [],
"industries": [],
"accounts": [],
"registry_data": {},
"user_provided_data": {},
"confirmed_by_user_at": "2026-05-17T10:11:02Z",
"last_console_edit_at": null,
"is_editable": false
},
"ownership_structure": null,
"warnings": []
}
KYB書類
KYB補足書類を収集するノードごとに返されます。ビジネスセッションではGET /v3/session/{sessionId}/decision/のdocument_verifications[]として表示され、node_idごとに1件のエントリがあります。items[]には、アップロードされた各書類が一覧表示されます。ソース:kyb/serializers/kyb.py:1053-1068(DocumentVerificationV3Serializer)。各アイテムはkyb/serializers/kyb.py:811-851(KYBDocumentResponseSerializer)に従います。
| フィールド | 型 | NULL許容 | 説明 | 例 |
|---|---|---|---|---|
status | 文字列 | いいえ | このノードの書類全体の集約ステータス。Approvedはすべてのパイプライン書類が承認済みの場合にのみ、Declinedはいずれかの書類が却下された場合、In Reviewはそれ以外の場合、Not Finishedは保留中の場合に設定されます。ステータス列挙を参照。 | "Approved" |
node_id | 文字列 | null | はい | ワークフローノード識別子(V3)。 | "first_kyb_documents" |
items | KYB書類アイテムオブジェクトの配列 | いいえ | アップロードまたは要求された書類ごとに1件のエントリ。 | […] |
groups | オブジェクト | いいえ | 書類グループごとの件数:{ <group_name>: { total, approved, pending, declined, in_review, other, missing } }。 | { "incorporation_certificate": { "total": 1, "approved": 1, "pending": 0, "declined": 0, "in_review": 0, "other": 0, "missing": 0 } } |
required_groups | 文字列の配列 | いいえ | ワークフロー設定で必要とされる書類グループ。 | ["incorporation_certificate", "shareholder_register"] |
warnings | 配列 | いいえ | 警告オブジェクトを参照。 | [] |
KYB書類アイテムオブジェクト
| フィールド | 型 | NULL許容 | 説明 |
|---|---|---|---|
uuid | 文字列 (UUID) | いいえ | 内部書類識別子。 |
document_type | 文字列 | はい | 上位グループ(incorporation_certificate、shareholder_register、…)。 |
document_subtype | 文字列 | はい | プロバイダー固有のサブタイプ。 |
document_group | 文字列 | はい | document_typeのミラー(わかりやすさのために残しているエイリアス)。 |
file_url | 文字列 (URL) | はい | クリーン化されたファイルへの事前署名付きURL。 |
original_filename | 文字列 | はい | アップロード時のファイル名。 |
file_size | 整数 | はい | ファイルサイズ(バイト)。 |
status | 文字列 | いいえ | 書類ごとのステータス(FeatureStatusChoices)。 |
created_at | 文字列 (ISO 8601) | いいえ | アップロード時のタイムスタンプ。 |
cross_check_result | オブジェクト | はい | 登記情報や他の書類との照合による判定結果。 |
document_metadata | オブジェクト | はい | POAのdocument_metadataと同じフィルター済みメタデータ形式。 |
description | 文字列 | はい | レビュアーまたはシステムが設定した説明。 |
is_requested | 真偽値 | いいえ | ワークフローがこの書類を想定していた場合はtrue。 |
ocr_data | オブジェクト | はい | 利用可能な場合にOCRで抽出されたフィールド。 |
is_console_upload | 真偽値 | いいえ | コンソールのレビュアーがアップロードした書類の場合はtrue(集計判定からは除外)。 |
is_confirmed | 真偽値 | いいえ | レビュアーが書類を明示的に確認した場合はtrue。 |
{
"status": "Approved",
"node_id": "first_kyb_documents",
"items": [
{
"uuid": "e1f1e2c2-cccc-4d2c-9eb6-fdc6c7c92ef9",
"document_type": "incorporation_certificate",
"document_subtype": "registro_mercantil_extract",
"document_group": "incorporation_certificate",
"file_url": "https://<media-host>/.../incorporation.pdf?signature=...",
"original_filename": "incorporation_certificate.pdf",
"file_size": 256412,
"status": "Approved",
"created_at": "2026-05-17T10:08:00Z",
"cross_check_result": { "matches_registry_name": true, "matches_registration_number": true },
"document_metadata": {
"file_size": 256412,
"content_type": "application/pdf",
"is_signed": true,
"is_tampered": false
},
"description": null,
"is_requested": true,
"ocr_data": { "company_name": "Sante Clinics SL", "registration_number": "B12345678" },
"is_console_upload": false,
"is_confirmed": true
}
],
"groups": {
"incorporation_certificate": { "total": 1, "approved": 1, "pending": 0, "declined": 0, "in_review": 0, "other": 0, "missing": 0 }
},
"required_groups": ["incorporation_certificate", "shareholder_register"],
"warnings": []
}
KYB主要人物
主要人物ノードごとに返されます。ビジネスセッションではGET /v3/session/{sessionId}/decision/のkey_people_checks[]として表示されます。ソース:kyb/serializers/kyb.py:967-1050(KeyPeopleCheckV3Serializer)。
| フィールド | 型 | NULL許容 | 説明 | 例 |
|---|---|---|---|---|
status | 文字列 | いいえ | ステータス列挙を参照。 | "Approved" |
node_id | 文字列 | null | はい | ワークフローノード識別子(V3)。 | "first_key_people" |
registry | オブジェクト | いいえ | 法人登記から抽出された{ officers[], beneficial_owners[] }。役員はKYBPersonResponseSerializer(kyb/serializers/kyb.py:533-645)に従い、実質的支配者はKYBBeneficialOwnerResponseSerializer(kyb/serializers/kyb.py:648-788)に従います。後者にはdate_of_birth、country_of_birth、email、company_name、registration_number、entity_type、roles、ownership_min_shares、ownership_max_shares、child_beneficial_owners、effective_ownership_percentが追加されています。両方とも当事者ごとのAMLおよびKYCの付加情報(aml_status、kyc_status、kyc_session_url、kyc_session_id、verification_workflow_type、verification_workflow_id、verification_workflow_label、verification_workflow_features、didit_internal_id、kyc_document_type、kyc_nationality、kyc_liveness_passed、kyc_verified_at、kyc_aml_categories、kyc_notification_sent_at)を含みます。 | { "officers": [...], "beneficial_owners": [...] } |
submitted | オブジェクト | いいえ | { parties[] }:企業が主要人物フローで確認・送信したエントリ(source=USERのBusinessParty行)。各当事者はBusinessPartySubmissionResponseSerializer(kyb/serializers/party.py:146-194)に従い、uuid、entity_type、source、name、first_name、last_name、company_name、registration_number、email、nationality、phone_number、date_of_birth、position、custom_fields、is_active、is_skipped、requires_verification、roles[]({ role, ownership_percent, voting_percent })、kyc_session_id、kyc_session_status、kyc_session_url、kyc_session_deleted、kyb_sub_session_id、kyb_sub_session_status、kyb_sub_session_url、kyb_sub_session_deleted、verification_workflow_type、verification_workflow_id、verification_workflow_label、verification_workflow_features、didit_internal_idを含みます。kyc_session_deletedとkyb_sub_session_deletedは、削除された子セッションを示します。そのステータスは削除時点の値で固定されたままになり、対応する*_session_urlはリンクが解決しなくなるためnullで返されます。また、その当事者は親をブロックしなくなります(代わりに判定はIn Reviewになります)。このフラグはPATCH /v3/session/{id}/kyb/parties/{party_uuid}/でクリアします。 | { "parties": [...] } |
ubo_kyc_summary | オブジェクト | はい | KYCがリンクされたアクティブなUBOの件数:{ total, approved, flagged, pending }。アクティブなUBOにKYCがリンクされていない場合はnull。 | { "total": 2, "approved": 2, "flagged": 0, "pending": 0 } |
warnings | 配列 | いいえ | 警告オブジェクトを参照。 | [] |
{
"status": "Approved",
"node_id": "first_key_people",
"registry": {
"officers": [
{
"uuid": "c1f1e2c2-aaaa-4d2c-9eb6-fdc6c7c92ef9",
"name": "María García López",
"designation": "Administrador único",
"role": "Director",
"nationality": "ESP",
"appointment_date": "2018-03-22",
"termination_date": null,
"is_active": true,
"address": "Calle Mayor 1, 28001 Madrid",
"aml_status": "Approved",
"kyc_status": "Approved",
"kyc_session_url": "https://verify.didit.me/s/…",
"kyc_session_id": "9b1f1e2c-8888-4d2c-9eb6-fdc6c7c92ef9",
"verification_workflow_type": "kyc",
"verification_workflow_id": "11111111-1111-1111-1111-111111111111",
"verification_workflow_label": "KYB officer KYC",
"verification_workflow_features": [
{ "feature": "ID_VERIFICATION", "status": "Approved" },
{ "feature": "LIVENESS", "status": "Approved" },
{ "feature": "FACE_MATCH", "status": "Approved" }
],
"didit_internal_id": "user-12345",
"kyc_document_type": "Passport",
"kyc_nationality": "ESP",
"kyc_liveness_passed": true,
"kyc_verified_at": "2026-05-17T10:10:11Z",
"kyc_aml_categories": [],
"kyc_notification_sent_at": "2026-05-15T08:00:00Z"
}
],
"beneficial_owners": []
},
"submitted": {
"parties": [
{
"uuid": "d1f1e2c2-bbbb-4d2c-9eb6-fdc6c7c92ef9",
"entity_type": "person",
"source": "USER",
"name": "María García López",
"first_name": "María",
"last_name": "García López",
"company_name": null,
"registration_number": null,
"email": "maria.garcia@example.com",
"nationality": "ESP",
"phone_number": null,
"date_of_birth": "1990-05-12",
"position": "Administrador único",
"custom_fields": {},
"is_active": true,
"is_skipped": false,
"requires_verification": true,
"roles": [
{ "role": "UBO", "ownership_percent": 75.0, "voting_percent": null }
],
"kyc_session_id": "9b1f1e2c-8888-4d2c-9eb6-fdc6c7c92ef9",
"kyc_session_status": "Approved",
"kyc_session_url": "https://verify.didit.me/s/…",
"kyb_sub_session_id": null,
"kyb_sub_session_status": null,
"kyb_sub_session_url": null,
"verification_workflow_type": "kyc",
"verification_workflow_id": "11111111-1111-1111-1111-111111111111",
"verification_workflow_label": "KYB officer KYC",
"verification_workflow_features": [
{ "feature": "ID_VERIFICATION", "status": "Approved" },
{ "feature": "LIVENESS", "status": "Approved" }
],
"didit_internal_id": "user-12345"
}
]
},
"ubo_kyc_summary": { "total": 1, "approved": 1, "flagged": 0, "pending": 0 },
"warnings": []
}
判定レベルのフィールド
これらのキーは、GET /v3/session/{sessionId}/decision/では機能の配列と同じ階層に、Webhookではdecisionの中に含まれます。
| フィールド | 型 | Null許容 | 説明 |
|---|---|---|---|
status_override | object | はい | レビュアーがstatusを手動で設定した後の{ overridden_at, automatic_status }。ステータスが自動判定によるものである場合はnullです。 |
decision_trace | object | いいえ | ステータスが決定された経緯: status、decided_by(manual、automaticまたはinvestigator)、decided_at、automatic_status、terminal_node_id、actor、warning_counts、status_warnings。 |
linked_records | object | はい | same_face、earlier_verifications、networksの概要。表示する情報がない場合はnullです。 |
biometric_retention | object | いいえ | { jurisdictions, deletes_at }。deletes_atはセッションのライブ生体データが削除される日付で、まだ適用される日付がない場合はnullです。 |
database_validation_not_performed_reason | object | はい | 設定済みのデータベース検証で結果が得られなかった理由を説明する{ code, message }。 |
assignee, waiting_since, sla_due_at | object, datetime | はい | セッションを担当しているConsoleのレビュアーと、そのレビューの時間管理情報。時間管理情報は、セッションがIn Reviewの場合を除きnullです。 |
shared_from_session, shared_from_session_number | UUID, integer | はい | インポートされたセッションの元のセッション。 |
sandbox_scenario | string | はい | サンドボックスセッションの作成時に指定されたシナリオ。 |
fraud_check | object | はい | Fraud Check APIの結果。それ以外のすべてのセッションではnullです。 |
full_session_video, full_session_video_recorded_at | URL, datetime | はい | 録画データとその録画日時。組織がセッション全体の動画を録画している場合にのみ返されます。 |
生体情報の利用同意
ユーザー認証のすべての判定とセッションのWebhookには、単一のbiometric_consentオブジェクト(配列ではありません)が含まれます。このオブジェクトは、セッションで生体情報の明示的な同意が必要だったかどうか、その理由、および回答の証跡を示します。セッションが一度も評価されなかった場合(顔撮影を含まないワークフローなど)はnullになります。ソース: BiometricConsentDecisionSerializer(sessions/serializers/biometric_consent.py)。このステップが表示される条件と各ケースの意味については、生体情報の利用同意で説明しています。
値が記録されていないフィールドはnullになり、空文字列になることはありません。
| フィールド | 型 | 説明 |
|---|---|---|
required | boolean | セッションで生体情報の明示的な同意を取得する必要があるかどうか。falseに戻ることはありません。 |
trigger | string (enum) | null | 同意が必要な理由、または同意がどのように満たされたか: declared_state、ip_state、ip_unknown、document_issuer、forced(アプリケーションのモードが「常に」)、customer_collected(セッション作成時にbiometric_consentを送信した場合)。同意が不要な間はnullです。 |
status | string (enum) | not_required、pending(必要だが未取得)、given、declined(拒否が記録された。現在、拒否を選択できるDiditの画面はありません)。 |
given_at | string (ISO 8601) | null | 同意が得られた日時。customer_collectedの場合は、送信されたgiven_atです。 |
declined_at | string (ISO 8601) | null | 拒否が記録された日時。 |
text_version | string | null | 本人が回答した同意文のバージョンID、または送信されたバージョンID。 |
text_hash | string | null | 表示された言語での正確な文面のSHA-256(16進数)。 |
locale | string | null | 文面が表示された言語。 |
policy_url | string | null | ステップがリンクしていた生体データポリシー。 |
step | string | null | 本人が回答した時点でセッションがあったワークフローのステップ(例: LIVENESS)。 |
node_id | string | null | 本人が回答した時点でセッションがあったワークフローグラフのノード。 |
ip_address | string | null | 回答の送信元IP。 |
ip_country_code | string | null | 回答のIPのISO 3166-1 alpha-2の国。 |
ip_state | string | null | 回答のIPのISO 3166-2の行政区画(例: US-IL)。 |
ip_city | string | null | 回答のIPの都市。 |
user_agent | string | null | 回答のリクエストのユーザーエージェント。 |
detected_ip_address | string | null | 同意要否が最後に評価された際の本人のIP。本人が別のデバイスで回答した場合は、ip_addressと異なることがあります。 |
detected_country_code | string | null | 検出されたIPのISO 3166-1 alpha-2の国。 |
detected_state | string | null | 検出されたIPのISO 3166-2の行政区画。 |
detected_city | string | null | 検出されたIPの都市。 |
declared_state | string | null | 申告されたISO 3166-2の行政区画: user_state、またはexpected_details内の米国の住所の州。 |
document_state | string | null | 本人確認書類を発行したISO 3166-2の行政区画。書類撮影時に読み取られます。 |
jurisdictions | array of string | 生体情報に関する法律が本人に適用される米国の州(USPSコード、例: IL)。証跡から本人が米国内にいると判断されるが州が不明な場合はUSです。該当がない場合は空になります。 |
retention_months | integer | null | jurisdictionsのうち最も短い生体情報の保持期限(月数)。該当がない場合はnullです。 |
reason | string (enum) | null | BIOMETRIC_CONSENT_UNSUPPORTED_SDK: 同意が必要であったにもかかわらず、4.10.0未満のネイティブSDK、またはバージョンを報告しなかったネイティブSDKが、ステップを経ずに顔を撮影した場合です。statusはpendingのまま、または本人が後でホスト型フローで同意した場合はgivenになります。BIOMETRIC_CONSENT_DECLINED: 拒否が記録された場合です(SDKの理由に置き換わります)。それ以外はnullで、セッションで同意が不要だった場合は常にnullです。 |
decline_reason | string | null | 記録された拒否によってセッションが終了した場合はBIOMETRIC_CONSENT_DECLINED、それ以外はnullです。 |
face_data_deleted_at | string (ISO 8601) | null | 拒否によってセッションの顔画像、動画、顔テンプレートが削除された日時。拒否が記録されていない場合はnullです。 |
{
"required": true,
"trigger": "ip_state",
"status": "pending",
"given_at": null,
"declined_at": null,
"text_version": null,
"text_hash": null,
"locale": null,
"policy_url": null,
"step": null,
"node_id": null,
"ip_address": null,
"ip_country_code": null,
"ip_state": null,
"ip_city": null,
"user_agent": null,
"detected_ip_address": "203.0.113.42",
"detected_country_code": "US",
"detected_state": "US-IL",
"detected_city": "Chicago",
"declared_state": null,
"document_state": null,
"jurisdictions": ["IL"],
"retention_months": 36,
"reason": "BIOMETRIC_CONSENT_UNSUPPORTED_SDK",
"decline_reason": null,
"face_data_deleted_at": null
}
{
"required": true,
"trigger": "declared_state",
"status": "given",
"given_at": "2026-10-13T18:31:07.412000Z",
"declined_at": null,
"text_version": "bio-consent-2026-10-12",
"text_hash": "9b2f0c5e4d8a7f61c3e2b4a5d6f7081923a4b5c6d7e8f90a1b2c3d4e5f6a7b8c",
"locale": "en",
"policy_url": "https://didit.me/legal/biometric-data-policy",
"step": "LIVENESS",
"node_id": "feature_liveness_1",
"ip_address": "198.51.100.23",
"ip_country_code": "ES",
"ip_state": "ES-M",
"ip_city": "Madrid",
"user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1",
"detected_ip_address": "198.51.100.23",
"detected_country_code": "ES",
"detected_state": "ES-M",
"detected_city": "Madrid",
"declared_state": null,
"document_state": null,
"jurisdictions": ["IL"],
"retention_months": 36,
"reason": null,
"decline_reason": null,
"face_data_deleted_at": null
}
ステータス列挙値リファレンス
statusというフィールド名は、関連する2種類の値で共通して使用されます。このページの機能ごとのレポートオブジェクトはすべて機能レベルの列挙値を使用し、親セッションのトップレベルのstatusはより範囲の広いセッション列挙値を使用します。
機能レベルのステータス
すべてのレポートオブジェクトのstatusフィールドで使用されます。ソース: common/config/choices.py:343-348(FeatureStatusChoices)。
| 値 | 意味 |
|---|---|
Not Finished | 機能はプロビジョニング済みですが、ユーザーがまだ完了していません。 |
Approved | 機能がすべてのチェックに合格しました。 |
Declined | 機能が少なくとも1つのハードチェックに不合格となりました(log_type: "error"を含むwarnings[]を参照)。 |
In Review | 機能がソフトフェイルのシグナルをトリガーし、手動レビューを待っています(log_type: "warning"を含むwarnings[]を参照)。 |
Resub Requested | レビュアーがユーザーにこの機能の再提出を求めました。 |
Expiredが返されることもあります(PhoneStatusChoicesはcommon/config/choices.py:377-382、EmailStatusChoicesはcommon/config/choices.py:434-439)。
セッションレベルのステータス
親セッションのトップレベルのstatusで使用されます。ソース: common/config/choices.py:106-117(StatusChoices)。
| 値 | 意味 |
|---|---|
Not Started | セッションは作成済みですが、ユーザーがまだ開始していません。 |
In Progress | ユーザーがフローを開始しましたが、結果はまだ確定していません。 |
Approved | セッションがすべてのチェックに合格しました。 |
Declined | セッションが少なくとも1つのハードチェックに不合格となりました。 |
In Review | セッションは手動レビューを待っています。 |
Expired | セッションが完了前に期限切れになりました。 |
Abandoned | ユーザーがフローを完了せずに離脱しました。 |
Kyc Expired | KYCの有効期間が経過しました(再検証フローで使用されます)。 |
Resubmitted | 以前の却下の後にユーザーが再提出しました。このセッションはより新しいセッションに置き換えられています。 |
Awaiting User | システムがユーザー側のアクション(OTPの入力など)を待っています。 |
セッションの終端ステータスは
Approved、Declined、In Review、Expired、Kyc Expired、Abandonedです。個々の機能がIn Reviewのままでも、セッション全体の判定が確定することがあります。