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

# 세션 조회 API: KYC·KYB 결정 데이터

> KYC·KYB 세션의 전체 인증 결정을 GET으로 조회하세요. Didit 응답 하나에 신원, 라이브니스, AML, 법인 등기, OCR 데이터가 포함됩니다. 추론 2s 미만, 호출당 과금.



세션 결정 조회 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\``Fetch the full decision for a Didit verification session.

Endpoint:
GET https://verification.didit.me/v3/session/{session_id}/decision/

Authentication:
Use the x-api-key header with your Didit API key. The key must hold the read:sessions privilege.

Path parameter:
\- session_id (UUID) — returned by POST /v3/session/. Didit resolves it as a User Verification session first, then as a Business Verification session — you do not need to know the kind in advance.

curl example:
curl https://verification.didit.me/v3/session/<SESSION_ID>/decision/ \
-H "x-api-key: <API_KEY>"

Response — top-level keys (both kinds share these):
\- session_id (UUID)
\- session_kind ("user" | "business") — discriminator, ALWAYS branch on this.
\- session_number (int)
\- session_url (string) — hosted URL.
\- status (string) — "Approved", "Declined", "In Review", "In Progress", "Not Started", "Expired", "Abandoned", "Kyc Expired", "Resubmitted", "Awaiting User".
\- workflow_id (workflow_version, workflow_type and workflow_version_id come only with ?include=events)
\- vendor_data, metadata, callback
\- features (string or array) — feature list the workflow runs.
\- expected_details — what you sent on create, if any.
\- created_at, expires_at (ISO 8601).
\- contact_details — { email, email_lang, send_notification_emails, phone }.
\- reviews — array of manual-review activity.
\- status_override ({ overridden_at, automatic_status } | null) — set when a reviewer changed the status by hand.
\- decision_trace — how the status was reached: status, decided_by (manual | automatic | investigator), decided_at, automatic_status, terminal_node_id, actor, warning_counts, status_warnings.
\- linked_records — same_face, earlier_verifications and networks summaries, or null.
\- biometric_retention ({ jurisdictions, deletes_at }) — the date the live biometric data of the session is deleted.
\- assignee, waiting_since, sla_due_at — the Console reviewer holding the session and its review clock; null unless the session is In Review.
\- database_validation_not_performed_reason — why a configured database validation produced no result, when database_validations is null.
\- geolocation_checks, geolocation_attempts — Location verification results and every attempt (see /core-technology/location-verification/report-location-verification).
\- shared_from_session, shared_from_session_number, sandbox_scenario, fraud_check — set only for imported sessions, sandbox scenarios and Fraud Check sessions.
\- full_session_video, full_session_video_recorded_at — only when your organization records full-session video.

Feature arrays — KYC only (session_kind: "user"):
\- id_verifications, liveness_checks, face_matches, nfc_verifications, poa_verifications, database_validations
\- `id_verifications[].barcodes` is always an array. Each entry preserves the reader output, including `type`, `position`, `data`, `data_raw`, and `side`; documents without barcode output return `[]`.
\- nfc_verifications[] items carry is_nfc_skipped (boolean) and skip_reason (string | null) alongside status/chip_data/authenticity — read the reason from the report when one exists. chip_protocol is "icao" or "jpki"; a Japan My Number Card read ("jpki") has its evidence under jpki (chain_valid, signature_valid, revocation_status, attributes, attributes_match_ocr) and null ICAO fields.
\- nfc_skip_reason (string | null), top level — why NFC did not run (USER_SKIPPED, DOCUMENT_WITHOUT_CHIP, CHIP_CERTIFICATE_UNAVAILABLE, DEVICE_WITHOUT_NFC, INTEGRATION_WITHOUT_NFC_ACCESS, MRZ_KEY_UNAVAILABLE, JPKI_UNAVAILABLE), including when the step was bypassed and nfc_verifications stays null.

Feature arrays — KYB only (session_kind: "business"):
\- registry_checks (includes company + officers + beneficial_owners + ownership_structure)
\- document_verifications
\- key_people_checks (officers + beneficial_owners + submitted parties + ubo_kyc_summary)

Shared by both kinds:
\- aml_screenings, phone_verifications, email_verifications, questionnaire_responses, ip_analyses, document_ai_documents
\- bank_verifications: Bank Verification results, one item per Bank Verification step. Read method: "open_banking" (bank sign-in) or "account_lookup" (account check), or a "microdeposits" or "statement" fallback; null until an account is evaluated. "none" when the person chose Continue without your bank before any attempt was evaluated. continued_without_bank: true when the person chose Continue without your bank, also after an evaluated attempt, whose verdict stands; continuation.reason says why (no_route, institution_unsupported, attempts_exhausted, person_choice). financial_data.not_collected lists the data an account check could not collect. See /core-technology/bank-verification/verification-methods and /core-technology/bank-verification/fallbacks.
\- signatures: E-signature results, one item per signer. Present only when the workflow has an E-signature step. Read status ("signed" means signed), verdict, signer, confirmation, certificate, timestamp, documents[] (sha256_original, sha256_signed, signed_file, fields[]) and evidence_file. See /core-technology/electronic-signature/report-electronic-signature.

V3 contract: feature arrays are ALWAYS plural arrays. If a feature was not run on the session, the field is absent or null — never a placeholder.

See /reference/data-models for the full schema (every nested field).

Handler pattern:
const decision = await (await fetch(url, { headers: { "x-api-key": API_KEY } })).json();
switch (decision.session_kind) {
case "user": return handleUserDecision(decision);
case "business": return handleBusinessDecision(decision);
}

Failure modes:
\- 404 — { "detail": "Not found." } when the session does not exist (both session types are checked) or belongs to a different application.
\- 403 — { "detail": "You do not have permission to perform this action." } when the key lacks read:sessions.
\- 401 — invalid API key.

When to call:
\- Eagerly after receiving a status.updated webhook (recommended pattern — see /integration/webhooks).
\- On-demand when your support agent or analyst opens the session in your dashboard.

Caching:
Decision payloads are mutable until the session reaches a terminal status. Cache only if you also subscribe to data.updated and status.updated webhooks.

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

\</pre>



      
      

붙여넣을 곳

## KYC 및 KYB 지원이 엔드포인트는 **사용자 인증(KYC)** 세션과 **기업 확인(KYB)** 세션 모두에서 작동합니다. 응답에는 항상 최상위 `session_kind` 필드가 포함됩니다.- `"user"`: 사용자 인증(KYC) 세션입니다. 응답에 `id_verifications`, `liveness_checks`, `face_matches`, `nfc_verifications`, `poa_verifications`, `database_validations`가 포함됩니다.
- `"business"`: 기업 확인(KYB) 세션입니다. 응답에 `registry_checks`, `document_verifications`, `key_people_checks`가 포함됩니다.두 유형 모두 `aml_screenings`, `phone_verifications`, `email_verifications`, `questionnaire_responses`, `ip_analyses`, `document_ai_documents`, `bank_verifications`, `reviews`, `contact_details`를 공유하며, 공통 최상위 필드(`session_id`, `session_number`, `session_url`, `status`, `workflow_id`, `vendor_data`, `metadata`, `callback`, `features`, `expected_details`, `created_at`, `expires_at`)도 함께 포함됩니다.Didit는 `session_id`를 두 세션 유형 모두에서 조회합니다. 먼저 사용자 인증(KYC) 세션을, 다음으로 기업 확인(KYB) 세션을 확인하고 일치하는 결과를 반환합니다. UUID는 애플리케이션마다 고유하므로 혼동될 여지가 없습니다.유형별 기능의 전체 목록은 [세션 개요](https://docs.didit.me/ko/sessions-api/overview.md)를 참조하십시오.## 예시> [tab] 사용자 인증(KYC)
>
> ```bash theme={null}
> curl https://verification.didit.me/v3/session/4c5c7f3a-1f82-4f3b-8d8e-1a8d2d2f9b7a/decision/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> **응답(일부 생략):**
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-1f82-4f3b-8d8e-1a8d2d2f9b7a",
>   "session_kind": "user",
>   "session_number": 1024,
>   "session_url": "https://verify.didit.me/...",
>   "status": "APPROVED",
>   "workflow_id": "wf_kyc_standard",
>   "vendor_data": "user-42",
>   "features": "ID_VERIFICATION,LIVENESS,FACE_MATCH,AML",
>   "id_verifications": [
>     { "node_id": "feature_ocr_1", "status": "Approved", "document_type": "Passport", "full_name": "John Doe", "barcodes": [], "...": "..." }
>   ],
>   "liveness_checks": [
>     { "node_id": "feature_liveness_1", "status": "Approved", "score": 0.98 }
>   ],
>   "face_matches": [
>     { "node_id": "feature_face_match_1", "status": "Approved", "score": 0.94 }
>   ],
>   "aml_screenings": [
>     { "node_id": "feature_aml_1", "status": "Approved", "total_hits": 0, "score": 0 }
>   ],
>   "phone_verifications": [],
>   "email_verifications": [],
>   "questionnaire_responses": [],
>   "ip_analyses": [],
>   "reviews": [],
>   "contact_details": { "email": "alex.sample@example.com", "phone": null },
>   "expected_details": null,
>   "metadata": {},
>   "callback": null,
>   "created_at": "2026-04-16T10:00:00Z",
>   "expires_at": "2026-04-23T10:00:00Z"
> }
> ```> [tab] 기업 확인(KYB)
>
> ```bash theme={null}
> curl https://verification.didit.me/v3/session/bs-01HJX1.../decision/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> **응답(일부 생략):**
>
> ```json theme={null}
> {
>   "session_id": "bs-01HJX1...",
>   "session_kind": "business",
>   "session_number": 89,
>   "session_url": "https://verify.didit.me/...",
>   "status": "APPROVED",
>   "workflow_id": "wf_kyb_standard",
>   "vendor_data": "biz-acme-001",
>   "features": ["KYB_REGISTRY", "KYB_COMPANY_AML", "KYB_DOCUMENTS", "KYB_KEY_PEOPLE"],
>   "registry_checks": [
>     {
>       "status": "Approved",
>       "node_id": "feature_kyb_registry",
>       "data_resolved": true,
>       "company": {
>         "uuid": "...",
>         "node_id": "feature_kyb_registry",
>         "status": "Approved",
>         "registry_status": "active",
>         "company_name": "Acme Corporation Limited",
>         "registration_number": "12345678",
>         "country_code": "GBR",
>         "company_type": "Private Limited",
>         "incorporation_date": "2010-05-14",
>         "registered_address": "1 Main Street, London EC1A 1AA, United Kingdom",
>         "tax_number": "SAMPLE-TAX-12345",
>         "risk_level": "LOW",
>         "verification_status": "verified",
>         "is_from_registry": true,
>         "fetch_status": "resolved",
>         "alternative_names": ["Acme Ltd"],
>         "nature_of_business": "Software publishing",
>         "registered_capital": "100000 GBP",
>         "website": "https://acme.example",
>         "email": "alex.sample@example.com",
>         "phone": "+15550101000",
>         "legal_entity_identifier": "529900XXXXXXXXXXXXX",
>         "financial_summary": {},
>         "officers": [
>           { "uuid": "...", "name": "Jane Doe", "role": "director", "nationality": "USA", "is_active": true, "kyc_status": "Approved", "kyc_session_url": "https://verify.didit.me/..." }
>         ],
>         "beneficial_owners": [
>           { "uuid": "...", "name": "John Smith", "entity_type": "person", "roles": ["ubo"], "ownership_min_shares": 40, "ownership_max_shares": 40, "kyc_status": "Pending", "effective_ownership_percent": 40.0 }
>         ],
>         "addresses": [],
>         "industries": [],
>         "accounts": [],
>         "registry_data": { },
>         "user_provided_data": { },
>         "confirmed_by_user_at": "2026-04-16T10:10:00Z",
>         "is_editable": false
>       },
>       "ownership_structure": { },
>       "warnings": []
>     }
>   ],
>   "aml_screenings": [
>     {
>       "node_id": "feature_kyb_company_aml",
>       "status": "Approved",
>       "total_hits": 0,
>       "score": 0,
>       "entity_type": "COMPANY",
>       "hits": []
>     }
>   ],
>   "document_verifications": [
>     {
>       "status": "Approved",
>       "node_id": "feature_kyb_documents",
>       "items": [
>         { "uuid": "...", "document_type": "certificate_of_incorporation", "status": "Approved", "file_url": "https://...", "ocr_data": { } }
>       ],
>       "groups": { "legal_presence": { "approved": 1, "pending": 0, "missing": 0 } },
>       "required_groups": ["legal_presence", "ownership_structure"],
>       "warnings": []
>     }
>   ],
>   "key_people_checks": [
>     {
>       "status": "Approved",
>       "node_id": "feature_kyb_key_people",
>       "officers": [
>         { "uuid": "...", "name": "Jane Doe", "role": "director", "kyc_status": "Approved", "kyc_session_url": "..." }
>       ],
>       "beneficial_owners": [
>         { "uuid": "...", "name": "John Smith", "roles": ["ubo"], "ownership_min_shares": 40, "ownership_max_shares": 40, "kyc_status": "Pending" }
>       ],
>       "registry": {
>         "officers": [
>           { "uuid": "...", "name": "Jane Doe", "role": "director", "kyc_status": "Approved" }
>         ],
>         "beneficial_owners": [
>           { "uuid": "...", "name": "John Smith", "roles": ["ubo"], "ownership_min_shares": 40, "kyc_status": "Pending" }
>         ]
>       },
>       "submitted": {
>         "parties": [
>           { "uuid": "...", "entity_type": "person", "name": "Alice Chen", "role": "ubo", "ownership_percent": 35.0, "requires_verification": true, "kyc_session_status": "Not Started", "kyc_session_url": "https://verify.didit.me/..." }
>         ]
>       },
>       "ubo_kyc_summary": {
>         "total": 2,
>         "approved": 1,
>         "flagged": 0,
>         "pending": 1
>       },
>       "warnings": []
>     }
>   ],
>   "phone_verifications": null,
>   "email_verifications": null,
>   "questionnaire_responses": null,
>   "ip_analyses": null,
>   "reviews": [],
>   "contact_details": { "email": "alex.sample@example.com", "email_lang": "en", "send_notification_emails": true, "phone": null },
>   "expected_details": null,
>   "metadata": {},
>   "callback": null,
>   "created_at": "2026-04-16T10:00:00Z",
>   "expires_at": "2026-04-23T10:00:00Z"
> }
> ```## 응답을 클라이언트에서 처리하기```typescript theme={null}
const res = await fetch(`${BASE}/v3/session/${sessionId}/decision/`, {
  headers: { "x-api-key": API_KEY },
});
const decision = await res.json();

switch (decision.session_kind) {
  case "user":
    handleUserDecision(decision);
    break;
  case "business":
    handleBusinessDecision(decision);
    break;
}
```## 상태, 결정 추적 및 검토 필드모든 결정에는 `status`가 어떻게 도출되었는지가 설명되어 있습니다.| 필드 | 확인할 내용 |
| - | - |
| `status_override` | 자동 상태를 사용하는 경우 `null`입니다. 검토자가 상태를 직접 설정한 후에는 `{ overridden_at, automatic_status }`이며, `automatic_status`는 검사 결과로 도출된 상태입니다. 이 값을 보면 수동 승인과 자동 승인을 구분할 수 있습니다. |
| `decision_trace` | `status`, `decided_by`(`manual`, `automatic`, `investigator` 중 하나이며, 세션이 결정되지 않은 동안에는 `null`), `decided_at`, `automatic_status`, `terminal_node_id`, `actor`(수동 결정을 내린 검토자), `log_type`별 `warning_counts`와 `total`, 그리고 `Declined` 또는 `In Review` 상태를 설정한 경고인 `status_warnings`가 포함됩니다. |
| `linked_records` | 검증이 연결된 다른 기록의 요약입니다. `same_face`(얼굴이 일치한 다른 사람과 가장 가까운 일치 항목), `earlier_verifications`(같은 사람에 대한 건수), `networks`를 포함합니다. 표시할 내용이 없으면 `null`입니다. |
| `assignee`, `waiting_since`, `sla_due_at` | 세션을 맡고 있는 Console 검토자, 대기가 시작된 시점, 검토 기한입니다. `waiting_since`와 `sla_due_at`은 세션이 `In Review` 상태이고 애플리케이션에서 검토 기한을 설정한 경우가 아니면 `null`입니다. |
| `database_validation_not_performed_reason` | 설정된 데이터베이스 검증에서 결과가 생성되지 않은 이유를 나타내는 `{ code, message }`입니다. `database_validations`가 `null`일 때 "레지스트리가 일치했음"과 "아무것도 실행되지 않았음"을 구분해 줍니다. |
| `shared_from_session`, `shared_from_session_number` | `POST /v3/session/import-shared/`로 이 세션을 가져온 경우 원본 세션입니다. 그렇지 않으면 `null`입니다. |
| `sandbox_scenario` | 샌드박스 세션을 생성할 때 설정한 시나리오입니다. |
| `full_session_video`, `full_session_video_recorded_at` | 녹화본의 만료되는 URL과 녹화 시점입니다. 조직이 전체 세션 영상을 녹화하는 경우에만 반환됩니다. |## 생체 데이터 보존`biometric_retention`은 항상 포함됩니다. `deletes_at`은 세션의 활성 생체 데이터가 삭제되는 날짜이고, `jurisdictions`는 해당 사용자에 대해 생체 정보 규정이 삭제 기한을 정한 미국 주 목록입니다(주를 알 수 없는 경우 `US`). 적용되는 날짜가 아직 없으면 `deletes_at`은 `null`입니다.## 위치 확인워크플로에 [위치 확인](https://docs.didit.me/ko/core-technology/location-verification/overview.md) 단계가 있으면 결정 결과에 두 개의 배열이 포함됩니다. `geolocation_checks[]`에는 단계마다 하나의 항목이 있으며, 승인된 시도의 결과, 좌표와 정확도, IP 위치 및 등록된 주소와의 대조 결과, 해당 단계의 `warnings`가 포함됩니다. `geolocation_attempts[]`에는 모든 단계의 모든 시도가 가장 오래된 순서로 나열되며, 각 시도를 수신한 시각이 함께 표시됩니다. 워크플로에 해당 단계가 없으면 두 값 모두 `null`로 반환됩니다. 모든 필드와 결과는 [위치 확인 보고서](https://docs.didit.me/ko/core-technology/location-verification/report-location-verification.md)에 설명되어 있습니다.## 워크플로 라우팅 이벤트`?include=events`는 세션의 이벤트 타임라인을 추가합니다. 단계 및 상태 변경 이벤트와 함께, 분기 노드를 거치는 워크플로는 라우팅 결정마다 이벤트를 하나씩 남깁니다. 따라서 연동 시스템이나 Console 타임라인에서 워크플로 그래프를 직접 따라가지 않고도 세션이 특정 결과로 끝난 이유를 설명할 수 있습니다.| `event_type` | 기록 시점 | `details` |
| - | - | - |
| `WORKFLOW_BRANCH_EVALUATED` | 세션이 진행되는 동안 분기 조건이 있는 노드가 평가되었을 때(분기 노드, 그리고 분기가 있는 기능 또는 webhook 노드) | `node_id`, `node_label`, `node_type`, `matched_branch_id`(일치한 분기, 일치하는 분기가 없으면 `null`), `fallback`(어떤 조건도 일치하지 않아 노드의 기본 간선을 선택했을 때 `true`), `next_node_id`, `next_node_label` |
| `WORKFLOW_STATUS_NODE_REACHED` | 상태 노드가 실행되었을 때 | `node_id`, `node_label`, `session_status`(`Determine`을 포함한 설정값), `resolved_session_status`(최종적으로 결정된 값), `feature_statuses`(`[{target, status}]`) |두 이벤트 모두 다른 이벤트와 마찬가지로 밀리초 단위의 `sent_at`을 포함하며, `component`, `feature_step`, `step`은 포함하지 않습니다. 사용자 기기가 아니라 워크플로 엔진에서 발생하기 때문입니다. 조건이 없는 "else" 분기는 일치한 분기로 간주합니다. `fallback`은 어떤 분기도 일치하지 않았을 때만 `true`입니다. 출구 간선이 하나뿐인 노드는 결정을 내리지 않으며 이벤트도 남기지 않습니다.같은 구조에는 `workflow_terminal_node_id`도 포함됩니다. 이 값은 세션 상태를 설정한 마지막 워크플로 상태 노드의 `node_id`이며, 그런 노드 ID가 기록되지 않았다면 `null`입니다. 이는 워크플로의 과거 경로 정보입니다. 수동 승인, 거부, 재제출은 이 값을 지우지 않으며, 이후 워크플로 상태 노드가 나타나면 그 노드로 교체됩니다. 예를 들어 워크플로가 세션을 *In Review* 노드로 보냈고 검토자가 나중에 승인했다면, 현재 `status`는 `Approved`이지만 `workflow_terminal_node_id`는 여전히 *In Review* 노드를 가리킵니다. 재제출이 진행 중일 때도 이 값이 계속 채워져 있을 수 있습니다. 워크플로에 따른 결과와 이후의 수동 결정을 구분하려면 현재 `status`와 이벤트 및 `activity_reviews` 타임라인을 함께 확인하십시오.```json theme={null}
{
  "event_type": "WORKFLOW_BRANCH_EVALUATED",
  "sent_at": 1789336414007,
  "details": {
    "node_id": "branch-d57da8aa",
    "node_label": "Credential required?",
    "node_type": "branch",
    "matched_branch_id": null,
    "fallback": true,
    "next_node_id": "status-6ba0bd0d",
    "next_node_label": "In Review"
  }
}
```## 이전 제출 내역(`?include=resubmissions`)재제출은 사용자를 선택한 단계로 되돌려 보내며, 그 단계들이 이전에 반환한 결과를 유지합니다.
`?include=resubmissions`를 사용하면 재제출 요청마다 하나씩, 가장 오래된 순서로 정렬된 `resubmissions` 배열이 추가됩니다.
각 항목에는 해당 요청으로 대체된 결과가 포함되므로, 사용자가 이전에 제출한 내용을 언제든지 확인할 수 있습니다.
사용자(KYC) 세션과 기업(KYB) 세션 모두에서 동작하며, `?include=events,resubmissions`처럼 이벤트와 함께 사용할 수 있습니다.
이 파라미터를 생략하면 응답은 변경되지 않습니다.| 필드 | 설명 |
| - | - |
| `number` | 세션의 첫 번째 재제출이면 1, 두 번째이면 2, 이런 식으로 증가합니다. |
| `created_at` | 재제출이 요청된 시점입니다. |
| `previous_status` | 요청 직전의 세션 상태입니다. |
| `nodes` | 사용자에게 다시 보낸 워크플로 단계입니다(`[{node_id, feature}]`). |
| `reasons` | 각 단계에 대해 입력된 사유를 `node_id`별로 정리한 값이며, 사유가 없으면 `null`입니다. |
| `requested_by` | 요청자 정보(`name`, `email`, `type`)이며, 정보가 없으면 `null`입니다. |
| `results` | 재제출 요청 이전에 해당 단계들이 반환한 결과로, 현재 결과와 같은 키와 같은 형식을 사용합니다(`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `phone_verifications`, `email_verifications`, `aml_screenings`, `ip_analyses`, `database_validations`, `questionnaire_responses`, `document_ai_documents`, `geolocation_checks`이며, 기업 세션에는 `document_verifications`도 포함됩니다). 다시 보내진 단계의 키만 나타납니다. |현재 결과(`id_verifications` 등 최상위 수준의 필드)는 항상 가장 최근 제출을 나타냅니다.
다시 보내지지 않은 단계는 그 자리에 결과가 하나만 유지됩니다.```json theme={null}
{
  "status": "In Review",
  "id_verifications": [{ "node_id": "feature_ocr", "status": "Approved" }],
  "resubmissions": [
    {
      "number": 1,
      "created_at": "2026-10-01T08:31:04.512Z",
      "previous_status": "In Review",
      "nodes": [{ "node_id": "feature_ocr", "feature": "OCR" }],
      "reasons": { "feature_ocr": "Passport photo too blurry" },
      "requested_by": { "name": "<reviewer name>", "email": "<reviewer email>", "type": "USER" },
      "results": {
        "id_verifications": [
          {
            "node_id": "feature_ocr",
            "status": "Declined",
            "warnings": [{ "risk": "IMAGE_TOO_BLURRY", "log_type": "error" }]
          }
        ]
      }
    }
  ]
}
```세션을 삭제하면 모든 제출의 결과도 함께 삭제됩니다.## 신분증 인증 방법`id_verifications[]`의 각 항목은 [신분증 인증 방법](https://docs.didit.me/ko/core-technology/id-verification/verification-methods.md) 세 가지 중 어떤 방법으로 결과가 생성되었는지 나타냅니다. 따라서 채워진 필드를 보고 추측하지 않아도 문서 판독, 등록부 조회, 지갑 로그인을 구분할 수 있습니다.| 필드 | 값 |
| - | - |
| `verification_method` | `document`, `id_lookup` 또는 `wallet` |
| `assurance` | `documentary`, `data_match` 또는 `cryptographic` |
| `wallet_provider` | 지갑이 결과를 생성한 경우 카탈로그 지갑 ID이며, 그렇지 않으면 `null`입니다. |
| `id_lookup` | 등록부 증거(출처, 시도 횟수, 필드별 비교, 등록부 사진)이며, 없으면 `null`입니다. |
| `wallet_verification` | 자격 증명 증거(제공자, 발급 기관, 보증 수준, 서명 유효성, 공유 속성)이며, 없으면 `null`입니다. |
| `fallback_from` | 문서 외 방법으로 ID 단계가 종료되지 않은 이유로, 해당 방법, 사유, 그리고 사용자가 문서 캡처로 넘어갔는지 아니면 거부되었는지를 포함합니다. |문서 세션은 `document`와 `documentary`를 보고하고 나머지는 `null`로 둡니다. 따라서 기존 연동은 변경할 필요가 없습니다. 필드별 타입은 [데이터 모델](https://docs.didit.me/ko/reference/data-models.md#신분증-인증)에서 확인하십시오.## 생체 인식 동의사용자 인증 결정에는 `biometric_consent` 객체가 포함됩니다. 이 객체는 세션에 명시적 생체 인식 동의가 필요했는지, 동의를 요구한 `trigger`, 응답의 `status`, 그리고 그 근거를 나타냅니다. 다음 두 값은 동의가 수집되지 않았음을 나타냅니다.| 필드 | 값 | 의미 |
| - | - | - |
| `status` + `reason` | `pending` + `BIOMETRIC_CONSENT_UNSUPPORTED_SDK` | 4.10.0 미만의 네이티브 SDK이거나 버전을 보고하지 않은 SDK가 동의 단계 없이 얼굴을 캡처했습니다. 세션은 이전과 같이 진행되었습니다. |
| `status` + `reason` | `declined` + `BIOMETRIC_CONSENT_DECLINED` | 거부가 기록되었습니다. 세션은 `Declined` 상태가 되며 얼굴 데이터는 삭제되었습니다. 현재 Didit 화면에서는 거부 옵션을 제공하지 않습니다. |동의 단계가 언제 나타나는지와 각 값의 의미는 [생체 인식 동의](https://docs.didit.me/ko/getting-started/biometric-consent.md)에서 확인하십시오. 모든 필드는 [데이터 모델](https://docs.didit.me/ko/reference/data-models.md#생체-인식-동의)에 있습니다.## 은행 인증워크플로에 [은행 인증](https://docs.didit.me/ko/core-technology/bank-verification/verification-methods.md) 단계가 있으면 결정 객체에 `bank_verifications[]`가 포함됩니다. 두 세션 유형 모두 해당하며, 단계당 항목 하나가 생성됩니다. 단계에서 결과가 나오기 전까지는 `null`입니다.| 필드 | 확인할 내용 |
| - | - |
| `status` | 해당 단계의 판정입니다. `Approved`, `In Review`, `Declined`, `Not Finished`, `Expired` 중 하나입니다. |
| `method` | 계좌를 인증한 방법입니다. `open_banking`(은행 로그인), `account_lookup`(계좌 조회), `microdeposits` 또는 `statement`가 있습니다. 계좌를 평가하기 전에는 `null`이며, 어떤 시도도 평가되기 전에 사용자가 은행 없이 진행한 경우에는 `none`입니다. |
| `continued_without_bank`, `continuation` | 사용자가 **Continue without your bank**를 선택했는지 여부와 그 이유입니다. `continuation.reason`은 `no_route`, `institution_unsupported`, `attempts_exhausted`, `person_choice` 중 하나입니다. `institution_unsupported`인 경우 `continuation.institution_name`에 사용자가 이용할 수 없었던 은행 이름이 들어갑니다. |
| `ownership` | 계좌 소유자가 인증된 신원과 얼마나 일치하는지를 나타냅니다. `result`는 `match`(일치), `partial_match`(거의 일치), `no_match`(불일치), `not_verifiable`(검증 불가), `unknown`(알 수 없음) 중 하나입니다. |
| `account` | 인증된 계좌의 마스킹된 정보입니다. |
| `financial_data` | 잔액, 거래 내역, 소득 정보이며, 은행 로그인을 통해서만 수집됩니다. `not_collected`에는 단계가 요청했지만 해당 방법으로 수집되지 않은 데이터가 나열되며, 예를 들어 계좌 조회 후에 이런 항목이 생길 수 있습니다. |
| `connection` | 가장 최근 시도입니다. 상태, 은행, 사용된 시도 횟수, `reason_code`를 포함합니다. |은행 로그인과 계좌 조회를 구분하려면 `ownership.method`가 아니라 `method`를 확인하십시오. `ownership.method`는 점수를 산출한 이름 비교 방식을 뜻합니다. 모든 필드는 이 endpoint 응답의 `BankVerificationResult` 스키마에 정의되어 있습니다.## 전자 서명워크플로에 [전자 서명](https://docs.didit.me/ko/core-technology/electronic-signature/overview.md) 단계가 있으면 결정 객체에 `signatures[]`가 포함됩니다. 두 세션 유형 모두 해당합니다. 서명자마다 항목이 하나씩 생성되며, 사용자 인증에서는 서명자가 한 명이고, 기업 확인에서는 서명하는 주요 인물마다 항목이 하나씩 생깁니다. 이 단계가 없는 워크플로에서는 이 키 자체가 반환되지 않습니다.| 필드 | 확인할 내용 |
| - | - |
| `status` | 문서에 서명이 완료되면 `signed`입니다. 그 외의 값은 아직 서명이 없다는 뜻입니다. |
| `verdict` | 단계 규칙에 따라 설정되는 `Approved`, `In Review`, `Declined`, `Not Finished` 중 하나입니다. |
| `signer`, `identity_used` | 서명자와 그 서명의 바탕이 된 인증된 신원입니다. |
| `confirmation`, `certificate`, `timestamp` | 일회용 코드 확인 결과와 암호학적 증거입니다. |
| `documents[]` | 각 문서의 해시, 상태, `signed_file` 경로, 값이 포함된 `fields[]`입니다. |
| `evidence_file` | 서명자의 증거 PDF 경로입니다. |API 키를 사용해 해당 경로에서 파일을 다운로드하십시오. 모든 필드는 [전자 서명 보고서](https://docs.didit.me/ko/core-technology/electronic-signature/report-electronic-signature.md)에서 확인할 수 있습니다.## 오류| 상태 | 사유 |
| - | - |
| `404` | 이 애플리케이션에 해당 `session_id`를 가진 세션이 없습니다(두 세션 유형 모두 확인합니다). |
| `403` | `read:sessions` 권한이 없습니다. |
| `401` | API 키가 유효하지 않습니다. |## 관련 문서- [세션 개요](https://docs.didit.me/ko/sessions-api/overview.md): 세션 종류 구분과 기능 매트릭스입니다.
- [KYB 응답 스키마](https://docs.didit.me/ko/business-verification/response-schema.md): 기업 결정 필드를 하나씩 정리한 참조 문서입니다.
- [인증 상태](https://docs.didit.me/ko/integration/verification-statuses.md): 두 세션 종류가 공유하는 상태 흐름입니다.
- [Webhooks](https://docs.didit.me/ko/integration/webhooks.md): 사용자 인증과 기업 확인 세션 모두에 대해 `status.updated`를 구독하십시오(`session_kind`로 필터링).
- [신분증 인증 방법](https://docs.didit.me/ko/core-technology/id-verification/verification-methods.md): 문서 촬영, 문서 외 조회, 디지털 ID 지갑과 각 방식이 세션에 남기는 정보입니다.
- [생체 정보 동의](https://docs.didit.me/ko/getting-started/biometric-consent.md): 흐름에서 명시적인 생체 정보 동의를 요청하는 경우와 `biometric_consent` 객체입니다.
- [전자 서명 보고서](https://docs.didit.me/ko/core-technology/electronic-signature/report-electronic-signature.md): `signatures[]`, 서명된 PDF, 증거 자료입니다.
- [은행 인증 방법](https://docs.didit.me/ko/core-technology/bank-verification/verification-methods.md): `bank_verifications[]`와 그 `method`입니다.
- [사용자가 은행을 인증할 수 없는 경우](https://docs.didit.me/ko/core-technology/bank-verification/fallbacks.md): `continued_without_bank`, `continuation`, 그리고 각 사유의 결과입니다.


## OpenAPI

````yaml ko/openapi-25.json GET /v3/session/{sessionId}/decision/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 신분증 인증 API입니다. x-api-key 헤더로 인증합니다.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/decision/:
    get:
      tags:
        - Sessions
      summary: 인증 세션의 전체 결정 조회
      description: >-
        인증 세션의 전체 결정 보고서(취합된 세션 `status` 및 워크플로가 실행한 인증 기능별 보고서 각 1개)를 조회합니다. 이
        endpoint는 사용자 인증(KYC) 및 기업 확인(KYB) 세션 모두를 위한 표준 읽기 endpoint입니다. 동일한 경로가
        둘 다 처리하며, 최상위 `session_kind` 구분자를 통해 수신된 형태(`"user"` 또는 `"business"`)를
        확인할 수 있습니다.


        **모든 기능 보고서는 복수형 배열입니다.** V3 워크플로는 동일한 기능을 여러 번 실행할 수 있는 그래프이므로, 각
        블록(`id_verifications`, `nfc_verifications`, `liveness_checks`,
        `face_matches`, `poa_verifications`, `document_ai_documents`,
        `phone_verifications`, `email_verifications`, `aml_screenings`,
        `ip_analyses`, `database_validations`, `questionnaire_responses`)은 이를
        생성한 워크플로 그래프 노드를 식별하는 `node_id`를 각 항목에 포함하는 JSON 배열입니다. NFC는 단수형 `nfc`
        필드가 아닌 `response.nfc_verifications[0]`과 같이 읽어야 합니다. 워크플로가 해당 기능을 최소 한 번
        실행할 때까지 블록은 `null`이며, 워크플로에 포함되지 않은 기능에는 데이터가 표시되지 않습니다. 전자 서명 결과는 워크플로에
        전자 서명 단계가 있는 경우에만 표시되는 `signatures`에 포함됩니다.


        **호출 시점.** 권장되는 패턴은 이벤트 기반 방식입니다. 세션이 결정(`Approved`, `Declined`, `In
        Review`)에 도달할 때 발생하는 `status.updated` webhook을 기다린 후, 이 endpoint를 한 번
        호출하여 전체 보고서를 가져옵니다. 폴링 방식도 가능합니다. 이 endpoint는 세션 수명 주기의 어느 시점에서든 호출할 수
        있으며 현재까지 생성된 데이터를 반환하지만, webhook 수신 후 조회하는 방식이 비용이 적게 들고 더 빠릅니다. 응답의 미디어
        URL(문서 이미지, 비디오, PDF)은 유효 기간이 짧은 사전 서명된 링크입니다. 즉시 가져오거나 결정을 다시 요청하여 새로운
        링크를 받아야 하며, 장기 보관용 참조로 저장해서는 안 됩니다.


        **상태 값.** 최상위 `status`는 세션 수명 주기 상태(`Not Started`, `In Progress`,
        `Awaiting User`, `In Review`, `Approved`, `Declined`, `Resubmitted`,
        `Expired`, `Kyc Expired`, `Abandoned`)입니다. 또한 각 기능 항목은 자체 기능 수준
        `status`(`Not Finished`, `Approved`, `Declined`, `In Review`, ...)를
        전달합니다. 워크플로의 결정 규칙에 따라 개별 기능이 `In Review`인 상태에서도 세션 전체가 `Approved`될 수
        있습니다.


        **인증 및 가시성.** `x-api-key` 헤더의 애플리케이션 API 키로 인증합니다(`read:sessions` 권한이 있는
        콘솔 사용자 Bearer token도 작동함). 인증된 애플리케이션이 소유한 세션만 볼 수 있습니다. 워크플로에서 응답 속성을
        제한하는 경우, 기능 항목 내부의 허용되지 않은 필드는 `null`로 반환되지만 `status`, `warnings`,
        `node_id`는 항상 유지됩니다.


        **속도 제한.** GET 요청은 API 키당 분당 600개로 제한됩니다. 한도를 초과하면 `Retry-After` 및
        `X-RateLimit-*` 헤더와 함께 `429`가 반환됩니다.
      operationId: get_v3_session_decision
      parameters:
        - name: sessionId
          in: path
          required: true
          description: >-
            결정을 조회하려는 인증 세션의 UUID입니다. 이는 `POST /v3/session/`에서 반환된
            `session_id`입니다. 사용자 인증(KYC) 및 기업 확인(KYB) 세션 모두 동일한 경로를 사용하며, 서버는 두
            세션 유형에 대해 ID를 확인합니다.


            **유효한 UUID여야 합니다.** 라우트는 올바른 형식의 UUID만 일치시키므로, 잘못된 형식의 값은 애플리케이션 코드가
            실행되기 전에 URL 라우터에 의해 거부되어 아래에 표시된 JSON `{"detail": ...}` 응답 형식 대신
            `404` **HTML** 페이지를 반환합니다. 클라이언트 측에서 UUID 형식을 검증하여 입력 오류와 실제 세션 누락에
            따른 `404`를 구분할 수 있도록 하십시오.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - name: include
          in: query
          required: false
          description: >-
            추가 payload 섹션의 쉼표로 구분된 목록입니다. 지원되는 값: `events`, `resubmissions`, 또는
            둘 다(`events,resubmissions`). `include=events`가 전달되면 응답에 세션 이벤트
            타임라인(세션 조회 페이지에 설명된 `WORKFLOW_BRANCH_EVALUATED` /
            `WORKFLOW_STATUS_NODE_REACHED` 라우팅 이벤트를 포함하는 `events`), 전체 활동
            로그(`activity_reviews`), 차단 목록 플래그(`blocklisted`), 세션당
            `cost_breakdown`, 워크플로 메타데이터(세션 상태를 설정한 마지막으로 기록된 워크플로 상태 노드이자 기록된
            것이 없으면 `null`인 `workflow_terminal_node_id`, `workflow_type`,
            `workflow_version`, `workflow_version_id` - 수동 승인, 거부 또는 재제출에 의해
            지워지지 않으며 이후의 워크플로 상태 노드로 대체되는 이력 정보), 세션 메타데이터(독립형 API 세션에만 설정되는 문자열
            또는 `null`인 `api_service`, `API`, `HOSTED` 또는 `MIGRATED`인
            `session_type`, 불리언 값인 `has_device_nfc_support`)가 추가로 포함됩니다. 기본 형태와
            비교하여 두 가지 필드가 변경됩니다. 최상위 `session_kind` 구분자가 **생략**되며(events 형태는 사용자
            세션에만 존재함), `features` 배열이 단순 문자열에서 `{feature, node_id}` 객체로 전환됩니다(이때
            이메일 기능은 `EMAIL_VERIFICATION` 대신 `EMAIL`로 보고됨). 이 확장된 형태는 주로 Didit
            Console에서 사용되며, 대부분의 API 연동에서는 이 파라미터를 생략해야 합니다. **KYB 제한 사항:**
            `include=events`는 사용자(KYC) 세션에만 적용됩니다. 기업 세션(`session_kind =
            "business"`)은 항상 표준 기업 결정 형태를 반환합니다. 기업 세션에는 `events`,
            `activity_reviews`, `blocklisted`, `cost_breakdown` 및 추가
            `workflow_*`/세션 메타데이터가 절대 반환되지 않으며, `features` 배열은 단순 문자열 배열로 유지됩니다.
            `include=resubmissions`를 사용하면(사용자 및 기업 세션 모두) 응답에 `resubmissions`도
            포함됩니다. 재제출 요청당 하나의 항목이 가장 오래된 순서대로 포함되며, 각각 `number`, `created_at`,
            `previous_status`, `nodes`, `reasons`, `requested_by`, `results`(요청
            전 재제출된 단계가 반환한 내용으로, 현재 결과와 동일한 키 및 형태로 제공됨)를 가집니다. 각
            `cost_breakdown` 항목에는 `usage_type`, `price`, `details`,
            `created_at`이 포함됩니다. 다시 실행되는 재제출 단계는 새 항목으로 청구됩니다.
          schema:
            type: string
            enum:
              - events
              - resubmissions
              - events,resubmissions
            example: events
      responses:
        '200':
          description: >-
            전체 결정 보고서입니다. `session_kind`는 두 가지 형태를 구분합니다. `user` 세션은 아래에 표시된 KYC
            기능 배열을 포함하고, `business` 세션은 공유 배열과 함께 `registry_checks`,
            `document_verifications`, `key_people_checks`를 대신 포함합니다. 기능 배열은
            워크플로에서 해당 기능을 실행할 때까지 `null`이며, 미디어 URL은 유효 기간이 짧은 presigned 링크입니다.
          content:
            application/json:
              examples:
                Example:
                  summary: 전체 예시
                  value:
                    session_id: 11111111-2222-3333-4444-555555555555
                    session_kind: user
                    session_number: 43762
                    session_url: >-
                      https://verify.didit.me/session/11111111-2222-3333-4444-555555555555
                    status: In Review
                    environment: live
                    workflow_id: 11111111-2222-3333-4444-555555555555
                    features:
                      - ID_VERIFICATION
                      - NFC
                      - LIVENESS
                      - FACE_MATCH
                      - POA
                      - PHONE
                      - DATABASE_VALIDATION
                      - AML
                      - IP_ANALYSIS
                    vendor_data: 11111111-1111-1111-1111-111111111111
                    metadata:
                      user_type: premium
                      account_id: ABC123
                    expected_details:
                      first_name: Carmen
                      last_name: Española Española
                    contact_details:
                      email: carmen@example.com
                      email_lang: es
                      send_notification_emails: false
                      phone: null
                    callback: https://verify.didit.me/
                    id_verifications:
                      - node_id: feature_ocr_1
                        status: Approved
                        document_type: Identity Card
                        document_subtype: ID_CARD_GENERIC
                        document_number: CAA000000
                        personal_number: 99999999R
                        portrait_image: https://<media-host>/portrait.jpg
                        front_image: https://<media-host>/front.jpg
                        front_video: https://<media-host>/front.mp4
                        back_image: https://<media-host>/back.jpg
                        back_video: https://<media-host>/back.mp4
                        full_front_image: https://<media-host>/full_front.jpg
                        full_back_image: https://<media-host>/full_back.jpg
                        front_image_camera_front: https://<media-host>/front_camera_front.jpg
                        back_image_camera_front: https://<media-host>/back_camera_front.jpg
                        date_of_birth: '1980-01-01'
                        age: 45
                        expiration_date: '2031-06-02'
                        date_of_issue: '2021-06-02'
                        issuing_state: ESP
                        issuing_state_name: Spain
                        first_name: Carmen
                        last_name: Española Española
                        full_name: Carmen Española Española
                        gender: F
                        address: Avda de Madrid 34, Madrid, Madrid
                        formatted_address: Avda de Madrid 34, Madrid, Madrid 28822, Spain
                        place_of_birth: Madrid
                        marital_status: Single
                        nationality: ESP
                        extra_fields:
                          dl_categories: []
                          blood_group: null
                        mrz:
                          surname: ESPANOLA ESPANOLA
                          name: CARMEN
                          country: ESP
                          nationality: ESP
                          birth_date: '800101'
                          expiry_date: '310602'
                          sex: F
                          document_type: ID
                          document_number: CAA000000
                          optional_data: 99999999R
                          optional_data_2: ''
                          birth_date_hash: '4'
                          expiry_date_hash: '8'
                          document_number_hash: '4'
                          final_hash: '1'
                          personal_number: 99999999R
                          warnings: []
                          errors: []
                          mrz_type: TD1
                          mrz_string: |-
                            IDESPCAA000000499999999R<<<<<<
                            8001014F3106028ESP<<<<<<<<<<<1
                            ESPANOLA<ESPANOLA<<CARMEN<<<<<
                          mrz_key: CAA000000480010143106028
                        parsed_address:
                          city: Madrid
                          label: Spain ID Card Address
                          region: Madrid
                          country: ES
                          category: Residential
                          street_1: Avda de Madrid 34
                          street_2: null
                          is_verified: true
                          postal_code: '28822'
                          raw_results:
                            types:
                              - street_address
                            geometry:
                              location:
                                lat: 37.4222804
                                lng: -122.0843428
                              viewport:
                                northeast:
                                  lat: 37.4237349802915
                                  lng: -122.083183169709
                                southwest:
                                  lat: 37.4210370197085
                                  lng: -122.085881130292
                              location_type: ROOFTOP
                            place_id: ChIJN1t_tDeuEmsRUsoyG83frY4
                            formatted_address: Avda de Madrid 34, 28822 Madrid, Spain
                            navigation_points:
                              - location:
                                  latitude: 37.4222804
                                  longitude: -122.0843428
                            address_components:
                              - types:
                                  - street_number
                                long_name: '34'
                                short_name: '34'
                              - types:
                                  - route
                                long_name: Avda de Madrid
                                short_name: Avda de Madrid
                              - types:
                                  - locality
                                  - political
                                long_name: Madrid
                                short_name: Madrid
                              - types:
                                  - country
                                  - political
                                long_name: Spain
                                short_name: ES
                              - types:
                                  - postal_code
                                long_name: '28822'
                                short_name: '28822'
                          address_type: Avda
                          document_location:
                            latitude: 37.4222804
                            longitude: -122.0843428
                          formatted_address: Avda de Madrid 34, 28822 Madrid, Spain
                        front_image_camera_front_face_match_score: 95.5
                        back_image_camera_front_face_match_score: 93.2
                        document_selfie_face_matches:
                          - session_id: 3f0c9a52-7b1e-4d68-a2c4-5e9d8b7f1a20
                            session_number: 1180
                            similarity_percentage: 97.4
                            vendor_data: user_ref_001
                            vendor_user_id: null
                            biometric_template_id: null
                            verification_date: '2026-09-02T09:15:00Z'
                            user_details:
                              full_name: Jane Doe
                            match_image_url: https://<media-host>/match_face.jpg
                            status: Approved
                            is_blocklisted: false
                            is_allowlisted: false
                            api_service: null
                            source: session
                        front_image_quality_score:
                          focus_score: 85.3
                          brightness_score: 92.1
                          brightness_issue: ok
                          is_document_fully_visible: true
                          resolution_score: 72.4
                          overall_score: 88.7
                        back_image_quality_score:
                          focus_score: 79.1
                          brightness_score: 90.5
                          brightness_issue: ok
                          is_document_fully_visible: true
                          resolution_score: 72.4
                          overall_score: 85.2
                        extra_files:
                          - https://<media-host>/extra_id_verification.jpg
                        matches:
                          - session_id: 7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f
                            session_number: 1234
                            vendor_data: user_ref_001
                            verification_date: '2024-06-15T10:30:00Z'
                            user_details:
                              name: John Smith
                              document_type: ID
                              document_number: CLM148418
                            status: Approved
                            is_blocklisted: false
                            api_service: null
                            front_image_url: https://<media-host>/document_front.jpg
                          - session_id: b2c8e4d1-6a3f-4e7b-95c0-1d8f2a6b4c9e
                            session_number: 1235
                            vendor_data: null
                            verification_date: '2024-05-20T14:45:00Z'
                            user_details:
                              name: John Smith
                              document_type: ID
                              document_number: CLM148418
                            status: Declined
                            is_blocklisted: true
                            api_service: ID_VERIFICATION
                            front_image_url: https://<media-host>/document_front_2.jpg
                        warnings:
                          - feature: ID_VERIFICATION
                            risk: QR_NOT_DETECTED
                            additional_data: null
                            log_type: information
                            short_description: QR not detected
                            long_description: >-
                              The system couldn't find or read the QR code on
                              the document, which is necessary for document
                              verification. This could be due to poor image
                              quality or an unsupported document type.
                            node_id: feature_ocr_1
                        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
                      - node_id: feature_ocr_2
                        status: Approved
                        issuing_state: ZAF
                        issuing_state_name: South Africa
                        first_name: Thabo
                        last_name: Mokoena
                        full_name: Thabo Mokoena
                        date_of_birth: '1991-06-15'
                        personal_number: '9106155043088'
                        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
                          face_match_score: 96.4
                          source_errors: []
                        wallet_verification: null
                        warnings: []
                      - node_id: feature_ocr_3
                        status: Approved
                        issuing_state: DNK
                        issuing_state_name: Denmark
                        first_name: Freja
                        last_name: Nielsen
                        full_name: Freja Nielsen
                        date_of_birth: '1988-03-02'
                        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_verifications:
                      - node_id: feature_nfc_1
                        status: In Review
                        is_nfc_skipped: false
                        skip_reason: null
                        chip_protocol: icao
                        jpki: null
                        portrait_image: https://<media-host>/portrait.jpg
                        signature_image: https://<media-host>/signature.jpg
                        chip_data:
                          document_type: ID
                          issuing_country: ESP
                          document_number: '123456789'
                          expiration_date: '2030-01-01'
                          first_name: John
                          last_name: Smith
                          birth_date: '1990-05-15'
                          gender: M
                          nationality: ESP
                          address: CALLE MAYOR 123 4B, MADRID, MADRID
                          place_of_birth: MADRID, MADRID
                        authenticity:
                          sod_integrity: true
                          dg_integrity: true
                        certificate_summary:
                          issuer: >-
                            Common Name: CSCA SPAIN, Serial Number: 3,
                            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_after: '2031-02-18 10:21:11'
                          not_valid_before: '2020-11-18 10:21:11'
                        warnings:
                          - feature: NFC
                            risk: DATA_INCONSISTENT
                            additional_data: null
                            log_type: warning
                            short_description: OCR and NFC mrz code extracted are not the same
                            long_description: >-
                              The Optical Character Recognition (OCR) data and
                              the NFC chip data don't match, indicating
                              potential document tampering or data
                              inconsistency.
                            node_id: feature_nfc_1
                    liveness_checks:
                      - node_id: feature_liveness_1
                        status: Approved
                        method: ACTIVE_3D
                        score: 89.92
                        reference_image: https://<media-host>/reference.jpg
                        video_url: https://<media-host>/video.mp4
                        age_estimation: 24.3
                        matches:
                          - session_id: 7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f
                            session_number: 1234
                            vendor_data: user_ref_001
                            verification_date: '2024-06-15T10:30:00Z'
                            user_details:
                              full_name: John Smith
                              document_type: ID
                              document_number: CLM148418
                            status: Approved
                            is_blocklisted: false
                            is_allowlisted: false
                            api_service: null
                            source: session
                            match_image_url: https://<media-host>/face_match.jpg
                            similarity_percentage: 98.5
                          - session_id: 3e9a7c21-5b48-4f0e-9c6a-8d2f4b1e0a35
                            session_number: 1100
                            vendor_data: customer_xyz
                            verification_date: '2024-04-10T09:15:00Z'
                            user_details:
                              full_name: John Smith
                              document_type: P
                              document_number: DZ8375806
                            status: Approved
                            is_blocklisted: false
                            is_allowlisted: false
                            api_service: PASSIVE_LIVENESS
                            source: session
                            match_image_url: https://<media-host>/face_match_2.jpg
                            similarity_percentage: 95.2
                        warnings:
                          - feature: LIVENESS
                            risk: LOW_LIVENESS_SCORE
                            additional_data: null
                            log_type: information
                            short_description: Low liveness score
                            long_description: >-
                              The liveness check resulted in a low score,
                              indicating potential use of non-live facial
                              representations or poor-quality biometric data.
                            node_id: feature_liveness_1
                        face_quality: null
                        face_luminance: null
                    face_matches:
                      - node_id: feature_face_match_1
                        status: In Review
                        score: 65.43
                        source_image_session_id: null
                        source_image: https://<media-host>/source-image.jpg
                        target_image: https://<media-host>/target-image.jpg
                        warnings:
                          - feature: FACEMATCH
                            risk: LOW_FACE_MATCH_SIMILARITY
                            additional_data: null
                            log_type: warning
                            short_description: Low face match similarity
                            long_description: >-
                              The facial features of the provided image don't
                              closely match the reference image, suggesting a
                              potential identity mismatch.
                            node_id: feature_face_match_1
                    phone_verifications:
                      - node_id: feature_phone_1
                        status: Approved
                        phone_number_prefix: '+34'
                        phone_number: '600600600'
                        full_number: '+34600600600'
                        country_code: ES
                        country_name: Spain
                        carrier:
                          name: Orange
                          type: mobile
                        is_disposable: false
                        is_virtual: false
                        verification_method: sms
                        verification_attempts: 1
                        verified_at: '2024-07-28T06:47:35.654321Z'
                        lifecycle:
                          - type: PHONE_VERIFICATION_MESSAGE_SENT
                            timestamp: '2025-08-24T09:12:39.580554+00:00'
                            details:
                              status: Success
                              reason: null
                              channel: sms
                              actual_channel: sms
                            fee: 0.1
                          - type: VALID_CODE_ENTERED
                            timestamp: '2025-08-24T09:12:39.662157+00:00'
                            details:
                              code_tried: '123456'
                              status: Approved
                            fee: 0
                          - type: PHONE_VERIFICATION_APPROVED
                            timestamp: '2025-08-24T09:12:39.684292+00:00'
                            details: null
                            fee: 0
                        warnings: []
                        matches:
                          - session_id: null
                            session_number: null
                            vendor_data: null
                            verification_date: null
                            phone_number: '+34600000000'
                            status: null
                            is_blocklisted: true
                            api_service: null
                            source: list_entry
                    email_verifications:
                      - node_id: feature_email_1
                        status: Approved
                        email: test@example.com
                        is_breached: true
                        breaches:
                          - name: TAPAirPortugal
                            domain: flytap.com
                            logo_path: https://logos.example.com/TAPAirPortugal.png
                            breach_date: '2022-08-25'
                            description: >-
                              In August 2022, the Portuguese airline <a
                              href="https://www.bleepingcomputer.com/news/security/ragnar-locker-ransomware-claims-attack-on-portugals-flag-airline/"
                              target="_blank" rel="noopener">TAP Air Portugal
                              was the target of a ransomware attack perpetrated
                              by the Ragnar Locker gang</a> who later leaked the
                              compromised data via a public dark web site. Over
                              5M unique email addresses were exposed alongside
                              other personal data including names, genders,
                              DoBs, phone numbers and physical addresses.
                            is_verified: true
                            data_classes:
                              - dates_of_birth
                              - email_addresses
                              - genders
                              - names
                              - nationalities
                              - phone_numbers
                              - physical_addresses
                              - salutations
                              - spoken_languages
                            breach_emails_count: 6083479
                        is_disposable: false
                        is_undeliverable: false
                        verification_attempts: 1
                        verified_at: '2025-09-15T17:36:19.963451Z'
                        warnings:
                          - feature: EMAIL
                            risk: BREACHED_EMAIL_DETECTED
                            additional_data: null
                            log_type: information
                            short_description: Breached email detected
                            long_description: >-
                              This email address was found in one or more known
                              data breaches.
                            node_id: feature_email_1
                        lifecycle:
                          - type: EMAIL_VERIFICATION_MESSAGE_SENT
                            timestamp: '2025-09-15T17:36:19.792684+00:00'
                            details:
                              status: Success
                              reason: null
                            fee: 0.02
                          - type: VALID_CODE_ENTERED
                            timestamp: '2025-09-15T17:36:19.963427+00:00'
                            details:
                              code_tried: '123456'
                              status: Approved
                            fee: 0
                          - type: EMAIL_VERIFICATION_DECLINED
                            timestamp: '2025-09-15T17:36:20.081471+00:00'
                            details:
                              reason: BREACHED_EMAIL_DETECTED
                            fee: 0
                        matches:
                          - session_id: null
                            session_number: null
                            vendor_data: null
                            verification_date: null
                            email: test@example.com
                            status: null
                            is_blocklisted: true
                            api_service: null
                            source: list_entry
                    poa_verifications:
                      - node_id: feature_poa_1
                        status: Declined
                        document_file: https://<media-host>/poa_document.pdf
                        issuing_state: AR
                        document_type: UTILITY_BILL
                        document_subtype: null
                        document_language: es
                        document_metadata:
                          file_size: 1000
                          content_type: application/pdf
                          creation_date: '2021-01-01'
                          modified_date: '2021-01-01'
                          overlay_manipulation: null
                          creator: null
                          producer: PDF Generator
                          software: null
                          encryption: null
                          is_signed: false
                          is_tampered: false
                          signature_info: null
                          exif_original_date: null
                          exif_digitized_date: null
                          processed_by_known_editor: false
                          has_different_creation_mod_date: true
                        issuer: Aguas del Norte
                        issue_date: '2021-02-01'
                        expiration_date: null
                        poa_address: AVDA. MONSEÑOR TAVELLA N° 3396, SALTA
                        poa_formatted_address: Av. Monseñor Tavella 3396, A4400 Salta, Argentina
                        poa_parsed_address:
                          address_type: Avenida
                          street_1: Avenida Monseñor Tavella 3396
                          street_2: null
                          city: Salta
                          region: Salta
                          country: AR
                          postal_code: A4400
                          document_location:
                            latitude: -24.8208664
                            longitude: -65.4131
                        name_on_document: Fernando De Lima
                        name_match_score_expected_details: null
                        name_match_score_id_verification: 38.5
                        expected_details_address: null
                        expected_details_formatted_address: null
                        expected_details_parsed_address: {}
                        extra_fields:
                          bank_account_number: '1234567890'
                          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: '+5491112345678'
                          additional_names: []
                        extra_files:
                          - https://<media-host>/extra_poa.pdf
                        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: >-
                              aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==
                            parsed_payload: https://aguasdelnorte.com/factura/998811
                          - 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: MDA5OTg4MTEwMDA0Mg==
                            parsed_payload: '0099881100042'
                        warnings: []
                    document_ai_documents:
                      - status: Approved
                        node_id: feature_document_ai_1
                        items:
                          - uuid: c1a2b3c4-d5e6-7f80-9a1b-2c3d4e5f6071
                            node_id: feature_document_ai_1
                            document_key: proof_of_funds
                            original_filename: bank_statement.pdf
                            file_size: 184320
                            file_url: >-
                              https://<media-host>/document_ai/proof_of_funds.pdf
                            status: Approved
                            extracted_data:
                              account_holder: John Doe
                              balance: 15230.55
                              currency: EUR
                              statement_date: '2026-05-31'
                            detected_codes:
                              - type: QR_CODE
                                page_number: 2
                                position:
                                  - - 124
                                    - 86
                                  - - 306
                                    - 86
                                  - - 306
                                    - 268
                                  - - 124
                                    - 268
                                x: 124
                                'y': 86
                                width: 182
                                height: 182
                                page_width: 1190
                                page_height: 1684
                                raw_payload: SU5WLTIwMjYtMDA0Mg==
                                parsed_payload: INV-2026-0042
                            fields:
                              - key: account_holder
                                name: Account holder
                                instruction: Extract the full name of the account holder.
                                type: text
                                required: true
                              - key: balance
                                name: Closing balance
                                instruction: Extract the closing balance amount.
                                type: number
                                required: true
                            document_metadata:
                              is_tampered: false
                            cross_check_result: null
                            created_at: '2026-06-01T12:34:56Z'
                        warnings: []
                    questionnaire_responses:
                      - node_id: feature_questionnaire_1
                        questionnaire_id: 9f7485e0-b00b-4d56-9d3e-7859b68d1213
                        title: Source of Funds
                        description: >-
                          Reply to this questionnaire to help us understand the
                          source of funds.
                        languages:
                          - en
                        default_language: en
                        is_active: true
                        is_simple_questionnaire: true
                        questionnaire_group_id: 2b6a9d40-13a8-4b1e-9a6c-3f1d2e4b5a60
                        version: 1
                        published_at: '2025-11-02T09:14:55.000000Z'
                        sections:
                          - title: null
                            description: null
                            items:
                              - uuid: 618636d9-7d5c-41ce-b8d0-1ab2a4be20db
                                value: question_1
                                element_type: DROPDOWN
                                is_required: true
                                title: What is your primary source of funds?
                                description: null
                                placeholder: null
                                choices:
                                  - label: Salary
                                    value: salary
                                  - label: Business Income
                                    value: business_income
                                  - label: Savings
                                    value: savings
                                  - label: Investments
                                    value: investments
                                  - label: Sale of Asset
                                    value: sale_of_asset
                                  - label: Inheritance/Gift
                                    value: inheritance_gift
                                  - label: Pension
                                    value: pension
                                  - label: Crypto Proceeds
                                    value: crypto_proceeds
                                  - label: Other
                                    value: other
                                    requires_text_input: true
                                max_files: 1
                                answer:
                                  value: salary
                                required_if: null
                                repeatable_config: null
                              - uuid: 2d16b527-72be-42e0-8e96-b164b818386c
                                value: question_2
                                element_type: LONG_TEXT
                                is_required: true
                                title: Provide details of the primary source.
                                description: null
                                placeholder: null
                                choices: null
                                max_files: 1
                                answer:
                                  value: Test answer
                                required_if: null
                                repeatable_config: null
                              - uuid: a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0
                                value: question_3
                                element_type: DROPDOWN
                                is_required: true
                                title: What is your annual income range (pre-tax)?
                                description: null
                                placeholder: null
                                choices:
                                  - label: Less than $25,000
                                    value: <25k
                                  - label: $25,000 - $50,000
                                    value: 25k-50k
                                  - label: $50,001 - $100,000
                                    value: 50k-100k
                                  - label: $100,001 - $250,000
                                    value: 100k-250k
                                  - label: More than $250,000
                                    value: '>250k'
                                max_files: 1
                                answer:
                                  value: <25k
                                required_if: null
                                repeatable_config: null
                              - uuid: 93dede62-6d0c-4a7f-934d-42175eb94011
                                value: question_4
                                element_type: DROPDOWN
                                is_required: true
                                title: What is your approximate net worth (range)?
                                description: null
                                placeholder: null
                                choices:
                                  - label: Less than $50,000
                                    value: <50k
                                  - label: $50,000 - $250,000
                                    value: 50k-250k
                                  - label: $250,001 - $1,000,000
                                    value: 250k-1m
                                  - label: $1,000,001 - $5,000,000
                                    value: 1m-5m
                                  - label: More than $5,000,000
                                    value: '>5m'
                                max_files: 1
                                answer:
                                  value: <50k
                                required_if: null
                                repeatable_config: null
                              - uuid: 2af60d6f-6961-4692-9ee7-24b3033610a6
                                value: question_5
                                element_type: LONG_TEXT
                                is_required: true
                                title: >-
                                  For your initial deposit/funding, indicate the
                                  exact source and amount.
                                description: null
                                placeholder: null
                                choices: null
                                max_files: 1
                                answer:
                                  value: Test answer
                                required_if: null
                                repeatable_config: null
                              - uuid: 0ad9d1aa-736f-46cf-947b-9e1241b53e40
                                value: question_6
                                element_type: LONG_TEXT
                                is_required: true
                                title: Breakdown of sources by percentage.
                                description: null
                                placeholder: null
                                choices: null
                                max_files: 1
                                answer:
                                  value: Test answer
                                required_if: null
                                repeatable_config: null
                              - uuid: 1bf8a2a3-14ee-48a8-bb3d-175481aae4aa
                                value: question_7
                                element_type: SINGLE_CHOICE
                                is_required: true
                                title: >-
                                  Will any funds originate from third parties?
                                  If yes, please provide details.
                                description: null
                                placeholder: null
                                choices:
                                  - label: 'Yes'
                                    value: 'yes'
                                    requires_text_input: true
                                  - label: 'No'
                                    value: 'no'
                                max_files: 1
                                answer:
                                  text: Additional details
                                  value: 'yes'
                                required_if: null
                                repeatable_config: null
                              - uuid: e18d4dd3-b7bf-4883-ba18-d6046adbe313
                                value: question_8
                                element_type: SINGLE_CHOICE
                                is_required: true
                                title: >-
                                  Do you hold or plan to use virtual assets
                                  (e.g., crypto) to fund this account? If yes,
                                  please provide details.
                                description: null
                                placeholder: null
                                choices:
                                  - label: 'Yes'
                                    value: 'yes'
                                    requires_text_input: true
                                  - label: 'No'
                                    value: 'no'
                                max_files: 1
                                answer:
                                  text: Additional details
                                  value: 'yes'
                                required_if: null
                                repeatable_config: null
                              - uuid: a90a073d-e098-404c-bbce-5130d8b12a13
                                value: question_9
                                element_type: FILE_UPLOAD
                                is_required: true
                                title: Upload a proof of funds document
                                description: >-
                                  You can upload your three (3) most recent bank
                                  statements, three (3) most recent payslips,
                                  your most recent tax return, proof of company
                                  ownership, trading exchange statement, sale of
                                  property, or proof of inheritance.
                                placeholder: null
                                choices: null
                                max_files: 3
                                answer:
                                  files:
                                    - /media/ocr/
                                    - /media/ocr/
                                required_if: null
                                repeatable_config: null
                              - uuid: 9503b486-7cb8-4c3b-a97d-4b64926a5a47
                                value: question_10
                                element_type: LONG_TEXT
                                is_required: false
                                title: >-
                                  Would you like to add any details to help us
                                  expedite our review of the documents you
                                  submitted?
                                description: null
                                placeholder: null
                                choices: null
                                max_files: 1
                                answer:
                                  value: Test answer
                                required_if: null
                                repeatable_config: null
                        status: Approved
                    aml_screenings:
                      - node_id: feature_aml_1
                        status: In Review
                        total_hits: 1
                        entity_type: person
                        hits:
                          - id: hit_7c1e9a40b2d35f86e0a4c912
                            url: https://news.example.org/articles/sample
                            match: false
                            score: 0.73
                            target: null
                            caption: Javier Ejemplo Modelo
                            datasets:
                              - PEP
                            features: null
                            rca_name: ''
                            last_seen: '2025-06-13T00:00:00'
                            risk_view:
                              crimes:
                                score: 0
                                weightage: 20
                                risk_level: Low
                                risk_scores: {}
                              countries:
                                score: 0
                                weightage: 30
                                risk_level: Low
                                risk_scores: {}
                              categories:
                                score: 100
                                weightage: 50
                                risk_level: High
                                risk_scores:
                                  PEP: 100
                              custom_list: {}
                            first_seen: '2025-01-18T00:00:00'
                            properties:
                              name:
                                - Javier Ejemplo Modelo
                              alias:
                                - Javier Ejemplo Modelo
                                - David Azagra
                              notes:
                                - Spanish orchestra conductor
                              title: null
                              gender:
                                - male
                              height: null
                              topics: null
                              weight: null
                              address: null
                              country: null
                              website: null
                              eyeColor: null
                              keywords: null
                              lastName:
                                - Ejemplo
                                - Modelo
                              position: null
                              religion: null
                              birthDate:
                                - '1974'
                              education:
                                - Tokyo Arts and Space (2012-2012)
                                - Saint Petersburg Conservatory (-2010)
                                - Comillas Pontifical University
                              ethnicity: null
                              firstName:
                                - David
                              hairColor: null
                              weakAlias: null
                              birthPlace:
                                - Madrid
                              modifiedAt: null
                              wikidataId: null
                              citizenship: null
                              nationality: null
                            match_score: 98
                            risk_score: 73
                            review_status: Unreviewed
                            score_breakdown:
                              name_score: 95
                              name_weight: 60
                              name_weight_normalized: 70.59
                              name_contribution: 67.06
                              dob_score: 100
                              dob_weight: 25
                              dob_weight_normalized: 29.41
                              dob_contribution: 29.41
                              country_score: 0
                              country_weight: 15
                              country_weight_normalized: 0
                              country_contribution: 0
                              document_number_match_type: NEUTRAL
                              document_number_effect: No document number provided for screening
                              total_score: 98
                            pep_matches:
                              - aliases:
                                  - Javier Ejemplo Modelo
                                  - David Azagra
                                education:
                                  - Tokyo Arts and Space (2012-2012)
                                  - Saint Petersburg Conservatory (-2010)
                                  - Comillas Pontifical University
                                list_name: Wikidata
                                publisher: Wikidata
                                source_url: https://news.example.org/articles/sample
                                description: >-
                                  Wikidata is the structured data project of the
                                  Wikipedia community, providing fact-based
                                  information edited by humans and machines
                                matched_name: Javier Ejemplo Modelo
                                pep_position: ''
                                date_of_birth: '1974'
                                other_sources: []
                                place_of_birth: Madrid
                            linked_entities:
                              - name:
                                  - Antonio Ejemplo
                                active: []
                                status: []
                                details: []
                                relation: []
                            warning_matches: []
                            sanction_matches: []
                            adverse_media_details:
                              sentiment: Moderately Negative
                              entity_type: person
                              sentiment_score: -2
                              adverse_keywords:
                                fraud: 3
                                juicio: 1
                                delitos: 2
                                imputado: 1
                                impunidad: 1
                                corruption: 2
                                favoritism: 2
                                privilegio: 1
                                corrupción: 1
                                persecution: 2
                                desconfianza: 1
                                desprestigio: 1
                                fraude de ley: 2
                                manipulación: 1
                                investigación: 3
                                prevaricación: 8
                                trato de favor: 1
                                irregularidades: 2
                                crisis de confianza: 1
                                tráfico de influencias: 8
                            adverse_media_matches:
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in legal
                                  violations related to favoritism and influence
                                  trafficking, leading to a negative portrayal
                                  in the article.
                                headline: >-
                                  La Diputación de Villaejemplo consolida la
                                  plaza a medida para el ex asesor de Moncloa
                                  amigo del "hermanito" de Ejemplo
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - fraud
                                  - prevaricación
                                  - tráfico de influencias
                                  - irregularidades
                                  - imputado
                                sentiment_score: -2
                                publication_date: '2025-06-10T20:46:38'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in legal issues
                                  regarding favoritism and corruption, leading
                                  to a negative portrayal in the article.
                                headline: >-
                                  La Diputación de Villaejemplo consolida la
                                  plaza a medida para el ex asesor de Moncloa
                                  amigo del "hermanito" de Ejemplo
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - fraud
                                  - prevaricación
                                  - tráfico de influencias
                                  - irregularidades
                                  - trato de favor
                                sentiment_score: -2
                                publication_date: '2025-06-10T20:46:38'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is mentioned in
                                  connection with Carlos Ficticio's corruption
                                  case, indicating his involvement in alleged
                                  influence peddling.
                                headline: España, paraíso del aforado
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                  - corrupción
                                  - impunidad
                                  - privilegio
                                  - desconfianza
                                  - manipulación
                                  - fraude de ley
                                sentiment_score: -2
                                publication_date: '2025-06-10T05:05:34'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is implicated in the
                                  same investigation as Ficticio, which raises
                                  questions about his conduct and political
                                  ethics.
                                headline: 'Aforamientos: esa figura incómoda'
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                  - investigación
                                  - juicio
                                  - fraude de ley
                                  - desprestigio
                                  - crisis de confianza
                                  - delitos
                                sentiment_score: -2
                                publication_date: '2025-06-08T06:01:00'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in a legal
                                  investigation regarding irregularities in his
                                  hiring, which raises serious concerns about
                                  his conduct.
                                headline: >-
                                  La jueza del 'caso Javier Ejemplo' denuncia un
                                  «fraude de ley» en el aforamiento de Ficticio
                                  (Partido Ejemplo)
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - fraud
                                  - irregularities
                                  - prevaricación
                                  - tráfico de influencias
                                sentiment_score: -2
                                publication_date: '2025-06-09T10:19:10'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is mentioned in
                                  connection with legal allegations of
                                  corruption, contributing to a negative
                                  perception.
                                headline: >-
                                  'Caso aforamiento': la letrada mayor de la
                                  Asamblea certifica a la juez que Ficticio es
                                  diputado desde antes de prometer su cargo en
                                  el Pleno
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                sentiment_score: -2
                                publication_date: '2025-06-09T08:08:30'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is implicated in the
                                  same investigation as Ficticio, raising
                                  concerns about political corruption and
                                  influence.
                                headline: 'Aforamientos: esa figura incómoda'
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                  - investigación
                                sentiment_score: -2
                                publication_date: '2025-06-08T06:01:00'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo Modelo is implicated in the
                                  same investigation as Ficticio, which raises
                                  concerns about political misconduct.
                                headline: 'Aforamientos: esa figura incómoda'
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - prevaricación
                                  - tráfico de influencias
                                  - investigación
                                  - delitos
                                sentiment_score: -2
                                publication_date: '2025-06-08T06:00:59'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in a case of
                                  favoritism and corruption, which casts a
                                  negative light on his character and actions.
                                headline: >-
                                  'Caso Javier Ejemplo': las asociaciones
                                  judiciales salen en defensa de la juez Luisa
                                  Inventada ante las "presiones externas" que
                                  sufre
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - favoritism
                                  - corruption
                                  - persecution
                                sentiment_score: -2
                                publication_date: '2025-06-06T10:08:15'
                              - country: spain
                                summary: >-
                                  Javier Ejemplo is implicated in a case of
                                  alleged favoritism and corruption, which casts
                                  a negative light on his character and actions.
                                headline: >-
                                  'Caso Javier Ejemplo': las asociaciones
                                  judiciales salen en defensa de la juez Luisa
                                  Inventada ante las "presiones externas" que
                                  sufre
                                sentiment: moderately negative
                                thumbnail: https://news.example.org/articles/sample
                                source_url: https://news.example.org/articles/sample
                                author_name: null
                                other_sources: []
                                adverse_keywords:
                                  - favoritism
                                  - corruption
                                  - persecution
                                sentiment_score: -2
                                publication_date: '2025-06-06T08:08:15'
                            additional_information: {}
                        score: 80
                        screened_data:
                          full_name: Javier Ejemplo Modelo
                          nationality: ES
                          date_of_birth: '1974-01-01'
                          document_number: null
                        is_ongoing_monitoring_enabled: true
                        next_ongoing_monitoring_bill_date: '2026-07-24'
                        last_ongoing_screening_at: '2026-09-12T04:03:11Z'
                        last_ongoing_screening_datasets_updated_at: '2026-09-11T06:00:00Z'
                        warnings:
                          - feature: AML
                            risk: POSSIBLE_MATCH_FOUND
                            additional_data: null
                            log_type: warning
                            short_description: Possible match found in AML screening
                            long_description: >-
                              The Anti-Money Laundering (AML) screening process
                              identified potential matches with watchlists or
                              high-risk databases, requiring further review.
                            node_id: feature_aml_1
                    ip_analyses:
                      - node_id: feature_ip_1
                        status: Approved
                        device_brand: Apple
                        device_model: iPhone
                        browser_family: Mobile Safari
                        os_family: iOS
                        platform: mobile
                        device_fingerprint: didit-fp-a1b2c3d4e5f6g7h8
                        ip_country: Spain
                        ip_country_code: ES
                        ip_state: Barcelona
                        ip_city: Barcelona
                        latitude: 41.4022
                        longitude: 2.1407
                        ip_address: 83.50.226.71
                        isp: null
                        organization: null
                        is_vpn_or_tor: false
                        is_data_center: false
                        time_zone: Europe/Madrid
                        time_zone_offset: '+0100'
                        ip:
                          location:
                            latitude: 40.2206327
                            longitude: 1.5770097
                          distance_from_id_document: 23.4
                          distance_from_poa_document: 12.3
                        id_document:
                          location:
                            latitude: 41.2706327
                            longitude: 1.9770097
                          distance_from_ip: 23.4
                          distance_from_poa_document: 18.7
                        poa_document:
                          location:
                            latitude: 41.2706327
                            longitude: 1.9770097
                          distance_from_ip: 12.3
                          distance_from_id_document: 18.7
                        warnings: []
                        matches:
                          - session_id: 99999999-8888-7777-6666-555555555555
                            session_number: 41205
                            vendor_data: 22222222-2222-2222-2222-222222222222
                            verification_date: '2024-07-20T10:15:30Z'
                            match_type: ip_address
                            match_source: ip_address
                            matched_value: 83.50.226.71
                            status: Approved
                            is_blocklisted: false
                            api_service: null
                            source: session
                            device_info:
                              device_brand: Apple
                              device_model: iPhone
                              browser_family: Mobile Safari
                              os_family: iOS
                              platform: mobile
                              device_fingerprint: didit-fp-f9e8d7c6b5a40312
                            location_info:
                              ip_address: 83.50.226.71
                              ip_country: Spain
                              ip_country_code: ES
                              ip_state: Barcelona
                              ip_city: Barcelona
                              is_vpn_or_tor: false
                              is_data_center: false
                            confidence: 0
                            match_mode: co_occurrence
                          - session_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                            session_number: 42830
                            vendor_data: 33333333-3333-3333-3333-333333333333
                            verification_date: '2024-06-30T18:22:05Z'
                            match_type: device_fingerprint
                            match_source: recovered_high
                            matched_value: f47ac10b-58cc-4372-a567-0e02b2c3d479
                            status: Declined
                            is_blocklisted: false
                            api_service: null
                            source: session
                            device_info:
                              device_brand: Samsung
                              device_model: SM-G991B
                              browser_family: Chrome Mobile
                              os_family: Android
                              platform: mobile
                              device_fingerprint: null
                            location_info:
                              ip_address: 83.50.231.18
                              ip_country: Spain
                              ip_country_code: ES
                              ip_state: Madrid
                              ip_city: Madrid
                              is_vpn_or_tor: false
                              is_data_center: false
                            confidence: 1
                            match_mode: deterministic
                            recovery_similarity: 0.9874
                            tls_ja4_corroborated: true
                            recovery_gate_reason: hardware_root_match
                    database_validations:
                      - node_id: feature_db_validation_1
                        issuing_state: BRA
                        validation_type: one_by_one
                        screened_data:
                          last_name: De Lima
                          first_name: Fernando
                          tax_number: '01234567890'
                          date_of_birth: '1980-01-01'
                          document_type: ID
                          expiration_date: '2030-01-01'
                        validations:
                          - service_id: bra_cpf
                            service_name: Brazil - CPF status check
                            outcome_code: MATCH
                            validation:
                              full_name: full_match
                              date_of_birth: full_match
                              identification_number: full_match
                            source_data:
                              identification_number: '01234567890'
                              first_name: FERNANDO
                              last_name: DE LIMA
                              date_of_birth: '1980-01-01'
                              gender: M
                              nationality: BRA
                        match_type: full_match
                        status: Approved
                        warnings: []
                    reviews:
                      - user: compliance@example.com
                        new_status: Declined
                        comment: Possible match found in AML screening
                        created_at: '2024-07-18T13:29:00.366811Z'
                    created_at: '2024-07-24T08:54:25.443172Z'
                    expires_at: '2025-07-24T08:54:25.443172Z'
                    biometric_consent:
                      required: false
                      trigger: null
                      status: not_required
                      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: 83.50.226.71
                      detected_country_code: ES
                      detected_state: ES-B
                      detected_city: Barcelona
                      declared_state: null
                      document_state: null
                      jurisdictions: []
                      retention_months: null
                      reason: null
                      decline_reason: null
                      face_data_deleted_at: null
                BusinessExample:
                  summary: 기업 확인(KYB) 세션 예시
                  description: >-
                    `session_kind = "business"` 결정: KYB 세션은 KYC 기능 배열을
                    `registry_checks`, `document_verifications`,
                    `key_people_checks`로 대체하는 동시에 `aml_screenings`,
                    `phone_verifications`, `email_verifications`,
                    `questionnaire_responses`, `ip_analyses`, `reviews` 및 세션
                    엔벨로프를 공유합니다.
                  value:
                    session_id: 66666666-7777-8888-9999-000000000000
                    session_kind: business
                    session_number: 31415
                    session_url: https://verify.didit.me/session/business123
                    status: In Review
                    environment: live
                    workflow_id: abababab-cdcd-efef-0101-232323232323
                    features:
                      - KYB_REGISTRY
                      - KYB_DOCUMENTS
                      - KYB_KEY_PEOPLE
                    vendor_data: merchant-001234
                    metadata: null
                    callback: https://example.com/verification/callback
                    registry_checks:
                      - status: Approved
                        node_id: feature_kyb_registry_1
                        data_resolved: true
                        company:
                          uuid: dddd4444-eeee-5555-ffff-666677778888
                          node_id: feature_kyb_registry_1
                          status: Approved
                          registry_status: active
                          data_resolved: true
                          company_name: ACME HOLDINGS LTD
                          registration_number: '12345678'
                          country_code: GB
                          region: null
                          company_type: Private Limited Company
                          incorporation_date: '2015-03-12'
                          registered_address: 1 Example Street, London, EC1A 1AA
                          tax_number: null
                          risk_level: null
                          verification_status: verified
                          is_from_registry: true
                          fetch_status: resolved
                          alternative_names: null
                          nature_of_business: 62012 - Business and domestic software development
                          registered_capital: 100 GBP
                          registered_capital_amount: '100.00'
                          registered_capital_currency: GBP
                          website: null
                          email: null
                          phone: null
                          legal_entity_identifier: null
                          location_of_registration: England and Wales
                          financial_summary: null
                          officers:
                            - uuid: aaaa1111-bbbb-2222-cccc-333344445555
                              name: Jane Smith
                              designation: Director
                              role: director
                              nationality: British
                              is_active: true
                              kyc_status: Approved
                              kyc_session_url: https://verify.didit.me/session/abc123def456
                          beneficial_owners:
                            - uuid: bbbb2222-cccc-3333-dddd-444455556666
                              name: John Doe
                              first_name: John
                              last_name: Doe
                              entity_type: person
                              roles:
                                - ubo
                                - shareholder
                              ownership_min_shares: '50'
                              ownership_max_shares: '75'
                              is_active: true
                              kyc_status: Pending
                              kyc_session_url: https://verify.didit.me/session/def456ghi789
                              effective_ownership_percent: 75
                          addresses:
                            - type: registered
                              address: 1 Example Street, London, EC1A 1AA
                              country: GB
                          industries:
                            - code: '62012'
                              description: Business and domestic software development
                          accounts: null
                          registry_data: {}
                          user_provided_data:
                            company_name: ACME HOLDINGS
                            registration_number: '12345678'
                          confirmed_by_user_at: '2026-06-10T12:01:30.000000Z'
                          last_console_edit_at: null
                          is_editable: false
                        ownership_structure:
                          shareholders:
                            - name: John Doe
                              first_name: John
                              last_name: Doe
                              date_of_birth: null
                              country_of_birth: null
                              company_name: null
                              registration_number: null
                              entity_type: person
                              nationality: null
                              designation: null
                              roles:
                                - shareholder
                              ownership_min_shares: '75'
                              ownership_max_shares: '75'
                              voting_min_shares: null
                              voting_max_shares: null
                              appointment_date: null
                              is_active: true
                              shareholding:
                                share_class: ORDINARY
                                number_of_shares: 750
                                currency: GBP
                                nominal_value: 1
                                total_value: null
                                percentage: 75
                          beneficial_owners: []
                        warnings: []
                    aml_screenings: null
                    document_verifications:
                      - status: In Review
                        node_id: feature_kyb_documents_1
                        items:
                          - uuid: eeee5555-ffff-6666-0000-777788889999
                            document_type: LEGAL_PRESENCE
                            document_subtype: CERTIFICATE_OF_INCORPORATION
                            document_group: LEGAL_PRESENCE
                            file_url: >-
                              https://<media-host>/kyb/certificate-of-incorporation.pdf
                            original_filename: certificate_of_incorporation.pdf
                            file_size: 482133
                            status: Approved
                            created_at: '2026-06-10T12:03:11.000000Z'
                            cross_check_result:
                              critical:
                                company_name:
                                  document: ACME HOLDINGS LTD
                                  registry: ACME HOLDINGS LTD
                                  score: 1
                                  match: true
                                registration_number:
                                  document: '12345678'
                                  registry: '12345678'
                                  match: true
                              non_critical: {}
                              people: {}
                            document_metadata:
                              file_size: 482133
                              content_type: application/pdf
                              creation_date: '2015-03-12T09:00:00'
                              modified_date: '2015-03-12T09:00:00'
                              creator: null
                              producer: null
                              software: null
                              encryption: null
                              is_signed: true
                              is_tampered: false
                              signature_info: null
                              exif_original_date: null
                              exif_digitized_date: null
                              processed_by_known_editor: false
                              has_different_creation_mod_date: false
                              overlay_manipulation: null
                            description: null
                            is_requested: false
                            ocr_data:
                              company_name: ACME HOLDINGS LTD
                              registration_number: '12345678'
                              incorporation_date: '2015-03-12'
                            is_console_upload: false
                            is_confirmed: true
                          - uuid: ffff6666-0000-7777-1111-888899990000
                            document_type: OWNERSHIP_STRUCTURE
                            document_subtype: null
                            document_group: OWNERSHIP_STRUCTURE
                            file_url: null
                            original_filename: null
                            file_size: null
                            status: Not Finished
                            created_at: '2026-06-10T15:40:02.000000Z'
                            cross_check_result: null
                            document_metadata: null
                            description: Please upload an up-to-date shareholder registry
                            is_requested: true
                            ocr_data: null
                            is_console_upload: false
                            is_confirmed: true
                        groups:
                          LEGAL_PRESENCE:
                            total: 1
                            approved: 1
                            pending: 0
                            declined: 0
                            in_review: 0
                            other: 0
                            missing: 0
                          OWNERSHIP_STRUCTURE:
                            total: 1
                            approved: 0
                            pending: 0
                            declined: 0
                            in_review: 0
                            other: 0
                            missing: 1
                        required_groups:
                          - LEGAL_PRESENCE
                          - OWNERSHIP_STRUCTURE
                        warnings: []
                    key_people_checks:
                      - status: In Review
                        node_id: feature_kyb_key_people_1
                        registry:
                          officers:
                            - uuid: aaaa1111-bbbb-2222-cccc-333344445555
                              name: Jane Smith
                              designation: Director
                              role: director
                              nationality: British
                              appointment_date: '2015-03-12'
                              termination_date: null
                              is_active: true
                              address: 1 Example Street, London, EC1A 1AA
                              aml_status: Approved
                              kyc_status: Approved
                              kyc_session_url: https://verify.didit.me/session/abc123def456
                              kyc_session_id: 77777777-8888-9999-aaaa-bbbbbbbbbbbb
                              verification_workflow_type: kyc
                              verification_workflow_id: 12121212-3434-5656-7878-909090909090
                              verification_workflow_label: Key People KYC
                              verification_workflow_features:
                                - feature: ID_VERIFICATION
                                  status: Approved
                                - feature: LIVENESS
                                  status: Approved
                                - feature: AML
                                  status: Approved
                              didit_internal_id: 99999999-0000-1111-2222-333333333333
                              kyc_document_type: P
                              kyc_nationality: GBR
                              kyc_liveness_passed: true
                              kyc_verified_at: '2026-06-10T14:22:31.123456Z'
                              kyc_aml_categories:
                                sanctions: clear
                                pep: clear
                                adverse_media: clear
                                warnings: clear
                              kyc_notification_sent_at: '2026-06-09T09:00:00.000000Z'
                          beneficial_owners:
                            - uuid: bbbb2222-cccc-3333-dddd-444455556666
                              name: John Doe
                              first_name: John
                              last_name: Doe
                              date_of_birth: '1980-05-04'
                              country_of_birth: null
                              email: null
                              company_name: null
                              registration_number: null
                              entity_type: person
                              nationality: British
                              designation: null
                              roles:
                                - ubo
                                - shareholder
                              ownership_min_shares: '50'
                              ownership_max_shares: '75'
                              is_active: true
                              aml_status: null
                              kyc_status: In Progress
                              kyc_session_url: https://verify.didit.me/session/def456ghi789
                              kyc_session_id: 88888888-9999-aaaa-bbbb-cccccccccccc
                              verification_workflow_type: kyc
                              verification_workflow_id: 12121212-3434-5656-7878-909090909090
                              verification_workflow_label: Key People KYC
                              verification_workflow_features:
                                - feature: ID_VERIFICATION
                                  status: Not Finished
                                - feature: LIVENESS
                                  status: Not Finished
                                - feature: AML
                                  status: Not Finished
                              didit_internal_id: null
                              kyc_document_type: null
                              kyc_nationality: null
                              kyc_liveness_passed: null
                              kyc_verified_at: null
                              kyc_aml_categories: null
                              kyc_notification_sent_at: null
                              child_beneficial_owners: []
                              effective_ownership_percent: 75
                        submitted:
                          parties:
                            - uuid: cccc3333-dddd-4444-eeee-555566667777
                              entity_type: person
                              source: USER
                              name: John Doe
                              first_name: John
                              last_name: Doe
                              company_name: null
                              registration_number: null
                              email: john.doe@example.com
                              nationality: GBR
                              phone_number: '+447700900123'
                              date_of_birth: '1980-05-04'
                              position: Chief Executive Officer
                              custom_fields: {}
                              is_active: true
                              is_skipped: false
                              requires_verification: true
                              roles:
                                - role: ubo
                                  ownership_percent: 75
                                  voting_percent: 75
                                - role: director
                                  ownership_percent: null
                                  voting_percent: null
                              kyc_session_id: 88888888-9999-aaaa-bbbb-cccccccccccc
                              kyc_session_status: In Progress
                              kyc_session_url: https://verify.didit.me/session/def456ghi789
                              kyb_sub_session_id: null
                              kyb_sub_session_status: null
                              kyb_sub_session_url: null
                              verification_workflow_type: kyc
                              verification_workflow_id: 12121212-3434-5656-7878-909090909090
                              verification_workflow_label: Key People KYC
                              verification_workflow_features:
                                - feature: ID_VERIFICATION
                                  status: Not Finished
                                - feature: LIVENESS
                                  status: Not Finished
                                - feature: AML
                                  status: Not Finished
                              didit_internal_id: null
                        ubo_kyc_summary:
                          total: 1
                          approved: 0
                          flagged: 0
                          pending: 1
                        warnings: []
                    phone_verifications: null
                    email_verifications: null
                    questionnaire_responses: null
                    ip_analyses: null
                    reviews: []
                    contact_details: null
                    expected_details:
                      company_name: Tesco PLC
                      registry_country: GB
                      registration_number: '00445790'
                    created_at: '2026-06-10T11:58:04.000000Z'
                    expires_at: '2026-06-24T11:58:04.000000Z'
              schema:
                $ref: '#/components/schemas/SessionDecision'
        '403':
          description: >-
            인증 또는 권한 부여에 실패했습니다. 키가 누락되면 `403`이 반환되고, 잘못되었거나 취소되었거나 만료된 키는
            `401`을 반환합니다. 실패 모드는 두 가지 `detail` 문자열로 구분됩니다.


            - `"Authentication credentials were not provided or are invalid."` —
            `x-api-key` 헤더가 없거나(`Authorization: Bearer` token도 없음), 제공된 자격 증명의
            인트로스펙션에 실패한 경우(취소됨, 만료됨 또는 잘못된 형식).

            - `"You do not have permission to perform this action."` — 자격 증명은
            유효하지만 이 세션을 읽을 수 있는 권한이 없는 경우: 콘솔 사용자 Bearer token에 `read:sessions`
            권한이 없거나 소유 애플리케이션에 액세스할 수 없는 경우, 또는 API 키가 세션과 다른 조직에 속해 있는 경우.


            완전히 알 수 없는 `sessionId`의 경우 endpoint는 자격 증명을 검증하기 전에 소유 애플리케이션을
            확인하므로, 자격 증명이 누락되었거나 유효하지 않더라도 세션이 존재하지 않으면 `404`가 반환됩니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: >-
                      Authentication credentials were not provided or are
                      invalid.
              examples:
                Missing or invalid credentials:
                  summary: x-api-key 헤더가 없거나 키 내부 검사(introspection)에 실패했습니다
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Insufficient permissions:
                  summary: 유효한 자격 증명이지만 read:sessions 권한 또는 소유 애플리케이션에 대한 접근 권한이 없습니다.
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            세션을 찾을 수 없습니다. 제공된 `sessionId`와 일치하는 사용자 인증(KYC) 또는 기업 확인(KYB) 라이브
            세션이 없을 때 반환되며, 삭제된 세션도 여기에 해당합니다. 본문은 표준 `{"detail": ...}` 봉투 형식입니다.


            **두 가지 구별되는 `detail` 문자열.** `sessionId`가 KYC 및 KYB 세션 모두에서 알 수 없는
            경우, 인증 전 소유자 조회가 실패하고 `{"detail": "Not found."}`를 받게 됩니다. 이는 자격 증명
            검증 전에 발생하므로 인증되지 않은 호출에서도 반환됩니다. 세션이 존재하지만 인증된 애플리케이션에서 조회할 수 없는
            경우(예: 오래되었거나 방금 삭제된 레코드), 뷰는 `{"detail": "Session not found."}`를
            반환합니다. 둘 다 세션에 접근할 수 없다는 동일한 결과를 나타내므로 문자열 대신 `404` 상태 코드로 매칭하십시오.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: Not found.
              examples:
                Unknown session id:
                  summary: 이 애플리케이션에 알 수 없는 sessionId입니다
                  value:
                    detail: Not found.
                Session not retrievable:
                  summary: 세션이 존재하지만 이 애플리케이션에서 조회할 수 없습니다
                  value:
                    detail: Session not found.
        '429':
          description: >-
            속도 제한을 초과했습니다. GET 요청은 **인증 정보당 분당 600회**(API 키, Bearer token, 또는
            미인증 시 소스 IP)로 제한됩니다. `Retry-After` / `X-RateLimit-Reset`을 확인하고 백오프 후
            재시도하세요. 결정을 폴링하는 중에 이 제한에 도달했다면 `status.updated` webhook으로 전환하여 상태
            변경 시마다 결정을 한 번씩 가져오도록 변경하세요.
          headers:
            Retry-After:
              description: 요청을 재시도하기 전에 대기해야 하는 시간(초).
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: 현재 윈도우에서 허용되는 최대 요청 수(GET 요청의 경우 600).
              schema:
                type: integer
                example: 600
            X-RateLimit-Remaining:
              description: 현재 윈도우에 남아 있는 요청 수입니다.
              schema:
                type: integer
                example: 0
            X-RateLimit-Reset:
              description: 현재 윈도우가 리셋되는 Unix 타임스탬프(초)입니다.
              schema:
                type: integer
                example: 1750000000
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: 속도 제한 초과에 대한 사람이 읽기 쉬운 설명입니다.
                    example: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
              examples:
                Throttled:
                  summary: 동일한 자격 증명에서 1분 동안 600건을 초과하는 GET 요청 발생
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/decision/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Accept: application/json'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.retrieve_decision(
                "11111111-2222-3333-4444-555555555555",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.sessions.retrieveDecision("11111111-2222-3333-4444-555555555555");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.RetrieveDecision(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsRetrieveDecisionParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().retrieveDecision("11111111-2222-3333-4444-555555555555");

            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->sessions->retrieveDecision('11111111-2222-3333-4444-555555555555');

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result =
            didit.sessions.retrieve_decision("11111111-2222-3333-4444-555555555555")

            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.Sessions.RetrieveDecisionAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDecision:
      type: object
      properties:
        session_id:
          type: string
          format: uuid
          description: 세션의 고유 식별자입니다.
        session_kind:
          type: string
          enum:
            - user
            - business
          description: >-
            해당 세션이 사용자 인증(KYC)인지 기업 확인(KYB) 세션인지 나타내는 구분자입니다. `user`인 경우 KYC 기능
            배열(`id_verifications`, `nfc_verifications`, `liveness_checks`,
            `face_matches`, `poa_verifications`, `document_ai_documents`,
            `database_validations`, ...)이 적용되고 기업 배열은 제외됩니다. `business`인 경우
            payload에는 대신 `registry_checks`, `document_verifications`,
            `key_people_checks`와 공유 배열(`aml_screenings`, `phone_verifications`,
            `email_verifications`, `ip_analyses`, `questionnaire_responses`)이
            포함됩니다. **`include=events`가 전달된 경우 생략됩니다** — 이벤트 형태는 사용자 세션에만 존재하므로
            해당 변형에서는 구분자가 제외됩니다.
        shared_from_session:
          type: string
          format: uuid
          nullable: true
          description: >-
            `POST /v3/session/import-shared/`로 복제된 세션의 경우: 소스 애플리케이션의 원본 세션
            `session_id`입니다. 다른 모든 세션의 경우 `null`입니다. `include=events`가 전달되면
            생략됩니다.
        shared_from_session_number:
          type: integer
          nullable: true
          description: >-
            이 세션을 조직의 다른 애플리케이션에서 가져온 경우 소스 세션의 `session_number`입니다. 그렇지 않으면
            `null`입니다.
        session_number:
          type: integer
          description: 세션 번호입니다.
          nullable: true
        session_url:
          type: string
          format: uri
          description: 세션의 URL입니다.
          nullable: true
        status:
          type: string
          enum:
            - Not Started
            - In Progress
            - Awaiting User
            - In Review
            - Approved
            - Declined
            - Resubmitted
            - Expired
            - Kyc Expired
            - Abandoned
          description: >-
            세션의 전체 라이프사이클 상태 — 취합된 워크플로 결과입니다. 최종 값은 `Approved`, `Declined`, `In
            Review`, `Expired`, `Kyc Expired`, `Abandoned`이며, `Not Started`, `In
            Progress`, `Awaiting User`, `Resubmitted`는 세션이 아직 워크플로를 진행 중임을
            나타냅니다.
        status_override:
          type: object
          nullable: true
          description: >-
            검토자가 `status`를 직접 설정했을 때 표시됩니다. 상태가 자동으로 지정된 경우 `null`입니다. 수동 승인과 자동
            승인을 구분하는 데 사용합니다.
          properties:
            overridden_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: 플랫폼 자체 검사 결과로 도출된 상태입니다.
        decision_trace:
          type: object
          description: '상태에 도달한 방식: 설정한 주체 및 해당 상태를 유발한 경고입니다.'
          properties:
            status:
              type: string
              description: 세션 상태입니다.
            decided_by:
              type: string
              nullable: true
              enum:
                - manual
                - automatic
                - investigator
                - null
              description: 누가 상태를 설정했는지 나타냅니다. 세션이 결정되지 않은 동안에는 `null`입니다.
            decided_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: 플랫폼 자체 검증이 내린 결론으로, 수동 결정 후의 `status`와는 다릅니다.
            terminal_node_id:
              type: string
              nullable: true
              description: 세션을 종료한 워크플로 상태 노드(종료한 노드가 있는 경우)입니다.
            actor:
              type: object
              nullable: true
              description: 수동 결정을 내린 검토자입니다.
              properties:
                user:
                  type: string
                  nullable: true
                actor_type:
                  type: string
                  nullable: true
            warning_counts:
              type: object
              description: '`log_type`(`error`, `warning`, `information`)별 경고 및 `total`입니다.'
              additionalProperties:
                type: integer
            status_warnings:
              type: array
              description: '`Declined` 또는 `In Review` 상태를 설정한 경고 목록입니다.'
              items:
                type: object
                properties:
                  risk:
                    type: string
                  feature:
                    type: string
                    nullable: true
                  node_id:
                    type: string
                    nullable: true
                  log_type:
                    type: string
                    nullable: true
                  check_status:
                    type: string
                    nullable: true
                  source:
                    type: string
                    description: '경고가 발생한 payload 목록입니다(예: `id_verifications`).'
                  short_description:
                    type: string
                    nullable: true
        linked_records:
          type: object
          nullable: true
          description: >-
            세션에 연결된 다른 레코드의 요약입니다. 표시할 내용이 없거나 연령 확인 기준을 선언하는 워크플로의 경우
            `null`입니다.
          properties:
            same_face:
              type: object
              nullable: true
              description: 이 세션의 얼굴 검색 중 하나와 얼굴이 일치한 다른 사람들입니다.
              properties:
                count:
                  type: integer
                best_match:
                  type: object
                  nullable: true
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                    similarity_percentage:
                      type: number
                      nullable: true
            earlier_verifications:
              type: object
              nullable: true
              properties:
                count:
                  type: integer
                vendor_user_id:
                  type: string
                  format: uuid
                  nullable: true
            networks:
              type: object
              nullable: true
              properties:
                count:
                  type: integer
                open:
                  type: integer
                dismissed:
                  type: integer
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      network_id:
                        type: string
                        format: uuid
                      display_number:
                        type: integer
                        nullable: true
                      name:
                        type: string
                      status:
                        type: string
                      risk_score:
                        type: number
                        nullable: true
        workflow_id:
          type: string
          format: uuid
          description: >-
            이 세션을 생성한 워크플로 그룹의 안정적인 식별자입니다. 워크플로는 버전이 관리되며, 이 값은 특정 버전이 아닌 워크플로
            자체를 식별합니다.
          nullable: true
        features:
          type: array
          items:
            type: string
            description: 세션의 기능입니다.
          description: >-
            이 세션에 구성된 인증 기능 목록이며, 표시 이름으로 제공됩니다: `ID_VERIFICATION`, `NFC`,
            `LIVENESS`, `FACE_MATCH`, `POA`, `PHONE`, `EMAIL_VERIFICATION`,
            `AML`, `IP_ANALYSIS`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`,
            `AGE_ESTIMATION`, `FACE_SEARCH`, `GEOLOCATION`(위치 확인) (기업 확인(KYB)
            세션은 KYB 기능 세트를 사용합니다: `KYB_REGISTRY`, `KYB_DOCUMENTS`,
            `KYB_KEY_PEOPLE`, `AML`, `PHONE`, `EMAIL_VERIFICATION`,
            `IP_ANALYSIS`, `QUESTIONNAIRE`). `include=events`를 사용하면 각 항목이 일반 문자열
            대신 `{feature, node_id}` 객체가 되며, 이메일 기능의 이름이 변경됩니다. 여기에서 사용된
            `EMAIL_VERIFICATION` 대신 이벤트 모드에서는 `EMAIL`로 표시됩니다.
        vendor_data:
          type: string
          description: 세션의 벤더 데이터입니다.
          nullable: true
        metadata:
          type: object
          description: 세션의 메타데이터입니다.
          nullable: true
        expected_details:
          type: object
          description: >-
            세션 생성 시 제공된 예상 세부정보 — 추출된 데이터와의 교차 검증(KYC)에 사용되거나 법인 등기부 검색 사전
            입력(KYB)에 사용됩니다. 제공된 키를 그대로 다시 반환하며, 아무것도 제공되지 않은 경우 `null`입니다. KYC
            세션에는 개인 필드가 포함되며, 기업 확인(KYB) 세션에는 `company_name`,
            `registry_country`, `registration_number`가 포함됩니다.
          properties:
            first_name:
              type: string
              description: '사용자의 이름입니다. 예: `John`.'
            last_name:
              type: string
              description: '사용자의 성입니다. 예: `Doe`.'
            date_of_birth:
              type: string
              format: date
              description: '사용자의 생년월일 형식: YYYY-MM-DD. 예: `1990-05-15`.'
            gender:
              type: string
              nullable: true
              enum:
                - M
                - F
              default: null
              description: 사용자의 성별입니다. 'M', 'F' 또는 null이어야 합니다.
            nationality:
              type: string
              description: '신청자의 출신 국가를 나타내는 ISO 3166-1 alpha-3 국가 코드입니다. 예: `USA`.'
            country:
              type: string
              description: >-
                주소 증명 문서의 국가 또는 신청자의 신분증 문서의 국가를 나타내는 ISO 3166-1 alpha-3 국가
                코드이며, 국적과 다를 수 있습니다. 예: `GBR`.
            address:
              type: string
              description: >-
                가능한 한 많은 정보를 포함한 사람이 읽을 수 있는 형식의 주소입니다. 예를 들어 `123 Main St, San
                Francisco, CA 94105, USA`입니다.
            identification_number:
              type: string
              description: 사용자의 문서 번호, 개인 식별 번호 또는 납세자 번호입니다. 예를 들어 `123456789`입니다.
            ip_address:
              type: string
              format: ipv4
              description: >-
                세션의 예상 IP 주소입니다. 실제 IP 주소가 이 값과 다르면 경고가 기록됩니다. 예:
                `192.168.1.100`.
            expected_document_types:
              type: array
              description: >-
                세션 생성 시 신분증 인증 단계가 제한되었던 문서 유형입니다. 비어 있거나 설정되지 않은 경우 제한이 없음을
                의미합니다. 코드: `P`(여권), `ID`(주민등록증/신분증), `DL`(운전면허증), `RP`(거주 허가증),
                `HIC`(건강보험증), `TC`(세금 카드), `SSC`(사회보장 카드).
              items:
                type: string
                enum:
                  - P
                  - ID
                  - DL
                  - RP
                  - HIC
                  - TC
                  - SSC
            id_country:
              type: string
              nullable: true
              description: 생성 시 제한된 경우의 신분증 문서 발급 국가(ISO 3166-1 alpha-3) 예상 값입니다.
              example: ESP
            poa_country:
              type: string
              nullable: true
              description: 생성 시 제한된 경우의 주소 증명 문서 국가(ISO 3166-1 alpha-3) 예상 값입니다.
              example: ESP
            company_name:
              type: string
              description: 기업의 예상 법적 명칭입니다. 기업 확인(KYB) 세션 전용입니다.
            registry_country:
              type: string
              description: >-
                `XX` 또는 `XX-YY` 형식의 예상 등기 국가(ISO 3166-1 alpha-2, 주 단위 등기부의 경우
                선택적으로 ISO 3166-2 하위 행정구역 포함, 예: `US-CA`)입니다. 기업 확인(KYB) 세션
                전용입니다.
            registration_number:
              type: string
              description: 예상 법인 등록번호입니다. 기업(KYB) 세션에만 해당합니다.
          nullable: true
        contact_details:
          type: object
          description: >-
            세션 생성 시 제공된 연락처 세부 정보입니다(알림 이메일, 미리 채워진 전화번호/이메일 인증, 통신 언어에 사용됨).
            이메일과 전화번호가 모두 제공되지 않은 경우 `null`입니다.
          properties:
            email:
              type: string
              description: >-
                이메일 인증 단계에서 사용될 사용자의 이메일 주소(예: "john.doe@example.com")입니다. 제공되지
                않으면 사용자가 인증 플로우 중에 직접 입력해야 합니다.
            email_lang:
              type: string
              description: >-
                이메일 알림 언어 코드(ISO 639-1)입니다. 모든 이메일 커뮤니케이션의 언어를 제어합니다(예: "en",
                "es", "fr").
            send_notification_emails:
              type: boolean
              default: false
              description: >-
                true이고 이메일이 제공된 경우, Didit은 사용자 인증(KYC) 또는 기업 확인(KYB) 세션이 생성될 때
                초기 "본인 확인" 이메일을 비동기식으로 전송합니다. 또한 수동 검토가 필요한 세션의 경우 Didit은 제공된
                이메일 주소로 인증 상태 알림을 전송합니다.
            phone:
              type: string
              nullable: true
              description: >-
                사용 가능한 경우 사용자의 E.164 형식 전화번호(예: +14155552671)입니다. 세션 생성 시 이메일만
                제공된 경우 `null`입니다. 참고: 이 필드는 세션 생성 중에 제공된 원래 전화번호를 반환합니다. 번호가
                유효하지 않았던 경우 E.164 형식이 아닐 수 있습니다.
          nullable: true
        callback:
          type: string
          format: uri
          description: 세션의 콜백 URL입니다.
          nullable: true
        id_verifications:
          type: array
          nullable: true
          description: >-
            워크플로 그래프의 신분증 문서 단계에서 생성된 **신분증 인증(OCR) 보고서 배열**입니다. 항상 JSON 배열입니다.
            워크플로에서 둘 이상의 신분증 확인(예: 기본 확인에 추가적인 스텝업 확인)을 실행할 수 있는 경우
            `id_verifications[0]`을 읽고 반복 처리하십시오. 하나 이상의 신분증 단계에서 데이터가 생성될 때까지
            `null`입니다. 각 항목은 `node_id`, 기능 수준 `status`, 추출된 문서 필드, 이미지 URL, 품질
            점수, MRZ, 주소 파싱, 세션 간 일치 항목, `warnings[]`를 포함한 전체 보고서입니다.
          items:
            type: object
            description: >-
              단일 신분증 인증 보고서 - 단일 신분증 인증 단계에 대한 전체 보고서입니다. `verification_method`는
              세 가지 방식(문서 캡처, 비문서 조회 또는 지갑 로그인) 중 어떤 방식으로 생성되었는지를 나타내며, 해당 방식에 맞는
              증거 블록이 채워집니다.
            properties:
              node_id:
                type: string
                description: 이 보고서를 생성한 OCR 단계의 워크플로 그래프 노드 ID입니다.
              verification_method:
                type: string
                enum:
                  - document
                  - id_lookup
                  - wallet
                description: >-
                  이 보고서를 생성한 신분증 인증 방법입니다. `document` - 사용자가 실물 신분증을 촬영함(기본값이며
                  다른 방법이 존재하기 전에 생성된 모든 세션의 값임). `id_lookup` - 사용자가 주민등록번호 등의 국가
                  신분증 번호를 입력하고 해당 국가의 정부 등록부 또는 기타 공신력 있는 출처와 대조하여
                  확인함(`id_lookup.source`에 출처 명시). `wallet` - 사용자가 정부 또는 은행 디지털
                  신원 정보를 사용하여 로그인함.
              assurance:
                type: string
                enum:
                  - documentary
                  - data_match
                  - cryptographic
                description: >-
                  `verification_method`에서 파생된 보증 등급: 캡처 및 확인된 문서의 경우
                  `documentary`, 조회된 출처가 보유한 레코드와 세부 정보가 일치하는 경우 `data_match`,
                  신원 공급자가 인증하고 서명한 속성의 경우 `cryptographic`입니다.
              wallet_provider:
                type: string
                nullable: true
                description: >-
                  `verification_method`가 `wallet`인 경우의 카탈로그 지갑 id(`mitid`,
                  `bankid_se`, `itsme` 등). 그렇지 않은 경우 `null`입니다.
              fallback_from:
                type: object
                nullable: true
                description: >-
                  비문서 방식이 신분증 단계를 종료하지 못한 이유입니다. 조회 또는 지갑 로그인이 실패했을 때 설정됩니다: 국가의
                  대체 전환 스위치가 `fallback_to_document`였을 때 사용자가 계속 진행한 문서
                  인증(`action`이 `fallback_to_document`) 또는 `decline`이었을 때 거부된
                  보고서에 표시됩니다. 그 외의 경우에는 `null`입니다.
                properties:
                  method:
                    type: string
                    enum:
                      - id_lookup
                      - wallet
                    description: 실패한 메서드입니다.
                  reason:
                    type: string
                    description: >-
                      종료시킨 결과입니다(예: `no_match`, `provider_error`, `cancelled`,
                      `timeout`).
                  action:
                    type: string
                    enum:
                      - fallback_to_document
                      - decline
                    description: '설정에 따라 수행된 작업: `fallback_to_document` 또는 `decline`.'
              id_lookup:
                type: object
                nullable: true
                description: >-
                  법인 등기부 증빙 자료입니다. `verification_method`가 `id_lookup`인 경우에만
                  존재하며, 그렇지 않으면 `null`입니다.
                properties:
                  source:
                    type: string
                    description: >-
                      조회된 출처의 고객에게 표시되는 이름(예: 정부 등록부인 `Department of Home
                      Affairs` 또는 정부 등록부가 아닌 `UK credit bureau and financial
                      services records`)입니다. 이는 해당 조회에 대한 유일한 출처 명시이므로 무조건 정부
                      출처라고 가정하지 마세요.
                  checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: 등록기관이 응답한 시점입니다.
                  attempts:
                    type: integer
                    description: 이 보고서가 생성된 1부터 시작하는 시도 번호입니다.
                  max_attempts:
                    type: integer
                    description: 해당 국가에 대해 구성된 시도 횟수 예산입니다(1~5, 기본값 1).
                  outcome:
                    type: string
                    enum:
                      - match
                      - partial_match
                      - no_match
                      - provider_error
                      - format_rejected
                    nullable: true
                    description: >-
                      등기부의 응답 내용입니다. `match`, `partial_match`, `no_match`만 시도 횟수
                      예산 및 청구 금액에 반영됩니다.
                  comparison:
                    type: array
                    description: >-
                      소스가 응답한 비교 가능한 필드당 한 행, 소스 오류당 한 행입니다. 여러 요청 필드(이름 및 성, 또는
                      식별자 별칭 중 하나)가 단일 비교로 축소되므로 비교 행에는 해당 국가의 요청 필드 키 대신 아래의
                      정규화된 필드 이름이 사용됩니다. 실패한 소스는 `field: "provider"` 및 `result:
                      "error"`가 포함된 행을 추가하므로, 행을 필드 판정으로 처리하기 전에 `result`를 먼저
                      확인하십시오.
                    items:
                      type: object
                      required:
                        - field
                        - label
                        - provided
                        - record
                        - result
                      properties:
                        field:
                          type: string
                          enum:
                            - identification_number
                            - full_name
                            - date_of_birth
                            - address
                            - provider
                          description: >-
                            정규화된 비교 필드입니다. `provider`는 사용자 필드가 아니며, 소스 오류 행을
                            나타냅니다.
                        label:
                          type: string
                          description: >-
                            행의 표시 레이블입니다(예: `ID number`, `Full name`,
                            `Provider`).
                        provided:
                          type: string
                          nullable: true
                          description: 사용자가 입력한 내용입니다. `provider` 오류 행에서는 `null`입니다.
                        record:
                          type: string
                          nullable: true
                          description: >-
                            소스가 보유했던 데이터입니다. `provider` 오류 행에서는 대신 오류 메시지가
                            포함됩니다.
                        result:
                          type: string
                          enum:
                            - match
                            - partial
                            - no_match
                            - error
                          description: >-
                            필드별 비교 결과입니다. `error`는 `provider` 행에만 나타나며 해당 소스가
                            응답하지 않았음을 의미합니다. 이는 쿼리에 관한 증거로 취급해야 하며, 필드 불일치로
                            처리해서는 안 됩니다.
                  registry_portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      소스에서 반환한 인물 사진에 대한 유효 기간이 짧은 사전 서명된 URL입니다. 인물 사진을 반환하는
                      4개의 정부 등록부(남아프리카 공화국, 나이지리아, 아르헨티나, 파나마)에만 해당합니다.
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      등기부 인물 사진과 셀피 간 대조 점수(0-100)입니다. 등기부에서 인물 사진을 반환하는 경우에만
                      해당합니다.
              wallet_verification:
                type: object
                nullable: true
                description: >-
                  자격 증명 증거입니다. `verification_method`가 `wallet`인 경우에만 존재하며, 그렇지
                  않은 경우 `null`입니다.
                properties:
                  provider:
                    type: string
                    description: '카탈로그 지갑 id(예: `mitid`).'
                  provider_name:
                    type: string
                    nullable: true
                    description: '최종 사용자에게 알려진 지갑 이름입니다(예: `MitID`).'
                  issuing_authority:
                    type: string
                    nullable: true
                    description: '지갑 배후의 기관입니다(예: `Danish Agency for Digital Government`).'
                  issuing_country:
                    type: string
                    description: 지갑이 제공된 ISO 3166-1 alpha-3 국가입니다.
                  credential_type:
                    type: string
                    nullable: true
                    description: '지갑이 제시한 자격 증명(예: `person_identification`).'
                  level_of_assurance:
                    type: string
                    enum:
                      - low
                      - substantial
                      - high
                    nullable: true
                    description: >-
                      지갑이 주장한 보증 수준입니다. 요청된 수준보다 낮은 수준을 주장하는 로그인은 다운그레이드되지 않고
                      실패합니다.
                  verified_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: 지갑의 인증 시각입니다.
                  signature_valid:
                    type: boolean
                    nullable: true
                    description: 지갑이 반환한 서명된 어서션의 유효성이 검증되었는지 여부입니다.
                  attributes:
                    type: object
                    additionalProperties: true
                    description: 지갑이 공유한 속성이며, 지갑의 카탈로그 항목에 나열된 대로 키가 지정됩니다.
                  portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: 지갑에서 인물 사진을 공유하는 경우, 해당 사진에 대한 유효 기간이 짧은 사전 서명된 URL입니다.
                  face_match_score:
                    type: number
                    nullable: true
                    description: 지갑 인물 사진과 셀피 간 대조 점수(0-100)로, 지갑에서 인물 사진을 공유하는 경우에 해당합니다.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
                description: >-
                  이 신분증 인증 단계의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이 `In
                  Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
              document_type:
                type: string
                description: 신원 확인 문서 유형
              document_subtype:
                type: string
                nullable: true
                description: >-
                  해당되는 경우 문서 지역을 포함하여 워크플로 문서 설정에서 수락된 문서 하위 유형 코드입니다. 예:
                  `ID_CARD_GENERIC`, `QUEENSLAND_DRIVER_LICENSE_GENERIC`.
              document_number:
                type: string
                description: 문서 식별 번호
              personal_number:
                type: string
                description: 개인 식별 번호
              portrait_image:
                type: string
                format: uri
                description: 인물 사진 이미지의 URL
              front_image:
                type: string
                format: uri
                description: 문서 앞면 이미지의 URL
              front_video:
                type: string
                format: uri
                description: 문서 앞면 동영상의 URL
              back_image:
                type: string
                format: uri
                description: 문서 뒷면 이미지의 URL
              back_video:
                type: string
                format: uri
                description: 문서 뒷면 동영상의 URL
              full_front_image:
                type: string
                format: uri
                description: 문서 앞면 전체 이미지의 URL
              full_back_image:
                type: string
                format: uri
                description: 문서 뒷면 전체 이미지의 URL
              front_image_camera_front:
                type: string
                format: uri
                description: 전면 카메라로 촬영한 문서 앞면 이미지의 URL
              back_image_camera_front:
                type: string
                format: uri
                description: 전면 카메라로 촬영한 문서 뒷면 이미지의 URL
              date_of_birth:
                type: string
                format: date
                description: 문서에서 추출한 생년월일
              age:
                type: integer
                description: 생년월일로 계산된 연령
              expiration_date:
                type: string
                format: date
                description: 문서 만료일
              date_of_issue:
                type: string
                format: date
                description: 문서 발급일
              issuing_state:
                type: string
                description: 발급 주(State)의 ISO 코드
              issuing_state_name:
                type: string
                description: 발급 주의 전체 이름
              first_name:
                type: string
                description: 문서의 이름
              last_name:
                type: string
                description: 문서의 성
              full_name:
                type: string
                description: 문서에 기재된 성명
              gender:
                type: string
                description: 문서에 기재된 성별
              address:
                type: string
                description: 문서의 원시 주소
              formatted_address:
                type: string
                description: 포맷된 전체 주소입니다.
              place_of_birth:
                type: string
                description: 문서상의 출생지
              marital_status:
                type: string
                description: 문서에 기재된 혼인 여부
              nationality:
                type: string
                description: ISO 국적 코드
              extra_fields:
                type: object
                description: >-
                  추가 문서 필드입니다. 문서별 고유 속성(예: `dl_categories`, `blood_group`,
                  `sponsor`, `employer`, `dl_class_code_b_from`,
                  `dl_class_code_b_to`)을 포함합니다. 운전면허 등급 유효 기간은
                  `dl_class_code_<class>_from` 및 `dl_class_code_<class>_to`로
                  반환되며, 등급별 제한/정보 코드는 (예: 영국 면허증의 12번 열)
                  `dl_class_code_<class>_notes`로 반환됩니다. 문서에 성명, 주소 또는 출생지가 여러 문자
                  체계로 기재되어 있는 경우, 이 객체에는 해당 필드의 대체 문자 체계 버전도 포함됩니다. 워크플로 설정인
                  `preferred_characters`(`latin` 또는 `non_latin`)에 따라 최상위
                  필드(`first_name`, `last_name`, `full_name`, `address`,
                  `place_of_birth`)를 채울 문자 체계가 결정됩니다. 반대 문자 체계는 여기에
                  `first_name_non_latin` / `last_name_non_latin` /
                  `full_name_non_latin` / `middle_name_non_latin` /
                  `address_non_latin` /
                  `place_of_birth_non_latin`(`preferred_characters`가 `latin`인
                  경우)으로 들어가거나 `_latin` 접미사(`preferred_characters`가 `non_latin`인
                  경우)가 붙어 들어갑니다. 키는 OCR이 실제 대체 문자 체계 값을 추출한 경우에만 나타나며, 대체 값이
                  선호하는 문자 체계와 동일한 필드(예: 키릴 문자로 표기된 필드의 OCR 값이 라틴어 동형 문자로 반환된
                  경우)는 건너뜁니다. `preferred_characters`가 `latin`이지만 문서에 비라틴 문자 텍스트만
                  있는 경우, Didit은 추출된 값을 음차 변환하여 대체 값으로 `first_name_latin` /
                  `last_name_latin` 등을 제공합니다.
                additionalProperties: true
                properties:
                  dl_categories:
                    type: array
                    items:
                      type: string
                  blood_group:
                    type: string
                    nullable: true
                  first_name_non_latin:
                    type: string
                    description: >-
                      `preferred_characters=latin`이고 문서에 비로마자 버전이 있는 경우 비로마자 문자
                      체계의 이름입니다(예: 키르기스스탄 신분증의 `Айна`).
                  last_name_non_latin:
                    type: string
                    description: >-
                      `preferred_characters=latin`이고 문서에 비라틴 문자 체계 버전이 있는 경우 비라틴
                      문자 체계의 성입니다.
                  middle_name_non_latin:
                    type: string
                    description: >-
                      `preferred_characters=latin`이고 문서에 비라틴 문자 버전이 있는 경우의 비라틴
                      문자 중간 이름/부칭입니다.
                  full_name_non_latin:
                    type: string
                    description: >-
                      비라틴 문자 체계로 작성된 전체 성명입니다. 이름과 성이 모두 확인되면 개별 구성 요소로부터
                      재구성됩니다.
                  address_non_latin:
                    type: string
                    description: >-
                      `preferred_characters=latin`이고 문서에 비라틴 문자 버전이 기재되어 있을 때의
                      비라틴 문자 주소입니다.
                  place_of_birth_non_latin:
                    type: string
                    description: >-
                      `preferred_characters=latin`이고 문서에 비라틴 버전이 있는 경우 비라틴 문자
                      체계의 출생지입니다.
                  first_name_latin:
                    type: string
                    description: >-
                      로마자 문자 체계의 이름입니다. `preferred_characters=non_latin`이고 문서에
                      로마자 표기가 있는 경우, 또는 음차 대체 기능으로서
                      `preferred_characters=latin`이지만 문서에 비로마자 텍스트만 있는 경우 채워집니다.
                  last_name_latin:
                    type: string
                    description: 라틴 문자 체계의 성입니다. `first_name_latin`과 동일한 규칙이 적용됩니다.
                  middle_name_latin:
                    type: string
                    description: 라틴 문자로 된 중간 이름/부칭입니다. `first_name_latin`과 동일한 규칙이 적용됩니다.
                  full_name_latin:
                    type: string
                    description: >-
                      라틴 문자 체계로 작성된 전체 성명입니다. 이름과 성이 모두 확인되면 항상 개별 구성 요소로부터
                      재구성됩니다.
                  address_latin:
                    type: string
                    description: 라틴 문자로 표기된 주소입니다. `first_name_latin`과 동일한 규칙이 적용됩니다.
                  place_of_birth_latin:
                    type: string
                    description: 라틴 문자 체계의 출생지입니다. `first_name_latin`과 동일한 규칙이 적용됩니다.
              mrz:
                type: object
                nullable: true
                description: 문서에서 추출하여 파싱한 기계 판독 영역(MRZ) 필드입니다. MRZ가 감지되지 않은 경우 `null`입니다.
                properties:
                  surname:
                    type: string
                    example: MARTINEZ<SANCHEZ
                  name:
                    type: string
                    example: ELENA
                  country:
                    type: string
                    example: ESP
                  nationality:
                    type: string
                    example: ESP
                  birth_date:
                    type: string
                    example: '850315'
                  expiry_date:
                    type: string
                    example: '220821'
                  sex:
                    type: string
                    example: F
                  document_type:
                    type: string
                    example: ID
                  document_number:
                    type: string
                    example: YZA123456
                  optional_data:
                    type: string
                    example: X9876543L
                  optional_data_2:
                    type: string
                    example: ''
                  birth_date_hash:
                    type: string
                    example: '7'
                  expiry_date_hash:
                    type: string
                    example: '4'
                  document_number_hash:
                    type: string
                    example: '9'
                  final_hash:
                    type: string
                    example: '2'
                  personal_number:
                    type: string
                    example: X9876543L
                  warnings:
                    type: array
                    items:
                      type: string
                  errors:
                    type: array
                    items:
                      type: string
                  mrz_type:
                    type: string
                    example: TD1
                  mrz_string:
                    type: string
                    example: |-
                      IDESPMARTINEZ<SANCHEZ<<<<<<<<<<
                      YZA123456<9ESP8503157F3208214<X9876543L<<<<<<<2
                      MARTINEZ<SANCHEZ<<ELENA<<<<<<<<<<
                  mrz_key:
                    type: string
                    example: YZA123456985031573208214
              parsed_address:
                type: object
                description: 구조화된 주소 세부 정보
                properties:
                  city:
                    type: string
                  label:
                    type: string
                  region:
                    type: string
                  country:
                    type: string
                    description: 두 글자 국가 코드
                  category:
                    type: string
                    description: '주소 카테고리(예: Residential, Commercial)'
                  street_1:
                    type: string
                  street_2:
                    type: string
                    nullable: true
                  is_verified:
                    type: boolean
                    description: 주소가 검증되었는지 여부
                  postal_code:
                    type: string
                  raw_results:
                    type: object
                    properties:
                      types:
                        type: array
                        items:
                          type: string
                      geometry:
                        type: object
                        properties:
                          location:
                            type: object
                            properties:
                              lat:
                                type: number
                              lng:
                                type: number
                          viewport:
                            type: object
                            properties:
                              northeast:
                                type: object
                                properties:
                                  lat:
                                    type: number
                                  lng:
                                    type: number
                              southwest:
                                type: object
                                properties:
                                  lat:
                                    type: number
                                  lng:
                                    type: number
                          location_type:
                            type: string
                      place_id:
                        type: string
                      formatted_address:
                        type: string
                      navigation_points:
                        type: array
                        items:
                          type: object
                          properties:
                            location:
                              type: object
                              properties:
                                latitude:
                                  type: number
                                longitude:
                                  type: number
                      address_components:
                        type: array
                        items:
                          type: object
                          properties:
                            types:
                              type: array
                              items:
                                type: string
                            long_name:
                              type: string
                            short_name:
                              type: string
                  address_type:
                    type: string
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                      longitude:
                        type: number
                  formatted_address:
                    type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: 추가 문서 인증 파일
              front_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: 문서 앞면 이미지에서 추출한 인물 사진과 전면 카메라 이미지 간의 얼굴 대조 점수
              back_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: 문서 뒷면 이미지에서 추출한 인물 사진과 전면 카메라 이미지 간의 얼굴 대조 점수
              document_selfie_face_matches:
                type: array
                description: >-
                  신분증 캡처 중 전면 카메라가 촬영한 셀피와 얼굴이 일치하는 이전 세션 또는 얼굴 차단 목록 항목(무음 캡처
                  얼굴 검색)입니다. `liveness_checks[].matches`와 동일한 항목 형식입니다. 이 필드가
                  존재하기 전에 생성된 세션이거나 검색이 실행되지 않은 경우 `null`이며, 실행되었지만 일치 항목을 찾지 못한
                  경우 빈 배열입니다. `match_image_url`은 만료되는 사전 서명된 URL입니다.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        일치하는 얼굴의 세션 ID입니다. `source`가 `imported`, `list_entry` 또는
                        `retained_template`인 경우 `null`입니다.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: 두 이미지 간의 얼굴 유사도로, 0–100 범위로 제한됩니다.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        가져온 얼굴 및 보존된 템플릿 얼굴의 경우 일치하는 세션 또는 연결된 사용자의
                        `vendor_data`입니다.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        `imported` 및 `retained_template` 일치 항목과 사용자에 연결된 세션 일치
                        항목에 대한 연결된 User id입니다. 목록 항목 및 사용자가 없는 세션의 경우 `null`입니다.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        보존된 생체 인식 템플릿의 ID입니다. `source`가 `retained_template`일 때만
                        설정되며, 그 외의 경우 `null`입니다.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        일치하는 얼굴이 캡처된 시점 또는 보존된 템플릿이 생성된 시점입니다. 목록 항목의 경우
                        `null`입니다.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        일치하는 세션 또는 가져온 사용자 프로필의 신원 데이터입니다. `retained_template` 및
                        `list_entry` 일치의 경우 항상 `null`입니다.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        이미지 기반 대조를 위한 기준 이미지입니다. 보존된 템플릿에는 이미지가 포함되어 있지 않으므로
                        `retained_template` 대조의 경우 항상 `null`입니다.
                    status:
                      type: string
                      nullable: true
                      description: 일치하는 세션의 수명 주기 상태입니다. 비세션 소스의 경우 `null`입니다.
                    is_blocklisted:
                      type: boolean
                      description: 일치하는 얼굴이 차단 목록에 있는지 여부입니다.
                    is_allowlisted:
                      type: boolean
                      description: 일치하는 얼굴이 허용 목록에 있는지 여부입니다.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        일치하는 세션의 독립형 API 서비스입니다(예: `PASSIVE_LIVENESS`,
                        `FACE_MATCH`). 워크플로 세션 및 세션이 아닌 소스의 경우 `null`입니다.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        일치하는 얼굴의 출처: `session`, `imported`(사용자 얼굴 업로드),
                        `list_entry`(허용/차단 목록), 또는 `retained_template`(사용자에게 저장된
                        이미지가 없는 생체 인식 템플릿으로, `/v3/biometric-templates/` 아래 나열됨).
                nullable: true
              front_image_quality_score:
                type: object
                nullable: true
                description: 문서 앞면 이미지에 대한 품질 지표입니다. 각 하위 점수의 범위는 0에서 100까지입니다.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      상위 10% 로컬 라플라시안 분산을 통해 측정한 이미지의 선명도입니다. 균일한 배경이 넓게 차지하는
                      문서에도 안정적입니다. 값이 높을수록 이미지가 더 선명하고 흐림이 적음을 나타냅니다.
                  brightness_score:
                    type: number
                    description: >-
                      이미지의 조명 상태입니다. 너무 어둡거나 과다 노출된 이미지에 페널티를 부여하며, 중간 정도의 밝기가
                      이상적입니다.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      brightness_score가 낮을 때 밝기 문제의 방향을 나타냅니다. 'ok'는 밝기가 적절함을,
                      'too_dark'는 이미지가 노출 부족임을, 'too_bright'는 이미지가 과다 노출임을
                      의미합니다.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      문서의 네 모서리가 모두 이미지 프레임 내에 완전히 보이면 true, 모서리가 하나라도 잘리면
                      false입니다. 모서리 좌표를 사용할 수 없는 경우 Null입니다.
                  resolution_score:
                    type: number
                    description: 총 픽셀 수 기반 이미지의 유효 해상도입니다.
                  overall_score:
                    type: number
                    description: 하위 점수의 가중 종합 점수입니다(초점 45%, 밝기 30%, 해상도 25%).
              back_image_quality_score:
                type: object
                nullable: true
                description: 문서 뒷면 이미지에 대한 품질 지표입니다. front_image_quality_score와 동일한 구조입니다.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      상위 10% 로컬 라플라시안 분산을 통해 측정한 이미지의 선명도입니다. 균일한 배경이 넓게 차지하는
                      문서에도 안정적입니다. 값이 높을수록 이미지가 더 선명하고 흐림이 적음을 나타냅니다.
                  brightness_score:
                    type: number
                    description: >-
                      이미지의 조명 상태입니다. 너무 어둡거나 과다 노출된 이미지에 페널티를 부여하며, 중간 정도의 밝기가
                      이상적입니다.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      brightness_score가 낮을 때 밝기 문제의 방향을 나타냅니다. 'ok'는 밝기가 적절함을,
                      'too_dark'는 이미지가 노출 부족임을, 'too_bright'는 이미지가 과다 노출임을
                      의미합니다.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      문서의 네 모서리가 모두 이미지 프레임 내에 완전히 보이면 true, 모서리가 하나라도 잘리면
                      false입니다. 모서리 좌표를 사용할 수 없는 경우 Null입니다.
                  resolution_score:
                    type: number
                    description: 총 픽셀 수 기반 이미지의 유효 해상도입니다.
                  overall_score:
                    type: number
                    description: 하위 점수의 가중 종합 점수입니다(초점 45%, 밝기 30%, 해상도 25%).
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능(예: `ID_VERIFICATION`, `NFC`,
                        `LIVENESS`)입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만, 결정 payload의 모든 기능 경고에 대해서는
                        위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                      description: 경고에 대한 추가 맥락 데이터
                    log_type:
                      type: string
                      description: '로그 유형: 정보, 경고 또는 오류'
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID(그래프 기반 워크플로의 경우)
                description: 문서 검증 경고
              matches:
                type: array
                description: 중복/차단 목록 감지 중 발견된 일치하는 문서(최대 5개 일치 항목)
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: 일치하는 문서의 세션 ID
                    session_number:
                      type: integer
                      description: 일치하는 문서의 세션 번호
                    vendor_data:
                      type: string
                      nullable: true
                      description: 일치하는 세션과 연결된 벤더 데이터입니다.
                    verification_date:
                      type: string
                      format: date-time
                      description: 일치하는 세션이 인증된 날짜
                    user_details:
                      type: object
                      properties:
                        name:
                          type: string
                          description: 일치하는 문서의 성명
                        document_type:
                          type: string
                          description: 일치하는 문서의 유형
                        document_number:
                          type: string
                          description: 일치하는 문서의 문서 번호
                    status:
                      type: string
                      description: 일치하는 세션의 상태
                    is_blocklisted:
                      type: boolean
                      description: 일치하는 문서가 차단 목록에 있는지 여부
                    api_service:
                      type: string
                      nullable: true
                      description: 일치하는 세션의 API 서비스 유형
                    front_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: 일치하는 문서의 문서 앞면 이미지 URL
              document_liveness:
                type: object
                nullable: true
                description: >-
                  사기 유형별 문서 라이브니스 점수로, 경고 발생 여부와 관계없이 보고되므로 승인된 문서도 감사할 수 있습니다.
                  검사가 실행되지 않은 경우 `null`입니다.
                properties:
                  portrait_replace:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          해당 사기 유형에 대해 문서가 진본일 가능성입니다 (0-100, 높을수록 진본일 가능성이 높음).
                          양면 중 더 낮은 값이며, 결정에 사용된 값입니다. 어느 쪽도 사용할 수 있는 점수를 생성하지
                          못한 경우 `null`입니다.
                      front:
                        type: number
                        nullable: true
                        description: 앞면에 대한 점수입니다. 캡처되지 않았거나 점수가 제외된 경우 `null`입니다.
                      back:
                        type: number
                        nullable: true
                        description: 뒷면에 대한 점수입니다. 캡처되지 않았거나 점수가 제외된 경우 `null`입니다.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          이 문서가 평가되었을 때 저장된 거부 임계값입니다. 이후의 워크플로 편집으로도 변경되지 않습니다.
                          과거 평가 증거를 사용할 수 없는 경우 Null입니다.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          이 문서를 평가할 때 저장된 검토 임계값입니다. 이후 워크플로를 수정해도 변경되지 않습니다. 과거
                          평가 증거를 사용할 수 없는 경우 Null입니다.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          평가 시점에 저장된 사기 유형 버킷입니다. 사용 가능한 점수가 없거나, 검사가 적용되지 않았거나,
                          과거 평가 증거를 사용할 수 없는 경우 null입니다. 이후 워크플로를 수정해도 변경되지
                          않습니다.
                  printed_copy:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          해당 사기 유형에 대해 문서가 진본일 가능성입니다 (0-100, 높을수록 진본일 가능성이 높음).
                          양면 중 더 낮은 값이며, 결정에 사용된 값입니다. 어느 쪽도 사용할 수 있는 점수를 생성하지
                          못한 경우 `null`입니다.
                      front:
                        type: number
                        nullable: true
                        description: 앞면에 대한 점수입니다. 캡처되지 않았거나 점수가 제외된 경우 `null`입니다.
                      back:
                        type: number
                        nullable: true
                        description: 뒷면에 대한 점수입니다. 캡처되지 않았거나 점수가 제외된 경우 `null`입니다.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          이 문서가 평가되었을 때 저장된 거부 임계값입니다. 이후의 워크플로 편집으로도 변경되지 않습니다.
                          과거 평가 증거를 사용할 수 없는 경우 Null입니다.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          이 문서를 평가할 때 저장된 검토 임계값입니다. 이후 워크플로를 수정해도 변경되지 않습니다. 과거
                          평가 증거를 사용할 수 없는 경우 Null입니다.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          평가 시점에 저장된 사기 유형 버킷입니다. 사용 가능한 점수가 없거나, 검사가 적용되지 않았거나,
                          과거 평가 증거를 사용할 수 없는 경우 null입니다. 이후 워크플로를 수정해도 변경되지
                          않습니다.
                  screen_replay:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          해당 사기 유형에 대해 문서가 진본일 가능성입니다 (0-100, 높을수록 진본일 가능성이 높음).
                          양면 중 더 낮은 값이며, 결정에 사용된 값입니다. 어느 쪽도 사용할 수 있는 점수를 생성하지
                          못한 경우 `null`입니다.
                      front:
                        type: number
                        nullable: true
                        description: 앞면에 대한 점수입니다. 캡처되지 않았거나 점수가 제외된 경우 `null`입니다.
                      back:
                        type: number
                        nullable: true
                        description: 뒷면에 대한 점수입니다. 캡처되지 않았거나 점수가 제외된 경우 `null`입니다.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          이 문서가 평가되었을 때 저장된 거부 임계값입니다. 이후의 워크플로 편집으로도 변경되지 않습니다.
                          과거 평가 증거를 사용할 수 없는 경우 Null입니다.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          이 문서를 평가할 때 저장된 검토 임계값입니다. 이후 워크플로를 수정해도 변경되지 않습니다. 과거
                          평가 증거를 사용할 수 없는 경우 Null입니다.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          평가 시점에 저장된 사기 유형 버킷입니다. 사용 가능한 점수가 없거나, 검사가 적용되지 않았거나,
                          과거 평가 증거를 사용할 수 없는 경우 null입니다. 이후 워크플로를 수정해도 변경되지
                          않습니다.
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  이 문서에 인쇄된 주소에 대한 주소 검증입니다. 문서에서 읽은 주소의 존재 여부 및 정규화된 형태를
                  나타냅니다(이후 `address`를 수정해도 다시 실행되지 않음). 이 신분증 인증 단계에서 주소 검증 추가
                  기능이 활성화되어 있는 경우에 제공되며, 그렇지 않으면 `null`입니다.
              region:
                type: string
                nullable: true
                description: 문서에 명시되어 있는 경우, 문서 발급 국가의 지역 또는 주입니다.
              extracted_data:
                type: object
                nullable: true
                additionalProperties: true
                description: >-
                  사용자가 검토하도록 표시된 문서에서 추출된 데이터의 스냅샷입니다. 읽어낸 내용과 사용자가 확인한 내용을 비교할
                  수 있도록 확인된 값 옆에 보관됩니다. 사용자에게 검토를 요청하지 않은 경우 `null`입니다.
              barcodes:
                type: array
                items:
                  type: object
                  additionalProperties: true
                description: 문서의 바코드에서 읽은 데이터입니다. 문서에 바코드가 없거나 읽은 바코드가 없는 경우 비어 있습니다.
        nfc_skip_reason:
          type: string
          nullable: true
          enum:
            - USER_SKIPPED
            - DOCUMENT_WITHOUT_CHIP
            - CHIP_CERTIFICATE_UNAVAILABLE
            - DEVICE_WITHOUT_NFC
            - INTEGRATION_WITHOUT_NFC_ACCESS
            - MRZ_KEY_UNAVAILABLE
            - JPKI_UNAVAILABLE
          description: >-
            NFC 칩 인증이 실행되지 않은 이유로, 워크플로에 NFC 단계가 포함되어 있을 때마다 채워집니다. NFC가 대기 중이거나
            칩을 실제로 읽은 경우에는 `null`입니다. 값: `USER_SKIPPED` - 사용자가 NFC 지원 기기에서 건너뛰기를
            선택함(`allow_nfc_skip`에 의해 허용됨), `DOCUMENT_WITHOUT_CHIP` - 문서에 읽기 가능한
            NFC 칩이 없음(ICAO 9303 전자 문서가 아님), `CHIP_CERTIFICATE_UNAVAILABLE` - 문서
            발급 기간을 포함하는 발급 국가의 서명 인증서(CSCA)를 사용할 수 없어 칩 서명을 검증할 수 없음,
            `DEVICE_WITHOUT_NFC` - 기기에서 NFC 리더가 보고되지 않음,
            `INTEGRATION_WITHOUT_NFC_ACCESS` - 휴대폰의 NFC 리더에 접근할 수 없는 네이티브 SDK
            없이(예: 웹 브라우저에서) 인증이 실행됨, `MRZ_KEY_UNAVAILABLE` - 문서의 MRZ에서 칩 접근 키를
            도출할 수 없음, `JPKI_UNAVAILABLE` - 문서가 일본 마이넘버 카드이고 칩을 JPKI를 통해 읽는데, 해당
            인증에서 JPKI를 사용할 수 없음(활성화되지 않았거나 앱의 네이티브 SDK가 마이넘버 카드를 읽을 수 없음).
        nfc_verifications:
          type: array
          nullable: true
          description: >-
            워크플로 그래프의 NFC 단계에서 생성된 **NFC / 전자여권 보고서 배열**입니다. **단일 `nfc` 객체가 아닌
            항상 JSON 배열입니다** — 워크플로에서 NFC를 두 번 이상 실행할 수 있는 경우
            `nfc_verifications[0]`을 읽고 반복 처리하십시오. 하나 이상의 NFC 단계에서 데이터가 생성될 때까지
            `null`입니다. 각 항목은 `node_id`, 기능 수준 `status`, `chip_protocol`,
            `chip_data`, `authenticity`(SOD + DG 무결성), `certificate_summary`,
            `warnings[]`를 포함한 전체 보고서입니다. 일본 마이넘버카드는 ICAO 9303 대신 JPKI를 통해 읽힙니다.
            해당 항목은 `chip_protocol: "jpki"`를 가지며 증거를 `jpki` 아래에 포함하고 ICAO 필드는
            `null`로 유지합니다. NFC 단계를 제시할 수 있기 전에 건너뛴 경우(칩이 없는 문서, 인증서 누락, 보고된 NFC
            기능 없음, 읽을 수 없는 MRZ 키, 마이넘버카드에 JPKI를 사용할 수 없음) 이 필드는 `null`로 유지되며
            `nfc_skip_reason`에 이유가 설명됩니다. 단계 자체에서 건너뛴 경우(사용자가 건너뛰기를 탭했거나 스캔 시점에
            리더기를 사용할 수 없는 것으로 나타남)에는 `is_nfc_skipped: true`인 보고서가 생성됩니다.
          items:
            type: object
            description: >-
              단일 NFC 보고서: 단일 칩 판독에 대한 전체 보고서(ICAO 9303 전자여권 또는 eID 칩, 또는 JPKI를
              통해 판독된 일본 마이넘버카드)입니다.
            properties:
              node_id:
                type: string
                description: >-
                  이 보고서를 생성한 NFC 단계의 워크플로 그래프 노드 ID입니다. 보고서를 워크플로 정의와 연결하는 데
                  사용합니다.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  이 NFC 단계의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이 `In
                  Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
              is_nfc_skipped:
                type: boolean
                description: >-
                  이 NFC 단계를 판독하지 않고 명시적으로 건너뛴 경우 `true`입니다. 건너뛴 이유는
                  `skip_reason`에 표시됩니다.
              skip_reason:
                type: string
                nullable: true
                enum:
                  - USER_SKIPPED
                  - DOCUMENT_WITHOUT_CHIP
                  - CHIP_CERTIFICATE_UNAVAILABLE
                  - DEVICE_WITHOUT_NFC
                  - INTEGRATION_WITHOUT_NFC_ACCESS
                  - MRZ_KEY_UNAVAILABLE
                  - JPKI_UNAVAILABLE
                description: >-
                  이 NFC 단계를 건너뛴 이유입니다. `is_nfc_skipped`가 `true`일 때만 설정됩니다. NFC가
                  보고서를 전혀 생성하지 못한 경우까지 추가로 다루는 세션 수준의 `nfc_skip_reason`과 동일한 분류
                  체계를 따릅니다.
              chip_protocol:
                type: string
                enum:
                  - icao
                  - jpki
                description: >-
                  NFC 단계에서 칩을 읽는 방식입니다. `icao`: MRZ의 액세스 키를 사용하여 개방하는 ICAO 9303
                  전자여권 또는 전자 신분증 칩입니다. `jpki`: 일본 마이넘버카드로, 네이티브 SDK에서 소지자가 카드
                  PIN을 입력한 후 카드가 일회용 챌린지에 서명하는 방식이며 결과는 `jpki` 아래에 제공됩니다. 건너뛴
                  단계에도 설정되므로 마이넘버카드 판독이 건너뛰어졌는지 구분할 수 있습니다.
              jpki:
                type: object
                nullable: true
                description: >-
                  JPKI를 통해 읽은 일본 마이넘버 카드로 증명된 내용입니다. `chip_protocol`이 `jpki`이고
                  카드를 읽었을 때 존재합니다. ICAO 칩, 건너뛴 단계 및 카드를 전혀 읽지 않고 NFC 단계가 종료된
                  경우(이 경우 `JPKI_SIGNATURE_INVALID`가 발생함)에는 `null`입니다. 인증서, 일련번호,
                  서명 또는 12자리 마이넘버는 절대 포함되지 않습니다.
                properties:
                  certificate_types:
                    type: array
                    items:
                      type: string
                      enum:
                        - user_authentication
                        - signature
                    description: >-
                      읽은 카드 인증서입니다. `user_authentication`(4자리 PIN)은 항상 읽으며,
                      `signature`(서명 PIN)는 NFC 노드의 `jpki_request_attributes` 설정이
                      켜져 있을 때 읽습니다.
                  chain_valid:
                    type: boolean
                    description: >-
                      판독된 모든 인증서가 JPKI 인증 기관으로 연결되고, 유효 기간 내에 있으며, 해당 유형의 마이넘버
                      카드 인증서인 경우 `true`입니다.
                  signature_valid:
                    type: boolean
                    description: >-
                      일회용 챌린지에 대해 카드가 생성한 모든 서명이 검증되면 `true`입니다. 카드는 PIN이 입력된
                      후에만 서명하므로, 이는 카드의 소지와 PIN에 대한 인지를 증명합니다.
                  revocation_status:
                    type: string
                    enum:
                      - good
                      - revoked
                      - unchecked
                    description: >-
                      폐기 확인을 통해 모든 인증서가 유효함이 확인된 경우 `good`, 인증서 중 하나라도 폐기된 경우(예:
                      분실 신고된 카드) `revoked`, 폐기 확인 응답을 얻을 수 없는 경우 `unchecked`입니다.
                      `unchecked`는 절대로 `good`으로 처리되지 않으며, NFC 노드의
                      `jpki_revocation_unchecked_action`에 따라 결과(기본값 `REVIEW`)가
                      결정됩니다.
                  ca_generation:
                    type: string
                    nullable: true
                    description: >-
                      인증서를 발급한 JPKI 인증 기관의 세대(예: `2023`). 해당 기관으로 체인 연결되는 인증서가
                      없는 경우 `null`입니다.
                  certificate_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: 판독된 인증서 중 가장 이른 만료일입니다.
                  certificates:
                    type: array
                    items:
                      type: object
                      description: >-
                        카드에서 읽은 하나의 인증서가 증명한 내용입니다. 인증서 자체나 해당 일련번호는 절대 포함되지
                        않습니다.
                      properties:
                        type:
                          type: string
                          enum:
                            - user_authentication
                            - signature
                          description: 이 항목이 설명하는 카드 인증서입니다.
                        chain_valid:
                          type: boolean
                          description: >-
                            인증서가 해당 유형의 JPKI 인증 기관으로 연결되고, 유효 기간 내에 있으며, 해당 유형의
                            마이넘버 카드 인증서인 경우 `true`입니다.
                        signature_valid:
                          type: boolean
                          description: 일회용 챌린지에 대한 카드의 서명이 이 인증서로 검증되면 `true`입니다.
                        ca_generation:
                          type: string
                          nullable: true
                          description: >-
                            인증서를 발급한 JPKI 인증 기관의 세대(예: `2023`). 신뢰할 수 있는 발급자를 찾을
                            수 없는 경우 `null`입니다.
                        not_valid_before:
                          type: string
                          format: date-time
                          nullable: true
                          description: 인증서 유효 기간의 시작일입니다. 인증서를 읽을 수 없는 경우 `null`입니다.
                        not_valid_after:
                          type: string
                          format: date-time
                          nullable: true
                          description: 인증서 유효 기간의 종료일입니다. 인증서를 읽을 수 없는 경우 `null`입니다.
                        failure:
                          type: string
                          nullable: true
                          enum:
                            - unreadable_certificate
                            - untrusted_issuer
                            - expired
                            - not_yet_valid
                            - wrong_policy
                            - key_usage
                            - null
                          description: >-
                            `chain_valid`가 `false`인 이유:
                            `unreadable_certificate`, `untrusted_issuer`(해당 유형의
                            JPKI 인증 기관에서 발급하지 않음), `expired`, `not_yet_valid`,
                            `wrong_policy`(해당 유형의 마이넘버 카드 인증서가 아님) 또는
                            `key_usage`(키로 서명할 수 없음). 체인이 유효한 경우 `null`입니다.
                    description: 인증서별 결과로, 판독된 인증서당 하나의 항목이 포함됩니다.
                  attributes:
                    type: object
                    nullable: true
                    description: >-
                      체인이 유효한 경우 서명 인증서에서 가져온 명의인 데이터입니다. 서명 인증서를 요청하지 않았거나 JPKI
                      인증 기관으로 체인이 연결되지 않은 경우 `null`입니다.
                    properties:
                      full_name:
                        type: string
                        nullable: true
                        description: 등록된 이름(주로 일본어 문자 체계).
                      date_of_birth:
                        type: string
                        format: date
                        nullable: true
                        description: 생년월일, `YYYY-MM-DD`입니다. 등록된 날짜가 불완전한 경우 `null`입니다.
                      gender:
                        type: string
                        nullable: true
                        enum:
                          - M
                          - F
                          - null
                        description: 등록되지 않은 경우 `M`, `F` 또는 `null`.
                      address:
                        type: string
                        nullable: true
                        description: 등록 주소입니다.
                      name_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          원래 문자가 표준 문자 집합을 벗어나 대체 문자로 변경된 `full_name`의 문자를 표시하는
                          위치 문자열입니다. 대체된 문자가 없는 경우 `null`입니다.
                      address_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          `name_substitute_characters`와 마찬가지로 `address`에서 대체 문자를
                          표시하는 위치 문자열입니다.
                  attributes_match_ocr:
                    type: boolean
                    nullable: true
                    description: >-
                      속성이 동일한 카드의 사진에서 판독한 데이터와 일치하면 `true`, 속성이 하나라도 다르면
                      `false`(`JPKI_AND_OCR_DATA_NOT_SAME`), `attributes`가
                      `null`인 경우를 포함하여 비교할 수 없는 경우 `null`입니다.
                  mismatched_attributes:
                    type: array
                    items:
                      type: string
                      enum:
                        - full_name
                        - date_of_birth
                        - gender
                        - address
                    description: >-
                      사진 데이터와 일치하지 않는 속성의 이름이며, 속성 값은 포함되지 않습니다. 비교한 모든 항목이 일치하면
                      비어 있습니다.
              portrait_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  칩에서 읽은 인물 사진의 사전 서명된 URL(ICAO DG2)입니다. JPKI 읽기(`chip_protocol:
                  "jpki"`) 및 건너뛴 단계의 경우 `null`입니다.
              signature_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  칩에 서명 이미지가 저장되어 있는 경우 칩에서 읽은 소지자 서명 이미지의 사전 서명된 URL(ICAO
                  DG7)입니다. JPKI 읽기(`chip_protocol: "jpki"`) 및 건너뛴 단계의 경우
                  `null`입니다.
              chip_data:
                type: object
                nullable: true
                description: >-
                  ICAO 칩의 Data Groups에서 파싱된 개인 데이터입니다. JPKI 판독(`chip_protocol:
                  "jpki"`) 및 건너뛴 단계의 경우 `null`입니다.
                properties:
                  document_type:
                    type: string
                  issuing_country:
                    type: string
                  document_number:
                    type: string
                  expiration_date:
                    type: string
                    format: date
                  first_name:
                    type: string
                  last_name:
                    type: string
                  birth_date:
                    type: string
                    format: date
                  gender:
                    type: string
                  nationality:
                    type: string
                  address:
                    type: string
                  place_of_birth:
                    type: string
              authenticity:
                type: object
                nullable: true
                description: >-
                  ICAO 수동적 인증: SOD 서명(`sod_integrity`) 및 데이터 그룹
                  해시(`dg_integrity`). `jpki` 아래에 증명을 보고하는 JPKI 판독의 경우 `null`입니다.
                properties:
                  sod_integrity:
                    type: boolean
                  dg_integrity:
                    type: boolean
              certificate_summary:
                type: object
                nullable: true
                description: >-
                  ICAO 문서 서명자 인증서의 요약 정보입니다. JPKI 판독(`chip_protocol: "jpki"`) 및
                  건너뛴 단계의 경우 `null`입니다.
                properties:
                  issuer:
                    type: string
                  subject:
                    type: string
                  serial_number:
                    type: string
                  not_valid_after:
                    type: string
                    format: date-time
                  not_valid_before:
                    type: string
                    format: date-time
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만(예:
                        `phone_verifications[].warnings` 내부의 `PHONE`), 결정
                        payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID
        liveness_checks:
          type: array
          nullable: true
          description: >-
            워크플로 그래프의 라이브니스 단계에서 생성된 **라이브니스 보고서 배열**입니다. 단일 `liveness` 객체가 아닌
            항상 JSON 배열입니다. 하나 이상의 라이브니스 단계에서 데이터가 생성될 때까지 `null`입니다. 각 항목은
            `node_id`, 기능 수준 `status`, `method`, `score`, `reference_image`,
            `video_url`, 선택 사항인 `age_estimation`, 세션 간 `matches[]`,
            `warnings[]`를 포함한 전체 보고서입니다.
          items:
            type: object
            description: 라이브니스 보고서 1건 — 단일 라이브니스 검사 1회에 대한 전체 보고서입니다.
            properties:
              node_id:
                type: string
                description: 이 보고서를 생성한 라이브니스 단계의 워크플로 그래프 노드 ID입니다.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  이 라이브니스 단계의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이 `In
                  Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
              method:
                type: string
                description: 라이브니스 감지에 사용된 방식
              score:
                type: number
                description: 라이브니스 검사의 신뢰도 점수
              reference_image:
                type: string
                format: uri
                description: 사용된 참조 이미지의 URL
              video_url:
                type: string
                format: uri
                description: 라이브니스 확인 동영상의 URL
              age_estimation:
                type: number
                description: 인물의 추정 연령
              matches:
                type: array
                description: >-
                  중복 얼굴 검색을 통해 발견된 유사한 얼굴 목록입니다(상위 일치 항목, 차단 목록/허용 목록 항목 우선). 각
                  항목의 `source`는 일치하는 얼굴의 출처를 나타냅니다. `session`(다른 인증 세션),
                  `imported`(벤더 사용자에 대해 업로드된 얼굴), `list_entry`(조직에서 관리하는 허용/차단
                  목록 얼굴), 또는 `retained_template`(`/v3/biometric-templates/` 아래에
                  나열된 사용자에게 저장된 이미지가 없는 생체 인식 템플릿)입니다. 세션이 아닌 출처의 경우
                  `session_id`, `session_number`, `status`, `api_service`는
                  `null`입니다. `imported` 일치 항목은 벤더 사용자 레코드의 `vendor_data`,
                  `verification_date` 및 벤더 사용자의 이름이 등록되어 있는 경우
                  `user_details`(`full_name`만 포함)를 계속 채웁니다. `retained_template`
                  일치 항목은 `vendor_user_id`, `vendor_data`,
                  `biometric_template_id`, `verification_date`를 채우는 반면 이미지 및 신원
                  필드는 `null`입니다. `list_entry` 일치 항목은 이들 모두를 `null`로 반환합니다.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        일치하는 얼굴의 세션 ID입니다. `source`가 `imported`, `list_entry` 또는
                        `retained_template`인 경우 `null`입니다.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: 두 이미지 간의 얼굴 유사도로, 0–100 범위로 제한됩니다.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        가져온 얼굴 및 보존된 템플릿 얼굴의 경우 일치하는 세션 또는 연결된 사용자의
                        `vendor_data`입니다.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        `imported` 및 `retained_template` 일치 항목과 사용자에 연결된 세션 일치
                        항목에 대한 연결된 User id입니다. 목록 항목 및 사용자가 없는 세션의 경우 `null`입니다.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        보존된 생체 인식 템플릿의 ID입니다. `source`가 `retained_template`일 때만
                        설정되며, 그 외의 경우 `null`입니다.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        일치하는 얼굴이 캡처된 시점 또는 보존된 템플릿이 생성된 시점입니다. 목록 항목의 경우
                        `null`입니다.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        일치하는 세션 또는 가져온 사용자 프로필의 신원 데이터입니다. `retained_template` 및
                        `list_entry` 일치의 경우 항상 `null`입니다.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        이미지 기반 대조를 위한 기준 이미지입니다. 보존된 템플릿에는 이미지가 포함되어 있지 않으므로
                        `retained_template` 대조의 경우 항상 `null`입니다.
                    status:
                      type: string
                      nullable: true
                      description: 일치하는 세션의 수명 주기 상태입니다. 비세션 소스의 경우 `null`입니다.
                    is_blocklisted:
                      type: boolean
                      description: 일치하는 얼굴이 차단 목록에 있는지 여부입니다.
                    is_allowlisted:
                      type: boolean
                      description: 일치하는 얼굴이 허용 목록에 있는지 여부입니다.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        일치하는 세션의 독립형 API 서비스입니다(예: `PASSIVE_LIVENESS`,
                        `FACE_MATCH`). 워크플로 세션 및 세션이 아닌 소스의 경우 `null`입니다.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        일치하는 얼굴의 출처: `session`, `imported`(사용자 얼굴 업로드),
                        `list_entry`(허용/차단 목록), 또는 `retained_template`(사용자에게 저장된
                        이미지가 없는 생체 인식 템플릿으로, `/v3/biometric-templates/` 아래 나열됨).
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만(예:
                        `phone_verifications[].warnings` 내부의 `PHONE`), 결정
                        payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID
              face_quality:
                type: number
                nullable: true
                description: 얼굴 이미지 품질 점수(0-100%). 패시브 라이브니스에서만 사용할 수 있습니다.
              face_luminance:
                type: number
                nullable: true
                description: 얼굴 휘도/밝기 점수(0-100%). 패시브 라이브니스에서만 사용할 수 있습니다.
        face_matches:
          type: array
          nullable: true
          description: >-
            워크플로 그래프의 얼굴 대조 단계에서 생성된 **얼굴 대조 보고서 배열**입니다. 단일 `face_match` 객체가 아닌
            항상 JSON 배열입니다. 하나 이상의 얼굴 대조 단계에서 데이터가 생성될 때까지 `null`입니다. 각 항목은
            `node_id`, 기능 수준 `status`, 유사도 `score`, `source_image`,
            `target_image`, `warnings[]`를 포함한 전체 보고서입니다.
          items:
            type: object
            description: 얼굴 대조 보고서 1건 — 전체 보고서입니다.
            properties:
              node_id:
                type: string
                description: 이 보고서를 생성한 얼굴 대조 단계의 워크플로 그래프 노드 ID입니다.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  이 얼굴 대조 단계의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이 `In
                  Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
              score:
                type: number
                description: 얼굴 대조의 신뢰도 점수
              source_image_session_id:
                type: string
                format: uuid
                nullable: true
                description: >-
                  원본(참조) 인물 사진이 저장된 세션 id입니다. 생체 인증 흐름에서 이는 세션 자체의 id입니다(제출된 인물
                  사진은 새 세션 아래에 저장됨). 원본 이미지가 동일한 세션의 신분증 인물 사진인 경우 `null`입니다.
              source_image:
                type: string
                format: uri
                description: 비교에 사용된 소스 이미지의 URL
              target_image:
                type: string
                format: uri
                description: 비교에 사용된 대상 이미지의 URL
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만(예:
                        `phone_verifications[].warnings` 내부의 `PHONE`), 결정
                        payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID
                description: 얼굴 대조 인증 경고
              face_coverage:
                type: object
                nullable: true
                description: >-
                  촬영된 이미지에서 눈, 입, 얼굴이 가려져 있는지 여부입니다. `GET
                  /v3/session/{sessionId}/decision/`에서만 반환되며, webhook payload에는
                  포함되지 않습니다. 가림 판독 결과가 없는 경우 `null`입니다.
                properties:
                  eyes:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false`는 판독 결과가 참고용 증거로만 사용되며 이에 따라 작동하는 경고가 없음을
                          의미합니다.
                      visibility_score:
                        type: number
                        nullable: true
                  mouth:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false`는 판독 결과가 참고용 증거로만 사용되며 이에 따라 작동하는 경고가 없음을
                          의미합니다.
                      visibility_score:
                        type: number
                        nullable: true
                  face:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false`는 판독 결과가 참고용 증거로만 사용되며 이에 따라 작동하는 경고가 없음을
                          의미합니다.
                      visibility_score:
                        type: number
                        nullable: true
        phone_verifications:
          type: array
          nullable: true
          description: >-
            **전화번호 인증 보고서 배열** — 단일 `phone` 객체가 아닌 항상 JSON 배열입니다. 하나 이상의 전화번호
            단계에서 데이터가 생성될 때까지 `null`입니다. 각 항목은 `node_id`, 기능 수준 `status`, 전화번호 및
            국가 메타데이터, `lifecycle[]`, `matches[]`, `warnings[]`를 포함한 전체 보고서입니다.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: 워크플로 그래프에서 이 전화번호 단계의 고유 식별자입니다.
              status:
                type: string
                description: >-
                  이 전화번호 인증 단계의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이
                  `In Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              phone_number_prefix:
                type: string
                description: 국가 전화번호 접두사
              phone_number:
                type: string
                description: 국가 접두사 없는 전화번호
              full_number:
                type: string
                description: 국가 접두사가 포함된 전체 전화번호
              country_code:
                type: string
                description: 두 글자 국가 코드(ISO 3166-1 alpha-2)
              country_name:
                type: string
                description: 전체 국가명
              carrier:
                type: object
                properties:
                  name:
                    type: string
                    description: 통신사 이름
                  type:
                    type: string
                    description: 전화 회선 유형(모바일, 유선 등)
              is_disposable:
                type: boolean
                description: 전화번호가 일회용 서비스의 번호인지 여부
              is_virtual:
                type: boolean
                description: 전화번호가 가상 번호인지 여부
              verification_method:
                type: string
                description: 전화번호 인증에 사용된 방식
              verification_attempts:
                type: integer
                description: 수행된 인증 시도 횟수
              verified_at:
                type: string
                format: date-time
                description: 전화번호가 인증된 시점의 타임스탬프
              lifecycle:
                type: array
                description: 전화번호 인증 수명 주기의 시간순 이벤트 목록입니다.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        이벤트 관련 payload입니다. 발송 이벤트는 `status`, `reason`,
                        `channel`, `actual_channel`을 포함하고, 전송 이벤트는 `channel`,
                        `status`를 포함하며, 코드 확인 이벤트는 `code_tried`, `status`를 포함하고,
                        최종 상태 이벤트는 `reason`을 포함합니다(보고할 이유가 없는 경우(예:
                        `PHONE_VERIFICATION_APPROVED`) `null`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        channel:
                          type: string
                          nullable: true
                        actual_channel:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              warnings:
                type: array
                description: 전화번호 인증과 관련된 경고 목록
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만(예:
                        `phone_verifications[].warnings` 내부의 `PHONE`), 결정
                        payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID
              matches:
                type: array
                description: >-
                  이 전화번호에 대해 발견된 일치 항목입니다. 각 일치 항목에는 `source`가 있습니다.
                  `session`(애플리케이션 내의 다른 인증 세션이 동일한 번호와 일치함,
                  `session_id`/`session_number`/`vendor_data`/`verification_date`와
                  함께 반환됨) 또는 `list_entry`(해당 번호가 조직에서 관리하는 허용/차단 목록에 있음 —
                  `/management-api/lists/overview` 참조). 세션 간 일치 항목은 서로 다른
                  `vendor_data`를 사용하며 최대 5개로 제한됩니다.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    phone_number:
                      type: string
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        이 일치 항목의 출처입니다. `session`은 애플리케이션의 다른 인증 세션이 이 값과 일치했음을
                        의미합니다. `list_entry`는 조직에서 관리하는 목록(허용 목록/차단 목록)과 값이 일치했음을
                        의미합니다. 해당 목록을 관리하는 방법은 `/management-api/lists/overview`의
                        관리 API 목록 개요를 참조하십시오.
              phone_intelligence:
                allOf:
                  - $ref: '#/components/schemas/PhoneIntelligence'
                description: 전화번호 인텔리전스 신호입니다. 이 번호에 대해 전화번호 인텔리전스 애드온이 실행된 경우에만 존재합니다.
              phone_social:
                allOf:
                  - $ref: '#/components/schemas/PhoneSocialFootprint'
                description: 전화번호의 소셜 풋프린트입니다. 해당 번호에 대해 소셜 풋프린트 애드온이 실행된 경우에만 존재합니다.
        email_verifications:
          type: array
          nullable: true
          description: >-
            **이메일 인증 보고서 배열** — 단일 `email` 객체가 아닌 항상 JSON 배열입니다. 하나 이상의 이메일 단계에서
            데이터가 생성될 때까지 `null`입니다. 각 항목은 `node_id`, 기능 수준 `status`, 이메일 주소, 유출
            데이터, `lifecycle[]`, `matches[]`, `warnings[]`를 포함한 전체 보고서입니다.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: 워크플로 그래프에서 이 이메일 단계의 고유 식별자입니다.
              status:
                type: string
                description: >-
                  이 이메일 인증 단계의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이 `In
                  Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              email:
                type: string
                description: 인증 중인 이메일 주소
              is_breached:
                type: boolean
                description: 알려진 데이터 침해 건에서 이메일이 발견되었는지 여부를 나타냅니다
              breaches:
                type: array
                description: 이 이메일이 발견된 알려진 유출 건 목록
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: 침해 사건의 이름
                    domain:
                      type: string
                      description: 침해 사고의 영향을 받은 도메인
                    logo_path:
                      type: string
                      description: 침해된 서비스 로고의 URL
                    breach_date:
                      type: string
                      format: date
                      description: 위반이 발생한 날짜
                    description:
                      type: string
                      description: 위반에 대한 설명
                    is_verified:
                      type: boolean
                      description: 유출 검증 여부
                    data_classes:
                      type: array
                      description: 유출 사건에서 노출된 데이터 유형
                      items:
                        type: string
                    breach_emails_count:
                      type: integer
                      description: 유출 피해를 입은 이메일 주소 수
              is_disposable:
                type: boolean
                description: 이메일이 일회용 제공업체에서 생성되었는지 여부를 나타냅니다
              is_undeliverable:
                type: boolean
                description: 이메일 주소의 전송 가능 여부를 나타냅니다
              verification_attempts:
                type: integer
                description: 이 이메일에 대한 인증 시도 횟수
              verified_at:
                type: string
                format: date-time
                description: 이메일이 인증된 시점의 타임스탬프
              warnings:
                type: array
                description: 이메일 인증과 관련된 경고 목록
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만(예:
                        `phone_verifications[].warnings` 내부의 `PHONE`), 결정
                        payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID
              lifecycle:
                type: array
                description: 이메일 인증 수명 주기의 시간순 이벤트 목록입니다.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        이벤트 관련 payload입니다. 발송 이벤트는 `status`, `reason`을 포함하고, 코드
                        확인 이벤트는 `code_tried`, `status`를 포함하며, 최종 상태 이벤트는
                        `reason`을 포함합니다(보고할 이유가 없는 경우(예:
                        `EMAIL_VERIFICATION_APPROVED`) `null`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              matches:
                type: array
                description: >-
                  이 이메일 주소에 대해 발견된 일치 항목입니다. 각 일치 항목에는 `source`가 있습니다.
                  `session`(애플리케이션 내의 다른 인증 세션이 동일한 이메일과 일치함,
                  `session_id`/`session_number`/`vendor_data`/`verification_date`와
                  함께 반환됨) 또는 `list_entry`(해당 이메일이 조직에서 관리하는 허용/차단 목록에 있음 —
                  `/management-api/lists/overview` 참조). 세션 간 일치 항목은 서로 다른
                  `vendor_data`를 사용하며 최대 5개로 제한됩니다.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    email:
                      type: string
                      format: email
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        이 일치 항목의 출처입니다. `session`은 애플리케이션의 다른 인증 세션이 이 값과 일치했음을
                        의미합니다. `list_entry`는 조직에서 관리하는 목록(허용 목록/차단 목록)과 값이 일치했음을
                        의미합니다. 해당 목록을 관리하는 방법은 `/management-api/lists/overview`의
                        관리 API 목록 개요를 참조하십시오.
              email_intelligence:
                allOf:
                  - $ref: '#/components/schemas/EmailIntelligence'
                description: 이메일 인텔리전스 신호입니다. 이 주소에 대해 이메일 인텔리전스 애드온이 실행된 경우에만 표시됩니다.
              email_social:
                allOf:
                  - $ref: '#/components/schemas/EmailSocialFootprint'
                description: 주소의 소셜 풋프린트입니다. 해당 주소에 대해 소셜 풋프린트 애드온이 실행된 경우에만 존재합니다.
        poa_verifications:
          type: array
          nullable: true
          description: >-
            **주소 증명(POA) 보고서 배열** — 단일 `poa` 객체가 아닌 항상 JSON 배열입니다. 하나 이상의 POA
            단계에서 데이터가 생성될 때까지 `null`입니다. 각 항목은 `node_id`, 기능 수준 `status`, 문서 파일
            URL, 발급자, 날짜, 파싱된 주소, `warnings[]`를 포함한 전체 보고서입니다.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: 워크플로 그래프 내 이 주소 증명 단계의 고유 식별자입니다.
              status:
                type: string
                description: >-
                  이 주소 증명 단계의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이 `In
                  Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              document_file:
                type: string
                format: uri
                description: 주소 증명 문서의 URL
              issuing_state:
                type: string
                description: 발급 국가의 두 글자 국가 코드
              document_type:
                type: string
                description: 주소 증명 문서 유형
              document_subtype:
                type: string
                nullable: true
                description: >-
                  감지된 경우 해당 `document_type` 내에서 주소 증명(POA) 문서의 보다 구체적인 분류입니다.
                  그렇지 않은 경우 `null`입니다.
              document_language:
                type: string
                description: 문서의 언어 코드
              document_metadata:
                type: object
                properties:
                  file_size:
                    type: integer
                    description: 문서 크기
                  content_type:
                    type: string
                    description: 문서의 콘텐츠 유형
                  creation_date:
                    type: string
                    format: date
                    description: 문서가 생성된 날짜
                  modified_date:
                    type: string
                    format: date
                    description: 문서가 수정된 날짜
                  overlay_manipulation:
                    type: object
                    nullable: true
                    description: >-
                      오버레이 텍스트 조작 의심에 대한 PDF 포렌식 분석입니다. 오버레이 조작 증거가 발견되지 않았거나
                      문서가 PDF가 아닌 경우 null입니다.
                    properties:
                      detected:
                        type: boolean
                        description: 오버레이 텍스트 조작 흔적이 감지되었는지 여부입니다.
                      analyzed:
                        type: boolean
                        description: PDF를 분석할 수 있었는지 여부입니다.
                      analysis_incomplete:
                        type: boolean
                        description: >-
                          파일 전체를 확인할 수 없는 경우에만 존재하며 참(true)입니다. 확인된 부분은 가능한 범위에서
                          그 결과를 유지하고, 문서는 검증되지 않은 텍스트 대체 경고를 표시합니다.
                      signals:
                        type: array
                        items:
                          type: string
                        description: >-
                          duplicate_font_subset 또는 glyph_fragmentation과 같이 감지된
                          포렌식 신호입니다.
                      manipulated_regions:
                        type: array
                        description: PDF 페이지 좌표 기준 위변조 의심 영역입니다.
                        items:
                          type: object
                          properties:
                            page:
                              type: integer
                            x:
                              type: number
                            'y':
                              type: number
                            width:
                              type: number
                            height:
                              type: number
                            page_width:
                              type: number
                            page_height:
                              type: number
                  creator:
                    type: string
                    nullable: true
                    description: 문서 메타데이터에 기록된 생성자 애플리케이션입니다.
                  producer:
                    type: string
                    nullable: true
                    description: PDF 메타데이터에 기록된 생성 소프트웨어입니다.
                  software:
                    type: string
                    nullable: true
                    description: 파일 메타데이터에 기록된 편집/처리 소프트웨어입니다.
                  encryption:
                    type: string
                    nullable: true
                    description: 문서가 암호화된 경우, 문서의 암호화 방식입니다.
                  is_signed:
                    type: boolean
                    nullable: true
                    description: PDF에 전자 서명이 포함되어 있는지 여부입니다.
                  is_tampered:
                    type: boolean
                    nullable: true
                    description: 서명 검증 결과 서명 후 파일이 수정되었는지 여부입니다.
                  signature_info:
                    type: object
                    nullable: true
                    description: 디지털 서명의 세부 정보(있는 경우)입니다.
                  exif_original_date:
                    type: string
                    nullable: true
                    description: 이미지 업로드의 EXIF 원본 촬영 날짜입니다.
                  exif_digitized_date:
                    type: string
                    nullable: true
                    description: 이미지 업로드의 EXIF 디지털화 날짜입니다.
                  processed_by_known_editor:
                    type: boolean
                    nullable: true
                    description: 파일 메타데이터에 알려진 문서 편집기로 처리된 이력이 표시되는지 여부입니다.
                  has_different_creation_mod_date:
                    type: boolean
                    nullable: true
                    description: 생성 날짜와 수정 날짜가 서로 다른지 여부(일반적인 위변조 신호)입니다.
                description: >-
                  업로드된 POA 문서에서 추출된 파일 포렌식 메타데이터입니다. 항상 아래 키가 포함됩니다(해당하지 않는 경우
                  값은 `null`입니다. 예: PDF의 EXIF 날짜). 메타데이터를 추출할 수 없는 경우 `null`입니다.
                nullable: true
              issuer:
                type: string
                description: 문서 발급 기관 이름
              issue_date:
                type: string
                format: date
                description: 문서가 발급된 날짜
              expiration_date:
                type: string
                format: date
                nullable: true
                description: 문서의 만료일(해당하는 경우)
              poa_address:
                type: string
                description: 주소 증명 문서의 원시 주소
              poa_formatted_address:
                type: string
                description: 주소 증명 문서의 포맷된 주소입니다.
              poa_parsed_address:
                type: object
                properties:
                  address_type:
                    type: string
                    description: 주소 유형(도로명, 거리 등)
                  street_1:
                    type: string
                    description: 주 도로 주소
                  street_2:
                    type: string
                    nullable: true
                    description: 보조 도로 주소
                  city:
                    type: string
                    description: 도시 이름
                  region:
                    type: string
                    description: 지역 또는 주 이름
                  country:
                    type: string
                    description: 두 글자 국가 코드
                  postal_code:
                    type: string
                    description: 우편번호
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                        description: 위도 좌표
                      longitude:
                        type: number
                        description: 경도 좌표
              name_on_document:
                type: string
                nullable: true
                description: >-
                  이름 일치 확인에 사용되는 POA 문서에서 추출한 계정 보유자/수신인 성명입니다. 이름을 추출할 수 없는 경우
                  `null`입니다.
              name_match_score_expected_details:
                type: number
                nullable: true
                description: >-
                  `name_on_document`와 세션 생성 시 제공된 예상 이름 간의 유사도 점수(0-100)입니다. 어느
                  한쪽이 누락된 경우 `null`입니다.
              name_match_score_id_verification:
                type: number
                nullable: true
                description: >-
                  `name_on_document`와 신분증 인증 단계에서 추출된 이름 간의 유사도 점수(0-100)입니다. 어느
                  한쪽이 누락된 경우 `null`입니다.
              expected_details_address:
                type: string
                nullable: true
                description: 인증을 위한 예상 원시 주소
              expected_details_formatted_address:
                type: string
                nullable: true
                description: 인증을 위한 서식화된 예상 주소
              expected_details_parsed_address:
                type: object
                description: 인증을 위한 파싱된 예상 주소 세부정보
              extra_fields:
                type: object
                description: 문서에서 추출한 추가 은행 및 연락처 세부 정보입니다.
                properties:
                  bank_account_number:
                    type: string
                    nullable: true
                  bank_iban:
                    type: string
                    nullable: true
                  bank_sort_code:
                    type: string
                    nullable: true
                  bank_routing_number:
                    type: string
                    nullable: true
                  bank_swift_bic:
                    type: string
                    nullable: true
                  bank_branch_name:
                    type: string
                    nullable: true
                  bank_branch_address:
                    type: string
                    nullable: true
                  document_phone_number:
                    type: string
                    nullable: true
                  additional_names:
                    type: array
                    items:
                      type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: 추가 주소 증명 파일
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만(예:
                        `phone_verifications[].warnings` 내부의 `PHONE`), 결정
                        payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID
              detected_codes:
                type: array
                description: >-
                  문서의 처리된 모든 페이지에서 감지된 QR 코드 및 바코드입니다. 발견되지 않으면 비어 있습니다. 위치는
                  식별되었으나 디코딩할 수 없는 QR 코드는 `parsed_payload: null`을 가집니다.
                items:
                  $ref: '#/components/schemas/DocumentAIDetectedCode'
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  이 주소 증명에 기재된 주소에 대한 주소 검증입니다. 문서에서 읽은 주소의 존재 여부 및 정규화된 형태를
                  나타냅니다(이후 `poa_address`를 수정해도 다시 실행되지 않음). 이 주소 증명 단계에서 주소 검증
                  추가 기능이 활성화되어 있고 업로드된 파일이 문서 확인을 통과한 경우에 제공되며, 그렇지 않으면
                  `null`입니다.
        document_ai_documents:
          type: array
          nullable: true
          description: >-
            **워크플로 노드별로 그룹화된 Document AI 보고서** — 항상 JSON 배열이며 단일 객체가 아닙니다. 최소
            하나의 Document AI 단계에서 데이터가 생성될 때까지 `null`입니다. `session_kind = user`일
            때만 표시됩니다. 각 항목은 집계된 `status`, `node_id`, 문서별 결과(구성된 필드 키를 키로 하는 추출된
            데이터)의 `items[]` 배열, 그리고 `warnings`를 포함하는 노드 그룹입니다.
          items:
            type: object
            description: 워크플로 노드별로 그룹화된 Document AI 결과입니다.
            properties:
              status:
                type: string
                description: 해당 노드의 집계된 Document AI 상태로, `items[]`에서 롤업됩니다.
                enum:
                  - Approved
                  - Declined
                  - In Review
                  - Not Finished
              node_id:
                type: string
                nullable: true
                description: 워크플로 그래프 내 이 Document AI 단계의 고유 식별자입니다.
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    node_id:
                      type: string
                      nullable: true
                      description: 이 문서를 생성한 워크플로 그래프 노드입니다.
                    document_key:
                      type: string
                      description: 이 파일이 해당하는 구성된 Document AI 문서의 키입니다.
                    original_filename:
                      type: string
                      nullable: true
                      description: 사용자가 업로드한 파일 이름입니다.
                    file_size:
                      type: integer
                      nullable: true
                      description: 바이트 단위의 파일 크기입니다.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: 업로드된 파일로 연결되는 유효 기간이 짧은 사전 서명된 링크입니다.
                    status:
                      type: string
                      enum:
                        - Approved
                        - Declined
                        - In Review
                        - Not Finished
                      description: 문서별 Document AI 상태입니다.
                    extracted_data:
                      type: object
                      additionalProperties: true
                      nullable: true
                      description: >-
                        Document AI가 추출한 값으로, 구성된 필드 `key`를 키로 합니다. 각 값은 문자열, 숫자
                        또는 `null`입니다.
                    detected_codes:
                      type: array
                      description: >-
                        처리된 모든 페이지에서 감지된 QR 코드 및 바코드입니다. 발견되지 않으면 비어 있습니다. 위치는
                        식별되었으나 디코딩할 수 없는 QR 코드는 `parsed_payload: null`을 가집니다.
                      items:
                        $ref: '#/components/schemas/DocumentAIDetectedCode'
                    fields:
                      type: array
                      description: 이 문서에 대해 구성된 추출 필드입니다.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: '`extracted_data`에서 키로 사용되는 안정적인 필드 키입니다.'
                          name:
                            type: string
                            description: 사람이 읽기 쉬운 필드 이름입니다.
                          instruction:
                            type: string
                            description: 모델에 표시되는 추출 지침입니다.
                          type:
                            type: string
                            enum:
                              - text
                              - number
                              - date
                            description: 추출된 필드의 예상 값 유형입니다.
                          required:
                            type: boolean
                            description: Whether this field is required.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        업로드된 문서에서 추출된 파일 포렌식 메타데이터(예: `is_tampered`)입니다. 아무것도
                        추출할 수 없는 경우 `null`입니다.
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        추출된 문서 필드와 다른 세션 데이터 간의 상호 대조 결과입니다. 교차 검사가 수행되지 않은 경우
                        `null`입니다.
                    created_at:
                      type: string
                      format: date-time
              warnings:
                type: array
                nullable: true
                items:
                  type: object
                description: 이 Document AI 노드에 대해 발생한 경고 로그입니다.
        questionnaire_responses:
          type: array
          nullable: true
          description: >-
            **설문지 응답 보고서 배열** — 단일 `questionnaire` 객체가 아닌 항상 JSON 배열입니다. 하나 이상의
            설문지 단계에서 데이터가 생성될 때까지 `null`입니다. 각 항목은 `node_id`, 설문지 메타데이터, 양식 요소가
            포함된 섹션, 사용자의 답변을 포함한 전체 보고서입니다.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: 워크플로 그래프에서 이 설문지 단계의 고유 식별자입니다.
              questionnaire_id:
                type: string
                description: 설문지의 고유 식별자
              title:
                type: string
                description: 설문지 제목
              description:
                type: string
                description: 설문지에 대한 설명
              languages:
                type: array
                items:
                  type: string
                description: 지원되는 언어
              default_language:
                type: string
                description: 기본 언어
              is_active:
                type: boolean
                description: 설문지가 활성 상태인지 여부
              is_simple_questionnaire:
                type: boolean
                description: 설문지가 단순 선형 양식(분기 그래프 없음)인지 여부입니다.
              questionnaire_group_id:
                type: string
                format: uuid
                nullable: true
                description: 버전 간에 유지되는 설문지 그룹의 고유 식별자입니다.
              version:
                type: integer
                nullable: true
                description: 응답한 설문지의 버전 번호입니다.
              published_at:
                type: string
                format: date-time
                nullable: true
                description: 이 설문지 버전이 게시된 타임스탬프입니다.
              sections:
                type: array
                items:
                  type: object
                  properties:
                    title:
                      type: string
                      nullable: true
                      description: 섹션 제목
                    description:
                      type: string
                      nullable: true
                      description: 섹션 설명
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          uuid:
                            type: string
                            description: 항목의 고유 식별자
                          value:
                            type: string
                            nullable: true
                            description: 설문지 그래프 내 이 양식 요소의 고정 노드 식별자입니다.
                          element_type:
                            type: string
                            description: 설문지 요소의 유형
                          is_required:
                            type: boolean
                            description: 항목이 필수인지 여부
                          title:
                            type: string
                            description: 항목의 제목
                          description:
                            type: string
                            nullable: true
                            description: 항목에 대한 설명
                          placeholder:
                            type: string
                            nullable: true
                            description: 플레이스홀더 텍스트
                          choices:
                            type: array
                            nullable: true
                            items:
                              type: object
                              properties:
                                label:
                                  type: string
                                value:
                                  type: string
                                requires_text_input:
                                  type: boolean
                                  description: 이 선택지에 추가 텍스트 입력이 필요한지 여부
                                  nullable: true
                              required:
                                - label
                                - value
                            description: 드롭다운 또는 단일 선택 요소의 선택지
                          max_files:
                            type: integer
                            description: 허용되는 최대 파일 수
                            nullable: true
                          answer:
                            type: object
                            description: 항목에 대해 제공된 답변
                            properties:
                              value:
                                type: string
                                nullable: true
                              text:
                                type: string
                                nullable: true
                              files:
                                type: array
                                items:
                                  type: string
                                nullable: true
                          required_if:
                            type: object
                            nullable: true
                            description: 해당 요소가 특정 답변에만 필요한 경우의 조건부 필수 규칙입니다.
                          repeatable_config:
                            type: object
                            nullable: true
                            description: 해당하는 경우, 반복 가능한 요소 그룹에 대한 구성입니다.
                        required:
                          - uuid
                          - value
                          - element_type
                          - is_required
                          - title
              status:
                type: string
                description: 설문지의 상태
        bank_verifications:
          type: array
          nullable: true
          description: >-
            사용자 인증 및 기업 확인(KYB)에 대한 은행 인증 단계별 한 항목씩의 은행 인증 결과입니다. 단계에서 결과가 생성될
            때까지 `null`입니다. 각 항목의 `method`는 계좌가 어떻게 인증되었는지를 나타냅니다:
            `open_banking`(은행 로그인) 또는 `account_lookup`(계좌 조회), 또는 `statement`나
            `microdeposits` 대체 수단, 그리고 시도가 평가되기 전에 사용자가 은행 없이 계속 진행한
            경우(`continued_without_bank`) `none`입니다. [은행 인증
            방법](/ko/core-technology/bank-verification/verification-methods)을
            참조하십시오.
          items:
            $ref: '#/components/schemas/BankVerificationResult'
        signatures:
          type: array
          description: >-
            사용자 인증 및 기업 확인(KYB)에 대한 서명자 및 서명 단계별 전자 서명 결과 항목입니다. 워크플로에 전자 서명 단계가
            있는 경우에만 표시되며, 서명자가 해당 단계에 도달할 때까지는 빈 배열입니다. [전자 서명
            보고서](/ko/core-technology/electronic-signature/report-electronic-signature)를
            참조하세요.
          items:
            $ref: '#/components/schemas/SignatureResult'
        aml_screenings:
          type: array
          nullable: true
          description: >-
            **AML 스크리닝 보고서 배열** — 단일 `aml` 객체가 아닌 항상 JSON 배열입니다. 하나 이상의 AML 단계에서
            데이터가 생성될 때까지 `null`입니다. 각 항목은 `node_id`, 기능 수준 `status`,
            `total_hits`, `entity_type`, `hits[]`, `score`, `screened_data`,
            `is_ongoing_monitoring_enabled` 및 `warnings[]`를 포함한 전체 보고서입니다.
          items:
            $ref: '#/components/schemas/AMLScreening'
        ip_analyses:
          type: array
          nullable: true
          description: >-
            **기기 및 IP 분석 보고서 배열** — 단일 `ip_analysis` 객체가 아닌 항상 JSON 배열입니다. 하나
            이상의 IP 분석 단계에서 데이터가 생성될 때까지 `null`입니다. 각 항목은 `node_id`, 기능 수준
            `status`, IP 및 지리적 위치 데이터, 기기 핑거프린트, `warnings[]`를 포함한 전체 보고서입니다.
            중복된 `(node_id, ip_address, device_fingerprint)` 항목은 서버 측에서 중복 제거됩니다.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: 워크플로 그래프 내 이 기기 및 IP 분석 단계의 고유 식별자입니다.
              status:
                type: string
                description: >-
                  이 기기 및 IP 분석 항목의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이
                  `In Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              device_brand:
                type: string
                description: 사용된 기기의 브랜드
              device_model:
                type: string
                description: 사용된 기기의 모델
              browser_family:
                type: string
                description: 사용된 브라우저 계열
              os_family:
                type: string
                description: 운영체제 제품군
              platform:
                type: string
                description: 플랫폼 유형(mobile, desktop 등)입니다.
              device_fingerprint:
                type: string
                nullable: true
                description: 고유 기기 핑거프린트 식별자
              ip_country:
                type: string
                description: IP에서 감지된 국가
              ip_country_code:
                type: string
                description: IP에서 가져온 두 글자 국가 코드
              ip_state:
                type: string
                description: IP에서 감지된 주/지역
              ip_city:
                type: string
                description: IP에서 감지된 도시
              latitude:
                type: number
                description: IP 위치의 위도 좌표
              longitude:
                type: number
                description: IP 위치의 경도 좌표
              ip_address:
                type: string
                description: 주소
              isp:
                type: string
                nullable: true
                description: 인터넷 서비스 제공업체
              organization:
                type: string
                nullable: true
                description: IP와 연결된 조직
              is_vpn_or_tor:
                type: boolean
                description: IP가 VPN 또는 Tor 네트워크에서 유래했는지 여부
              is_data_center:
                type: boolean
                description: IP가 데이터 센터에서 유래했는지 여부
              time_zone:
                type: string
                description: IP에서 감지된 시간대
              time_zone_offset:
                type: string
                description: 시간대 오프셋
              ip:
                type: object
                description: >-
                  이 항목의 IP 지리적 위치 및 신분증 문서 주소와 주소 증명(POA) 문서 주소까지의 대권 거리(km)입니다.
                  양쪽 중 어느 한쪽이라도 확인할 수 있는 위치가 없는 경우 거리는 `null`입니다.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: 좌표이며, 사용할 수 없는 경우 `null`입니다.
                  distance_from_id_document:
                    type: number
                    nullable: true
                    example: 23.4
                  distance_from_poa_document:
                    type: number
                    nullable: true
                    example: 12.3
              id_document:
                type: object
                description: >-
                  신분증 문서 주소에서 추출된 위치 및 IP 지리적 위치와 주소 증명(POA) 문서 주소까지의 거리(km)입니다.
                  문서 주소를 지오코딩할 수 없는 경우 `location`은 `null`입니다.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: 좌표이며, 사용할 수 없는 경우 `null`입니다.
                  distance_from_ip:
                    type: number
                    nullable: true
                    example: 23.4
                  distance_from_poa_document:
                    type: number
                    nullable: true
                    example: 18.7
              poa_document:
                type: object
                description: >-
                  주소 증명 문서에서 추출된 위치 및 IP 지리적 위치와 신분증 문서 주소까지의 거리(km)입니다. 세션에 POA
                  단계가 없거나 주소를 지오코딩할 수 없는 경우 `location`은 `null`입니다.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: 좌표이며, 사용할 수 없는 경우 `null`입니다.
                  distance_from_ip:
                    type: number
                    nullable: true
                    example: 12.3
                  distance_from_id_document:
                    type: number
                    nullable: true
                    example: 18.7
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만(예:
                        `phone_verifications[].warnings` 내부의 `PHONE`), 결정
                        payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID
              matches:
                type: array
                description: >-
                  이 항목의 IP 주소 또는 기기 식별자에 대해 발견된 교차 세션 일치 항목입니다. 모든 일치 항목은 동일한 값을
                  공유하는 애플리케이션 내의 다른 인증 세션(`source`는 항상 `session`)이며, 항상 현재 세션과
                  다른 벤더 사용자 / `vendor_data`에 속하고 수집기당 최대 5개로
                  제한됩니다(`device_fingerprint`는 독립적으로 제한되는 두 개의 수집기를 합산하므로 최대 10개
                  항목 가능). 각 항목에는 `match_source`, `confidence`, `match_mode`,
                  `device_info`, `location_info`가 포함되며, `recovery_similarity`,
                  `tls_ja4_corroborated`, `recovery_gate_reason` 키는
                  `match_source`가 `recovered_high`인 경우에만 존재합니다.
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: 일치하는 세션의 세션 ID입니다.
                    session_number:
                      type: integer
                      description: 일치하는 세션의 순차 번호입니다.
                    vendor_data:
                      type: string
                      nullable: true
                      description: 일치하는 세션의 `vendor_data`입니다. 현재 세션의 벤더 사용자와 항상 다릅니다.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: 일치하는 세션의 생성 일자(`YYYY-MM-DDTHH:MM:SSZ`).
                    match_type:
                      type: string
                      enum:
                        - ip_address
                        - device_fingerprint
                      description: 일치가 IP 주소 또는 기기 핑거프린트를 기준으로 이루어졌는지 여부
                    match_source:
                      type: string
                      enum:
                        - ip_address
                        - persistent_id
                        - legacy_fp
                        - recovered_high
                      description: >-
                        이 일치 항목에 도달한 방식: `ip_address`(공유 IP 주소 — 기기 신원 주장이 아닌
                        네트워크 공동 배치), `persistent_id`(저장된 정확한 지속적 기기 식별자),
                        `legacy_fp`(레거시 `didit-fp-*` 기기 지문 해시), 또는
                        `recovered_high`(신뢰도 높은 유사 지문 복구 적중). 신뢰도가 낮은 복구 후보는 위험
                        경고로만 표시되며 이 배열에는 절대 포함되지 않습니다.
                    matched_value:
                      type: string
                      nullable: true
                      description: >-
                        일치한 값입니다. 공유 IP 주소, 영구 기기 식별자 또는 레거시 지문 해시이며,
                        `recovered_high`의 경우 복구된 기기의 UUID입니다.
                    status:
                      type: string
                      description: 일치하는 세션의 수명 주기 상태입니다.
                    is_blocklisted:
                      type: boolean
                      description: 일치하는 값이 차단 목록에 있는지 여부입니다. 기기/IP 일치의 경우 현재 항상 `false`입니다.
                    api_service:
                      type: string
                      nullable: true
                      description: 일치하는 세션의 독립형 API 서비스입니다. 워크플로 세션의 경우 `null`입니다.
                    source:
                      type: string
                      enum:
                        - session
                      description: >-
                        기기/IP 일치의 경우 항상 `session`입니다. 모든 일치 항목은 애플리케이션의 또 다른 인증
                        세션입니다.
                    device_info:
                      type: object
                      description: 일치하는 세션에서 확인된 기기 세부 정보입니다.
                      properties:
                        device_brand:
                          type: string
                          nullable: true
                        device_model:
                          type: string
                          nullable: true
                        browser_family:
                          type: string
                          nullable: true
                        os_family:
                          type: string
                          nullable: true
                        platform:
                          type: string
                          nullable: true
                        device_fingerprint:
                          type: string
                          nullable: true
                    location_info:
                      type: object
                      description: 일치하는 세션에서 확인된 네트워크 및 지리적 위치 세부 정보입니다.
                      properties:
                        ip_address:
                          type: string
                          nullable: true
                        ip_country:
                          type: string
                          nullable: true
                        ip_country_code:
                          type: string
                          nullable: true
                        ip_state:
                          type: string
                          nullable: true
                        ip_city:
                          type: string
                          nullable: true
                        is_vpn_or_tor:
                          type: boolean
                        is_data_center:
                          type: boolean
                    confidence:
                      type: number
                      minimum: 0
                      maximum: 1
                      description: >-
                        서버 측 식별 신뢰도로, `1 - P(false positive)`로 계산됩니다. 결정론적
                        일치(`persistent_id` 또는 하드웨어 기반 `recovered_high`)의 경우
                        `1.0`, `legacy_fp`의 경우 `0.5`, `ip_address`(동일 위치 기반에
                        불과함)의 경우 `0.0`이며, 확률적 복구 일치의 경우 확증에 따라 조정된 `1.0` 미만의
                        값입니다(TLS JA4 지문과 IP 국가가 독립적으로 일치할수록 높아짐).
                    match_mode:
                      type: string
                      enum:
                        - deterministic
                        - probabilistic
                        - co_occurrence
                      description: >-
                        일치의 근거 클래스: `deterministic`(물리적 기기간 충돌할 수 없는 정확한 저장 식별자
                        또는 하드웨어 기반 식별자), `probabilistic`(퍼지 핑거프린트 근거), 또는
                        `co_occurrence`(공유 네트워크 전용, 기기 신원 주장 없음).
                    recovery_similarity:
                      type: number
                      description: >-
                        핑거프린트 복구 일치의 코사인 유사도로, 소수점 4자리로 반올림됩니다. `match_source`가
                        `recovered_high`인 경우에만 제공됩니다.
                    tls_ja4_corroborated:
                      type: boolean
                      description: >-
                        두 관측값의 TLS JA4 핑거프린트가 일치하는지 여부(브라우저가 스푸핑할 수 없는 서버 관측
                        신호)입니다. `match_source`가 `recovered_high`인 경우에만 제공됩니다.
                    recovery_gate_reason:
                      type: string
                      description: >-
                        복구 일치가 오탐 하드 게이트를 통과한 이유입니다: `hardware_root_match`(하드웨어
                        기반 기기 식별자가 정확히 일치함) 또는 프로브 전용 증거를 허용하는 구성의 경우
                        `exact_composite_plus_<n>_families` /
                        `very_high_similarity_plus_<n>_families`입니다.
                        `match_source`가 `recovered_high`일 때만 존재합니다.
              browser_version:
                type: string
                nullable: true
              os_version:
                type: string
                nullable: true
              user_agent:
                type: string
                nullable: true
                description: 브라우저의 사용자 에이전트 문자열입니다.
              accept_language:
                type: string
                nullable: true
                description: 브라우저가 전송한 `Accept-Language` 헤더입니다.
              session_identifier:
                type: string
                nullable: true
                description: 인증이 실행된 브라우징 세션의 식별자입니다.
              session_age_ms:
                type: integer
                nullable: true
                description: 해당 단계가 실행되었을 때 해당 브라우징 세션의 경과 시간(밀리초)입니다.
              coords_accuracy:
                type: number
                nullable: true
                description: 기기가 보고한 좌표의 정확도 반경(미터 단위)입니다.
              raw_device_data:
                type: object
                nullable: true
                additionalProperties: true
                description: 해당 단계를 위해 수집된 원시 기기 신호입니다.
        geolocation_checks:
          type: array
          nullable: true
          description: >-
            위치 검증 단계마다 하나씩 생성되며, 각 단계에서 수락된 시도를 나타내는 **위치 검증 결과 배열**입니다. 위치 검증
            단계에서 데이터가 생성될 때까지 `null`입니다. 동일한 단계의 이전 시도는 `geolocation_attempts`에
            포함됩니다.
          items:
            $ref: '#/components/schemas/GeolocationCheck'
        geolocation_attempts:
          type: array
          nullable: true
          description: >-
            이 세션의 모든 위치 인증 단계 시도 내역(오래된 순)입니다. 재제출로 대체된 시도는 제외됩니다. 응답 속성을 통해
            `geolocation_checks`를 보류하는 워크플로는 이 목록도 보류합니다.
          items:
            $ref: '#/components/schemas/GeolocationAttempt'
        database_validations:
          type: array
          nullable: true
          description: >-
            **데이터베이스 검증 보고서 배열** — 단일 `database_validation` 객체가 아닌 항상 JSON
            배열입니다. 하나 이상의 DB 검증 단계에서 데이터가 생성될 때까지 `null`입니다. 각 항목은 `node_id`, 기능
            수준의 `status`, `screened_data`, 서비스별 `validations[]`(각각 레지스트리
            `source_data` 포함), `warnings[]`를 포함하는 전체 보고서입니다. `screened_data` 및
            `source_data` 필드는 국가별로 다릅니다:


            **ARG (아르헨티나)**: screened_data: {document_number, selfie, gender,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, date_of_death,
            tax_id, tax_id_type, face_match_score, sit_1_since, banks,
            last_position, highest_position, rejected_checks}. RENAPER 생체 얼굴 대조
            검증을 사용합니다. 신분증(예: 운전면허증)에 성별이 명시되어 있지 않은 경우 얼굴 분석 또는 이름에서 자동으로
            추론됩니다.


            **BOL (볼리비아)**: screened_data: {document_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, gender}


            **BRA (브라질)**: screened_data: {tax_number, first_name, last_name,
            date_of_birth}. 일치하는 CPF 조회가 성공한 경우 source_data에는 항상
            {identification_number, first_name, last_name, date_of_birth,
            lgpd_minor, minor_under_18, minor_under_16}이 포함됩니다. 성인 조회가 성공하면 해당
            플래그는 false로 설정됩니다. Receita Federal Consulta CPF 서비스는 LGPD로 인해 보류된
            데이터와 함께 HTTP 422(18세 미만 미성년자) 또는 451(16세 미만 미성년자)을 반환할 수 있습니다. 이러한
            경우 source_data는 미성년자 플래그를 적절하게 true로 설정하고, 업스트림 HTTP 상태를 포함하며, 필드 수준
            검증은 no_match가 됩니다. 전체 코드 목록은 데이터베이스 검증 결과 코드 참조 문서의 브라질 섹션을 확인하세요.


            **CHL (칠레)**: screened_data: {personal_number, first_name,
            last_name, date_of_birth}. source_data: {identification_number,
            first_name, last_name, date_of_birth, gender}


            **COL (콜롬비아)**: screened_data: {document_number, document_type,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, document_type}


            **CRI (코스타리카)**: screened_data: {personal_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **DOM (도미니카 공화국)**: screened_data: {personal_number}. source_data:
            {identification_number} (유효/무효만 반환)


            **ECU (에콰도르)**: screened_data: {personal_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, street, formatted_address, gender, nationality,
            education, marital_status, spouse, mother_name, father_name,
            profession}


            **ESP (스페인)**: screened_data: {personal_number, document_type,
            expiration_date, first_name, last_name}. source_data:
            {identification_number, first_name, last_name, full_name,
            document_type, expiration_date}


            **GTM (과테말라)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **HND (온두라스)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **MEX (멕시코)**: screened_data: {personal_number (CURP), first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name, date_of_birth, gender, nationality,
            curp_status, state_of_birth, doc_probatorio, registration_year,
            registration_state, registration_municipality, num_acta, crip,
            issuing_state_code, foreign_registry_number, folio_carta,
            folio_certificado}. RENAPO 주민등록 레지스트리를 사용합니다. 멕시코의 경우 추가적인 개별 검증으로
            별도의 INE 유효성 검사 서비스도 이용할 수 있습니다.


            **PAN (파나마)**: screened_data: {personal_number, selfie}.
            source_data: {identification_number}. SIB 생체 인식 검증을 사용합니다


            **PER (페루)**: screened_data: {personal_number (DNI), first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, paternal_name, maternal_name, verification_number,
            verification_letter}


            **PRY (파라과이)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **SLV (엘살바도르)**: screened_data: {document_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name}


            **URY (우루과이)**: screened_data: {personal_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name}


            **VEN (베네수엘라)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name, gender, date_of_birth, document_type}
          items:
            type: object
            properties:
              node_id:
                type: string
                description: 워크플로 그래프에서 이 데이터베이스 검증 단계의 고유 식별자입니다.
              issuing_state:
                type: string
                description: >-
                  정부/등록부 출처를 조회한 국가의 ISO 3166-1 alpha-3 코드입니다(예: `BRA`, `MEX`,
                  `ESP`, `NGA`, `IDN`). 데이터베이스 검증은 아메리카, 유럽, 아프리카, 중동 및 아시아 태평양
                  지역의 60+개국과 글로벌 다국가 출처를 지원합니다. 지원 범위는 정기적으로 확장되므로 이 값을 고정된
                  enum이 아닌 개방형 집합으로 처리하십시오.
              validation_type:
                type: string
                enum:
                  - one_by_one
                  - two_by_two
                  - not_enabled
                description: >-
                  결과가 검증된 방식입니다. `one_by_one`(단일 서비스 결과), `two_by_two`(두 개 이상의
                  개별 서비스에서 식별 번호를 독립적으로 완전 일치 확인), 또는 `not_enabled`(사용 가능한 일치
                  항목을 생성한 서비스가 없을 때 유지됨). 이 값은 절대 `null`이 될 수 없습니다. 전용 생체 인식 2x2
                  검증 모드는 현재 `ECU` 및 `PER`에서 지원됩니다.
              screened_data:
                type: object
                description: >-
                  검증에 사용된 입력 데이터입니다. 필드는 국가별로 다르며, 국가별 형식은 데이터베이스 검증
                  문서(`/core-technology/database-validation/overview`)를 참고하세요.
                properties:
                  last_name:
                    type: string
                  first_name:
                    type: string
                  tax_number:
                    type: string
                    description: '브라질: CPF(11자리)'
                  personal_number:
                    type: string
                    description: >-
                      칠레: RUT, 도미니카 공화국: Cédula(11자리), 에콰도르: Cédula(10자리), 스페인:
                      DNI/NIE, 멕시코: CURP(18자), 페루: DNI(8자리), 우루과이: CI
                  document_number:
                    type: string
                    description: >-
                      ARG: DNI, BOL: CI, COL: Cédula, GTM: DPI, HND: DNI, PAN:
                      Cédula, PRY: CI, SLV: DUI, VEN: Cédula
                  date_of_birth:
                    type: string
                    format: date
                  document_type:
                    type: string
                    description: 'COL: CC/CE/TI/NIT, ESP: ID/PASSPORT'
                  expiration_date:
                    type: string
                    format: date
                    description: ESP에 필수
              validations:
                type: array
                description: >-
                  검증 payload를 반환한 등기 서비스당 항목 1개입니다. 각 항목은 서비스(`service_id`,
                  `service_name`)를 식별하며 필드별 `validation` 비교 결과, 보고된 경우 서비스
                  `outcome_code` / `outcome_detail`, `source_data` 내 정규화된 등기 기록을
                  포함합니다.
                items:
                  type: object
                  properties:
                    service_id:
                      type: string
                      description: 이 검증 결과를 생성한 등기소 서비스의 식별자입니다.
                      example: bra_cpf
                    service_name:
                      type: string
                      description: 등록부 서비스의 사람이 읽기 쉬운 이름입니다.
                      example: Brazil - CPF status check
                    validation:
                      type: object
                      description: 필드 검증 결과입니다.
                      properties:
                        full_name:
                          type: string
                          description: >-
                            성명 일치 결과입니다(예: 'full_match', 'partial_match',
                            'no_match').
                        date_of_birth:
                          type: string
                          description: 생년월일 일치 결과입니다.
                        identification_number:
                          type: string
                          description: 식별 번호 일치 결과입니다.
                    outcome_code:
                      type: string
                      nullable: true
                      description: >-
                        등기부 조회의 기계 판독 가능한 결과(예: `MATCH`, `NO_MATCH`,
                        `PARTIAL_MATCH`, `INCONCLUSIVE`, 소스별 고유 코드). 서비스에서 보고할 때
                        표시됩니다.
                    outcome_detail:
                      type: string
                      nullable: true
                      description: 서비스에서 제공하는 경우 `outcome_code`에 대한 사람이 읽기 쉬운 설명입니다.
                    source_data:
                      type: object
                      description: >-
                        정부 데이터베이스에서 반환된 데이터입니다. 공통 필드: identification_number,
                        first_name, last_name, full_name, date_of_birth, gender.
                        국가별 추가 필드: BRA는 CPF 일치에 성공한 경우 항상 lgpd_minor,
                        minor_under_18, minor_under_16을 포함하며, LGPD에 따라 CPF 데이터가
                        보류될 때 업스트림 HTTP 상태 코드(HTTP 422/451)도 포함합니다. ECU는 street,
                        formatted_address, nationality, education,
                        marital_status, spouse, mother_name, father_name,
                        profession을 추가합니다. PER는 paternal_name, maternal_name,
                        verification_number, verification_letter를 추가합니다. ESP는
                        document_type, expiration_date를 추가합니다. VEN/COL은
                        document_type을 추가합니다.
                      additionalProperties: true
              errors:
                type: array
                description: >-
                  검증 중 등기부 서비스에서 반환된 오류이며, 각각 이를 생성한 `service_id` 태그가 지정됩니다.
                  **오류가 없는 경우 이 키는 완전히 생략됩니다.**
                items:
                  type: object
                  description: >-
                    있는 그대로 전개된 업스트림 서비스의 오류 객체(키는 서비스마다 다르며 일반적으로 메시지/코드 및 공급자별
                    세부 정보 포함) 및 오류가 발생한 서비스를 식별하는 `service_id`입니다.
                  properties:
                    service_id:
                      type: string
                      nullable: true
                      description: 오류가 발생한 등기소 서비스의 식별자입니다.
                  additionalProperties: true
              match_type:
                type: string
                enum:
                  - no_match
                  - partial_match
                  - full_match
                nullable: true
                description: 조회된 서비스 전반에 걸친 종합 일치 결과입니다. 검증이 평가될 때까지 `null`입니다.
              status:
                type: string
                description: >-
                  이 데이터베이스 검증의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이 `In
                  Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은
                        일반적으로 해당 모듈과 일치하는 값을 사용하지만(예:
                        `phone_verifications[].warnings` 내부의 `PHONE`), 결정
                        payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: 이 경고를 생성한 워크플로 그래프 노드 ID
                description: 데이터베이스 검증과 관련된 경고입니다.
        database_validation_not_performed_reason:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            설정된 데이터베이스 검증에서 결과가 생성되지 않은 이유로, `{code, message}`와 컨텍스트 필드로 표시됩니다.
            해당 단계가 포함된 워크플로에서 `database_validations`가 `null`일 때만 표시되므로, "등기소가
            일치함을 확인함"과 "아무것도 실행되지 않음"을 구분할 수 있습니다. 그 외의 경우에는 `null`입니다.
          properties:
            code:
              type: string
              description: 기계 판독 가능한 고정 사유입니다.
            message:
              type: string
              description: 사람이 읽기 쉬운 설명입니다.
        reviews:
          type: array
          items:
            type: object
            properties:
              user:
                type: string
                description: >-
                  누가 검토를 수행했는지 나타냅니다. 일반적으로 콘솔 검토자의 식별자(이메일)이지만, API 키로 상태를
                  업데이트한 경우 값은 `"API Client"`이고 행위자를 확인할 수 없는 경우 `"Unknown"`이므로 이
                  필드를 이메일 주소로 파싱하지 마십시오.
              new_status:
                type: string
              comment:
                type: string
              created_at:
                type: string
                format: date-time
        assignee:
          type: object
          nullable: true
          description: 세션이 할당된 콘솔 검토자 또는 담당자가 없는 경우 `null`입니다.
          properties:
            email:
              type: string
              format: email
            assigned_at:
              type: string
              format: date-time
              nullable: true
        waiting_since:
          type: string
          format: date-time
          nullable: true
          description: >-
            세션이 검토 대기를 시작한 시점입니다. 세션이 `In Review` 상태이고 애플리케이션에서 검토 기한을 설정한 경우가
            아니면 `null`입니다.
        sla_due_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            검토가 완료되어야 하는 시점입니다. 세션이 `In Review` 상태이고 애플리케이션에서 검토 기한을 설정한 경우가 아니면
            `null`입니다.
        created_at:
          type: string
          format: date-time
          description: 세션이 생성된 타임스탬프(ISO 8601, UTC)입니다.
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            이 세션이 만료되도록 예약된 타임스탬프입니다. 생성 시 만료가 구성되었거나(`Approved` 상태가 되어 KYC 만료
            계산이 트리거된 경우) 사용자 인증(KYC) 세션에 설정됩니다. 만료가 구성되지 않은 세션 및 만료를 사용하지 않는
            종류(예: `expires_at`을 수신하지 않은 기업 확인(KYB) 세션)의 경우 `null`입니다.
        registry_checks:
          type: array
          nullable: true
          description: >-
            법인 등기부 확인입니다. `session_kind = business`인 경우에만 존재합니다. 각 항목은 전체 법인 등기부
            payload를 포함합니다.
          items:
            type: object
            description: >-
              법인 등기부 확인 1건 — 소유 구조 및 경고 정보가 보강된 전체 법인 등기부 payload입니다.
              `session_kind = business`인 경우에만 표시됩니다.
            properties:
              status:
                type: string
                description: 기능 라이프사이클 상태.
              node_id:
                type: string
                nullable: true
              data_resolved:
                type: boolean
              company:
                type: object
                description: >-
                  기업의 전체 등기부 payload(등기부 기록과 사용자가 제공하거나 콘솔에서 수정한 데이터를 병합한
                  결과)입니다.
                properties:
                  uuid:
                    type: string
                    format: uuid
                  node_id:
                    type: string
                    nullable: true
                  status:
                    type: string
                  registry_status:
                    type: string
                    nullable: true
                  data_resolved:
                    type: boolean
                  company_name:
                    type: string
                  registration_number:
                    type: string
                    nullable: true
                  country_code:
                    type: string
                    description: '설립 국가(ISO 3166-1 alpha-2, 예: `GB`, `DE`, `US`).'
                  region:
                    type: string
                    nullable: true
                    description: '해당하는 경우 ISO 3166-2 행정 구역 코드(예: 미국 주의 경우 `CA`, `NY`)입니다.'
                  company_type:
                    type: string
                    nullable: true
                  incorporation_date:
                    type: string
                    format: date
                    nullable: true
                  registered_address:
                    type: string
                    nullable: true
                  tax_number:
                    type: string
                    nullable: true
                  risk_level:
                    type: string
                    enum:
                      - LOW
                      - MEDIUM
                      - HIGH
                    nullable: true
                  verification_status:
                    type: string
                    nullable: true
                  is_from_registry:
                    type: boolean
                  fetch_status:
                    type: string
                    nullable: true
                  alternative_names:
                    type: string
                    nullable: true
                    description: 보고된 경우, 텍스트 형태의 대체명, 상호명, 이전 명칭 또는 원어 기업명입니다.
                  nature_of_business:
                    type: string
                    nullable: true
                  registered_capital:
                    type: string
                    nullable: true
                  registered_capital_amount:
                    type: string
                    format: decimal
                    nullable: true
                    description: >-
                      법인 등기부 제출 서류에서 파싱된 십진수 문자열 형식의 등록/자본금 금액(예:
                      `"100.00"`)입니다. 제공되지 않는 경우 `null`입니다.
                  registered_capital_currency:
                    type: string
                    nullable: true
                    description: >-
                      `registered_capital_amount`의 ISO 4217 통화 코드(예:
                      `"GBP"`)입니다. 사용할 수 없는 경우 `null`입니다.
                  website:
                    type: string
                    nullable: true
                  email:
                    type: string
                    format: email
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  legal_entity_identifier:
                    type: string
                    nullable: true
                  location_of_registration:
                    type: string
                    nullable: true
                  vat_number:
                    type: string
                    nullable: true
                    description: 호스팅 법인 등기부 단계에서 수집되었거나 이후 편집된 EU VAT 번호입니다.
                  vat_validation_status:
                    type: string
                    enum:
                      - valid
                      - invalid
                      - format_valid
                      - invalid_format
                      - could_not_validate
                      - not_applicable
                    description: >-
                      법인 등기부 제출 시 VAT 번호 또는 없는 경우 `tax_number`를 검증한 결과입니다.
                      `valid` / `invalid`: 해당 국가의 공식 등기소(EU VIES, 노르웨이, 스위스,
                      브라질, 콜롬비아, 코스타리카, 에콰도르, 파라과이, 폴란드의 경우 국내 VAT 등록부 포함)에서
                      결정됩니다. `format_valid` / `invalid_format`: 등기소 조회가 불가능한 경우
                      해당 국가의 서식 및 체크 디지트 규칙에 따라 결정됩니다. `could_not_validate`:
                      등기소를 사용할 수 없습니다. `not_applicable`: 번호가 없거나, 등기소나 규칙이 없는
                      국가이거나, 샌드박스 세션인 경우입니다.
                  vat_validated_number:
                    type: string
                    nullable: true
                    description: >-
                      출처가 인식하는 확인된 번호입니다(예: 프랑스 SIREN 또는 네덜란드 RSIN에서 파생된 VAT
                      번호). 확인이 실행되지 않은 경우 `null`입니다.
                  vat_validation_source:
                    type: string
                    nullable: true
                    enum:
                      - eu_vies
                      - pl_vat_white_list
                      - no_brreg
                      - ch_uid_register
                      - br_receita_federal
                      - co_rues
                      - cr_hacienda
                      - ec_sri
                      - py_dnit
                      - format_rules
                      - null
                    description: >-
                      `vat_validation_status`를 결정한 소스(공식 등기소 또는
                      `format_rules`)입니다. 검사가 실행되지 않은 경우 `null`입니다.
                  vat_validated_name:
                    type: string
                    nullable: true
                    description: >-
                      해당 번호를 검증한 소스에 등록된 이름(소스를 통해 공개된 경우). 상태가 `valid`인 경우에만
                      설정됩니다.
                  vat_validated_address:
                    type: string
                    nullable: true
                    description: >-
                      번호를 검증한 출처에 등록된 주소(출처에서 제공하는 경우)입니다. 상태가 `valid`일 때만
                      설정됩니다.
                  vat_checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: 검사의 타임스탬프입니다. 검사가 실행되지 않은 경우 `null`입니다.
                  financial_summary:
                    type: object
                    nullable: true
                  officers:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        designation:
                          type: string
                          nullable: true
                        role:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        first_name:
                          type: string
                          nullable: true
                          description: 등기소에서 명시적으로 보고한 경우의 이름입니다. 성명에서 유추되지 않습니다.
                        last_name:
                          type: string
                          nullable: true
                          description: 등기소에서 명시적으로 보고한 경우의 성입니다.
                        address:
                          type: string
                          nullable: true
                          description: 등기부에서 보고된 임원 주소입니다.
                        appointment_date:
                          type: string
                          nullable: true
                          description: 임원이 선임된 날짜입니다.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: 보고된 경우 선임 종료일입니다.
                          format: date
                        date_of_birth:
                          type: string
                          nullable: true
                          description: 법인 등기부에 보고된 전체 생년월일입니다. 출생 연도 또는 월만 알려진 경우 null입니다.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: 전체 날짜를 알 수 없는 경우를 포함하여, 법인 등기부에 보고된 출생 연도입니다.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: 법인 등기부에 보고된 출생 월입니다. 연도만 알려진 경우 null입니다.
                  beneficial_owners:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        roles:
                          type: array
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            등기소에서 보고한 소유 지분율의 하한값. 자유 형식 문자열(예: `"25.00"`,
                            `"50"`). 파싱된 숫자 값은 `effective_ownership_percent`를
                            사용하십시오.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            등기부에서 보고된 소유 구조 비율의 상한입니다. 자유 형식 문자열이며, 파싱된 숫자 값은
                            `effective_ownership_percent`를 사용하십시오.
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        effective_ownership_percent:
                          type: number
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: 보고된 전체 생년월일입니다.
                          format: date
                        appointment_date:
                          type: string
                          nullable: true
                          description: 신고된 선임일입니다.
                          format: date
                        shareholding:
                          $ref: '#/components/schemas/KYBRegistryShareholding'
                  addresses:
                    type: array
                    nullable: true
                    description: 등기부에 기재된 모든 주소의 표준 형식입니다. 기재된 내용이 없으면 null입니다.
                    items:
                      $ref: '#/components/schemas/KYBRegistryAddress'
                  industries:
                    type: array
                    nullable: true
                    description: 등기부에서 기업을 분류하는 표준 형태의 활동입니다. 명시된 활동이 없는 경우 null입니다.
                    items:
                      $ref: '#/components/schemas/KYBRegistryIndustry'
                  accounts:
                    type: object
                    nullable: true
                    additionalProperties: true
                    description: >-
                      제공되는 경우 법인 등기부 제출 날짜입니다. 연차 보고서 및 주주총회에는
                      last_annual_return_date 및 last_agm_date를 사용하며, 재무제표와는
                      구별됩니다.
                  registry_data:
                    $ref: '#/components/schemas/KYBRegistryData'
                  user_provided_data:
                    type: object
                    description: 최종 사용자가 확인하거나 수정한 데이터입니다.
                  confirmed_by_user_at:
                    type: string
                    format: date-time
                    nullable: true
                  last_console_edit_at:
                    type: string
                    format: date-time
                    nullable: true
                  is_editable:
                    type: boolean
                  ownership:
                    $ref: '#/components/schemas/KYBRegistryOwnership'
                  registry_tier:
                    type: string
                    nullable: true
                    description: >-
                      워크플로가 주문한 등기소 등급(`basic`, `shareholders` 또는 `ubo`)입니다.
                      `ownership.tier_requested`에도 포함됩니다.
                  registry_tier_delivered:
                    type: string
                    nullable: true
                    description: >-
                      등기부에서 제공되어 결제 청구된 등급입니다. `ownership.tier_delivered`에도
                      포함됩니다.
                  registry_ownership_status:
                    type: string
                    nullable: true
                    description: >-
                      `not_requested`, `pending`, `delivered`, `not_held` 또는
                      `unavailable`입니다. `ownership.status`에도 포함됩니다.
                  registry_monitoring:
                    type: object
                    nullable: true
                    description: 기업의 최신 등기부 모니터링 정보 또는 존재하지 않는 경우 `null`입니다.
                    properties:
                      uuid:
                        type: string
                        format: uuid
                      status:
                        type: string
                      unavailable_reason:
                        type: string
                        nullable: true
                      enrolled_at:
                        type: string
                        format: date-time
                        nullable: true
                      cancelled_at:
                        type: string
                        format: date-time
                        nullable: true
                      last_bill_date:
                        type: string
                        format: date
                        nullable: true
                      next_bill_date:
                        type: string
                        format: date
                        nullable: true
                      last_event_at:
                        type: string
                        format: date-time
                        nullable: true
                      events_count:
                        type: integer
                      watched_fields:
                        description: 모니터가 감시하는 기업 필드입니다.
              ownership_structure:
                $ref: '#/components/schemas/KYBOwnershipStructure'
              warnings:
                type: array
                items:
                  type: object
        key_people_checks:
          type: array
          nullable: true
          description: >-
            종합 주요 인물 확인입니다. `session_kind = business`인 경우에만 표시됩니다. 각 항목은 2개 버킷
            형태(`registry`, `submitted`, `ubo_kyc_summary`)를 사용합니다.
          items:
            type: object
            description: >-
              기업의 임원 및 실소유자(UBO)에 대한 종합 점검입니다. `registry` / `submitted` 형식을
              사용합니다. session_kind = business인 경우에만 표시됩니다.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              registry:
                type: object
                description: 법인 등기부 조회를 통해 발견된 당사자입니다.
                properties:
                  officers:
                    type: array
                    description: >-
                      등기부 확인을 통해 발견된 임원 목록으로, 각각에 대해 생성된 하위 KYC 세션 및 AML 스크리닝
                      상태가 포함되어 있습니다.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: 등기부에 기록된 임원의 성명입니다.
                        designation:
                          type: string
                          nullable: true
                          description: >-
                            등기부상 자유 형식 직책입니다(예: `Director`, `Company
                            Secretary`).
                        role:
                          type: string
                          enum:
                            - director
                            - non_executive_director
                            - secretary
                            - chairman
                            - ubo
                            - shareholder
                            - representative
                            - founder
                            - legal_advisor
                            - authorized_signatory
                            - trustee
                            - beneficiary
                            - settlor
                            - protector
                            - company_officer
                            - investor
                            - other
                          description: 정규화된 임원 역할입니다.
                        nationality:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: 임원이 선임된 날짜입니다.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: 보고된 경우 선임 종료일입니다.
                          format: date
                        is_active:
                          type: boolean
                        address:
                          type: string
                          nullable: true
                          description: 등기부에서 보고된 임원 주소입니다.
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            이 임원에 대해 실행된 AML 스크리닝의 상태입니다. AML 스크리닝이 실행되지 않은 경우
                            `null`입니다.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            이 임원을 위해 생성된 하위 KYC 세션의 원시 라이프사이클 상태입니다. 이는 축소된
                            승인됨/거부됨/대기 중 세트가 아닌 전체 세션 상태 enum입니다. 하위 KYC 세션이 없으면
                            `null`입니다.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: 하위 KYC 세션의 공유 가능한 URL입니다. 하위 세션이 없으면 `null`입니다.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            하위 KYC 세션의 세션 id입니다. 해당 인물의 전체 KYC 보고서를 가져오려면 동일한 결정
                            endpoint에 전달하십시오. 하위 세션이 없는 경우 `null`입니다.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            하위 세션 워크플로의 기본 워크플로 유형입니다(예: `kyc`). 그래프 기반 워크플로이거나
                            하위 세션이 없는 경우 `null`입니다.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: 자식 세션에서 사용한 워크플로 ID입니다. 자식 세션이 없으면 `null`입니다.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: 하위 세션 워크플로의 사람이 읽기 쉬운 라벨입니다. 설정되지 않은 경우 `null`입니다.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            하위 인증 세션의 기능별 진행 상황입니다(예: `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`). 하위 세션에
                            확인할 수 있는 기능 목록이 없으면 `null`입니다.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  기능 표시 이름(예: `ID_VERIFICATION`, `LIVENESS`,
                                  `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: 하위 세션 내부의 기능 수준 상태입니다.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            하위 세션의 인증된 개인에 대한 고정 내부 식별자입니다. 세션 간 연결에 유용합니다. 하위
                            세션이 없거나 사용자가 아직 확인되지 않은 경우 `null`입니다.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            하위 KYC 세션에 제시된 문서 유형(예: `P`, `ID`, `DL`)입니다. 하위 세션에
                            신분증 인증 결과가 나올 때까지는 `null`입니다.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: 하위 KYC 세션의 문서에서 추출한 국적입니다. 사용 가능해질 때까지 `null`입니다.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            하위 KYC 세션의 라이브니스 검사가 통과되었는지 여부입니다. 라이브니스 검사가 실행되지 않은
                            경우 `null`입니다.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            하위 KYC 세션이 `Approved` 상태에 도달한 시점입니다. 하위 세션이 다른 상태인
                            동안에는 `null`입니다.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            해당 인물의 AML 일치 항목에서 도출된 카테고리별 요약입니다. 일치 항목이 없으면
                            `null`입니다.
                          properties:
                            sanctions:
                              type: string
                              enum:
                                - match
                                - clear
                            pep:
                              type: string
                              enum:
                                - match
                                - clear
                            adverse_media:
                              type: string
                              enum:
                                - match
                                - clear
                            warnings:
                              type: string
                              enum:
                                - match
                                - clear
                        kyc_notification_sent_at:
                          type: string
                          nullable: true
                          description: >-
                            이 인물의 하위 세션에 대해 마지막으로 전송된 인증 초대 알림의 ISO 8601
                            타임스탬프입니다. 전송된 내역이 없으면 `null`입니다.
                        first_name:
                          type: string
                          nullable: true
                          description: 등기소에서 명시적으로 보고한 경우의 이름입니다. 성명에서 유추되지 않습니다.
                        last_name:
                          type: string
                          nullable: true
                          description: 등기소에서 명시적으로 보고한 경우의 성입니다.
                        date_of_birth:
                          type: string
                          nullable: true
                          description: 법인 등기부에 보고된 전체 생년월일입니다. 출생 연도 또는 월만 알려진 경우 null입니다.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: 전체 날짜를 알 수 없는 경우를 포함하여, 법인 등기부에 보고된 출생 연도입니다.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: 법인 등기부에 보고된 출생 월입니다. 연도만 알려진 경우 null입니다.
                  beneficial_owners:
                    type: array
                    description: >-
                      등기부 조회를 통해 확인된 실소유자로, 각각에 대해 생성된 하위 KYC 세션 및 AML 스크리닝 상태
                      정보가 포함됩니다.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: 실소유자의 성명(법인 UBO의 경우 회사명).
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: 보고된 전체 생년월일입니다.
                          format: date
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        roles:
                          type: array
                          description: '이 소유자가 보유한 역할 이름(예: `["ubo", "shareholder"]`).'
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            등기소에서 보고한 소유 지분율의 하한값. 자유 형식 문자열(예: `"25"`,
                            `"25-50%"`). 파싱된 숫자 값은
                            `effective_ownership_percent`를 사용하십시오.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            등기부에서 보고된 소유 구조 비율의 상한입니다. 자유 형식 문자열이며, 파싱된 숫자 값은
                            `effective_ownership_percent`를 사용하십시오.
                        is_active:
                          type: boolean
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            이 실소유자에 대해 실행된 AML 스크리닝의 상태입니다. AML 스크리닝이 실행되지 않은 경우
                            `null`입니다.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            이 실소유자를 위해 생성된 하위 KYC 세션의 원시 라이프사이클 상태입니다. 이는 축소된
                            승인됨/거부됨/대기 중 세트가 아닌 전체 세션 상태 enum입니다. 하위 KYC 세션이 없으면
                            `null`입니다.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: 하위 KYC 세션의 공유 가능한 URL입니다. 하위 세션이 없으면 `null`입니다.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            하위 KYC 세션의 세션 id입니다. 해당 인물의 전체 KYC 보고서를 가져오려면 동일한 결정
                            endpoint에 전달하십시오. 하위 세션이 없는 경우 `null`입니다.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            하위 세션 워크플로의 기본 워크플로 유형입니다(예: `kyc`). 그래프 기반 워크플로이거나
                            하위 세션이 없는 경우 `null`입니다.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: 자식 세션에서 사용한 워크플로 ID입니다. 자식 세션이 없으면 `null`입니다.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: 하위 세션 워크플로의 사람이 읽기 쉬운 라벨입니다. 설정되지 않은 경우 `null`입니다.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            하위 인증 세션의 기능별 진행 상황입니다(예: `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`). 하위 세션에
                            확인할 수 있는 기능 목록이 없으면 `null`입니다.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  기능 표시 이름(예: `ID_VERIFICATION`, `LIVENESS`,
                                  `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: 하위 세션 내부의 기능 수준 상태입니다.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            하위 세션의 인증된 개인에 대한 고정 내부 식별자입니다. 세션 간 연결에 유용합니다. 하위
                            세션이 없거나 사용자가 아직 확인되지 않은 경우 `null`입니다.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            하위 KYC 세션에 제시된 문서 유형(예: `P`, `ID`, `DL`)입니다. 하위 세션에
                            신분증 인증 결과가 나올 때까지는 `null`입니다.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: 하위 KYC 세션의 문서에서 추출한 국적입니다. 사용 가능해질 때까지 `null`입니다.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            하위 KYC 세션의 라이브니스 검사가 통과되었는지 여부입니다. 라이브니스 검사가 실행되지 않은
                            경우 `null`입니다.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            하위 KYC 세션이 `Approved` 상태에 도달한 시점입니다. 하위 세션이 다른 상태인
                            동안에는 `null`입니다.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            해당 인물의 AML 일치 항목에서 도출된 카테고리별 요약입니다. 일치 항목이 없으면
                            `null`입니다.
                          properties:
                            sanctions:
                              type: string
                              enum:
                                - match
                                - clear
                            pep:
                              type: string
                              enum:
                                - match
                                - clear
                            adverse_media:
                              type: string
                              enum:
                                - match
                                - clear
                            warnings:
                              type: string
                              enum:
                                - match
                                - clear
                        kyc_notification_sent_at:
                          type: string
                          nullable: true
                          description: >-
                            이 인물의 하위 세션에 대해 마지막으로 전송된 인증 초대 알림의 ISO 8601
                            타임스탬프입니다. 전송된 내역이 없으면 `null`입니다.
                        child_beneficial_owners:
                          type: array
                          description: >-
                            법인 UBO의 경우: 등기부에서 추출한 원시 객체 형태의 소유 법인 자체 실소유자입니다. 해당
                            사항이 없는 경우 빈 배열입니다.
                          items:
                            type: object
                        effective_ownership_percent:
                          type: number
                          nullable: true
                          description: >-
                            파싱된 숫자 소유 구조 백분율 — 가능한 경우 최댓값, 그렇지 않은 경우 최솟값입니다. 두
                            경계값 모두 파싱할 수 없는 경우 `null`입니다.
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: 신고된 선임일입니다.
                          format: date
              submitted:
                type: object
                description: 주요 인물 워크플로 중 기업 관리자가 제출한 당사자입니다(source=USER인 BusinessParty 행).
                properties:
                  parties:
                    type: array
                    items:
                      type: object
                      description: 주요 인물 워크플로를 통해 기업 관리자가 제출한 당사자입니다(source=USER).
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        source:
                          type: string
                          enum:
                            - USER
                          description: >-
                            여기서는 항상 `USER`입니다. 이 버킷에는 주요 인물 워크플로에서 최종 사용자가 입력하거나
                            확인한 당사자만 포함됩니다(등기부에서 발견된 인물은 `registry` 아래에 표시됨).
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        email:
                          type: string
                          format: email
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                          description: 개인의 경우 국적, 기업 당사자의 경우 법인 설립 국가입니다.
                        phone_number:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          format: date
                          nullable: true
                        position:
                          type: string
                          nullable: true
                          description: 자유 형식 직함/직책입니다(개인 전용).
                        custom_fields:
                          type: object
                          description: >-
                            이 당사자에 대해 수집된 워크플로 정의 커스텀 필드입니다. 키는 워크플로의 주요 인물 필드
                            디스크립터에 의해 정의됩니다.
                        is_active:
                          type: boolean
                        is_skipped:
                          type: boolean
                          description: >-
                            최종 사용자가 이 당사자에 대한 인증을 건너뛴 경우 true입니다(역할에서 건너뛰기를 허용하는
                            경우에만 가능).
                        requires_verification:
                          type: boolean
                          description: >-
                            역할 설정 및 소유권 임계값을 기반으로 이 당사자에게 하위 KYC/KYB 하위 세션이 필요한
                            경우 true입니다.
                        roles:
                          type: array
                          description: >-
                            이 당사자가 보유한 모든 역할이며, 각 역할마다 고유한 소유 비율 및 의결권 비율이
                            포함됩니다. 당사자 자체에는 스칼라 `role`/`ownership_percent`가
                            없습니다.
                          items:
                            type: object
                            properties:
                              role:
                                type: string
                                enum:
                                  - director
                                  - non_executive_director
                                  - secretary
                                  - chairman
                                  - ubo
                                  - shareholder
                                  - representative
                                  - founder
                                  - legal_advisor
                                  - authorized_signatory
                                  - trustee
                                  - beneficiary
                                  - settlor
                                  - protector
                                  - company_officer
                                  - investor
                                  - other
                              ownership_percent:
                                type: number
                                nullable: true
                              voting_percent:
                                type: number
                                nullable: true
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            확인이 필요한 개인 당사자의 하위 KYC 세션 ID입니다. 그렇지 않은 경우
                            `null`입니다.
                        kyc_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: 하위 KYC 세션의 수명 주기 상태입니다. 하위 KYC 세션이 없으면 `null`입니다.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        kyb_sub_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            확인이 필요한 법인 당사자의 하위 KYB 하위 세션 ID입니다. 그렇지 않은 경우
                            `null`입니다.
                        kyb_sub_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: 하위 KYB 서브세션의 수명 주기 상태입니다. 서브세션이 없으면 `null`입니다.
                        kyb_sub_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: 하위 KYB 서브세션의 공유 가능한 URL입니다. 서브세션이 없으면 `null`입니다.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            하위 세션 워크플로의 기본 워크플로 유형입니다(KYC 세션 우선, 없으면 KYB 하위 세션으로
                            대체). 그래프 기반 워크플로이거나 하위 세션이 없는 경우 `null`입니다.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: 자식 세션에서 사용한 워크플로 ID입니다. 자식 세션이 없으면 `null`입니다.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: 하위 세션 워크플로의 사람이 읽기 쉬운 라벨입니다. 설정되지 않은 경우 `null`입니다.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            하위 인증 세션의 기능별 진행 상황입니다(예: `[{"feature":
                            "ID_VERIFICATION", "status": "Approved"}]`). 하위 세션에
                            확인할 수 있는 기능 목록이 없으면 `null`입니다.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  기능 표시 이름(예: `ID_VERIFICATION`, `LIVENESS`,
                                  `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: 하위 세션 내부의 기능 수준 상태입니다.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            하위 세션의 인증된 개인에 대한 고정 내부 식별자입니다. 확인되지 않은 경우
                            `null`입니다.
              ubo_kyc_summary:
                type: object
                nullable: true
                description: 집계된 UBO KYC 진행 상황이며, 연결된 KYC 세션이 있는 UBO가 없는 경우 null입니다.
                properties:
                  total:
                    type: integer
                  approved:
                    type: integer
                  flagged:
                    type: integer
                    description: KYC가 거부됨 또는 검토 중인 UBO입니다.
                  pending:
                    type: integer
              warnings:
                type: array
                items:
                  type: object
        document_verifications:
          type: array
          nullable: true
          description: >-
            워크플로 노드별로 그룹화된 문서 검증 확인 항목입니다. `session_kind = business`인 경우에만
            표시됩니다.
          items:
            type: object
            description: 워크플로 노드별로 그룹화된 문서입니다. session_kind = business인 경우에만 표시됩니다.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    document_type:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: 파일이 분류된 상위 KYB 문서 그룹입니다. 분류되지 않은 동안에는 `null`입니다.
                    document_subtype:
                      type: string
                      nullable: true
                      description: >-
                        OCR로 감지된 구체적인 하위 유형입니다(예:
                        `CERTIFICATE_OF_INCORPORATION`, `SHAREHOLDER_REGISTRY`).
                        OCR이 문서를 확실하게 분류할 수 없는 경우 `UNKNOWN`입니다.
                    document_group:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        `document_type`의 별칭으로, `groups` 및 `required_groups`에서
                        사용하는 그룹 이름입니다.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        업로드된 파일로 연결되는 유효 기간이 짧은 사전 서명된 링크입니다. 아직 처리되지 않은 분석가 생성
                        문서 요청 자리표시자(`is_requested = true`)의 경우 `null`입니다.
                    original_filename:
                      type: string
                      nullable: true
                      description: 사용자 또는 분석가가 업로드한 파일 이름입니다.
                    file_size:
                      type: integer
                      nullable: true
                      description: 바이트 단위의 파일 크기입니다.
                    status:
                      type: string
                      enum:
                        - Not Finished
                        - Approved
                        - Declined
                        - In Review
                        - Resub Requested
                      description: 문서별 인증 상태입니다.
                    created_at:
                      type: string
                      format: date-time
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        OCR로 추출한 문서 필드와 등기부 회사 프로필 간의 상호 대조 결과입니다. `critical`,
                        `non_critical`, `people` 섹션이 포함된 객체로, 각 섹션은 필드 이름(예:
                        `company_name`, `registration_number`,
                        `incorporation_date`, `registered_address`)을
                        `{"document": "...", "registry": "...", "match": true,
                        "score": 0.97}`과 같은 비교 기록에 매핑합니다. 문서에 OCR 데이터가 없거나 비교할
                        등기부 회사가 없는 경우 `null`입니다.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        업로드된 기업 문서에서 추출한 메타데이터입니다. 메타데이터 추출에 성공하면 16개 키가 항상 모두
                        존재하며(파일 형식에 적용되지 않는 개별 값은 `null`), 아무것도 추출할 수 없는 경우 전체
                        객체가 `null`이 됩니다. PDF의 경우 `overlay_manipulation`에 포렌식
                        오버레이 텍스트 분석 결과가 포함됩니다.
                      properties:
                        file_size:
                          type: integer
                          nullable: true
                          description: 문서 크기입니다.
                        content_type:
                          type: string
                          nullable: true
                          description: 문서의 콘텐츠 유형입니다.
                        creation_date:
                          type: string
                          nullable: true
                          description: 문서가 생성된 날짜입니다.
                        modified_date:
                          type: string
                          nullable: true
                          description: 문서가 수정된 날짜입니다.
                        creator:
                          type: string
                          nullable: true
                          description: 파일 메타데이터(PDF `Creator`)에 기록된 작성 도구/사용자입니다.
                        producer:
                          type: string
                          nullable: true
                          description: 파일을 생성한 소프트웨어(PDF `Producer`)입니다.
                        software:
                          type: string
                          nullable: true
                          description: 파일 메타데이터에 기록된 편집 소프트웨어입니다.
                        encryption:
                          type: string
                          nullable: true
                          description: 파일이 암호화된 경우, 파일의 암호화 방식입니다.
                        is_signed:
                          type: boolean
                          nullable: true
                          description: 문서에 전자 서명이 포함되어 있는지 여부입니다.
                        is_tampered:
                          type: boolean
                          nullable: true
                          description: 전자 서명 검증에 실패했는지(서명 후 수정) 여부입니다.
                        signature_info:
                          type: object
                          nullable: true
                          description: 디지털 서명의 세부 정보(있는 경우)입니다.
                        exif_original_date:
                          type: string
                          nullable: true
                          description: 이미지 업로드의 EXIF 원본 촬영 날짜입니다.
                        exif_digitized_date:
                          type: string
                          nullable: true
                          description: 이미지 업로드의 EXIF 디지털화 날짜입니다.
                        processed_by_known_editor:
                          type: boolean
                          nullable: true
                          description: 메타데이터를 통해 파일이 알려진 이미지/PDF 편집기를 거쳤는지 여부를 나타냅니다.
                        has_different_creation_mod_date:
                          type: boolean
                          nullable: true
                          description: 생성 날짜와 수정 날짜가 다른지 여부입니다. 편집 신호일 수 있지만 확정적인 것은 아닙니다.
                        overlay_manipulation:
                          type: object
                          nullable: true
                          description: >-
                            오버레이 텍스트 조작 의심에 대한 PDF 포렌식 분석입니다. 오버레이 조작 증거가 발견되지
                            않았거나 문서가 PDF가 아닌 경우 null입니다.
                          properties:
                            detected:
                              type: boolean
                              description: 오버레이 텍스트 조작 흔적이 감지되었는지 여부입니다.
                            analyzed:
                              type: boolean
                              description: PDF를 분석할 수 있었는지 여부입니다.
                            analysis_incomplete:
                              type: boolean
                              description: >-
                                파일 전체를 확인할 수 없는 경우에만 존재하며 참(true)입니다. 확인된 부분은
                                가능한 범위에서 그 결과를 유지하고, 문서는 검증되지 않은 텍스트 대체 경고를
                                표시합니다.
                            signals:
                              type: array
                              items:
                                type: string
                              description: >-
                                duplicate_font_subset 또는 glyph_fragmentation과 같이
                                감지된 포렌식 신호입니다.
                            manipulated_regions:
                              type: array
                              description: PDF 페이지 좌표 기준 위변조 의심 영역입니다.
                              items:
                                type: object
                                properties:
                                  page:
                                    type: integer
                                  x:
                                    type: number
                                  'y':
                                    type: number
                                  width:
                                    type: number
                                  height:
                                    type: number
                                  page_width:
                                    type: number
                                  page_height:
                                    type: number
                    description:
                      type: string
                      nullable: true
                      description: 문서 요청에 대해 분석가가 제공한 라벨 또는 사유. 일반 업로드의 경우 `null`입니다.
                    is_requested:
                      type: boolean
                      description: 업로드를 대기 중인 분석가가 생성한 문서 요청 자리표시자인 경우 true입니다.
                    ocr_data:
                      type: object
                      nullable: true
                    is_console_upload:
                      type: boolean
                      description: >-
                        최종 사용자 흐름이 아닌 콘솔에서 업로드된 문서인 경우 true입니다. 콘솔 업로드는 기능 수준 집계
                        상태를 변경하지 않습니다.
                    is_confirmed:
                      type: boolean
                      description: >-
                        콘솔 업로드는 `false`로 시작하여 관리자가 확인하면 `true`로 전환됩니다. 최종 사용자
                        업로드는 항상 `true`입니다.
              groups:
                type: object
                description: >-
                  그룹 이름(예: legal_presence, ownership_structure)을 키로 하는 그룹별 진행률
                  카운터입니다.
                additionalProperties:
                  type: object
                  properties:
                    total:
                      type: integer
                    approved:
                      type: integer
                    pending:
                      type: integer
                    declined:
                      type: integer
                    in_review:
                      type: integer
                    other:
                      type: integer
                    missing:
                      type: integer
                      description: 아직 파일이 업로드되지 않은 요청된 플레이스홀더입니다.
              required_groups:
                type: array
                items:
                  type: string
              warnings:
                type: array
                items:
                  type: object
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            세션이 프로덕션 애플리케이션(`live`)에서 생성되었는지 또는 샌드박스 애플리케이션(`sandbox`)에서 생성되었는지
            여부입니다. 샌드박스 세션은 무료이며 완전히 시뮬레이션되고 크레딧이 청구되지 않습니다.
        sandbox_scenario:
          type: string
          nullable: true
          description: >-
            세션 생성 시 사용된 샌드박스 시나리오입니다. 라이브 세션 및 시나리오 없이 생성된 샌드박스 세션의 경우
            `null`입니다.
        resubmissions:
          type: array
          description: >-
            사용자 및 기업 세션에 대해 `include=resubmissions`가 포함된 경우에만 반환됩니다. 재제출 요청당 하나의
            항목이 오래된 순서대로 반환됩니다. 각 항목에는 요청 전 재제출된 단계가 반환한 결과가 포함되어 있으므로 이전 제출 내용을
            계속 읽을 수 있습니다. 세션을 삭제하면 모든 제출 내용이 삭제됩니다.
          items:
            type: object
            properties:
              number:
                type: integer
                description: 세션의 첫 번째 재제출인 경우 1, 두 번째 재제출인 경우 2 등입니다.
              created_at:
                type: string
                format: date-time
                description: 재제출이 요청된 시점입니다.
              previous_status:
                type: string
                description: 요청 직전의 세션 상태입니다.
              nodes:
                type: array
                description: 사용자에게 다시 전송된 워크플로 단계 목록입니다.
                items:
                  type: object
                  properties:
                    node_id:
                      type: string
                    feature:
                      type: string
              reasons:
                type: object
                nullable: true
                additionalProperties:
                  type: string
                description: '`node_id`를 키로 하는 각 단계별 제공된 사유입니다.'
              requested_by:
                type: object
                nullable: true
                description: 누가 재제출을 요청했는지 나타냅니다.
                properties:
                  name:
                    type: string
                  email:
                    type: string
                  type:
                    type: string
              results:
                type: object
                additionalProperties: true
                description: >-
                  재제출된 단계들이 요청 전에 반환했던 결과로, 이 응답의 현재 결과(`id_verifications`,
                  `nfc_verifications`, `liveness_checks`, `face_matches`,
                  `poa_verifications`, `phone_verifications`,
                  `email_verifications`, `aml_screenings`, `ip_analyses`,
                  `database_validations`, `questionnaire_responses`,
                  `document_ai_documents`, `geolocation_checks`, 기업 세션의 경우
                  `document_verifications` 포함)와 동일한 키 및 형태로 제공됩니다. 다시 전송된 단계의 키만
                  표시됩니다.
        biometric_consent:
          type: object
          nullable: true
          description: >-
            세션에서 얼굴 캡처 전 명시적인 생체 인식 동의가 필요했는지 여부, 그 이유 및 응답 증거입니다. 사용자 인증(KYC)
            세션 전용이며, 세션 webhook의 `decision`에도 동일한 객체가 포함됩니다. 얼굴 캡처가 없는 워크플로 등
            세션이 평가된 적이 없는 경우 `null`입니다. 기록된 값이 없는 필드는 `null`입니다. 4.10.0 미만의 네이티브
            SDK 또는 버전을 보고하지 않는 SDK는 동의 단계를 표시할 수 없습니다. 이 경우 얼굴 캡처는 이전과 동일하게
            실행되며, 동의가 필요했던 세션은 `status: "pending"`과 함께 `reason:
            "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`를 보고합니다. [생체 인식
            동의](/ko/getting-started/biometric-consent)를 참조하세요.
          properties:
            required:
              type: boolean
              description: >-
                Whether the session must collect explicit biometric consent.
                Never goes back to `false`.
            trigger:
              type: string
              nullable: true
              enum:
                - declared_state
                - ip_state
                - ip_unknown
                - document_issuer
                - forced
                - customer_collected
              description: >-
                동의가 필요한 이유 또는 동의가 충족된 방식입니다. `declared_state`: 적용 대상
                주(`user_state` 또는 `expected_details`의 미국 주소)를 선언했습니다.
                `ip_state`: 사용자의 IP가 적용 대상 주(일리노이, 텍사스, 콜로라도)에 있습니다.
                `ip_unknown`: 증거상 사용자가 미국에 있는 것으로 보이지만 주를 확인할 수 없습니다(IP가 주 정보 없이
                미국에 있거나 귀하의 세부 정보 또는 문서상 사용자가 미국에 있는 것으로 표시되지만 위치를 파악할 수 없음).
                `document_issuer`: 신분증이 적용 대상 주에서 발급되었습니다. `forced`: 애플리케이션의 모드가
                Always입니다. `customer_collected`: 세션 생성 시 `biometric_consent`를
                전달했습니다. 필요하지 않은 경우 `null`입니다.
            status:
              type: string
              enum:
                - not_required
                - pending
                - given
                - declined
              description: >-
                `not_required`; `pending`(필수이나 제공되지 않음: 개인이 아직 응답하지 않았거나
                `reason`에 수집되지 않은 이유가 표시됨); `given`; `declined`(거부가 기록되어 세션이
                `Declined`로 종료됨. 현재 Didit 화면에서는 거부 옵션을 제공하지 않음).
            given_at:
              type: string
              format: date-time
              nullable: true
              description: 동의가 이루어진 시점입니다. `customer_collected`의 경우 전송한 `given_at`입니다.
            declined_at:
              type: string
              format: date-time
              nullable: true
              description: 거부가 기록된 시점입니다.
            text_version:
              type: string
              nullable: true
              description: 사용자가 응답한 동의 텍스트의 버전 ID 또는 귀하가 보낸 동의 텍스트의 버전 ID입니다.
            text_hash:
              type: string
              nullable: true
              description: 표시된 언어 그대로의 정확한 동의 텍스트에 대한 SHA-256(16진수)입니다.
            locale:
              type: string
              nullable: true
              description: 동의 문구가 표시된 언어입니다.
            policy_url:
              type: string
              format: uri
              nullable: true
              description: 동의 단계에서 연결된 생체 인식 데이터 정책입니다.
            step:
              type: string
              nullable: true
              description: '해당 사용자가 응답했을 때 세션이 머물러 있던 워크플로 단계입니다(예: `LIVENESS`).'
            node_id:
              type: string
              nullable: true
              description: 해당 사용자가 응답했을 때 세션이 머물러 있던 워크플로 그래프 노드입니다.
            ip_address:
              type: string
              nullable: true
              description: 응답이 온 주소입니다.
            ip_country_code:
              type: string
              nullable: true
              description: 응답 IP 주소의 ISO 3166-1 alpha-2 국가 코드입니다.
            ip_state:
              type: string
              nullable: true
              description: '답변 IP의 ISO 3166-2 행정 구역(예: `US-IL`)입니다.'
            ip_city:
              type: string
              nullable: true
              description: 답변 IP의 도시입니다.
            user_agent:
              type: string
              nullable: true
              description: 답변 요청의 사용자 에이전트입니다.
            detected_ip_address:
              type: string
              nullable: true
              description: >-
                해당 요구 사항이 마지막으로 평가된 인물의 IP 주소입니다. 해당 인물이 다른 기기에서 응답한 경우
                `ip_address`와 다를 수 있습니다.
            detected_country_code:
              type: string
              nullable: true
              description: 감지된 IP 주소의 ISO 3166-1 alpha-2 국가 코드입니다.
            detected_state:
              type: string
              nullable: true
              description: 감지된 IP의 ISO 3166-2 행정 구역입니다.
            detected_city:
              type: string
              nullable: true
              description: 감지된 IP의 도시입니다.
            declared_state:
              type: string
              nullable: true
              description: >-
                귀하가 선언한 ISO 3166-2 행정 구역: `user_state` 또는 `expected_details` 내
                미국 주소의 주입니다.
            document_state:
              type: string
              nullable: true
              description: 신분증 캡처 시 판독된 신분증 발급 ISO 3166-2 행정 구역입니다.
            jurisdictions:
              type: array
              items:
                type: string
              description: >-
                해당 개인에게 생체 인식 법률이 적용되는 미국 주(USPS 코드, 예: `IL`)입니다. 증거상 해당 개인이 미국에
                위치하지만 주를 알 수 없는 경우 `US`입니다. 적용되는 항목이 없으면 비어 있습니다.
            retention_months:
              type: integer
              nullable: true
              description: >-
                `jurisdictions` 중 가장 짧은 생체 인식 보존 한도(월 단위)입니다. 적용되는 한도가 없는 경우
                `null`입니다.
            reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_UNSUPPORTED_SDK
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_UNSUPPORTED_SDK`: 동의가 필요했으나 4.10.0 미만의 네이티브
                SDK 또는 버전을 보고하지 않은 SDK가 동의 단계 없이 얼굴을 캡처함. `status`는 `pending`으로
                유지되거나, 해당 사용자가 이후 호스팅 플로우에서 동의한 경우 `given`이 됨.
                `BIOMETRIC_CONSENT_DECLINED`: 거부가 기록됨(SDK 사유를 대체함). 그 외에는
                `null`이며, 세션에 동의가 필요하지 않은 경우 항상 `null`임.
            decline_reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                기록된 거부로 인해 세션이 종료된 경우 `BIOMETRIC_CONSENT_DECLINED`, 그렇지 않은 경우
                `null`.
            face_data_deleted_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                거부로 인해 세션의 얼굴 이미지, 동영상 및 얼굴 템플릿이 삭제된 시점입니다. 거부가 기록되지 않은 경우
                `null`입니다.
        investigator:
          $ref: '#/components/schemas/InvestigatorBlock'
        biometric_retention:
          $ref: '#/components/schemas/BiometricRetention'
        fraud_check:
          type: object
          nullable: true
          additionalProperties: true
          description: Fraud Check API 호출 결과입니다. 다른 모든 세션의 경우 `null`입니다.
        full_session_video:
          type: string
          format: uri
          nullable: true
          description: 전체 세션 녹화본의 만료되는 URL입니다. 조직에서 전체 세션 동영상을 녹화하는 경우에만 반환됩니다.
        full_session_video_recorded_at:
          type: string
          format: date-time
          nullable: true
          description: 전체 세션 녹화가 생성된 시점입니다. 조직에서 전체 세션 동영상을 녹화하는 경우에만 반환됩니다.
    AddressValidationResult:
      type: object
      description: >-
        단일 Address Validation 결과입니다. 주소의 존재 여부 및 정규화된 형태를 나타냅니다. 주소만 확인하며, 결코
        주소를 개인과 연결하지 않습니다.
      required:
        - status
        - verification_level
        - address
        - formatted_address
        - latitude
        - longitude
      properties:
        status:
          type: string
          enum:
            - verified
            - partially_verified
            - not_verified
            - unavailable
          description: >-
            `verified`: 주소가 건물(또는 호수, 사서함) 단위까지 확인되었습니다. `partially_verified`:
            도로명 단위까지 또는 해당 지역에 대해 우편 참조 데이터가 보유한 가장 정밀한 수준까지만 확인되었습니다.
            `not_verified`: 지역 또는 도시만 일치했거나 아무것도 일치하지 않았습니다. `unavailable`: 검증을
            실행할 수 없었습니다(예: 참조 서비스가 응답하지 않음). 비용이 청구되지 않으며 인증에 영향을 주지 않습니다.
        verification_level:
          type: string
          nullable: true
          enum:
            - administrative_area
            - locality
            - thoroughfare
            - premise
            - delivery_point
            - null
          description: >-
            주소가 일치한 가장 정밀한 수준입니다. 일치하는 항목이 없거나 `status`가 `unavailable`인 경우
            `null`입니다.
        address:
          type: object
          nullable: true
          description: 정규화된 주소입니다. `status`가 `unavailable`인 경우 `null`입니다.
          properties:
            address_line_1:
              type: string
              nullable: true
              description: 해당 국가의 표기 방식에 따른 첫 번째 주소 라인입니다.
              example: 1600 Amphitheatre Pkwy
            address_line_2:
              type: string
              nullable: true
              description: 주소에 있는 경우 두 번째 배송 주소 라인(아파트, 건물 또는 주변 지역).
            city:
              type: string
              nullable: true
              example: Mountain View
            region:
              type: string
              nullable: true
              description: 주, 도 또는 지역입니다.
              example: CA
            postal_code:
              type: string
              nullable: true
              example: 94043-1351
            country:
              type: string
              nullable: true
              description: ISO 3166-1 alpha-2 국가 코드입니다.
              example: US
        formatted_address:
          type: string
          nullable: true
          description: 한 줄로 정규화된 주소입니다.
          example: 1600 Amphitheatre Pkwy, Mountain View CA 94043-1351
        latitude:
          type: number
          nullable: true
          example: 37.422022
        longitude:
          type: number
          nullable: true
          example: -122.08429
    PhoneIntelligence:
      type: object
      description: >-
        정규화된 전화번호 인텔리전스 블록입니다. 이 조회에 대해 인텔리전스 애드온이 실행된 경우에만 존재하며, 존재하는 경우 동일한 값을
        가진 `enrichment` 별칭으로도 노출됩니다.
      properties:
        score:
          type: number
          nullable: true
          description: 정규화된 0-100 위험 점수입니다. 높을수록 위험합니다.
        phone_type_risk:
          type: string
          nullable: true
          description: 점수에서 파생된 `Low`, `Medium` 또는 `High`.
        phone_trust_index:
          type: number
          nullable: true
          description: 점수가 높을수록 좋은 대시보드를 위한 점수를 반전한 값입니다.
        network_stability_index:
          type: number
          nullable: true
          description: 회선 네트워크의 안정성입니다.
        is_disposable:
          type: boolean
          nullable: true
          description: 번호가 일회용 또는 가상 번호로 보이는 경우 `true`입니다.
        is_ported:
          type: boolean
          nullable: true
          description: 번호의 통신사가 변경된 경우 `true`입니다.
        is_recently_ported:
          type: boolean
          nullable: true
          description: 최근에 번호 이동이 발생한 경우 `true`입니다.
        carrier_type:
          type: string
          nullable: true
          description: '조회 결과로 보고된 회선 분류입니다(예: `mobile`).'
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  신호의 안정적인 Didit 식별자입니다(예: `IR-5AC67A32`). 불투명한 값이므로 구문 분석하지 말고
                  그룹화 및 필터링에만 사용하세요.
              value:
                nullable: true
                description: >-
                  위험 플래그(예: `voip`, `leaked`, `disposable`, `spam_trap`)의 경우 해당
                  값: boolean, 수준 또는 날짜입니다. 점수가 산정된 사유 코드의 경우 null입니다.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: 신호가 위험을 높였는지 또는 신뢰도를 높였는지 여부입니다.
              message:
                type: string
                description: 신호에 대한 사람이 읽기 쉬운 영어 설명입니다.
              impact_level:
                type: string
                nullable: true
                description: >-
                  시그널이 점수를 얼마나 크게 변동시켰는지 나타내며, 예를 들어 `low`, `medium`, `high` 등이
                  있습니다.
          description: >-
            점수를 설명하는 신호 목록으로, 각각 안정적인 Didit 코드, 방향, 메시지 및 영향 수준을 포함합니다. 새로운 코드가
            점진적으로 추가될 수 있으므로 알 수 없는 코드를 거부하지 마세요.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        전화번호의 소셜 풋프린트(등록된 온라인 플랫폼)입니다. `enable_social`이 설정되고 확인이 완료된 경우에만 표시됩니다.
        반환된 데이터가 없는 경우 각 개수는 null일 수 있습니다. `profiles_registered: 0`은 플랫폼을 확인했으나
        해당 전화번호가 어떤 플랫폼에서도 발견되지 않았음을 의미하며, 이는 유효하고 요금이 청구되는 응답이자 흔히 나타나는 합성 신원
        신호입니다.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: 전화번호 등록이 확인된 플랫폼입니다.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: 가입 여부가 평가된 플랫폼입니다.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: 관련 이름을 반환한 플랫폼입니다.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: 프로필 사진을 반환한 플랫폼입니다.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: 존재가 감지된 커뮤니케이션 플랫폼입니다.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: 존재가 감지된 고유한 플랫폼 카테고리입니다.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: 복합 디지털 성숙도 지표(0-10)입니다.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: 프로필 정보량 지표, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: 무료 대 유료 플랫폼 비율(0-10)입니다.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: 무료 플랫폼에서의 등록 수입니다.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: 완전 유료 플랫폼에서의 등록 수입니다.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: 프리미엄(freemium) 플랫폼에서의 등록 수입니다.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: WhatsApp 프로필의 완성도입니다. 전화번호 전용이며 이메일의 경우 null입니다.
          example: Partial
        registered_platforms:
          type: array
          description: 가입이 확인된 플랫폼입니다.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: 부정적인 결과가 반환된 플랫폼입니다.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: 플랫폼 카테고리별 등록 수 및 비율입니다.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: 플랫폼에서 프로필 세부 정보를 제공하는 경우, 플랫폼을 키로 하는 플랫폼별 프로필 세부 정보입니다.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    EmailIntelligence:
      type: object
      description: >-
        정규화된 이메일 인텔리전스 블록입니다. 이 이메일에 대해 인텔리전스 애드온이 실행된 경우에만 존재하며, 존재하는 경우 동일한 값을
        가진 `enrichment` 별칭으로도 노출됩니다.
      properties:
        score:
          type: number
          nullable: true
          description: 정규화된 0-100 위험 점수입니다. 높을수록 위험합니다.
        deliverable:
          type: string
          nullable: true
          description: '전송 가능성 구간(예: `high`).'
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` 또는 `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: 숫자 침해 위험 지수입니다.
        is_recent_breach:
          type: boolean
          nullable: true
          description: 주소가 최근 유출 사고에 나타난 경우 `true`입니다.
        is_frequent_breached:
          type: boolean
          nullable: true
          description: 주소가 다수의 유출 사고에 나타난 경우 `true`입니다.
        is_disposable:
          type: boolean
          nullable: true
          description: 도메인이 일회용 이메일 제공업체인 경우 `true`입니다.
        is_free_domain:
          type: boolean
          nullable: true
          description: 도메인이 무료 메일 제공업체인 경우 `true`입니다.
        is_breached:
          type: boolean
          nullable: true
          description: 주소가 알려진 유출 사고에 나타난 경우 `true`입니다.
        no_of_breaches:
          type: number
          nullable: true
          description: 해당 주소가 포함된 알려진 유출 건수입니다.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  신호의 안정적인 Didit 식별자입니다(예: `IR-5AC67A32`). 불투명한 값이므로 구문 분석하지 말고
                  그룹화 및 필터링에만 사용하세요.
              value:
                nullable: true
                description: >-
                  위험 플래그(예: `voip`, `leaked`, `disposable`, `spam_trap`)의 경우 해당
                  값: boolean, 수준 또는 날짜입니다. 점수가 산정된 사유 코드의 경우 null입니다.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: 신호가 위험을 높였는지 또는 신뢰도를 높였는지 여부입니다.
              message:
                type: string
                description: 신호에 대한 사람이 읽기 쉬운 영어 설명입니다.
              impact_level:
                type: string
                nullable: true
                description: >-
                  시그널이 점수를 얼마나 크게 변동시켰는지 나타내며, 예를 들어 `low`, `medium`, `high` 등이
                  있습니다.
          description: >-
            점수를 설명하는 신호 목록으로, 각각 안정적인 Didit 코드, 방향, 메시지 및 영향 수준을 포함합니다. 새로운 코드가
            점진적으로 추가될 수 있으므로 알 수 없는 코드를 거부하지 마세요.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        이메일 주소의 소셜 풋프린트(등록된 온라인 플랫폼)입니다. `enable_social`이 설정되고 확인이 완료된 경우에만
        표시됩니다. 반환된 데이터가 없는 경우 각 개수는 null일 수 있습니다. `profiles_registered: 0`은 플랫폼을
        확인했으나 해당 이메일 주소가 어떤 플랫폼에서도 발견되지 않았음을 의미하며, 이는 유효하고 요금이 청구되는 응답이자 흔히 나타나는
        합성 신원 신호입니다.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: 이메일 주소 등록이 확인된 플랫폼입니다.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: 가입 여부가 평가된 플랫폼입니다.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: 관련 이름을 반환한 플랫폼입니다.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: 프로필 사진을 반환한 플랫폼입니다.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: 존재가 감지된 커뮤니케이션 플랫폼입니다.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: 존재가 감지된 고유한 플랫폼 카테고리입니다.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: 복합 디지털 성숙도 지표(0-10)입니다.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: 프로필 정보량 지표, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: 무료 대 유료 플랫폼 비율(0-10)입니다.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: 무료 플랫폼에서의 등록 수입니다.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: 완전 유료 플랫폼에서의 등록 수입니다.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: 프리미엄(freemium) 플랫폼에서의 등록 수입니다.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: WhatsApp 프로필의 완성도입니다. 전화번호 전용이며 이메일의 경우 null입니다.
          example: Partial
        registered_platforms:
          type: array
          description: 가입이 확인된 플랫폼입니다.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: 부정적인 결과가 반환된 플랫폼입니다.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: 플랫폼 카테고리별 등록 수 및 비율입니다.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: 플랫폼에서 프로필 세부 정보를 제공하는 경우, 플랫폼을 키로 하는 플랫폼별 프로필 세부 정보입니다.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    DocumentAIDetectedCode:
      type: object
      required:
        - type
        - page_number
        - position
        - x
        - 'y'
        - width
        - height
        - page_width
        - page_height
        - raw_payload
        - parsed_payload
      properties:
        type:
          type: string
          description: >-
            감지된 심볼로지(예: `QR_CODE`, `CODE_128`, `EAN_13`, `DATA_MATRIX` 또는
            `PDF_417`)입니다.
        page_number:
          type: integer
          minimum: 1
          description: 1부터 시작하는 페이지 번호입니다.
        position:
          type: array
          nullable: true
          description: >-
            렌더링된 페이지의 픽셀 좌표로 감지된 다각형(polygon)입니다. 신뢰할 수 있는 위치를 찾을 수 없는 경우
            `null`입니다.
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: integer
        x:
          type: integer
          nullable: true
          description: 렌더링된 페이지 픽셀 단위의 경계 상자 왼쪽 가장자리입니다.
        'y':
          type: integer
          nullable: true
          description: 렌더링된 페이지 픽셀 기준 경계 상자의 상단 가장자리입니다.
        width:
          type: integer
          nullable: true
          description: 렌더링된 페이지 픽셀 단위의 경계 상자 너비입니다.
        height:
          type: integer
          nullable: true
          description: 렌더링된 페이지 픽셀 단위의 경계 상자 높이입니다.
        page_width:
          type: integer
          description: 렌더링된 페이지 너비(픽셀 단위)입니다.
        page_height:
          type: integer
          description: 렌더링된 페이지 높이(픽셀 단위)입니다.
        raw_payload:
          type: string
          description: 사용 가능한 경우 base64 문자열 형식의 원시 디코더 payload이며, 그렇지 않은 경우 빈 문자열입니다.
        parsed_payload:
          nullable: true
          description: 디코딩된 문자열 또는 구조화된 값입니다. 코드가 감지되었으나 디코딩할 수 없는 경우 `null`입니다.
    BankVerificationResult:
      type: object
      description: >-
        사용자 인증 및 기업 확인(KYB)을 위한 단일 은행 인증 단계의 결과입니다. `method`는 계좌가 어떻게 인증되었는지를
        나타내며, `none`은 어떠한 시도도 평가되기 전에 사용자가 은행 없이 계속 진행했음을 나타냅니다.
        `continued_without_bank`는 평가된 시도 이후를 포함하여 사용자가 은행 없이 계속 진행했음을 나타냅니다. [은행
        인증 방법](/ko/core-technology/bank-verification/verification-methods) 및
        [사용자가 은행을 인증할 수 없는 경우](/ko/core-technology/bank-verification/fallbacks)를
        참고하세요.
      properties:
        schema_version:
          type: integer
          description: 이 결과 형식의 버전입니다. 현재는 `1`입니다.
        bank_verification_id:
          type: string
          format: uuid
          description: 이 결과의 ID입니다.
        node_id:
          type: string
          description: 이 결과가 속한 워크플로 노드입니다.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Expired
          description: 작업 및 상태 규칙이 적용된 후의 단계 판정 결과입니다.
        original_status:
          type: string
          nullable: true
          description: 수동 검토와 같은 후속 변경이 발생하기 전, 해당 단계에서 도달한 최초의 판정 결과입니다.
        method:
          type: string
          nullable: true
          enum:
            - open_banking
            - account_lookup
            - microdeposits
            - statement
            - none
          description: >-
            계좌가 인증된 방식입니다. `open_banking`(은행 로그인: 사용자가 해당 은행에 로그인함),
            `account_lookup`(계좌 확인: 사용자가 계좌 정보를 입력하고 은행이 명의를 확인함),
            `microdeposits` 또는 `statement`(계좌 거래 내역서 업로드). 평가된 시도가 있기 전에 사용자가 은행
            없이 계속 진행하여 인증된 계좌가 없는 경우에는 `none`입니다. 평가된 시도 후에는 해당 시도의 방법으로 유지됩니다.
            계좌가 평가될 때까지 및 워크플로가 반환 데이터를 축소하는 경우에는 `null`입니다. 워크플로 규칙은
            `bank.method`와 동일한 값을 읽습니다.
        provider:
          type: string
          nullable: true
          description: 연결을 실행한 경로의 키입니다. 계정이 어떻게 인증되었는지 확인하려면 이 키가 아닌 `method`를 읽으십시오.
        credential_source:
          type: string
          nullable: true
          enum:
            - native
            - byok
          description: >-
            `native`: Didit의 자체 경로이며 Didit 잔액으로 청구됩니다. `byok`: 자체 자격 증명으로 연결한
            마켓플레이스 제공업체입니다.
        route:
          type: object
          nullable: true
          description: 동의 전에 선택된 경로입니다. 이후에는 절대 변경되지 않습니다.
          properties:
            provider_key:
              type: string
              nullable: true
              description: 경로의 키입니다.
            credential_source:
              type: string
              enum:
                - native
                - byok
            is_fallback:
              type: boolean
              description: 연결할 수 없는 마켓플레이스 제공업체를 대신하여 Didit 자체 경로가 사용되었는지 여부입니다.
            provider_connection_id:
              type: string
              nullable: true
              description: '`byok`에 사용된 마켓플레이스 연동입니다.'
            requested_scopes:
              type: array
              items:
                type: string
              description: '연결에서 요청한 데이터입니다(예: `ownership` 또는 `balances`).'
        connection:
          type: object
          nullable: true
          description: 가장 최근 시도의 연결입니다. 첫 번째 시도 전에는 `null`입니다.
          properties:
            status:
              type: string
              enum:
                - pending
                - connected
                - cancelled
                - timeout
                - failed
                - unsupported
                - revoked
                - expired
            institution_id:
              type: string
              nullable: true
              description: 은행 ID입니다. 은행이 선택되지 않은 계좌 확인의 경우 `null`입니다.
            institution_name:
              type: string
              nullable: true
              description: 은행 이름입니다. 계좌 확인의 경우 `null`입니다.
            institution_country:
              type: string
              nullable: true
              description: 계정의 국가, ISO 3166-1 alpha-3입니다.
            oauth:
              type: boolean
              nullable: true
              description: >-
                은행 로그인이 OAuth 또는 앱 간(app-to-app) 방식으로 실행되었는지 여부입니다. 계좌 확인의 경우
                `null`입니다.
            connected_at:
              type: string
              format: date-time
              nullable: true
              description: 연결에 성공한 시점입니다.
            consent_expires_at:
              type: string
              format: date-time
              nullable: true
              description: 은행 로그인의 경우 은행 동의가 종료되는 시점입니다.
            last_refreshed_at:
              type: string
              format: date-time
              nullable: true
              description: 금융 데이터를 마지막으로 다시 읽은 시점입니다.
            attempts:
              type: integer
              description: 해당 사용자가 이 단계에서 시도한 횟수로, 모든 방법의 합산입니다.
            reason_code:
              type: string
              nullable: true
              description: >-
                연결이 단순히 `connected` 상태가 아닌 이유(예: `USER_CANCELLED`,
                `INSTITUTION_DOWN`, `ACCOUNT_NOT_FOUND`,
                `REFERENCE_IDENTITY_MISSING` 또는 `VERIFICATION_COMPLETED`).
        account:
          type: object
          nullable: true
          description: 평가된 계정입니다. 계정이 평가될 때까지 `null`입니다.
          properties:
            account_id_masked:
              type: string
              nullable: true
              description: 마스킹된 계좌번호입니다.
            iban_masked:
              type: string
              nullable: true
              description: 마스킹 처리된 IBAN입니다.
            sort_code:
              type: string
              nullable: true
              description: 영국의 소트 코드(Sort code)입니다.
            routing_number_masked:
              type: string
              nullable: true
              description: 마스킹된 라우팅 번호입니다.
            type:
              type: string
              nullable: true
              enum:
                - checking
                - current
                - savings
                - business
                - other
            subtype:
              type: string
              nullable: true
              description: 은행 고유의 계좌 하위 유형입니다.
            currency:
              type: string
              nullable: true
              description: 계정의 ISO 4217 통화입니다.
            holder_type:
              type: string
              nullable: true
              enum:
                - person
                - business
                - unknown
            holders_count:
              type: integer
              nullable: true
            is_joint:
              type: boolean
              nullable: true
            is_business:
              type: boolean
              nullable: true
        ownership:
          type: object
          nullable: true
          description: 계좌 명의인과 인증된 신원 정보를 비교한 방식입니다. 계좌가 평가될 때까지는 `null`입니다.
          properties:
            result:
              type: string
              enum:
                - match
                - partial_match
                - no_match
                - unknown
                - not_verifiable
              description: >-
                `partial_match`는 유사 일치입니다. `not_verifiable`: 은행에서 비교할 명의자 정보 없이
                응답했습니다. `unknown`: 증빙 자료를 읽을 수 없거나 비교할 신원 정보가 없습니다.
            reference_identity_source:
              type: string
              nullable: true
              description: >-
                소지자의 신원을 대조한 대상 단계입니다: `kyc`, `database_validation`,
                `expected_details`, `questionnaire`, `document_ai` 또는 `kyb`.
            name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Didit의 명의자 이름 점수입니다.
            provider_name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: 은행에서 반환한 경우, 은행 자체의 예금주명 점수입니다.
            address_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: 주소 일치 확인이 실행된 경우의 명의인 주소 점수입니다.
            email_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: 이메일 일치 확인이 실행된 경우의 명의인 이메일 점수입니다.
            phone_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: 전화번호 일치 확인이 실행된 경우의 명의인 전화번호 점수입니다.
            dob_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: 은행에서 제공한 경우의 명의인 생년월일 점수입니다.
            close_match:
              type: boolean
              nullable: true
              description: 이름이 근접 일치 범위에 속했는지 여부입니다.
            holder_confirmation:
              type: string
              nullable: true
              enum:
                - pending
                - confirmed
                - rejected
              description: 유사 이름 확인 요청을 받았을 때 해당 인물이 응답한 내용입니다. 요청받은 적이 없으면 `null`입니다.
            method:
              type: string
              nullable: true
              enum:
                - exact
                - token_set
                - nickname
                - transliteration
                - fuzzy
                - provider_only
                - microdeposits
              description: 점수를 산출한 성명 비교 방식입니다. 이는 인증 방법이 아니며, 인증 방법은 최상위 `method`를 확인하십시오.
            matched_holder_index:
              type: integer
              nullable: true
            holders:
              type: array
              items:
                type: object
              description: 은행이 나열한 각 명의자와 해당 점수입니다.
            owner_identity_available:
              type: boolean
              nullable: true
            evidence_freshness:
              type: string
              nullable: true
              enum:
                - live
                - cached
                - refreshed
            evaluated_at:
              type: string
              format: date-time
              nullable: true
              description: 판정이 계산된 시점입니다.
        financial_data:
          type: object
          description: 단계에서 읽은 금융 데이터입니다. 은행 로그인 시에만 읽습니다.
          properties:
            balances:
              type: object
              nullable: true
              description: '`balances` 스코프 포함 시.'
            transactions:
              type: object
              nullable: true
              description: '`transactions` 스코프 포함 시.'
            income:
              type: object
              nullable: true
              description: '`income` 스코프 포함 시.'
            categorization:
              type: object
              nullable: true
              description: 읽어온 거래에 대한 Didit의 분류입니다. 거래가 없으면 `null`입니다.
            not_collected:
              type: array
              items:
                type: string
                enum:
                  - balances
                  - income
                  - transactions
              description: >-
                단계에서 요청했으나 계좌를 인증한 방식에서 수집하지 않는 데이터입니다. 잔액, 거래 및 수입은 은행 로그인을
                통해서만 제공되므로 계좌 확인으로 인증된 계좌는 해당 항목을 여기에 나열합니다. 실패로 간주되지 않으며, 그렇지
                않은 경우 비어 있습니다.
        billing:
          type: object
          nullable: true
          properties:
            route:
              type: string
              enum:
                - native
                - byok
            billed:
              type: boolean
            marketplace_fee:
              type: string
              nullable: true
              description: '`byok`에 청구된 마켓플레이스 플랫폼 수수료입니다.'
            usage_type:
              type: string
              nullable: true
              description: >-
                요금이 청구된 사용 항목입니다. 은행 로그인 또는 계좌 확인의 경우 `bank_verification`, 이전에
                청구된 은행 시도가 없는 명세서 업로드의 경우 `bank_statement_upload`, 자체 공급자에 대한
                마켓플레이스 수수료의 경우 `bank_byok_fee`입니다. 청구된 내역이 없으면 `null`입니다.
        reference_identity:
          type: object
          nullable: true
          description: 명의인과 비교 대상이 된 신원 및 해당 출처입니다.
        signals:
          type: object
          nullable: true
          description: 단계에서 거래 내역을 읽었을 때 거래 내역에서 읽어온 계정 신호입니다.
        connection_abandoned:
          type: boolean
          nullable: true
          description: 인물이 은행 단계에서 이탈한 후 일치 항목 없이 단계가 종료되었는지 여부입니다.
        not_covered:
          type: boolean
          nullable: true
          description: >-
            해당 단계에서 인물의 은행 또는 국가에 연결할 수 없었는지 여부입니다. 국가 또는 은행을 확인할 수 있는 방식이 없어
            인물이 은행 없이 계속 진행한 경우에도 `true`가 됩니다.
        continued_without_bank:
          type: boolean
          description: >-
            해당 인물이 **Continue without your bank**를 선택하여 단계를 벗어났는지 여부입니다. 이 경우
            `continuation`에 이유가 표시됩니다. 계속 진행하기 전에 평가된 시도가 없었던 경우 `method`는
            `none`입니다. 명의자 불일치와 같이 평가된 시도가 있은 후에는 `method`가 해당 시도의 방식으로 유지되며 판정
            및 사유 코드가 유지됩니다. 워크플로가 반환하는 데이터를 좁히는 경우에도 반환됩니다.
        continuation:
          type: object
          nullable: true
          description: >-
            사용자가 은행 없이 계속 진행한 방식입니다. 그렇지 않은 경우에는 `null`입니다. 워크플로가 반환 데이터를 축소하는
            경우에도 `reason`은 계속 반환되며 다른 모든 키는 `null`입니다.
          properties:
            reason:
              type: string
              enum:
                - no_route
                - institution_unsupported
                - attempts_exhausted
                - person_choice
              description: >-
                사용자가 진행할 때 Didit이 파악한 이유입니다: `no_route`(해당 국가를 지원하는 은행 로그인 또는 계좌
                확인 수단이 없음), `institution_unsupported`(선택한 은행을 이 단계에서 사용할 수 없음),
                `attempts_exhausted`(모든 시도를 이미 소진했으며 진행 중인 시도가 없음), 또는
                `person_choice`(확인 방법이 있었으나 사용자가 진행하기로 선택함, 은행에 지금 연결할 수 없는 경우도
                포함). 평가된 시도로 단계가 이미 결정되지 않은 한, `no_route` 및
                `institution_unsupported`는 `bank_unsupported_action`을 따르고,
                `attempts_exhausted`는 `bank_attempts_exhausted_action`을 따르며,
                `person_choice`는 `bank_skipped_action`을 따릅니다.
            country:
              type: string
              nullable: true
              description: >-
                사용자가 인증을 진행하던 국가(ISO 3166-1 alpha-3)입니다. 국가를 선택하기 전에 계속 진행한 경우
                `null`입니다.
            offered:
              type: array
              items:
                type: string
                enum:
                  - statement
                  - microdeposits
              nullable: true
              description: >-
                사용자가 계속 진행할 때 해당 국가에서 사용자에게 제공한 다른 인증 방법 목록으로, 제공된 순서대로
                `statement`(거래내역서 업로드), `microdeposits`입니다. 제공된 방법이 없으면 비어 있습니다.
            institution_id:
              type: string
              nullable: true
              description: >-
                `institution_unsupported`의 경우 사용자가 이용할 수 없었던 은행의 ID: 사용자가 선택한 은행
                또는 마지막 시도가 종료된 은행입니다. Didit은 사용자의 기기가 아닌 자체 은행 목록에서 이를 가져오므로 해당
                목록에 없는 은행은 `null`입니다. 다른 모든 사유의 경우 `null`입니다.
            institution_name:
              type: string
              nullable: true
              description: >-
                `institution_unsupported`의 경우 해당 은행의 이름이며, `institution_id`와 동일한
                목록에서 가져옵니다. 해당 목록에 은행이 없거나 다른 모든 사유의 경우 `null`입니다.
            continued_at:
              type: string
              format: date-time
              nullable: true
              description: 사용자가 진행한 시점입니다.
        evidence_purged_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            `bank_evidence_retention_days`에 따라 은행 증빙이 삭제된 시점입니다. 그렇지 않은 경우
            `null`입니다.
        warnings:
          type: array
          items:
            type: string
          description: '정보 제공 코드(예: `holder_declared`)입니다. 경고 자체만으로는 상태가 변경되지 않습니다.'
        reason_codes:
          type: array
          items:
            type: string
          description: >-
            판정 결과가 그렇게 나온 이유(예: `OWNER_NAME_PARTIAL`)입니다. 여러 개가 적용될 수 있습니다.
            `NOT_COVERED`: 해당 국가 또는 은행을 확인할 수 있는 방법이 없어 은행 없이 진행함. `SKIPPED`: 확인
            방법이 있었으나 사용자가 은행 없이 진행하기로 선택함. 평가된 시도로 단계가 이미 결정된 경우에는 둘 다 추가되지
            않습니다.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    SignatureResult:
      type: object
      description: >-
        하나의 전자 서명 단계에 대한 서명자 1명의 결과입니다. [전자 서명
        보고서](/ko/core-technology/electronic-signature/report-electronic-signature)를
        참조하십시오.
      properties:
        id:
          type: string
          format: uuid
          description: 이 서명자의 증빙을 다운로드하거나 서명을 검증하려면 `signature_id`로 전달하세요.
        node_id:
          type: string
          description: 이를 생성한 워크플로 단계입니다.
        status:
          type: string
          enum:
            - intro
            - review
            - code
            - signing
            - signed
            - declined
          description: 해당 단계에서 서명자의 진행 위치입니다. `signed`인 경우에만 문서가 서명되었음을 의미합니다.
        verdict:
          type: string
          enum:
            - Not Finished
            - Approved
            - In Review
            - Declined
          description: 단계의 결과입니다. 경고가 발생하면 해당 규칙을 통해 설정되며, 커스텀 상태 규칙은 그 이후에 적용됩니다.
        level:
          type: string
          enum:
            - simple
            - aes
            - qes
          description: >-
            `simple`(기본값) 또는 `aes`입니다. `qes`(적격 전자 서명, QES)는 아직 제공되지 않는 부가
            기능입니다.
        format:
          type: string
          enum:
            - pdf
            - pades
          description: Simple 서명의 경우 `pdf`, Advanced(AES)의 경우 `pades`입니다.
        profile:
          type: string
          nullable: true
          description: 고급(AES) 서명이 생성되면 `PAdES-B-LT`, 그렇지 않은 경우 null.
        signer:
          type: object
          properties:
            name:
              type: string
              nullable: true
              description: >-
                서명자의 성명입니다. 인증된 세션 성명이 없는 Simple 등급(서명자가 직접 입력한 이름이며 인증되지 않음)을
                제외하고는 검증 완료된 성명(승인된 신분증 인증 또는 세션에서 추출)입니다.
            capacity:
              type: string
              enum:
                - self
                - company
            company:
              type: string
              nullable: true
            role:
              type: string
              nullable: true
              description: 신고된 주요 인물의 직함입니다.
            roles:
              type: array
              items:
                type: string
              description: 기업에 대해 신고된 주요 인물의 구조화된 역할입니다.
            identity_session_id:
              type: string
              format: uuid
              description: 서명자를 인증한 KYC 세션입니다.
        identity_used:
          type: object
          description: 서명이 기반으로 하는 인증된 신원입니다. 인증된 신원이 없는 Simple 서명의 경우 비어 있습니다.
          properties:
            session_id:
              type: string
              format: uuid
            kyc_id:
              type: string
              format: uuid
              nullable: true
            verified:
              type: boolean
            expected_name:
              type: string
              nullable: true
              description: 서명자가 일치해야 했던 이름입니다.
        certificate:
          type: object
          nullable: true
          description: 문서 서명에 사용된 인증서입니다. 서명되기 전까지는 `null`이며, 단순 서명의 경우 항상 `null`입니다.
          properties:
            issuer:
              type: string
            issued_to:
              type: string
            serial:
              type: string
              description: 일련번호(16진수)입니다.
            valid_from:
              type: string
              format: date-time
            valid_until:
              type: string
              format: date-time
        confirmation:
          type: object
          properties:
            channel:
              type: string
              nullable: true
              enum:
                - email
                - sms
              description: 코드가 없는 Simple 서명의 경우 `null`입니다.
            destination:
              type: string
              nullable: true
              description: 코드가 전송된 마스킹된 연락처입니다.
            confirmed_at:
              type: string
              format: date-time
              nullable: true
            attempts:
              type: integer
              description: 입력된 코드(올바른 코드 포함).
        timestamp:
          type: object
          nullable: true
          description: >-
            Didit에서 발급한 서명의 RFC 3161 타임스탬프입니다. 서명 전까지는 `null`이며, 단순 서명의 경우 항상
            `null`입니다.
          properties:
            time:
              type: string
              format: date-time
            qualified:
              type: boolean
              description: AES의 경우 항상 `false`입니다.
            valid:
              type: boolean
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: 해당 서명자 사본에 포함된 문서입니다. 서명된 파일을 다운로드하는 데 사용하세요.
              uuid:
                type: string
                format: uuid
                description: '`id`와 동일합니다.'
              title:
                type: string
              file_name:
                type: string
              pages:
                type: integer
                description: 서명된 문서의 페이지입니다. Word의 경우 변환된 PDF의 페이지입니다.
              size_bytes:
                type: integer
              sha256_original:
                type: string
                description: 서명자에게 표시된 문서의 SHA-256입니다.
              sha256_signed:
                type: string
                nullable: true
                description: 서명 완료 후 서명된 PDF의 SHA-256입니다.
              status:
                type: string
                enum:
                  - signed
                  - declined
                  - not_signed
                  - not_reached
                description: '`not_signed`: 열람했으나 서명하지 않았습니다. `not_reached`: 열람한 적이 없습니다.'
              opened_at:
                type: string
                format: date-time
                nullable: true
              read_at:
                type: string
                format: date-time
                nullable: true
                description: 해당 단계에서 요구할 때 서명자가 필드가 없는 문서의 끝에 도달한 시점입니다.
              read_to_end:
                type: boolean
              consented_at:
                type: string
                format: date-time
                nullable: true
                description: 서명자가 필드가 없는 문서에 동의했거나, 필드가 있는 문서의 필드 작성을 완료한 시점입니다.
              consent:
                type: boolean
              signed_file:
                type: string
                nullable: true
                description: >-
                  서명 완료된 PDF의 경로입니다. [서명된 문서
                  다운로드](/ko/sessions-api/electronic-signature/download-signed-document)를
                  참고하세요.
              mode:
                type: string
                enum:
                  - fields
                  - read_and_agree
                description: 필드가 있는 문서의 경우 `fields`, 없는 문서의 경우 `read_and_agree`.
              source_format:
                type: string
                enum:
                  - pdf
                  - docx
                description: '`pdf` 또는 Didit에서 PDF로 변환한 Word 문서의 경우 `docx`입니다.'
              conversion:
                type: object
                nullable: true
                description: PDF의 경우 `null`입니다. Word 문서의 경우 원본 파일 및 변환 파일입니다.
                properties:
                  from:
                    type: string
                    enum:
                      - docx
                  file_name:
                    type: string
                    description: 귀하의 원본 Word 파일 이름입니다.
                  sha256:
                    type: string
                    description: 원본 Word 파일의 SHA-256입니다.
                  size_bytes:
                    type: integer
                    description: 원본 Word 파일 크기입니다.
                  converter:
                    type: string
                    description: PDF를 생성한 변환기의 버전입니다.
              fields:
                type: array
                description: 문서의 필드와 해당 값입니다. 필드가 없는 문서의 경우 비어 있습니다.
                items:
                  $ref: '#/components/schemas/SignatureFieldResult'
        adopted_signature:
          type: object
          nullable: true
          description: 서명자가 서명 및 이니셜 필드에 적용한 서명과 이니셜입니다. 서명자가 적용하기 전까지는 `null`입니다.
          properties:
            method:
              type: string
              enum:
                - typed
                - drawn
              description: '`typed`: 필기체 스타일로 작성된 인증된 이름입니다. `drawn`: 손가락이나 마우스로 그린 것입니다.'
            font:
              type: string
              nullable: true
              description: 입력된 서명의 필기체 스타일입니다. 직접 그린 경우 `null`입니다.
            adopted_at:
              type: string
              format: date-time
        electronic_signature_consent_at:
          type: string
          format: date-time
          nullable: true
          description: 서명자가 검토 화면에서 문서 전자 서명에 동의한 시점입니다. 문서에 필드가 하나라도 있는 경우 설정됩니다.
        evidence_file:
          type: string
          nullable: true
          description: >-
            서명 완료 후 증빙 PDF의 경로입니다. [서명 증빙
            다운로드](/ko/sessions-api/electronic-signature/download-evidence)를
            참조하세요.
        warnings:
          type: array
          description: >-
            이 서명자에 대해 발생한 경고입니다. [전자 서명
            경고](/ko/core-technology/electronic-signature/warnings-electronic-signature)를
            참고하세요.
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - SIGNATURE_DECLINED
                  - SIGNATURE_OTP_FAILED
                  - SIGNATURE_NAME_MISMATCH
                  - SIGNATURE_IDENTITY_NOT_VERIFIED
                  - SIGNATURE_DOCUMENT_CHANGED
                  - SIGNATURE_FIELD_DATA_MISSING
              node_id:
                type: string
        validation:
          type: object
          nullable: true
          description: >-
            서명된 문서의 마지막 암호학적 검증입니다. 문서가 서명될 때까지 `null`입니다. Didit이 서명 결과를 확인할 수
            없는 경우 `{"valid": null, "reason":
            "signature_provider_outcome_unknown", "checked_at": ...}`이며
            `status`는 `signing`으로 유지됩니다. 서명되지 않은 것으로 처리하십시오.
          properties:
            valid:
              type: boolean
              nullable: true
              description: 모든 문서가 유효한 경우 `true`입니다. 서명 결과를 확인할 수 없는 경우 `null`입니다.
            reason:
              type: string
              description: '`valid`가 `null`일 때 설정됩니다: `signature_provider_outcome_unknown`.'
            checked_at:
              type: string
              format: date-time
            documents:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  checked_at:
                    type: string
                    format: date-time
                  valid:
                    type: boolean
                    description: 서명과 타임스탬프가 모두 유효하고 신뢰할 수 있는 경우 `true`입니다.
                  integrity:
                    type: boolean
                    description: 서명 이후 문서가 변경되지 않은 경우 `true`입니다.
                  trusted:
                    type: boolean
                    description: 서명 인증서가 신뢰할 수 있는 루트로 체인되는 경우 `true`입니다.
                  revoked:
                    type: boolean
                  trusted_list:
                    type: object
                    description: >-
                      EU 신뢰 목록(EU Trusted List) 확인입니다. AES의 경우: `{"status":
                      "not_applicable", "reason": "aes_not_qualified"}`.
                    properties:
                      status:
                        type: string
                      reason:
                        type: string
                  certificate:
                    type: object
                    nullable: true
                    description: >-
                      문서 서명에 사용된 인증서입니다. 서명되기 전까지는 `null`이며, 단순 서명의 경우 항상
                      `null`입니다.
                    properties:
                      issuer:
                        type: string
                      issued_to:
                        type: string
                      serial:
                        type: string
                        description: 일련번호(16진수)입니다.
                      valid_from:
                        type: string
                        format: date-time
                      valid_until:
                        type: string
                        format: date-time
                  timestamp:
                    type: object
                    nullable: true
                    description: >-
                      Didit에서 발급한 서명의 RFC 3161 타임스탬프입니다. 서명 전까지는 `null`이며, 단순
                      서명의 경우 항상 `null`입니다.
                    properties:
                      time:
                        type: string
                        format: date-time
                      qualified:
                        type: boolean
                        description: AES의 경우 항상 `false`입니다.
                      valid:
                        type: boolean
        declined_at:
          type: string
          format: date-time
          nullable: true
        declined_action:
          type: string
          enum:
            - DECLINE
            - REVIEW
            - NO_ACTION
        signed_at:
          type: string
          format: date-time
          nullable: true
        expires_at:
          type: string
          format: date-time
          description: 서명 링크의 작동이 중단되는 시점입니다.
        email_sent_at:
          type: string
          format: date-time
          nullable: true
        email_unavailable_reason:
          type: string
          nullable: true
        ip_address:
          type: string
          nullable: true
          description: 서명자가 코드를 요청했을 때의 IP 주소입니다.
        place:
          type: string
          nullable: true
          description: '수집되지 않음: 항상 `null`입니다.'
        place_unavailable_reason:
          type: string
          nullable: true
          enum:
            - not_collected
    AMLScreening:
      type: object
      properties:
        node_id:
          type: string
          description: 워크플로 그래프 내 이 AML 단계의 고유 식별자입니다.
        status:
          type: string
          description: >-
            이 AML 스크리닝의 기능 수준 상태입니다. 최상위 세션 `status`와는 독립적입니다. 개별 기능이 `In
            Review` 상태로 유지되는 동안에도 세션이 전체 결정에 도달할 수 있습니다.
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
        total_hits:
          type: integer
          description: 발견된 총 일치 항목 수
        entity_type:
          type: string
          description: '스크리닝 대상 엔티티 유형: 개인 또는 기업'
        hits:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  해당 적발 항목에 대한 Didit의 고유 식별자: `hit_` 뒤에 24자리의 16진수 문자가 붙습니다. 대상을
                  다시 스크리닝할 때 동일하게 일치된 엔터티는 동일한 `id`를 유지합니다. AML 적발 항목 검토
                  endpoint에 `hit_id`로 전달합니다.
              url:
                type: string
                format: uri
                description: 일치 항목의 출처 URL
              match:
                type: boolean
                description: 확인된 일치 항목인지 여부
              score:
                type: number
                format: float
                nullable: true
                minimum: 0
                maximum: 1
                description: >-
                  0-1 범위(예: `0.73`)의 지원 중단된 가중 일치 점수입니다. 대신
                  `match_score`(0-100)를 사용하십시오.
                deprecated: true
              target:
                type: boolean
                nullable: true
                description: >-
                  일치하는 엔티티가 등재의 직접적인 대상인지(관련 당사자가 아닌지) 여부입니다. 소스에서 이를 지정하지 않은 경우
                  `null`입니다.
              caption:
                type: string
                description: 일치 항목의 캡션 또는 제목
              datasets:
                type: array
                items:
                  type: string
                  enum:
                    - PEP
                    - PEP Level 1
                    - PEP Level 2
                    - PEP Level 3
                    - PEP Level 4
                    - Sanctions
                    - Adverse Media
                    - Warnings and Regulatory Enforcement
                    - Fitness and Probity
                    - SIP
                    - SIE
                    - Insolvency
                    - Other Lists
                description: >-
                  일치 항목이 발견된 데이터 세트 카테고리 목록입니다. 해당 엔티티가 정치적 주요 인물(PEP) 목록(등급
                  포함), 제재 데이터베이스, 부정적 언론 보도, 경고/규제 집행 또는 기타 컴플라이언스 데이터 세트에 나타났는지
                  여부를 나타냅니다. 엔티티 소스에 이러한 카테고리가 명시되지 않은 경우 `Other Lists`가 됩니다.
              features:
                type: object
                nullable: true
                description: 일치 항목의 추가 특징
              rca_name:
                type: string
                description: 해당되는 경우 RCA 이름
              last_seen:
                type: string
                format: date-time
                description: 일치가 마지막으로 발견된 날짜
              risk_view:
                type: object
                properties:
                  crimes:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  countries:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  categories:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  custom_list:
                    type: object
              first_seen:
                type: string
                format: date-time
                description: 일치가 처음 발견된 날짜
              properties:
                type: object
                properties:
                  name:
                    type: array
                    items:
                      type: string
                  alias:
                    type: array
                    items:
                      type: string
                  notes:
                    type: array
                    items:
                      type: string
                  title:
                    type: string
                    nullable: true
                  gender:
                    type: array
                    items:
                      type: string
                  height:
                    type: string
                    nullable: true
                  topics:
                    type: string
                    nullable: true
                  weight:
                    type: string
                    nullable: true
                  address:
                    type: string
                    nullable: true
                  country:
                    type: string
                    nullable: true
                  website:
                    type: string
                    nullable: true
                  eyeColor:
                    type: string
                    nullable: true
                  keywords:
                    type: string
                    nullable: true
                  lastName:
                    type: array
                    items:
                      type: string
                  position:
                    type: string
                    nullable: true
                  religion:
                    type: string
                    nullable: true
                  birthDate:
                    type: array
                    items:
                      type: string
                  education:
                    type: array
                    items:
                      type: string
                  ethnicity:
                    type: string
                    nullable: true
                  firstName:
                    type: array
                    items:
                      type: string
                  hairColor:
                    type: string
                    nullable: true
                  weakAlias:
                    type: string
                    nullable: true
                  birthPlace:
                    type: array
                    items:
                      type: string
                  modifiedAt:
                    type: string
                    nullable: true
                  wikidataId:
                    type: string
                    nullable: true
                  citizenship:
                    type: string
                    nullable: true
                  nationality:
                    type: string
                    nullable: true
              match_score:
                type: number
                description: >-
                  이름 유사도, 생년월일 및 국가 일치를 바탕으로 계산된 가중 신원 신뢰도 점수(0-100)입니다. 적중 결과가
                  오탐인지 가능한 일치 항목인지 판별하는 데 사용됩니다.
                format: float
                nullable: true
              risk_score:
                type: number
                description: >-
                  엔티티 위험 점수 (0-100). 오탐(False-Positive)이 아닌 적중 중 가장 높은
                  risk_score를 기반으로 최종 AML 상태(Approved/In Review/Declined)를 결정하는
                  데 사용됩니다.
              review_status:
                type: string
                description: >-
                  이 일치 항목의 검토 상태입니다. 'Unreviewed', 'Confirmed Match', 'False
                  Positive' 또는 'Inconclusive'일 수 있습니다.
                enum:
                  - Unreviewed
                  - Confirmed Match
                  - False Positive
                  - Inconclusive
              score_breakdown:
                type: object
                description: match_score 계산 방식에 대한 상세 내역입니다.
                properties:
                  name_score:
                    type: integer
                    description: 원시 성명 유사도 백분율(0-100)입니다.
                  name_weight:
                    type: integer
                    description: 설정(config)의 성명 원래 가중치입니다(0-100).
                  name_weight_normalized:
                    type: number
                    description: 누락된 데이터에 대해 가중치를 재조정한 후의 이름 정규화 가중치(0-100)입니다.
                  name_contribution:
                    type: number
                    description: 총점에 기여한 이름 점수입니다.
                  dob_score:
                    type: integer
                    description: 생년월일 일치 점수(-100~100).
                  dob_weight:
                    type: integer
                    description: config의 생년월일 원래 가중치입니다(0-100).
                  dob_weight_normalized:
                    type: number
                    description: 누락된 데이터에 대해 가중치를 재조정한 후의 생년월일 정규화 가중치(0-100)입니다.
                  dob_contribution:
                    type: number
                    description: 총점에 기여한 생년월일 점수입니다.
                  country_score:
                    type: integer
                    description: 국가 일치 점수(-100~100).
                  country_weight:
                    type: integer
                    description: 설정(config)의 국가 원래 가중치입니다(0-100).
                  country_weight_normalized:
                    type: number
                    description: 누락된 데이터에 대해 가중치를 재조정한 후의 국가 정규화 가중치(0-100)입니다.
                  country_contribution:
                    type: number
                    description: 총점에 기여한 국가 점수입니다.
                  document_number_match_type:
                    type: string
                    description: 문서 번호 'Golden Key' 평가 결과입니다.
                    enum:
                      - MATCH
                      - NEUTRAL
                      - HARD_MISMATCH
                  document_number_effect:
                    type: string
                    description: 문서 번호가 점수에 미치는 영향에 대한 사람이 읽기 쉬운 설명입니다.
                  total_score:
                    type: integer
                    description: 최종 가중 일치 점수(0-100)입니다.
              pep_matches:
                type: array
                items:
                  type: object
                  properties:
                    aliases:
                      type: array
                      items:
                        type: string
                    education:
                      type: array
                      items:
                        type: string
                    list_name:
                      type: string
                    publisher:
                      type: string
                    source_url:
                      type: string
                      format: uri
                    description:
                      type: string
                    matched_name:
                      type: string
                    pep_position:
                      type: string
                    date_of_birth:
                      type: string
                    other_sources:
                      type: array
                      items:
                        type: string
                    place_of_birth:
                      type: string
              linked_entities:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: array
                      items:
                        type: string
                    active:
                      type: array
                      items:
                        type: string
                    status:
                      type: array
                      items:
                        type: string
                    details:
                      type: array
                      items:
                        type: string
                    relation:
                      type: array
                      items:
                        type: string
              warning_matches:
                type: array
                description: >-
                  경고 및 규제 집행 일치 항목 목록입니다. 다음 카테고리의 항목이 포함됩니다: Warning, SIP,
                  Warnings and Regulatory Enforcement, Fitness and Probity, SIE,
                  Insolvency.
                items:
                  type: object
                  properties:
                    list_name:
                      type: string
                      description: 경고 목록 게시자의 이름
                    matched_name:
                      type: string
                      description: 경고 목록에서 일치한 이름
                    description:
                      type: string
                      description: 경고 항목에 대한 설명
                    publisher:
                      type: string
                      description: 경고의 게시자 또는 출처
                    source_url:
                      type: string
                      format: uri
                      description: 경고 출처의 URL
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: 추가 소스 URL
                    countries:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: 경고와 관련된 국가
                    created_at:
                      type: string
                      nullable: true
                      description: 경고 항목이 생성된 날짜
                    updated_at:
                      type: string
                      nullable: true
                      description: 경고 항목이 마지막으로 업데이트된 날짜
                    additional_data:
                      type: object
                      description: >-
                        경고 출처의 추가 데이터입니다. `case_details` 배열이 포함된 `data` 객체를 포함할
                        수 있습니다.
                      properties:
                        data:
                          type: object
                          properties:
                            case_details:
                              type: array
                              description: 이 일치 항목과 관련된 경고 케이스 세부 정보
                              items:
                                type: object
                                properties:
                                  case_type:
                                    type: string
                                    description: 경고 케이스 유형
                                    enum:
                                      - Accusation
                                      - Arrest
                                      - Bribery
                                      - Criminal
                                      - Fraud
                                      - Illegal Fundraising
                                      - Non-conviction Terror
                                      - Proclaimed Offender
                                      - Regulatory Enforcement
                                      - Terrorism
                                      - Terrorism-related
                                      - Terrorism-related listing
              sanction_matches:
                type: array
                description: 이 엔티티에 대해 발견된 제재 목록 일치 항목 목록입니다.
                items:
                  type: object
                  properties:
                    list_name:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: 제재 목록 이름
                    matched_name:
                      type: string
                      description: 제재 목록에서 일치한 이름
                    description:
                      type: string
                      description: 제재 항목에 대한 설명
                    reason:
                      type: string
                      nullable: true
                      description: >-
                        해당 주체가 제재 대상이 된 자유 형식 사유입니다. 제재 목록의 사유 항목들을 결합한 값입니다. 예:
                        'Executive Order 13224 (Terrorism)', 'Support for
                        actions undermining Ukraine's sovereignty', 'Listed due
                        to national security concerns.'
                    source_url:
                      type: string
                      format: uri
                      description: 제재 출처의 URL
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: 추가 소스 URL
                    details:
                      type: array
                      items:
                        type: string
                      description: 제재에 대한 추가 세부 정보
                    legal_basis:
                      type: array
                      items:
                        type: string
                      description: 제재의 법적 근거
                    listed_on:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: 엔티티가 등재된 날짜
                    sanction_list:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: 제재 목록 식별자
                    sanction_program:
                      type: array
                      items:
                        type: string
                      description: 엔티티가 등재된 제재 프로그램
                    sanctioning_authority:
                      type: array
                      items:
                        type: string
                      description: 제재를 부과한 기관
                    updated_on:
                      type: array
                      items:
                        type: string
                      description: 제재 항목이 마지막으로 업데이트된 날짜
                    additional_data:
                      type: object
                      description: 주요 필드에 캡처되지 않은 제재 출처의 추가 데이터
              adverse_media_details:
                type: object
                properties:
                  sentiment:
                    type: string
                  entity_type:
                    type: string
                  sentiment_score:
                    type: integer
                  adverse_keywords:
                    type: object
                    additionalProperties:
                      type: integer
              adverse_media_matches:
                type: array
                items:
                  type: object
                  properties:
                    country:
                      type: string
                    summary:
                      type: string
                    headline:
                      type: string
                    sentiment:
                      type: string
                    thumbnail:
                      type: string
                      format: uri
                    source_url:
                      type: string
                      format: uri
                    author_name:
                      type: string
                      nullable: true
                    other_sources:
                      type: array
                      items:
                        type: string
                    adverse_keywords:
                      type: array
                      items:
                        type: string
                    sentiment_score:
                      type: integer
                    publication_date:
                      type: string
                      format: date-time
              additional_information:
                type: object
        score:
          type: number
          format: float
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            전체 AML 스크리닝 점수 — 모든 일치 항목 중 가장 높은 위험 점수(부동 소수점, 0-100). 계산되기 전까지는
            `null`입니다.
        screened_data:
          type: object
          properties:
            full_name:
              type: string
            nationality:
              type: string
            date_of_birth:
              type: string
              format: date
            document_number:
              type: string
              nullable: true
        is_ongoing_monitoring_enabled:
          type: boolean
          description: >-
            이 스크리닝에 지속적인 AML 모니터링이 활성화되어 있는지 여부입니다. `true`인 경우 엔터티는 주기적으로
            재스크리닝되며 새로운 일치 항목이 보고서에 업데이트됩니다.
        next_ongoing_monitoring_bill_date:
          type: string
          format: date
          nullable: true
          description: >-
            이 지속적인 모니터링 구독에 대한 다음 결제일(YYYY-MM-DD)입니다.
            `is_ongoing_monitoring_enabled = true`인 경우 마지막 지속적인 모니터링 결제일로부터
            365일을 더한 날짜로 계산되며, 그렇지 않으면 `null`입니다. 이는 결제일이며 스크리닝 일자가 아닙니다. 스크리닝
            일자는 `last_ongoing_screening_at`을 사용하십시오.
        last_ongoing_screening_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            결과 변경 여부와 관계없이 지속적인 모니터링이 이 레코드의 재스크리닝을 마지막으로 완료한 시점입니다. 레코드가 재스크리닝된
            적이 없는 경우 `null`이며, 활성화 또는 결제 날짜로 소급 작성되지 않습니다.
        last_ongoing_screening_datasets_updated_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            해당 스크리닝 시점에 제공업체가 보고한 가장 최근의 AML 데이터 세트 업데이트 날짜입니다. 제공업체가 데이터 세트 날짜를
            보고하지 않은 경우 `null`이며, 절대 추정되지 않습니다.
        warnings:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
                enum:
                  - ID_VERIFICATION
                  - NFC
                  - LIVENESS
                  - FACEMATCH
                  - PROOF_OF_ADDRESS
                  - PHONE
                  - EMAIL
                  - AML
                  - LOCATION
                  - DATABASE_VALIDATION
                  - QUESTIONNAIRE
                  - DOCUMENT_AI
                  - KYB_REGISTRY
                  - KYB_DOCUMENTS
                  - KYB_KEY_PEOPLE
                  - GEOLOCATION
                  - SIGNATURE
                description: >-
                  이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. AML 스크리닝 내에서는 일반적으로
                  `AML`이지만, 결정 payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
              risk:
                type: string
              additional_data:
                type: object
                nullable: true
              log_type:
                type: string
              short_description:
                type: string
              long_description:
                type: string
              node_id:
                type: string
                description: 이 경고를 생성한 워크플로 그래프 노드 ID
    GeolocationCheck:
      type: object
      description: >-
        단일 워크플로 노드에서 승인된 시도에 대한 위치 인증 결과입니다. 측정값, 불확실성 및 진위 여부는 별도의 키로 제공되므로,
        증명되지 않은 정밀한 위치 정보와 증명된 부정밀한 위치 정보가 서로 다르게 판독됩니다.
      properties:
        node_id:
          type: string
          nullable: true
          description: 이 결과를 생성한 워크플로 노드입니다. 두 개의 위치 인증 단계가 있는 워크플로에서도 결과를 명확히 구분할 수 있습니다.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: 경고를 기반으로 해결된 이 위치 확인 단계의 기능 수준 상태입니다. 세션 `status`와는 독립적입니다.
        outcome:
          type: string
          nullable: true
          description: 이 시도에서 발생한 내용입니다.
          enum:
            - verified
            - low_accuracy
            - accuracy_undetermined
            - stale
            - approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - mock_detected
            - outside_geofence
            - in_blocked_area
            - anonymizer_detected
            - skipped
            - replay_rejected
            - unsupported_client
            - null
        permission:
          type: string
          nullable: true
          description: >-
            운영체제 또는 브라우저가 부여한 권한입니다. `not_requested`는 해당 단계가 연결의 IP 위치만 사용하므로
            사용자에게 권한을 요청하지 않음을 의미합니다.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: 측위 위치의 WGS84 위도입니다. 측위 위치가 없으면 `null`입니다.
          format: double
        longitude:
          type: number
          nullable: true
          description: 측위 위치의 WGS84 경도입니다. 측위 위치가 없으면 `null`입니다.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: '`accuracy_confidence`의 신뢰도 수준에서의 불확실성 반경(미터 단위).'
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            플랫폼이 `accuracy_m`에 부여하는 신뢰 수준입니다: `p95`(브라우저), `p68`(Android) 또는
            `unspecified`(iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: 기기 자체 시계를 기준으로 기기가 위치를 확정한 시점입니다.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: 기기가 위치를 측위한 시점부터 Didit이 이를 수신하기까지의 시간(초).
        source:
          type: string
          nullable: true
          description: 플랫폼에서 명시하는 위치 고정(fix) 정보의 출처입니다. `ip`는 위치가 연결된 IP 주소의 위치임을 의미합니다.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: 수정을 생성한 클라이언트입니다.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: 수정을 생성한 SDK의 버전입니다.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            기기에서 위치 정보가 모의 위치 제공자나 시뮬레이션 소프트웨어로부터 생성된 것임을 보고할 때 `true`입니다. 플랫폼에서
            이를 보고하지 않는 경우(브라우저는 구별할 수 없음) `null`이며, `null`은 `false`를 의미하지 않습니다.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: 'iOS 전용: 외부 액세서리에서 위치 측정값을 제공한 경우 `true`, 그 외에는 `null`입니다.'
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            수정이 기기 증명으로 뒷받침되는지 여부입니다. 웹에는 증명 메커니즘이 없기 때문에 브라우저는 `unsupported`로
            보고하며, 이는 실패가 아닙니다.
        country_code:
          type: string
          nullable: true
          description: 위치 측정값이 속한 ISO 3166-1 alpha-2 국가 코드입니다.
        region_code:
          type: string
          nullable: true
          description: 위치 측정값이 속한 ISO 3166-2 행정 구역입니다.
        city:
          type: string
          nullable: true
          description: 검토자를 위한 라벨인 가장 가까운 인구 밀집 지역입니다.
        geofence:
          type: object
          description: 해당 단계의 국가 및 지역 규칙 결과입니다.
          properties:
            enabled:
              type: boolean
              description: 단계에서 국가 또는 지역 규칙을 적용하는지 여부입니다.
            result:
              type: string
              nullable: true
              description: >-
                규칙을 기준으로 한 해당 위치의 판정 결과입니다. `undetermined`는 정확도 원이 국경에 걸쳐 있거나
                위치가 어떤 국가로도 확인되지 않았음을 의미하며, 외부에 있다는 증거는 아닙니다.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `geofence.result`가 `inside`인 경우 `true`, `outside`인 경우 `false`, 그 외에는
            `null`입니다.
        geofence_basis:
          type: string
          nullable: true
          description: '지역 결과가 판정된 위치: `device` 위치 측정값 또는 연결의 `ip` 주소 위치입니다.'
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: 해당 위치가 포함된 구성된 허용 영역의 ID 목록입니다.
        blocked_areas:
          type: array
          items:
            type: string
          description: 해당 위치가 속한 구성된 차단 영역의 ID 목록입니다.
        position_source:
          type: string
          nullable: true
          description: >-
            설정에 따라 해당 단계에서 위치를 가져오는 방식: 기기 위치를 IP 위치와 대조하여 확인, 기기만 사용, 또는 IP 위치만
            사용.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: 연결 및 기기의 상태입니다. 소스에서 확인할 수 없는 경우 각각 `true`, `false` 또는 `null`입니다.
          properties:
            vpn:
              type: boolean
              nullable: true
            proxy:
              type: boolean
              nullable: true
            tor:
              type: boolean
              nullable: true
            spoofing:
              type: boolean
              nullable: true
            emulator:
              type: boolean
              nullable: true
        ip_distance_km:
          type: number
          nullable: true
          description: 두 불확실성 반경을 뺀 후 세션의 IP 위치까지의 거리입니다. 겹치는 경우 `0`입니다.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: '차감된 결합 반경: IP 위치 반경에 이 측정 위치의 정확도를 더한 값입니다.'
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            `ip_distance_km`이 단계에 구성된 거리 내에 있는지 여부입니다. 어느 한쪽을 알 수 없는 경우
            `null`입니다.
        document_distance_km:
          type: number
          nullable: true
          description: 신분증 문서 또는 주소 증명의 지오코딩된 주소까지의 거리입니다. 등록된 주소가 없는 경우 `null`입니다.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: 단계의 이동 허용 오차가 주소로부터의 거리를 허용했는지 여부입니다. 허용 오차가 꺼져 있으면 `null`입니다.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: '최종 시도 시: 이번 확인과 동일 인물의 이전 연속 불일치 내역이 포함됩니다.'
        attempts:
          type: integer
          description: 노드 내에서 1부터 시작하는 이번 시도의 번호입니다.
        consent:
          type: object
          nullable: true
          description: 시스템 프롬프트 전에 사용자가 제공한 동의 내용으로, 사용자에게 표시된 문구 버전 및 언어와 함께 기록됩니다.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        warnings:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
                enum:
                  - ID_VERIFICATION
                  - NFC
                  - LIVENESS
                  - FACEMATCH
                  - PROOF_OF_ADDRESS
                  - PHONE
                  - EMAIL
                  - AML
                  - LOCATION
                  - DATABASE_VALIDATION
                  - QUESTIONNAIRE
                  - DOCUMENT_AI
                  - KYB_REGISTRY
                  - KYB_DOCUMENTS
                  - KYB_KEY_PEOPLE
                  - GEOLOCATION
                  - SIGNATURE
                description: >-
                  이 경고를 생성한 기능입니다. 이 값은 경고가 속한 기능 블록을 식별합니다. 각 모듈의 경고 배열은 일반적으로
                  해당 모듈과 일치하는 값을 사용하지만(예: `phone_verifications[].warnings` 내부의
                  `PHONE`), 결정 payload의 모든 기능 경고에 대해서는 위의 enum이 기준이 됩니다.
              risk:
                type: string
              additional_data:
                type: object
                nullable: true
              log_type:
                type: string
              short_description:
                type: string
              long_description:
                type: string
              node_id:
                type: string
                description: 이 경고를 생성한 워크플로 그래프 노드 ID
          description: >-
            이 위치 인증 단계에서 발생한 경고로, `feature`는 `GEOLOCATION`으로 설정됩니다. 경고 코드는
            `LOCATION_`으로 시작합니다.
    GeolocationAttempt:
      type: object
      description: >-
        위치 인증 단계 시도 1회입니다. `warnings`를 제외하고 `geolocation_checks[]`와 동일한 키 및
        Didit이 이를 수신한 시간이 포함됩니다.
      properties:
        node_id:
          type: string
          nullable: true
          description: 이 결과를 생성한 워크플로 노드입니다. 두 개의 위치 인증 단계가 있는 워크플로에서도 결과를 명확히 구분할 수 있습니다.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: 경고를 기반으로 해결된 이 위치 확인 단계의 기능 수준 상태입니다. 세션 `status`와는 독립적입니다.
        outcome:
          type: string
          nullable: true
          description: 이 시도에서 발생한 내용입니다.
          enum:
            - verified
            - low_accuracy
            - accuracy_undetermined
            - stale
            - approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - mock_detected
            - outside_geofence
            - in_blocked_area
            - anonymizer_detected
            - skipped
            - replay_rejected
            - unsupported_client
            - null
        permission:
          type: string
          nullable: true
          description: >-
            운영체제 또는 브라우저가 부여한 권한입니다. `not_requested`는 해당 단계가 연결의 IP 위치만 사용하므로
            사용자에게 권한을 요청하지 않음을 의미합니다.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: 측위 위치의 WGS84 위도입니다. 측위 위치가 없으면 `null`입니다.
          format: double
        longitude:
          type: number
          nullable: true
          description: 측위 위치의 WGS84 경도입니다. 측위 위치가 없으면 `null`입니다.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: '`accuracy_confidence`의 신뢰도 수준에서의 불확실성 반경(미터 단위).'
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            플랫폼이 `accuracy_m`에 부여하는 신뢰 수준입니다: `p95`(브라우저), `p68`(Android) 또는
            `unspecified`(iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: 기기 자체 시계를 기준으로 기기가 위치를 확정한 시점입니다.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: 기기가 위치를 측위한 시점부터 Didit이 이를 수신하기까지의 시간(초).
        source:
          type: string
          nullable: true
          description: 플랫폼에서 명시하는 위치 고정(fix) 정보의 출처입니다. `ip`는 위치가 연결된 IP 주소의 위치임을 의미합니다.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: 수정을 생성한 클라이언트입니다.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: 수정을 생성한 SDK의 버전입니다.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            기기에서 위치 정보가 모의 위치 제공자나 시뮬레이션 소프트웨어로부터 생성된 것임을 보고할 때 `true`입니다. 플랫폼에서
            이를 보고하지 않는 경우(브라우저는 구별할 수 없음) `null`이며, `null`은 `false`를 의미하지 않습니다.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: 'iOS 전용: 외부 액세서리에서 위치 측정값을 제공한 경우 `true`, 그 외에는 `null`입니다.'
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            수정이 기기 증명으로 뒷받침되는지 여부입니다. 웹에는 증명 메커니즘이 없기 때문에 브라우저는 `unsupported`로
            보고하며, 이는 실패가 아닙니다.
        country_code:
          type: string
          nullable: true
          description: 위치 측정값이 속한 ISO 3166-1 alpha-2 국가 코드입니다.
        region_code:
          type: string
          nullable: true
          description: 위치 측정값이 속한 ISO 3166-2 행정 구역입니다.
        city:
          type: string
          nullable: true
          description: 검토자를 위한 라벨인 가장 가까운 인구 밀집 지역입니다.
        geofence:
          type: object
          description: 해당 단계의 국가 및 지역 규칙 결과입니다.
          properties:
            enabled:
              type: boolean
              description: 단계에서 국가 또는 지역 규칙을 적용하는지 여부입니다.
            result:
              type: string
              nullable: true
              description: >-
                규칙을 기준으로 한 해당 위치의 판정 결과입니다. `undetermined`는 정확도 원이 국경에 걸쳐 있거나
                위치가 어떤 국가로도 확인되지 않았음을 의미하며, 외부에 있다는 증거는 아닙니다.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `geofence.result`가 `inside`인 경우 `true`, `outside`인 경우 `false`, 그 외에는
            `null`입니다.
        geofence_basis:
          type: string
          nullable: true
          description: '지역 결과가 판정된 위치: `device` 위치 측정값 또는 연결의 `ip` 주소 위치입니다.'
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: 해당 위치가 포함된 구성된 허용 영역의 ID 목록입니다.
        blocked_areas:
          type: array
          items:
            type: string
          description: 해당 위치가 속한 구성된 차단 영역의 ID 목록입니다.
        position_source:
          type: string
          nullable: true
          description: >-
            설정에 따라 해당 단계에서 위치를 가져오는 방식: 기기 위치를 IP 위치와 대조하여 확인, 기기만 사용, 또는 IP 위치만
            사용.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: 연결 및 기기의 상태입니다. 소스에서 확인할 수 없는 경우 각각 `true`, `false` 또는 `null`입니다.
          properties:
            vpn:
              type: boolean
              nullable: true
            proxy:
              type: boolean
              nullable: true
            tor:
              type: boolean
              nullable: true
            spoofing:
              type: boolean
              nullable: true
            emulator:
              type: boolean
              nullable: true
        ip_distance_km:
          type: number
          nullable: true
          description: 두 불확실성 반경을 뺀 후 세션의 IP 위치까지의 거리입니다. 겹치는 경우 `0`입니다.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: '차감된 결합 반경: IP 위치 반경에 이 측정 위치의 정확도를 더한 값입니다.'
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            `ip_distance_km`이 단계에 구성된 거리 내에 있는지 여부입니다. 어느 한쪽을 알 수 없는 경우
            `null`입니다.
        document_distance_km:
          type: number
          nullable: true
          description: 신분증 문서 또는 주소 증명의 지오코딩된 주소까지의 거리입니다. 등록된 주소가 없는 경우 `null`입니다.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: 단계의 이동 허용 오차가 주소로부터의 거리를 허용했는지 여부입니다. 허용 오차가 꺼져 있으면 `null`입니다.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: '최종 시도 시: 이번 확인과 동일 인물의 이전 연속 불일치 내역이 포함됩니다.'
        attempts:
          type: integer
          description: 노드 내에서 1부터 시작하는 이번 시도의 번호입니다.
        consent:
          type: object
          nullable: true
          description: 시스템 프롬프트 전에 사용자가 제공한 동의 내용으로, 사용자에게 표시된 문구 버전 및 언어와 함께 기록됩니다.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        received_at:
          type: string
          nullable: true
          description: Didit이 시도를 수신한 시점입니다.
          format: date-time
        created_at:
          type: string
          format: date-time
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        모든 국가 및 법인 등기부 출처에 대해 동일한 형식으로 제공되는 소유자의 보유 내역입니다. 등기부에 보유 내역이 명시되어 있지
        않은 경우 null입니다. 범위(예: 영국 PSC의 25-50%)는 지분이 아닙니다. `percentage`는 null이며 해당
        범위는 `ownership_min_shares` / `ownership_max_shares`에 유지됩니다.
      properties:
        share_class:
          type: string
          nullable: true
          description: 등기부에서 명시한 주식 종류 또는 유형입니다.
        number_of_shares:
          type: number
          nullable: true
          description: 보유 주식 수입니다.
        currency:
          type: string
          nullable: true
          description: 아래 값의 ISO 4217 통화입니다.
        nominal_value:
          type: number
          nullable: true
          description: 주당 액면가.
        total_value:
          type: number
          nullable: true
          description: 보유 자산의 총 가치입니다.
        percentage:
          type: number
          nullable: true
          description: 소수점 넷째 자리까지 표시된 정확한 지분율(%)입니다.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        등기부에 기재된 주소로, 모든 국가 및 등기부 소스에 대해 동일한 형식입니다. 모든 키가 항상 존재하며, 등기부에서 공개하지 않는
        부분은 null입니다.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            소문자로 표시된 주소 유형: 본점 소재지의 경우 `registered`, 기타 유형은 법인 등기부에 기재된 명칭(예:
            `postal`, `office`)을 따릅니다. 등기부에 주소 유형이 명시되지 않은 경우 `null`입니다.
        address:
          type: string
          description: 한 줄로 작성된 전체 주소입니다. 모든 주소에 항상 존재합니다.
        street:
          type: string
          nullable: true
          description: 도로명 및 번호.
        city:
          type: string
          nullable: true
          description: 시 또는 지역입니다.
        postal_code:
          type: string
          nullable: true
          description: 우편번호입니다.
        region:
          type: string
          nullable: true
          description: 지역, 주 또는 도입니다.
        country_code:
          type: string
          nullable: true
          description: ISO 3166-1 alpha-2 국가 코드입니다.
        description:
          type: string
          nullable: true
          description: 주소에 대해 등기소 자체에서 제공한 라벨(있는 경우)입니다.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: 등기부에서 기업을 분류한 업종 활동으로, 모든 국가 및 등기부 소스에 대해 동일한 형식입니다.
      properties:
        code:
          type: string
          nullable: true
          description: '등기부에 기재된 업종 코드입니다(예: `73110`).'
        description:
          type: string
          nullable: true
          description: 등기부에서 공개한 경우의 업종 라벨입니다.
        scheme:
          type: string
          nullable: true
          description: >-
            분류 체계(보고한 출처와 관계없이 체계당 하나의 이름 사용): `UK SIC 2007`, `US SIC`, `NACE
            Rev. 2`, `NACE Rev. 2.1`, `NAF Rev. 2`, `CNAE`, `SBI`, `NOGA 2008`,
            `CAE Rev. 4`, `Canada SIC 1977`. 기타 국가 체계는 등기부 자체 이름을 유지합니다. 등기부에서
            체계 이름을 지정하지 않은 경우 null입니다.
        is_primary:
          type: boolean
          description: 기업의 주요 활동인 경우 true입니다. 목록이 비어 있지 않은 경우 정확히 하나의 항목이 주요 활동입니다.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        기업에 대한 Didit의 정규화된 법인 등기부 세부 정보입니다: 소유 구조 결과(`ownership_error`,
        `section_errors`, `ubo_resolution`, `lite_enrichment`), update-data로 수정된
        내용 및 자체 필드가 없는 등기부 사실 정보가 포함됩니다. 등기부 소스 자체의 원본 레코드는 절대 포함되지 않습니다. 모든 키는
        선택 사항이며 기업에 해당 값이 있는 경우에만 표시됩니다. 새로운 키가 추가될 수 있습니다. 해당 필드가 다루는 내용에 대해서는
        표준 필드(`addresses`, `industries`, `ownership`,
        `beneficial_owners[].shareholding`)를 확인하세요.
      properties:
        company_name:
          type: string
          description: Console에서 수정한 기업명입니다.
        registration_number:
          type: string
          description: 법인 등기부 또는 콘솔 수정사항에 명시된 등록번호입니다.
        country_code:
          type: string
          description: 등기부 또는 콘솔 수정 사항에 명시된 등록 국가입니다.
        region:
          type: string
          description: 등록 지역 또는 주입니다.
        incorporation_date:
          type: string
          description: 설립일(ISO 8601).
        registration_date:
          type: string
          description: 법인 등기부에서 설립일 외에 별도로 명시한 등록일(ISO 8601)입니다.
        dissolution_date:
          type: string
          description: 등기부에 기재된 경우의 해산일(ISO 8601)입니다.
        tax_number:
          type: string
          description: 납세자 번호입니다.
        vat_number:
          type: string
          description: VAT 번호입니다.
        legal_address:
          type: string
          description: 콘솔에서 수정된 법적 주소입니다.
        registered_address:
          type: string
          description: 등기부에 기재된 등록 주소입니다.
        company_type:
          type: string
          description: 법적 형태입니다.
        registry_status:
          type: string
          description: 법인 등기부상의 기업 상태입니다.
        verification_status:
          type: string
          description: 인증 상태입니다.
        alternative_names:
          type: string
          description: 기업이 거래에 사용하거나 사용했던 다른 상호입니다.
        nature_of_business:
          type: string
          description: 업종 설명입니다.
        registered_capital:
          type: string
          description: 인쇄된 자본금입니다.
        registered_capital_amount:
          type: string
          description: 십진수 문자열 형태의 자본금 금액입니다.
        registered_capital_currency:
          type: string
          description: 자본금 통화(ISO 4217)입니다.
        website:
          type: string
          description: 웹사이트입니다.
        email:
          type: string
          description: 연락처 이메일입니다.
        phone:
          type: string
          description: 연락처 전화번호입니다.
        legal_entity_identifier:
          type: string
          description: 법인식별기호(LEI).
        location_of_registration:
          type: string
          description: 등록지입니다.
        control_scheme:
          type: string
          description: 등기소에서 공개하는 경우 거버넌스 체계입니다.
        ownership_error:
          type: string
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
          description: >-
            요청된 소유 구조 등급이 제공되지 않은 이유로, `ownership.unavailable_reason`과 동일한
            코드입니다. `no_owners_on_record`(등기소가 응답했으나 소유자를 명시하지 않음)와
            `ownership_section_unavailable`(등기소에서 소유 구조 섹션을 반환하지 않음)은 서로 다른
            결과입니다.
        section_errors:
          type: object
          description: >-
            등기부에서 반환하지 않은 섹션으로, 섹션별(`officers`, `shareholders`,
            `group_structure`)로 키가 지정됩니다. 여기에 나열된 섹션은 전혀 전달되지 않았습니다. 그 옆에 빈 목록이
            있더라도 해당 기업에 대해 아무것도 나타내지 않습니다.
          additionalProperties:
            $ref: '#/components/schemas/KYBRegistrySectionError'
        ubo_resolution:
          $ref: '#/components/schemas/KYBRegistryUboResolution'
        lite_enrichment:
          $ref: '#/components/schemas/KYBRegistryLiteEnrichment'
        registry_metadata:
          type: object
          additionalProperties:
            oneOf:
              - type: string
              - type: number
              - type: boolean
          description: >-
            등기소 명칭을 키로 하고 일반 값으로 표현된 해당 기업에 대한 등기소 자체 필드(레거시 레코드)입니다. 등기소 사실로
            검토된 필드만 포함됩니다.
        registry_sources:
          type: array
          description: 기록을 읽어온 공식 등기부 목록입니다(레거시 기록). 다른 출처의 이름은 명시되지 않습니다.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: 해당 기업이 이전에 등록되었던 이름입니다(기존 기록).
        parent_companies:
          type: array
          items:
            type: string
          description: 등기부에 기재된 모회사 목록입니다(레거시 기록).
        documents_available:
          type: integer
          description: 등기부에서 해당 기업에 대해 제공하는 제출 서류 수(레거시 기록)입니다.
    KYBRegistryOwnership:
      type: object
      description: 모든 국가 및 등기부 출처에 대해 동일한 형식으로 제공되는 소유 구조(주주 / UBO) 등급의 결과입니다.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            등기소가 소유 구조를 공개한 경우 `delivered`, 소유 구조 등기소가 응답했으나 기업이 전혀 등재되어 있지 않은
            경우 `not_held`(`unavailable_reason` 참조), 그 외의 사유로 소유 구조 데이터를 제공하지 않은
            경우 `unavailable`(`unavailable_reason` 참조), 등기소에서 아직 조회 중인 경우
            `pending`, Basic 등급인 경우 `not_requested`.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: 워크플로가 주문한 등급입니다.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            등기부에서 제공한(그리고 결제 청구되는) 등급입니다. 직접 주주만으로 응답된 UBO 요청은 `shareholders`가
            됩니다.
        unavailable_reason:
          type: string
          nullable: true
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
            - null
          description: >-
            요청된 소유 구조 등급이 제공되지 않은 이유입니다. `status`가 `unavailable` 또는 `pending`이
            아닌 경우 null입니다.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            직접 주주의 명시된 지분 합계가 100%인 경우(반올림 오차 1퍼센트포인트 이내) true, 그렇지 않은 경우 false,
            소유 구조가 전송되지 않았거나 지분이 명시되지 않은 경우 null입니다.
        unresolved:
          type: array
          description: '법인 등기부에서 확인할 수 없는 소유 구조 체인의 일부(예: 직접 소유자 상위의 그룹 구조가 기록에 없음)입니다.'
          items:
            type: object
            properties:
              reason:
                type: string
              section:
                type: string
                nullable: true
      required:
        - status
        - tier_requested
        - tier_delivered
        - unavailable_reason
        - direct_ownership_complete
        - unresolved
    KYBOwnershipStructure:
      type: object
      nullable: true
      description: >-
        소유 구조 등급이 전송된 시점에 법인 등기부에서 증명한 자본 구조표(cap table)입니다: 직접 `shareholders` 및
        `beneficial_owners`. 법인 등기부에서 소유 구조를 증명하지 못한 경우 null입니다. 등기부 소스 자체의 행은
        절대 포함되지 않습니다. 현재 레코드는 `company.beneficial_owners` 및 `company.ownership`을
        확인하십시오.
      properties:
        shareholders:
          type: array
          items:
            $ref: '#/components/schemas/KYBOwnershipStructureOwner'
        beneficial_owners:
          type: array
          items:
            $ref: '#/components/schemas/KYBOwnershipStructureOwner'
      required:
        - shareholders
        - beneficial_owners
    InvestigatorBlock:
      type: object
      nullable: true
      description: >-
        항목의 최신 조사관 검토 내역이며, 검토가 진행된 적이 없는 경우 null입니다. V3 세션 및 기업 세션 결정에 포함되어
        전달됩니다(따라서 `status.updated` webhook에서도 전달됨).
      properties:
        run_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - running
            - completed
            - failed
        stage:
          type: string
          enum:
            - shadow
            - live
        queue:
          type: string
          enum:
            - kyc
            - kyb
            - aml
            - transactions
            - cases
        is_open:
          type: boolean
        recommendation:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
          nullable: true
        recommendation_detail:
          type: string
          nullable: true
        confidence:
          type: string
          enum:
            - high
            - moderate
            - low
          nullable: true
        summary:
          type: string
          nullable: true
        ready_to_accept:
          type: boolean
        prepared_at:
          type: string
          format: date-time
          nullable: true
        automated:
          type: boolean
          description: 이후에 결정이 재정의되었더라도 수사관(Investigator)이 단독으로 결정했습니다.
        decided_by:
          type: string
          enum:
            - investigator
            - member
          nullable: true
        decision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/InvestigatorDecision'
          type: object
    BiometricRetention:
      type: object
      description: 이 세션의 라이브 생체 데이터가 삭제되는 시점입니다.
      required:
        - jurisdictions
        - deletes_at
      properties:
        jurisdictions:
          type: array
          items:
            type: string
          description: >-
            해당 인물에 대한 삭제 기한을 설정하는 생체 인식 규정이 있는 미국 주의 코드(주를 알 수 없는 경우 `US`). 해당하는
            규정이 없으면 비어 있습니다.
        deletes_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            애플리케이션의 데이터 보존 설정과 해당 인물의 관할권 법적 한도(적용되는 경우)에 따라 이 세션의 라이브 생체 데이터(얼굴
            이미지 및 템플릿)가 삭제되는 날짜입니다. 아직 적용되는 날짜가 없는 경우 `null`입니다.
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: 플랫폼 식별자입니다.
          example: whatsapp
        category:
          type: string
          description: >-
            플랫폼 카테고리(예: MESSAGING, SOCIAL_MEDIA, ECOMMERCE, PROFESSIONAL,
            EMAIL_PROVIDER)입니다.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: 글로벌 플랫폼의 경우 `global`, 특정 지역 플랫폼의 경우 `local`.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: 이 카테고리에서 가입이 확인된 플랫폼입니다.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: 해당 카테고리에서 확인된 플랫폼 중 등록이 있는 플랫폼의 비율(0.0-1.0)입니다.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: 플랫폼에서 제공하는 경우 프로필 이름입니다.
        photo:
          type: string
          nullable: true
          description: 플랫폼에서 제공하는 경우 프로필 사진 URL입니다.
        about:
          type: string
          nullable: true
          description: 플랫폼에서 제공하는 경우 프로필 소개/약력 텍스트입니다.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: 플랫폼에서 제공하는 경우 프로필 공개 여부입니다.
        business_account:
          type: boolean
          nullable: true
          description: 플랫폼에서 정보를 제공하는 경우, 프로필이 비즈니스 계정인지 여부입니다.
    SignatureFieldResult:
      type: object
      description: >-
        서명된 문서의 필드이며, 이 서명자 사본에서의 값을 포함합니다.
        [필드](/ko/core-technology/electronic-signature/report-electronic-signature#필드)를
        참조하십시오.
      properties:
        key:
          type: string
          description: '`sign.field_values`에서 사용되는 필드의 키입니다.'
        type:
          type: string
          enum:
            - signature
            - initials
            - full_name
            - date_signed
            - text
            - checkbox
            - email
            - data
        role:
          type: string
          enum:
            - verified_person
            - legal_representative
            - key_people
        label:
          type: string
        page:
          type: integer
          description: 1부터 시작하는 페이지 번호입니다. Word 문서의 경우 변환된 PDF의 페이지입니다.
        x:
          type: number
          description: 페이지 너비의 비율로 표시된 왼쪽 가장자리입니다.
        'y':
          type: number
          description: 페이지 높이 비율 기준 상단 가장자리입니다.
        width:
          type: number
          description: 페이지 너비에 대한 비율로 나타낸 너비입니다.
        height:
          type: number
          description: 페이지 높이에 대한 비율로 나타낸 높이입니다.
        required:
          type: boolean
        value:
          nullable: true
          description: >-
            `text`, `email`, `full_name`, `date_signed`, `data`의 경우 문자열,
            `checkbox`의 경우 불리언, 서명 또는 이니셜이 적용된 경우 `true`입니다. 비어 있으면 `null`입니다.
        display_value:
          type: string
          nullable: true
          description: >-
            페이지에 날인된 값입니다. 날짜는 해당 필드의 `date_format` 형식, 체크박스는 `Yes` 또는 `No`, 서명
            또는 이니셜은 `Signed`로 표시됩니다.
        value_source:
          type: string
          nullable: true
          enum:
            - signer
            - identity
            - contact
            - company
            - session
            - metadata
            - api
            - signing_time
            - null
          description: >-
            값의 출처: `signer`(서명자가 입력, 체크 또는 적용), `identity`(인증된 신분증),
            `contact`(인증된 이메일 또는 전화번호), `company`(인증된 기업),
            `session`(`vendor_data`), `metadata`, `api`(`sign.field_values`) 또는
            `signing_time`(서명된 날짜).
        filled_at:
          type: string
          format: date-time
          nullable: true
        image_url:
          type: string
          nullable: true
          description: >-
            서명 및 이니셜 전용: 적용된 이미지의 경로입니다. [서명 이미지
            다운로드](/ko/sessions-api/electronic-signature/download-field-image)를
            참조하세요.
        value_unavailable_reason:
          type: string
          nullable: true
          enum:
            - source_empty
            - null
          description: >-
            사전 입력된 필드가 세션에 값이 없었지만 `signature_field_data_missing_action`을 통해
            서명자가 그대로 서명하도록 허용한 경우 `source_empty`입니다.
    KYBRegistrySectionError:
      type: object
      description: 법인 등기부에서 반환하지 않은 섹션입니다.
      properties:
        status_code:
          type: integer
          nullable: true
          description: 해당 섹션에 대해 등기소에서 응답한 상태입니다.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: UBO 등급이 기업의 상위 소유 구조 체인을 탐색한 방식입니다.
      properties:
        parent_chain:
          type: array
          description: 최상위 모회사부터 해당 기업까지의 기업 모회사 목록입니다.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: 기업 집단 내에서 해당 기업 바로 아래에 위치한 기업 목록입니다.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: 법인 등기부에서 확인할 수 없는 소유 구조 체인의 일부입니다(`ownership.unresolved`와 동일한 항목).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  이유(예: `no_group_structure_on_record`,
                  `selected_company_not_in_group_structure` 또는
                  `section_error`)입니다.
              section:
                type: string
                nullable: true
                description: '해당 섹션입니다(예: `group_structure`).'
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: 해당 국가의 다른 등기부 출처가 채운 Lite 프로필의 빈 필드입니다. 출처는 명시되지 않습니다.
      properties:
        fields:
          type: array
          items:
            type: string
          description: 입력된 기업 필드입니다.
        people_added:
          type: integer
          description: 추가된 임원 또는 소유자 수입니다.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: 기록을 읽어온 공식 등기소입니다. 공식 정부 등기소, 규제 기관 및 공식 식별자 시스템만 명시되며, 기타 소스는 제외됩니다.
      properties:
        name:
          type: string
          description: '등록부 명칭(예: `UK Companies House`).'
        source_type:
          type: string
          enum:
            - official
          description: 항상 `official`입니다.
      required:
        - name
        - source_type
    KYBOwnershipStructureOwner:
      type: object
      description: >-
        소유 구조 스냅샷의 소유자 1명: `company.beneficial_owners[]`와 동일한 법인 등기부상의 신원 및 지분,
        그리고 표준 `shareholding`입니다.
      properties:
        name:
          type: string
          nullable: true
          description: 등기부에 기재된 소유자 이름입니다.
        first_name:
          type: string
          nullable: true
          description: 등기소에 명시된 경우 자연인의 이름입니다.
        last_name:
          type: string
          nullable: true
          description: 자연인의 경우, 등기부에 기재된 성입니다.
        date_of_birth:
          type: string
          nullable: true
          description: 등기소에서 공개한 경우 생년월일(ISO 8601)입니다.
        country_of_birth:
          type: string
          nullable: true
          description: 등기소에서 공개한 경우의 출생 국가입니다.
        company_name:
          type: string
          nullable: true
          description: 법인 소유자의 기업명입니다.
        registration_number:
          type: string
          nullable: true
          description: 법인 소유자의 등록번호입니다.
        entity_type:
          type: string
          nullable: true
          enum:
            - person
            - company
            - null
          description: 소유자가 자연인인지 기업인지 여부입니다.
        nationality:
          type: string
          nullable: true
          description: 등기부에 기재된 경우의 국적입니다.
        designation:
          type: string
          nullable: true
          description: 등기부에 기재된 소유자의 직함 또는 역할입니다.
        roles:
          type: array
          items:
            type: string
          description: 직접 보유자의 경우 `shareholder`, 실소유자의 경우 `ubo`입니다.
        ownership_min_shares:
          type: string
          nullable: true
          description: 지분의 하한값(백분율, 정확한 지분의 경우 상한값과 동일함).
        ownership_max_shares:
          type: string
          nullable: true
          description: 지분율 상한(백분율)입니다.
        voting_min_shares:
          type: string
          nullable: true
          description: 의결권의 하한값(백분율).
        voting_max_shares:
          type: string
          nullable: true
          description: 의결권 상한(백분율)입니다.
        appointment_date:
          type: string
          nullable: true
          description: 보유 또는 선임이 시작된 날짜(ISO 8601)입니다.
        is_active:
          type: boolean
          nullable: true
          description: 이전 소유자의 경우 False입니다.
        shareholding:
          $ref: '#/components/schemas/KYBRegistryShareholding'
      required:
        - name
        - first_name
        - last_name
        - date_of_birth
        - country_of_birth
        - company_name
        - registration_number
        - entity_type
        - nationality
        - designation
        - roles
        - ownership_min_shares
        - ownership_max_shares
        - voting_min_shares
        - voting_max_shares
        - appointment_date
        - is_active
        - shareholding
    InvestigatorDecision:
      type: object
      description: >-
        해당 항목이 Investigator 대기열을 벗어난 방식입니다. `decided_by`, `original_outcome`,
        `overrides`는 승인 및 재정의 endpoint와 보고서에서 반환되며, 세션 결정의 `investigator` 블록에는
        기타 필드가 포함됩니다.
      properties:
        outcome:
          type: string
          enum:
            - accepted
            - edited
            - overridden
            - decided_elsewhere
            - automated
          description: >-
            `accepted` 또는 `edited`는 권고안을 수락했음을 나타내며(`edited`는 서술 내용을 수정한 경우임),
            `overridden`은 다른 작업을 취했음을, `decided_elsewhere`는 보고서가 열려 있는 동안
            Investigator 외부에서 결정이 내려졌음을, `automated`는 Investigator가 자체적으로 결정을
            내렸음을 의미합니다.
        action:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
        actor_email:
          type: string
          nullable: true
        actor_name:
          type: string
          nullable: true
        override_category:
          type: string
          enum:
            - missing_context
            - needs_information
            - policy_differs
            - evidence_misread
            - other
            - ''
          nullable: true
        override_reason:
          type: string
          nullable: true
        final_status:
          type: string
          description: 결정 후 항목의 상태입니다.
        agreed:
          type: boolean
          description: 결정이 권장 사항과 일치했는지 여부입니다.
          nullable: true
        decided_at:
          type: string
          format: date-time
        billed:
          type: boolean
          description: 검토 비용이 청구되었습니다.
        decided_by:
          type: string
          enum:
            - investigator
            - member
        original_outcome:
          type: object
          description: 이후 재정의에 의해 변경되지 않은, 조사자가 자체적으로 내린 결정입니다. 팀이 내린 결정의 경우 null입니다.
          properties:
            action:
              type: string
            final_status:
              type: string
            decided_at:
              type: string
              format: date-time
          nullable: true
        overrides:
          type: array
          description: Investigator가 단독으로 내린 결정의 모든 재정의 내역(오래된 순)입니다.
          items:
            type: object
            properties:
              action:
                type: string
              actor_email:
                type: string
                nullable: true
              actor_name:
                type: string
                nullable: true
              override_category:
                type: string
              override_reason:
                type: string
              previous_status:
                type: string
              final_status:
                type: string
              agreed:
                type: boolean
                nullable: true
              overridden_at:
                type: string
                format: date-time
    KYBRegistryGroupCompany:
      type: object
      description: 법인 등기부상 신원에 따른 기업 그룹의 계열사입니다.
      properties:
        name:
          type: string
          nullable: true
          description: 기업명입니다.
        country_code:
          type: string
          nullable: true
          description: 등록 국가.
        registration_number:
          type: string
          nullable: true
          description: 등록번호입니다.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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