Verification.Result
확인 시도 결과와 함께 발생합니다.
필드
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
eventType | string | 예 | 항상 "Verification.Result" |
data | object | 예 | 확인 결과 데이터 |
data.id | string (UUID) | 예 | 고유 확인 ID |
data.status | string | 예 | PASS 또는 FAIL일 수 있음 |
data.ageCategory | string | 아니오 | 추정 연령 카테고리. adult, digital-youth 또는 digital-minor일 수 있음. status가 PASS이고 age가 존재하는 경우에만 존재합니다 |
data.method | string | 아니오 | 사용된 확인 방법. PASS 상태의 경우 항상 존재합니다. FAIL 상태의 경우, failureReason이 age-criteria-not-met인 경우에만 존재합니다 |
data.failureReason | string | 아니오 | 확인이 실패한 이유. status가 FAIL인 경우 항상 존재합니다. age-criteria-not-met, max-attempts-exceeded 또는 fraudulent-activity-detected일 수 있습니다 |
data.age | object | 아니오 | 연령 세부 정보. age.low와 age.high가 모두 사용 가능한 경우 존재합니다. FAIL 상태의 경우, failureReason이 age-criteria-not-met인 경우에만 존재합니다 |
data.age.low | number | 아니오 | 추정 연령의 하한. ID 문서 확인과 같은 하드 연령 확인 방법의 경우 이것은 정확한 연령입니다 |
data.age.high | number | 아니오 | 추정 연령의 상한. ID 문서 확인과 같은 하드 연령 확인 방법의 경우 이것은 정확한 연령입니다 |
data.dob | string (YYYY-MM-DD) | 아니오 | 확인된 생년월일. 확인 방법이 제공하는 경우에만 포함됩니다. 방법에서 사용 가능한 경우 항상 포함됩니다 |
예시
- PASS
- FAIL (결정적)
- FAIL (비결정적)
{
"eventType": "Verification.Result",
"data": {
"id": "4e57301e-a4d1-498f-ac3f-f3d4de19abf6",
"status": "PASS",
"method": "id-document",
"age": {
"low": 43,
"high": 43
},
"dob": "1981-06-20"
}
}
{
"eventType": "Verification.Result",
"data": {
"id": "fe10accb-b845-4fc8-ac44-6130b7e0b8bd",
"status": "FAIL",
"method": "age-estimation-scan",
"age": {
"low": 13,
"high": 17
},
"failureReason": "age-criteria-not-met"
}
}
{
"eventType": "Verification.Result",
"data": {
"id": "123e4567-e89b-12d3-a456-426614174002",
"status": "FAIL",
"failureReason": "max-attempts-exceeded"
}
}
검증 이벤트 계약
개요
이 섹션은 두 가지 메커니즘을 통해 제공되는 검증 상태의 API 계약을 정의합니다:
- Webhook 이벤트: 검증이 완료될 때 전송되는
Verification.ResultWebhook 이벤트 - API 엔드포인트: 검증 상태를 폴링하기 위한
GET /age-verification/get-status엔드포인트
이 계약은 모든 가능한 결과 유형에 대한 필드 존재 규칙, 데이터 유형 및 해석 가이드를 지정합니다. 두 메커니즘 모두 유사한 데이터를 제공하지만 상태 값, 필드 존재 및 구조에 중요한 차이가 있으므로 주의해야 합니다.
검증 결과는 UI 제어 목적으로 DOM 메시지를 통해 프론트엔드 애플리케이션에도 전달됩니다. 그러나 통합 로직의 경우 신뢰할 수 있는 권위 있는 데이터 소스로 webhook 이벤트와 GET /age-verification/get-status 엔드포인트 응답만 고려해야 합니다。DOM 메시지는 프론트엔드 애플리케이션 상태 관리 전용으로 제공되며 중요한 비즈니스 결정이나 데이터 지속성의 기반으로 사용되어서는 안 됩니다.
데이터 구조
Webhook 이벤트 구조
Webhook 이벤트는 이벤트 봉투로 래핑됩니다:
{
"eventType": "Verification.Result",
"data": {
"id": "uuid",
"status": "PASS" | "FAIL",
"ageCategory": "adult" | "digital-youth" | "digital-minor" | null,
"method": "id-document" | "credit-card" | "self-confirmation" | "social-security-number" | "email-confirmation" | "age-estimation-scan" | null,
"age": {
"low": number,
"high": number
} | null,
"dob": "YYYY-MM-DD" | null,
"failureReason": string | null
}
}
API 엔드포인트 응답 구조
GET /age-verification/get-status 엔드포인트는 직접 응답을 반환합니다:
{
"id": "uuid",
"status": "PASS" | "FAIL" | "PENDING" | "IN_PROGRESS",
"ageCategory": "adult" | "digital-youth" | "digital-minor" | null,
"method": "id-document" | "credit-card" | "self-confirmation" | "social-security-number" | "email-confirmation" | "age-estimation-scan" | null,
"age": {
"low": number,
"high": number
} | null,
"dob": "YYYY-MM-DD" | null,
"failureReason": string | null
}
쿼리 매개변수:
id(필수): 검증 IDincludeDob(선택 사항, 기본값:false):true인 경우 사용 가능한 경우dob필드를 포함합니다
전체 엔드포인트 문서는 GET /age-verification/get-status를 참조하세요.
Webhook과 API 엔드포인트 간의 주요 차이점
| 측면 | Webhook 이벤트 | API 엔드포인트 |
|---|---|---|
| 상태 값 | PASS 또는 FAIL만 | PASS, FAIL, PENDING, IN_PROGRESS |
| 구조 | { eventType, data }로 래핑 | 직접 응답 객체 |
| DOB 필드 | 사용 가능한 경우 항상 포함 | includeDob=true 쿼리 매개변수가 설정된 경우에만 포함 |
| AgeCategory | 상태가 PASS인 경우에만 존재 | PASS와 FAIL 상태 모두에서 존재 |
| Method | 상태가 PASS인 경우에만 존재 | PASS와 FAIL 상태 모두에서 존재 |
| 사용 가능한 시점 | 검증이 완료될 때만 | 검증 중을 포함하여 언제든지 폴링 가능 |
상태 유형
PASS
검증이 성공적으로 사용자가 연령 기준을 충족한다고 확인했습니다.
사용 가능성:
- Webhook: ✅ 검증이 성공적으로 완료될 때 전송됩니다
- API 엔드포인트: ✅ 검증이 완료되고 성공했을 때 반환됩니다
FAIL
검증이 사용자가 연령 기준을 충족하지 않는다고 확인했거나, 결정적인 연령 판정을 내릴 수 없었거나, 기만 행위가 감지되어 검증 프로세스가 실패했습니다. 이러한 시나리오는 적절한 failureReason 값을 가진 FAIL 상태가 됩니다.
사용 가능성:
- Webhook: ✅ 검증이 실패로 완료될 때 전송됩니다
- API 엔드포인트: ✅ 검증이 완료되고 실패했을 때 반환됩니다
상태: PENDING
검증 요청이 생성되었지만 아직 처리가 시작되지 않았습니다.
사용 가능성:
- Webhook: ❌ 전송되지 않음 (webhook은 완료 시에만 트리거됨)
- API 엔드포인트: ✅ 검증이 초기 상태일 때 반환됩니다
PENDING의 API 엔드포인트 응답:
id(UUID) - 항상 포함됩니다status("PENDING") - 항상 포함됩니다- 다른 모든 필드는 없습니다
상태: IN_PROGRESS
검증이 현재 처리 중입니다.
사용 가능성:
- Webhook: ❌ 전송되지 않음 (webhook은 완료 시에만 트리거됨)
- API 엔드포인트: ✅ 검증이 활발히 처리되고 있을 때 반환됩니다
IN_PROGRESS의 API 엔드포인트 응답:
id(UUID) - 항상 포함됩니다status("IN_PROGRESS") - 항상 포함됩니다- 다른 모든 필드는 없습니다
상태별 필드 존재 규칙
Webhook 이벤트
Webhook 이벤트는 검증이 완료될 때(상태가 PASS 또는 FAIL)에만 전송됩니다. PENDING 또는 IN_PROGRESS와 같은 중간 상태는 포함하지 않습니다.
상태: PASS
Webhook 이벤트
항상 포함:
id(UUID)status("PASS")method(string) - 사용된 검증 방법
때때로 포함:
ageCategory(string) -adult,digital-youth또는digital-minor중 하나 (age가 존재하는 경우에만 존재)age(object) -low와high경계를 모두 포함 (검증 방법이 연령 정보를 제공하는 경우에만 존재)dob(string, YYYY-MM-DD 형식) - 확인된 생년월일, 검증 방법이 제공하는 경우에만 (특정 방법에 대해서는 생년월일 필드 섹션 참조). 사용 가능한 경우 항상 포함됩니다.
포함되지 않음:
failureReason
API 엔드포인트
항상 포함:
id(UUID)status("PASS")method(string) - 사용된 검증 방법 (사용 가능한 경우)
때때로 포함:
ageCategory(string) -adult,digital-youth또는digital-minor중 하나 (연령이 존재하는 경우)age(object) -low와high경계를 모두 포함 (검증 방법이 연령 정보를 제공하는 경우)
때때로 포함:
dob(string, YYYY-MM-DD 형식) -includeDob=true쿼리 매개변수가 설정되고 검증 방법이 제공하는 경우에만 포함됩니다 (특정 방법에 대해서는 생년월일 필드 섹션 참조)
포함되지 않음:
failureReason
- PASS 상태를 성공한 검증으로 처리합니다
ageCategory필드가 존재하는 경우 사용자 권한 및 액세스 수준을 결정하는 데 사용합니다ageCategory가 존재하는 경우 액세스 제어에age.low또는age.high만 의존하지 말고 대신ageCategory를 사용합니다dob가 제공되는 경우 사용할 수 있지만 항상 사용 가능하다고 가정하지 마세요- API 엔드포인트의 경우: DOB 데이터가 필요한 경우 쿼리 매개변수에서
includeDob=true를 설정합니다 (GET /age-verification/get-status참조)
상태: FAIL
Webhook 이벤트
항상 포함:
id(UUID)status("FAIL")failureReason(string) - 실패 이유
때때로 포함:
method(string) - 실패가max-attempts-exceeded또는fraudulent-activity-detected로 인한 것이 아닌 경우에만 존재age(object) -failureReason이age-criteria-not-met인 경우에만 존재dob(string) - 검증 방법이 제공하는 경우에만 존재 (특정 방법에 대해서는 생년월일 필드 섹션 참조). 사용 가능한 경우 항상 포함됩니다.
포함되지 않음:
ageCategory- Webhook 이벤트는 상태가PASS인 경우에만ageCategory를 포함합니다
API 엔드포인트
항상 포함:
id(UUID)status("FAIL")failureReason(string) - 실패 이유
때때로 포함:
method(string) - 실패가age-criteria-not-met로 인한 경우에만 존재age(object) -failureReason이age-criteria-not-met인 경우에만 존재ageCategory(string) -age가 존재하는 경우에만 존재dob(string) -includeDob=true쿼리 매개변수가 설정되고 검증 방법이 제공하는 경우에만 포함됩니다 (특정 방법에 대해서는 생년월일 필드 섹션 참조)
포함되지 않음:
age가 존재하지 않는 경우의ageCategory
FAIL상태를 실패한 검증으로 처리하고 액세스 또는 권한을 부여하지 마세요- 검증이 실패한 이유를 이해하기 위해 항상
failureReason을 확인하세요 - FAIL 상태에
age필드가 존재한다고 가정하지 마세요. 사용할 수 없을 수 있습니다 FAIL결과에age가 존재하는 경우 로깅 또는 분석에 사용할 수 있지만 액세스 제어 결정에는 사용하지 마세요method와age가 없는 경우를 처리하세요. 이것은 시스템 수준의 실패를 나타내며 연령 결정 실패가 아닙니다- Webhook 이벤트의 경우:
FAIL상태에는ageCategory가 존재하지 않으므로 사용하려고 하지 마세요 - API 엔드포인트의 경우:
FAIL상태에ageCategory가 존재하더라도 액세스 제어 결정에는 사용하지 마세요
일반적인 실패 이유:
age-criteria-not-met- 사용자의 확인된 연령이 필요한 임계값을 충족하지 않습니다max-attempts-exceeded- 사용자가 사용 가능한 모든 검증 시도를 소진했습니다 (이것은 사용자가 실패하거나 불확실한 연령 결정 후 재시도를 소진한 경우의 최종 실패 이유입니다)fraudulent-activity-detected- 시스템이 의심스럽거나 사기적인 활동을 감지했습니다
연령 필드 채우기 규칙
age 객체가 존재하는 경우
age 객체에는 두 개의 필드가 포함됩니다:
low(number): 연령 추정의 하한 또는 하드 검증 방법(예: ID 문서)의 정확한 연령high(number): 연령 추정의 상한 또는 하드 검증 방법의 정확한 연령, 또는 최소 연령만 알려진 경우 150
age가 존재하는 조건:
- 검증 방법이 연령 정보를 제공했습니다
- FAIL 상태의 경우:
failureReason이age-criteria-not-met
age객체에 액세스하기 전에age.low와age.high가 모두 존재하는지 확인하세요age.low === age.high가 정확한 연령을 의미한다고 가정하지 마세요. 그럴 수 있지만 검증 방법에 따라 다릅니다status가 PASS가 아닌 경우 액세스 제어에age필드를 사용하지 마세요- PASS 상태의 경우 액세스 결정을 내릴 때 원시
age값보다ageCategory를 사용하는 것을 선호합니다
ageCategory가 존재하는 경우
ageCategory 필드는 연령 및 관할권 정보에서 파생됩니다.
값:
adult- 사용자는 성인으로 분류됩니다digital-youth- 사용자는 디지털 청소년으로 분류됩니다 (연령 제한이 있지만 미성년자는 아님)digital-minor- 사용자는 디지털 미성년자로 분류됩니다
ageCategory가 존재하는 조건:
age객체가 존재합니다- 연령 및 관할권에서 연령 카테고리가 성공적으로 계산되었습니다
- FAIL 상태의 경우:
failureReason이age-criteria-not-met
- 상태가 PASS이고
ageCategory가 존재하는 경우 액세스 제어 결정에ageCategory를 사용합니다 age가 존재하는 경우에도ageCategory가 항상 존재한다고 가정하지 마세요age가 존재하지만ageCategory가 없는 경우를 처리하세요- FAIL 상태의 경우 존재하더라도 액세스 제어 결정에
ageCategory를 사용하지 마세요
age와 ageCategory가 없는 경우
조건:
- 검증이
max-attempts-exceeded의failureReason으로 실패했습니다 - 연령 결정이 이루어지지 않았습니다 - 검증이
fraudulent-activity-detected의failureReason으로 실패했습니다 - 보안상의 이유로 연령 데이터가 제외되었습니다 - 검증 방법이 연령 정보를 제공하지 않았습니다
- 연령 정보가 항상 사용 가능하다고 가정하지 말고 누락된 연령 필드를 적절히 처리하세요
age가 없는 경우 다른 필드에서 연령을 추론하려고 하지 마세요- 연령 필드가 없는 FAIL 상태의 경우 무엇이 잘못되었는지 이해하기 위해
failureReason에 의존하세요
생년월일 필드
형식: YYYY-MM-DD (ISO 8601 날짜 형식)
존재하는 경우:
dob 필드는 검증 방법이 확인된 생년월일을 제공하는 경우에만 포함됩니다. 연령 추정 또는 연령 범위만 제공하는 방법에는 포함되지 않습니다. 검증 방법 및 관할권의 다양한 조합을 고려할 때, dob가 언제 존재해야 하는지에 대해 검증이나 기대를 수행해서는 안 됩니다. 이 필드는 검증 방법에서 사용 가능한 경우 제공되지만 모든 시나리오에서 그 존재를 보장할 수는 없습니다.
dob를 제공할 수 있는 방법:
id-document- ID 문서에 읽을 수 있는 생년월일 정보가 포함된 경우credit-card- 신용카드 검증이 생년월일을 제공하는 경우 (모든 신용카드 검증에 DOB가 포함되는 것은 아님)social-security-number- SSN 검증이 생년월일을 제공하는 경우privy- 항상 제공됩니다 (인도네시아 신원 확인)korean-real-name- 항상 제공됩니다 (Inicis를 통한 한국 실명 확인)age-attestation- 증명에 생년월일 정보가 포함된 경우singpass- 항상 제공됩니다 (싱가포르 국민 신원 확인)
dob를 제공하지 않는 방법:
age-estimation-scan- 연령 범위만 제공하며 확인된 DOB는 제공하지 않습니다email-confirmation- 연령 추정만 제공하며 확인된 DOB는 제공하지 않습니다email-estimation- 연령 추정만 제공하며 확인된 DOB는 제공하지 않습니다self-confirmation- 확인된 DOB를 사용할 수 없습니다
상태 조건:
- 방법이 제공하는 경우 PASS 상태에서 존재
- 사용자가 연령 기준을 충족하지 않는다고 결정되기 전에 방법이 제공한 경우 FAIL 상태에서 존재
- PASS 상태에서도
dob가 항상 존재한다고 가정하지 마세요 dob가 존재하는 경우YYYY-MM-DD형식인지 확인하세요dob를 추가 검증 또는 로깅에 사용할 수 있지만 연령을 결정하는 주요 방법으로 의존하지 마세요
방법 필드
존재하는 경우:
- PASS 상태의 경우 항상 존재
- FAIL 상태의 경우
failureReason이age-criteria-not-met일 때 존재
가능한 값:
id-document- 정부 발급 ID 문서 검증 (DOB 포함 가능)credit-card- 신용카드 검증 (DOB 포함 가능)self-confirmation- 자체 선언 연령 확인 (DOB 없음)age-estimation-scan- 문서 스캔을 통한 연령 추정 (DOB 없음, 연령 범위만)social-security-number- SSN 기반 검증 (DOB 포함 가능)email-confirmation- 이메일 기반 연령 검증 (DOB 없음, 연령 추정만)email-estimation- 이메일 기반 연령 추정 (DOB 없음, 연령 추정만)privy- 인도네시아 신원 확인 (항상 DOB 포함)korean-real-name- Inicis를 통한 한국 실명 확인 (항상 DOB 포함)age-attestation- k-ID를 통한 연령 증명 (DOB 포함 가능)singpass- 싱가포르 국민 신원 확인 (항상 DOB 포함)connect-id- 호주 ConnectID 검증
- 분석 또는 로깅 목적으로
method를 사용할 수 있습니다 - 액세스 제어 결정에
method를 사용하지 마세요
실패 이유 값
일반적인 failureReason 값:
age-criteria-not-met- 사용자의 확인된 연령이 필요한 임계값을 충족하지 않습니다max-attempts-exceeded- 사용자가 사용 가능한 모든 검증 시도를 소진했습니다fraudulent-activity-detected- 시스템이 의심스럽거나 사기적인 활동을 감지했습니다
- 알 수 없는
failureReason값을 적절히 처리하고 예상치 못한 값을 보면 중단되지 않도록 하세요 failureReason만을 기반으로 액세스 결정을 내리지 말고 항상status필드를 고려하세요- 디버깅 및 분석 목적으로
failureReason을 로깅하는 것이 좋습니다
전체 필드 매트릭스
Webhook 이벤트
| 필드 | PASS | FAIL |
|---|---|---|
id | always | always |
status | always | always |
method | always | sometimes¹ |
ageCategory | sometimes² | never |
age | sometimes² | sometimes³ |
dob | sometimes⁴ | sometimes⁴ |
failureReason | never | always |
¹ failureReason이 max-attempts-exceeded 또는 fraudulent-activity-detected가 아닌 한 존재
² age.low와 age.high가 모두 사용 가능한 경우에만 존재
³ age.low와 age.high가 모두 사용 가능하고 failureReason이 max-attempts-exceeded 또는 fraudulent-activity-detected가 아닌 경우에만 존재
⁴ 검증 방법에서 사용 가능한 경우 항상 포함됩니다
API 엔드포인트
| 필드 | PENDING | IN_PROGRESS | PASS | FAIL |
|---|---|---|---|---|
id | always | always | always | always |
status | always | always | always | always |
method | never | never | sometimes² | sometimes¹ |
ageCategory | never | never | sometimes² | sometimes² |
age | never | never | sometimes² | sometimes³ |
dob | never | never | sometimes⁴ | sometimes⁴ |
failureReason | never | never | never | always |
¹ failureReason이 max-attempts-exceeded 또는 fraudulent-activity-detected가 아닌 한 존재
² age.low와 age.high가 모두 사용 가능한 경우에만 존재
³ age.low와 age.high가 모두 사용 가능하고 failureReason이 max-attempts-exceeded 또는 fraudulent-activity-detected가 아닌 경우에만 존재
⁴ includeDob=true 쿼리 매개변수가 설정되고 검증 방법에서 사용 가능한 경우에만 포함됩니다
페이로드 예시
Webhook 이벤트 예시
연령 정보가 포함된 PASS 상태
{
"eventType": "Verification.Result",
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"status": "PASS",
"method": "id-document",
"ageCategory": "adult",
"age": {
"low": 25,
"high": 25
},
"dob": "1998-05-15"
}
}
연령 정보가 포함된 FAIL 상태
{
"eventType": "Verification.Result",
"data": {
"id": "123e4567-e89b-12d3-a456-426614174001",
"status": "FAIL",
"method": "age-estimation-scan",
"failureReason": "age-criteria-not-met",
"age": {
"low": 16,
"high": 17
}
}
}
연령 정보가 없는 FAIL 상태
{
"eventType": "Verification.Result",
"data": {
"id": "123e4567-e89b-12d3-a456-426614174002",
"status": "FAIL",
"failureReason": "max-attempts-exceeded"
}
}
API 엔드포인트 응답 예시
PENDING 상태
{
"id": "123e4567-e89b-12d3-a456-426614174003",
"status": "PENDING"
}
IN_PROGRESS 상태
{
"id": "123e4567-e89b-12d3-a456-426614174004",
"status": "IN_PROGRESS"
}
연령 정보가 포함된 PASS 상태 (DOB 없음)
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"status": "PASS",
"method": "id-document",
"ageCategory": "adult",
"age": {
"low": 25,
"high": 25
}
}
DOB가 포함된 PASS 상태 (includeDob = true)
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"status": "PASS",
"method": "id-document",
"ageCategory": "adult",
"age": {
"low": 25,
"high": 25
},
"dob": "1998-05-15"
}
연령 정보가 포함된 FAIL 상태
{
"id": "123e4567-e89b-12d3-a456-426614174001",
"status": "FAIL",
"method": "age-estimation-scan",
"failureReason": "age-criteria-not-met",
"age": {
"low": 16,
"high": 17
},
"ageCategory": "digital-minor"
}
연령 정보가 없는 FAIL 상태
{
"id": "123e4567-e89b-12d3-a456-426614174002",
"status": "FAIL",
"failureReason": "max-attempts-exceeded"
}
구현 체크리스트
Webhook 이벤트
- 두 가지 상태 유형 처리: PASS 및 FAIL (webhook은 PENDING 또는 IN_PROGRESS를 전송하지 않음)
-
age.low또는age.high에 액세스하기 전에age객체의 존재 확인 - 상태가 PASS이고
ageCategory가 존재하는 경우 액세스 제어에ageCategory사용 - FAIL 상태에
ageCategory를 사용하지 않음 (webhook 이벤트에는 존재하지 않음) -
method가 없는 경우 처리 (시스템 수준 실패) -
age와ageCategory가 없는 경우 처리 (특정 실패 시나리오) -
dob형식 (YYYY-MM-DD) 검증 (존재하는 경우) - 디버깅을 위해
failureReason로깅 - FAIL 상태에 액세스 부여하지 않음
- 알 수 없는
failureReason값을 적절히 처리
API 엔드포인트
- 모든 상태 유형 처리: PENDING, IN_PROGRESS, PASS 및 FAIL
- PENDING 및 IN_PROGRESS 상태의 경우
id및status필드만 예상 - DOB 데이터가 필요한 경우
includeDob=true쿼리 매개변수 설정 (GET /age-verification/get-status참조) -
age.low또는age.high에 액세스하기 전에age객체의 존재 확인 - 상태가 PASS이고
ageCategory가 존재하는 경우 액세스 제어에ageCategory사용 - 상태가 FAIL인 경우 존재하더라도 액세스 제어에
ageCategory를 사용하지 않음 -
method가 없는 경우 처리 (시스템 수준 실패) -
age와ageCategory가 없는 경우 처리 (특정 실패 시나리오) -
dob형식 (YYYY-MM-DD) 검증 (존재하는 경우) - 디버깅을 위해
failureReason로깅 - FAIL 상태에 액세스 부여하지 않음
- 알 수 없는
failureReason값을 적절히 처리 - PENDING 및 IN_PROGRESS 상태에 적절한 폴링 전략 구현
구현 참고 사항
ageCategory 필드는 Webhook 이벤트에서 상태가 PASS인 경우에만 포함됩니다. 이렇게 하면 연령 카테고리 정보가 검증이 성공한 경우에만 제공됩니다. API 엔드포인트는 일부 경우에 FAIL 상태에 ageCategory를 포함할 수 있지만 액세스 제어 결정에 사용해서는 안 됩니다.
버전 기록
- 2024-12-05: 초기 API 계약 문서