메인 콘텐츠로 건너뛰기

개요

모든 기능별 보고서는 service-didit-verification에 정의된 V3 직렬화 형식을 따릅니다. 같은 객체가 세 곳에 나타나므로, 여기서 보는 스키마가 이 세 곳 전체의 단일 기준입니다.
  • GET /v3/session/{sessionId}/decision/: 각 기능은 복수형 배열로 반환됩니다(id_verifications[], nfc_verifications[], liveness_checks[], face_matches[], poa_verifications[], phone_verifications[], email_verifications[], aml_screenings[], ip_analyses[], database_validations[], questionnaire_responses[], signatures[], bank_verifications[](은행 인증 방법 참조), 그리고 KYB 대응 항목인 registry_checks[], document_verifications[], key_people_checks[]).
  • webhook payload(status.updated, data.updated): decision 래퍼 안에 같은 형식이 포함됩니다.
  • 독립형 API: 단일 객체 응답(얼굴 검색, 연령 추정, 생체 인증)은 같은 필드 집합을 재사용합니다.
V3에서 다중 인스턴스 워크플로가 도입되었습니다. 모든 기능 객체는 node_id를 포함하며, 이 값은 보고서를 생성한 워크플로 그래프 노드에 고정합니다. V2 endpoint(단수형 kyc, face, aml 등)는 하위 호환성을 유지하지만 첫 번째 인스턴스만 반환합니다.

공통 필드

모든 보고서 객체는 다음 필드를 제공합니다. 미디어 필드(portrait_image, front_image, document_file 등)는 유효 기간이 제한된 사전 서명 URL입니다. URL을 저장하지 말고 즉시 다운로드하십시오. 예시에서는 이를 https://<media-host>/...로 표시합니다.

경고 객체

모든 warnings[] 배열에 포함됩니다. 스키마는 logs/serializers/log.py:8-65(LogV3Serializer)에서 가져왔습니다.

보고서 객체

나머지 섹션에서는 기능별 보고서 객체를 각각 다룹니다. 다른 문서에서 딥링크로 연결할 수 있도록 H3 제목 텍스트는 고정되어 있습니다.

신분증 인증

사용자가 제출한 KYC/ID 문서마다 반환됩니다. GET /v3/session/{sessionId}/decision/ 응답에는 id_verifications[]로 나타나며, V2 응답에서는 kyc 필드 안에 포함됩니다. 출처: kyc/serializers/kyc.py:383-414 (IDVerificationV3Serializer, kyc/serializers/kyc.py:320-380의 IDVerificationV2Serializer를 확장).
문서 이외의 방식을 사용한 동일한 객체입니다. 방식에 따라 달라지는 키만 변경됩니다. 문서 판독으로 채워지는 모든 값은 대신 등록부 레코드 또는 지갑 속성에서 채워지며, 해당하지 않는 키는 null입니다.

NFC 인증

신분증에 대해 칩을 읽을 때마다 반환됩니다. 대상은 ICAO 9303 ePassport 또는 eID 칩, 또는 JPKI를 통해 읽은 일본 마이넘버 카드(chip_protocol: "jpki")입니다. GET /v3/session/{sessionId}/decision/에서 nfc_verifications[]로 나타나며(상위 KYC 레코드당 하나), 출처는 kyc/serializers/epassport.py:121-139(NFCV3Serializer, kyc/serializers/epassport.py:83-118의 NFCV2Serializer를 확장)입니다.

라이브니스 검사

세션별 라이브니스 결과로 반환됩니다. GET /v3/session/{sessionId}/decision/ 응답의 liveness_checks[]로 나타납니다. 출처: face/serializers/face.py:301-320(LivenessV3Serializer, face/serializers/face.py:216-298의 LivenessV2Serializer를 확장).

얼굴 대조

얼굴 대조 비교마다 반환됩니다(일반적으로 사용자의 라이브니스 얼굴과 문서 초상을 비교합니다). GET /v3/session/{sessionId}/decision/ 응답의 face_matches[]로 나타납니다. 출처: face/serializers/face.py:367-389(FaceMatchV3Serializer, face/serializers/face.py:323-364의 FaceMatchV2Serializer를 확장).

얼굴 검색

독립형 얼굴 검색 API(POST /v3/face-search/)가 반환합니다. 얼굴 검색 결과는 /v3/session/{sessionId}/decision/에 복수형 배열로 나타나지 않습니다. save_api_request=true로 저장하면 세션은 features[]의 FACE_SEARCH 항목과, 저장된 matches를 담은 liveness_checks[] 항목으로 나타납니다. 출처: apis/serializers/face_search.py:8-79 (FaceSearchDetailsSerializer를 감싸는 FaceSearchResponseSerializer), 일치 딕셔너리는 face/utils/utils.py:869-884에서 생성됩니다. 최상위 응답: face_search 객체:

얼굴 검색 일치 객체

AML 스크리닝

검사된 엔티티마다 반환됩니다. KYC 및 KYB 세션 모두에서 GET /v3/session/{sessionId}/decision/의 aml_screenings[]로 나타납니다. 출처: aml/serializers/aml.py:63-85 (AMLV3Serializer, aml/serializers/aml.py:28-60의 AMLV2Serializer를 확장).

IP 분석

캡처된 네트워크 위치마다 반환됩니다. KYC 및 KYB 세션 모두에서 GET /v3/session/{sessionId}/decision/ 응답의 ip_analyses[]로 나타납니다. 출처: kyc/serializers/location.py:196-243 (IPAnalysisSerializerV3).

위치 확인

위치 확인 단계마다 반환됩니다. GET /v3/session/{sessionId}/decision/ 응답의 geolocation_checks[]로 나타나며, 단계당 하나의 항목으로 승인된 시도입니다. geolocation_attempts[]는 모든 단계의 모든 시도를 오래된 순서대로 나열합니다. 해당 단계가 없는 워크플로에서는 둘 다 null입니다. 출처: GeolocationDecisionSerializer. 모든 필드와 예시는 위치 인증 보고서에 있습니다.

주소 증명

제출된 주소 문서마다 반환됩니다. GET /v3/session/{sessionId}/decision/의 poa_verifications[]로 나타납니다. 출처: poa/serializers/poa.py:212-227 (POAV3Serializer, poa/serializers/poa.py:173-209의 POAV2Serializer를 확장).

전화번호 인증

전화번호 인증 시도마다 반환됩니다. KYC 세션과 KYB 세션 모두에서 GET /v3/session/{sessionId}/decision/ 응답의 phone_verifications[]로 나타납니다. 출처: phone/serializers/phone.py:251-266(PhoneV3Serializer, phone/serializers/phone.py:103-248의 PhoneV2Serializer를 확장한 것입니다).

이메일 인증

이메일 인증 시도마다 반환됩니다. KYC 세션과 KYB 세션 모두에서 GET /v3/session/{sessionId}/decision/ 응답의 email_verifications[]로 나타납니다. 출처: email_verification/serializers/email.py:149-164(EmailV3Serializer, email_verification/serializers/email.py:38-146의 EmailV2Serializer를 확장합니다).

데이터베이스 검증

사용자가 제출한 데이터를 대상으로 실행된 데이터베이스 조회마다 반환됩니다. GET /v3/session/{sessionId}/decision/ 응답의 database_validations[]로 나타납니다. 출처: database_validation/serializers/database_validation.py:21-142(DatabaseValidationV3Serializer, DatabaseValidationV2Serializer를 확장한 것입니다).

설문지 응답

설문지 제출마다 반환됩니다. KYC 및 KYB 세션 모두에서 GET /v3/session/{sessionId}/decision/의 questionnaire_responses[]로 나타납니다. 출처: questionnaires/serializers/questionnaire.py:591-597(QuestionnaireResponseV3Serializer, questionnaires/serializers/questionnaire.py:520-588의 QuestionnaireResponseSerializer를 확장).

전자 서명

전자 서명 단계의 서명자마다 반환됩니다. KYC 및 KYB 세션 모두에서 GET /v3/session/{sessionId}/decision/의 signatures[]로 나타나며, 워크플로에 해당 단계가 있는 경우에만 나타납니다. 다른 보고서 객체와 달리 status는 서명 단계이고 결과는 verdict에 있습니다. 또한 warnings[] 항목은 경고 객체가 아니라 { code, node_id }입니다. 전자 서명 보고서에 전체 예시와 중첩된 모든 필드가 있습니다.

연령 추정

독립형 연령 추정 API(POST /v3/age-estimation/)가 반환합니다. 응답은 age_estimation 래퍼 아래에 Liveness check의 구조 일부를 담고 있습니다. 포함되는 필드는 status, method, score, age_estimation, warnings이며, 독립형 API에만 있는 user_image 얼굴 감지 블록이 추가됩니다. 포함되지 않는 필드는 reference_image, video_url, matches, face_quality, face_luminance입니다. 워크플로 세션에는 별도의 배열이 없습니다. 추정된 연령은 GET /v3/session/{sessionId}/decision/의 liveness_checks[].age_estimation으로 제공됩니다. 출처: apis/serializers/age_estimation.py:50-55(AgeEstimationResponseSerializer), 래퍼는 apis/views/age_estimation.py:138-174에서 조립됩니다.

생체 인증

생체 인증은 표준 KYC에서 사용하는 것과 같은 라이브니스 + 얼굴 대조 파이프라인을 실행하지만, 캡처한 얼굴을 새로 OCR 처리한 문서 초상 대신 기존 사용자의 참조 이미지와 비교하도록 구성됩니다. 전용 시리얼라이저는 없습니다. GET /v3/session/{sessionId}/decision/이 표준 라이브니스 검사 및 얼굴 대조 객체를 liveness_checks[]와 face_matches[] 아래에 반환합니다. 세션의 워크플로는 workflow_type = "biometric_authentication"으로 설정됩니다(WorkflowTypeChoices, common/config/choices.py:636).

KYB 법인 등기부

KYB 워크플로에서 법인 등기부로 확인된 회사마다 반환됩니다. 기업 세션의 GET /v3/session/{sessionId}/decision/ 응답에 registry_checks[]로 나타납니다. 출처: kyb/serializers/kyb.py:939-964 (RegistryCheckV3Serializer).

회사 객체

출처: kyb/serializers/kyb.py:220-321 (KYBCompanyResponseSerializer).

KYB 문서

KYB 증빙 문서를 수집하는 노드마다 반환됩니다. 기업 세션의 GET /v3/session/{sessionId}/decision/ 응답에 document_verifications[]로 나타나며, node_id마다 한 항목이 있고 각 항목의 items[]에 업로드된 문서가 하나씩 나열됩니다. 출처: kyb/serializers/kyb.py:1053-1068 (DocumentVerificationV3Serializer). 각 항목은 kyb/serializers/kyb.py:811-851 (KYBDocumentResponseSerializer)을 따릅니다.

KYB 문서 항목 객체

KYB 주요 인물

기업 세션의 KYB 워크플로에서 주요 인물(Key People) 노드마다 반환됩니다. 기업 세션의 GET /v3/session/{sessionId}/decision/ 응답에 key_people_checks[]로 나타납니다. 출처: kyb/serializers/kyb.py:967-1050 (KeyPeopleCheckV3Serializer).

결정 수준 필드

이 키들은 GET /v3/session/{sessionId}/decision/의 기능 배열 옆에 있으며, webhook의 decision 안에도 있습니다. 읽는 방법은 세션 조회를 참조하세요.

생체 인식 동의

모든 사용자 인증 결정과 세션 webhook에는 biometric_consent 객체가 하나씩 포함됩니다(배열이 아닙니다). 이 객체에는 세션에 명시적인 생체 인식 동의가 필요했는지, 필요했다면 그 이유가 무엇인지, 그리고 응답의 근거가 기록됩니다. 세션이 평가되지 않은 경우(예: 얼굴 캡처가 없는 워크플로)에는 null입니다. 소스: BiometricConsentDecisionSerializer(sessions/serializers/biometric_consent.py). 이 단계가 언제 나타나고 각 경우가 무엇을 의미하는지는 생체 인식 동의에서 설명합니다. 기록된 값이 없는 필드는 빈 문자열이 아니라 null입니다. 일리노이주 세션이 4.10.0 미만의 네이티브 SDK로 처리되었고, 해당 SDK가 단계 없이 셀피를 캡처한 경우:
미국 외부에서 종료되는 VPN을 사용하는 응답자가 호스팅 흐름에서 동의한 경우:

상태 열거형 참조

두 개의 관련 값 집합이 status 필드 이름을 공유합니다. 이 페이지의 기능별 보고서 객체는 모두 기능 수준 열거형을 사용하며, 상위 세션의 최상위 status는 더 넓은 세션 열거형을 사용합니다.

기능 수준 상태

모든 보고서 객체의 status 필드에서 사용합니다. 출처: common/config/choices.py:343-348 (FeatureStatusChoices). 전화번호 인증, 이메일 인증 및 신분증 인증은 해당 단계의 시간이 초과되면 Expired도 나타낼 수 있습니다(PhoneStatusChoices는 common/config/choices.py:377-382, EmailStatusChoices는 common/config/choices.py:434-439).

세션 수준 상태

상위 세션의 최상위 status에서 사용합니다. 출처: common/config/choices.py:106-117 (StatusChoices).
세션의 종결 상태는 Approved, Declined, In Review, Expired, Kyc Expired, Abandoned입니다. 세션은 개별 기능이 In Review 상태에 머무는 동안에도 전체 결정에 도달할 수 있습니다.
마지막 수정일 2026년 11월 7일