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

# 데이터베이스 검증 보고서: JSON 응답

> Didit의 데이터베이스 검증 응답을 파싱하세요. 서비스별 일치 결과, 등기부 출처 데이터, 생체 인식 얼굴 대조 점수 및 경고 코드를 확인합니다. 호출당 $0.05부터.

Didit의 [데이터베이스 검증](https://docs.didit.me/ko/core-technology/database-validation/overview.md) 기능은 각 사용자의 신원 데이터를 해당 국가의 공인 출처인 RENAPER(아르헨티나), Receita Federal(브라질), Tribunal Electoral(파나마, 생체 얼굴 대조 포함), Junta Central Electoral(도미니카 공화국) 등과 대조하며, 월간 최소 비용 없이 성공한 쿼리 건당 청구됩니다.

`database_validations[]`의 각 항목은 하나의 완전한 데이터베이스 검증 보고서로, 단일 발급 국가에 대해 데이터베이스 검증 노드를 1회 실행한 결과입니다. 서비스별 등기부 결과는 해당 항목의 `validations[]` 하위 배열 내에 위치합니다. 이 페이지에서는 각 서비스에서 반환된 일치 결과, 등기부 출처 데이터 및 생체 인식 점수를 파싱할 수 있도록 JSON 구조를 설명합니다.

![일치 유형과 등기부 응답 필드를 보여주는 Didit 데이터베이스 검증 보고서](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/database-validation-report.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=56284966659e33d1c74385647537e5d9)

## 개요

데이터베이스 검증 보고서는 워크플로 노드가 데이터베이스 검증 기능을 실행할 때마다 생성됩니다. `database_validations[]` 배열의 각 항목은 **단일 발급 국가**에 대한 **1회의 노드 실행**을 나타냅니다. 노드가 해당 국가에 대해 여러 서비스를 실행하는 경우(예: 브라질의 CPF + CNH), 각 서비스는 해당 항목의 `validations[]` 하위 배열 내에 별도의 항목으로 표시됩니다. 각 보고서에는 다음이 포함됩니다:

* 전체 기능 `status` — [`FeatureStatusChoices`](https://docs.didit.me/ko/reference/data-models#상태-열거형-참조) 값(`Not Finished`, `Approved`, `Declined`, `In Review`).
* [일치 방식](https://docs.didit.me/ko/core-technology/database-validation/database-validation-matching-methods.md)을 통해 서비스 전반에 걸쳐 종합된 롤업 `match_type`(`full_match`, `partial_match`, `no_match`, 또는 사용 가능한 결과를 반환한 서비스가 없는 경우 `null`).
* `issuing_state`(ISO 3166-1 alpha-3) 및 파생된 `validation_type`(`one_by_one`, `two_by_two` 또는 `not_enabled` — 절대 `null`이 아님).
* `screened_data` 블록 — 등기부로 전송된 사용자가 제공한 데이터.
* `validations[]` 배열 — 결과를 생성한 서비스당 하나의 항목으로, 카탈로그의 `service_id`/`service_name`, 벤더 중립적인 `outcome_code`, 선택적 `outcome_detail`, 필드별 `validation` 맵 및 등기부 응답에서 추출된 정제된 `source_data`가 포함됩니다.
* `errors[]` 배열 — 조회가 실패했거나 건너뛴 경우의 서비스별 오류이며, 오류가 없는 경우 이 키는 **완전히 생략**됩니다.
* `warnings[]` 배열 — 검증 중에 발생한 위험 이벤트([데이터베이스 검증 경고](https://docs.didit.me/ko/core-technology/database-validation/database-validation-warnings.md) 참조).
* 보고서를 생성한 워크플로 그래프 노드를 식별하는 `node_id`(V3 세션 전용).

## API 응답에 표시되는 위치

이 보고서는 `GET /v3/session/{sessionId}/decision/`에서 **`database_validations[]`**로 표시되며, 단일 객체가 아닌 항상 JSON 배열 형태입니다. 배열에는 워크플로 그래프의 데이터베이스 검증 노드당 하나의 항목이 포함되며, 각 항목의 `validations[]` 하위 배열에는 결과를 생성한 등기부 서비스당 하나의 항목이 포함됩니다.

```json theme={null}
{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "status": "Approved",
  "database_validations": [
    { "node_id": "feature_db_validation_1", "status": "Approved", "...": "..." }
  ]
}
```

`null` 값은 데이터베이스 검증 단계가 아직 실행되지 않았음을 의미합니다.

## 스키마

필드별 표준 스키마는 [데이터 모델](https://docs.didit.me/ko/reference/data-models.md#데이터베이스-검증) 페이지에서 확인할 수 있습니다. 이는 `DatabaseValidationV3Serializer`에 의해 생성됩니다.

```typescript theme={null}
interface DatabaseValidation {
  node_id: string | null;
  status: "Not Finished" | "Approved" | "Declined" | "In Review"; // FeatureStatusChoices
  issuing_state: string | null;      // ISO 3166-1 alpha-3, e.g. "ARG"
  validation_type: "one_by_one" | "two_by_two" | "not_enabled"; // derived, never null
  match_type: "full_match" | "partial_match" | "no_match" | null; // null when no service returned a usable result
  screened_data: {                   // What we sent to the registry (varies by country/service)
    tax_number?: string;
    personal_number?: string;
    document_number?: string;
    first_name?: string;
    last_name?: string;
    date_of_birth?: string;          // YYYY-MM-DD
    selfie?: string;                 // Presigned URL (biometric services)
    cnh_qr_code_image?: string;      // Presigned URL (Brazil CNH QR + face match)
    document_image?: string;         // Presigned URL (services that take a document image)
    gender?: string;                 // Biometric registry services (e.g. Argentina RENAPER)
  };
  validations: Array<{
    // Catalog metadata
    service_id?: string;             // e.g. "arg_renaper"
    service_name?: string;           // e.g. "Argentina - DNI verification (RENAPER)"
    // Per-field match outcome — keys vary by service
    // (full_name, first_name, last_name, date_of_birth, identification_number, address, …)
    validation?: Record<string, "full_match" | "partial_match" | "no_match">;
    outcome_code?: string;           // Vendor-neutral outcome, see below
    outcome_detail?: string;         // Raw upstream status detail backing the outcome code
    source_data?: {                  // Cleaned registry record
      identification_number?: string;
      first_name?: string;
      last_name?: string;
      full_name?: string;
      date_of_birth?: string;
      place_of_birth?: string;
      gender?: string;
      nationality?: string;
      issue_date?: string;
      expiration_date?: string;
      photo?: string;                // Pre-signed JPEG URL
      signature?: string;            // Pre-signed JPEG URL
      face_match_score?: number;     // Biometric services only (0-100)
    };
  }>;
  errors?: Array<{                   // Omitted entirely when empty
    service_id: string;
    code?: string;                   // e.g. "invalid_screened_data", "empty_provider_response"
    message?: string;
    missing_required_fields?: string[];
    invalid_format_fields?: string[];
    field_reasons?: Record<string, string>;
  }>;
  warnings: Warning[];               // See /reference/data-models#warning-object
}
```

### 상태 값

`status`는 표준 기능 수준 열거형(enum)을 사용합니다([상태 열거형](https://docs.didit.me/ko/reference/data-models.md#상태-열거형-참조) 참조) — 자세한 내용은 [상태 열거형 레퍼런스](https://docs.didit.me/ko/reference/data-models.md#상태-열거형-참조)를 참고하세요. 해당 열거형에는 `Resub Requested`도 정의되어 있으나, 데이터베이스 검증에서는 실제로 생성되지 않습니다.

| 상태 | 의미 |
| - | - |
| `Not Finished` | 검증 결과가 아직 생성되지 않았습니다(초기 상태이며, 독립 실행형 호출이 모든 서비스에서 실패했을 때도 기록됨). |
| `Approved` | 감지된 위험이 없거나, 감지된 위험의 설정된 작업이 `NO_ACTION`뿐인 경우입니다(부분 일치 기본값). |
| `Declined` | 설정된 작업이 `DECLINE`인 불일치 또는 부분 일치 결과입니다. |
| `In Review` | 설정된 작업이 `REVIEW`인 불일치 또는 부분 일치 결과이거나, 검증을 전혀 실행할 수 없었던 경우입니다(`COULD_NOT_PERFORM_DATABASE_VALIDATION` — 항상 검토 대상). |

이 기본 상태 위에 노드별 사용자 지정 상태 규칙이 적용됩니다. 설정 가능한 작업 및 해당 기본값은 [데이터베이스 검증 경고](https://docs.didit.me/ko/core-technology/database-validation/database-validation-warnings.md)를 참고하세요.

### 결과 코드

`validations[]`의 각 항목에는 벤더 중립적인 `outcome_code`가 포함되며, `MATCH`, `PARTIAL_MATCH`, `NO_MATCH`, `DOCUMENT_NOT_FOUND`, `INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT`, `MINOR_BLOCKED`, `DECEASED`, `BIOMETRIC_NO_MATCH`, `BIOMETRIC_IMAGE_UNUSABLE`, `INCONCLUSIVE`, `DOCUMENT_SUPERSEDED`, `REGISTRY_UNAVAILABLE`, `REGISTRY_ERROR` 중 하나를 가집니다. 차이점에 유의하세요: `NO_MATCH`는 등록 기관에서 해당 데이터를 확정적으로 확인하지 못했음을 의미하고, `INCONCLUSIVE`는 등록 기관에서 어느 쪽인지 판별할 수 없음을 의미하며(거부가 아닌 검토로 라우팅), `BIOMETRIC_IMAGE_UNUSABLE`은 확정적인 `BIOMETRIC_NO_MATCH`와 달리 기술적인 셀피 문제입니다(재촬영). 전체 분류 체계와 권장 처리 방법은 [결과 코드](https://docs.didit.me/ko/core-technology/database-validation/database-validation-outcome-codes.md) 페이지를 참고하세요.

### 서비스당 하나의 항목

`validations[]` 배열에는 **결과 payload를 생성한 각 서비스당 하나의 항목**(`validation` 맵, `source_data`, `outcome_code` 또는 `outcome_detail`)이 포함됩니다. 워크플로가 동일한 국가에 대해 여러 서비스를 실행하는 경우(예: 브라질 CPF + 브라질 CNH), 각 서비스는 고유한 `service_id`, `outcome_code`, `source_data`와 함께 별도로 표시됩니다. 집계된 `match_type`은 모든 서비스의 결과를 종합하며(완전 일치가 하나라도 있는 경우 → `full_match`, 그렇지 않고 부분 일치가 있는 경우 → `partial_match`, 그 외에는 `no_match`), `validation_type`은 완전 일치한 고유 서비스의 수를 기반으로 도출됩니다 — [일치 방식](https://docs.didit.me/ko/core-technology/database-validation/database-validation-matching-methods.md)을 참고하세요.

### 사전 서명된 이미지 URL

`source_data`(`photo`, `signature`) 및 `screened_data`(`selfie`, `cnh_qr_code_image`, `document_image`)의 이미지 필드는 만료 시간이 있는 **사전 서명된 URL**로 반환됩니다. 결정 endpoint를 다시 호출하여 새로고침할 수 있습니다. 업스트림 원본 payload는 의도적으로 API를 통해 노출되지 않습니다.

## 예시

### 승인됨 — 브라질 CPF 상태 확인(Receita Federal)

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "Approved",
  "issuing_state": "BRA",
  "validation_type": "one_by_one",
  "match_type": "full_match",
  "screened_data": {
    "tax_number": "12345678900",
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1980-01-01"
  },
  "validations": [
    {
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "outcome_code": "MATCH",
      "outcome_detail": "200",
      "validation": {
        "full_name": "full_match",
        "date_of_birth": "full_match",
        "identification_number": "full_match"
      },
      "source_data": {
        "identification_number": "12345678900",
        "first_name": "JOHN",
        "last_name": "DOE",
        "date_of_birth": "1980-01-01",
        "lgpd_minor": false,
        "minor_under_16": false,
        "minor_under_18": false
      }
    }
  ],
  "warnings": []
}
```

### 승인됨 — 아르헨티나 DNI 생체 인식(RENAPER)

아르헨티나의 경우, 검증은 생체 인식 얼굴 대조와 함께 RENAPER를 사용합니다. 응답에는 `face_match_score`와 등록 기관에서 반환된 추가 신원 필드가 포함됩니다.

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "Approved",
  "issuing_state": "ARG",
  "validation_type": "one_by_one",
  "match_type": "full_match",
  "screened_data": {
    "document_number": "12345678",
    "selfie": "https://<media-host>/sessions/<session-id>/selfie.jpg?X-Amz-Signature=...",
    "gender": "M",
    "first_name": "John",
    "last_name": "Doe"
  },
  "validations": [
    {
      "service_id": "arg_renaper",
      "service_name": "Argentina - DNI verification (RENAPER)",
      "outcome_code": "MATCH",
      "validation": {
        "full_name": "full_match",
        "identification_number": "full_match"
      },
      "source_data": {
        "identification_number": "12345678",
        "first_name": "John",
        "last_name": "Doe",
        "full_name": "John Doe",
        "date_of_birth": "1990-01-01",
        "tax_id": "20000000019",
        "tax_id_type": "CUIT",
        "face_match_score": 97
      }
    }
  ],
  "warnings": []
}
```

### 검토 중 — 등록 기관 실행 불가

필수 필드가 누락되었거나 형식이 잘못된 경우, 또는 등록 기관에 연결할 수 없어 어떤 서비스도 사용 가능한 결과를 반환하지 못하는 경우, `match_type`은 `null`로 유지되고 `validation_type`은 `not_enabled`가 되며 `COULD_NOT_PERFORM_DATABASE_VALIDATION` 경고가 발생하고, 데이터가 수정될 때까지 기능 상태는 `In Review`로 전환됩니다. 건너뛴 서비스에는 **요금이 부과되지 않습니다**.

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "In Review",
  "issuing_state": "PAN",
  "validation_type": "not_enabled",
  "match_type": null,
  "screened_data": {
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1990-01-01",
    "selfie": "https://<media-host>/sessions/<session-id>/selfie.jpg?X-Amz-Signature=..."
  },
  "validations": [],
  "errors": [
    {
      "code": "invalid_screened_data",
      "message": "Database validation was skipped before calling the provider because the screened data has missing required fields: personal_number.",
      "missing_required_fields": ["personal_number"],
      "service_id": "pan_cedula_sib_plus"
    }
  ],
  "warnings": [
    {
      "feature": "DATABASE_VALIDATION",
      "risk": "COULD_NOT_PERFORM_DATABASE_VALIDATION",
      "additional_data": {
        "reason": "Database validation was skipped before any provider request because the screened data is incomplete or invalid.",
        "database_validation_errors": [
          {
            "code": "invalid_screened_data",
            "message": "Database validation was skipped before calling the provider because the screened data has missing required fields: personal_number.",
            "missing_required_fields": ["personal_number"],
            "service_id": "pan_cedula_sib_plus"
          }
        ],
        "missing_required_fields_by_service": { "pan_cedula_sib_plus": ["personal_number"] },
        "invalid_format_fields_by_service": {},
        "field_reasons_by_service": {}
      },
      "log_type": "warning",
      "short_description": "Could not perform database validation",
      "long_description": "The system couldn't perform the database validation, please fill the required fields for this country to automatically proceed with database validation.",
      "node_id": "feature_db_validation_1"
    }
  ]
}
```

콘솔의 세션 세부 정보 페이지에서 누락된 필드를 입력하세요. 저장하면 검사가 자동으로 다시 트리거되며 성공 시 경고가 해제됩니다.

## 관련 문서

* [데이터베이스 검증 개요](https://docs.didit.me/ko/core-technology/database-validation/overview.md) — API 엔드투엔드 작동 방식 및 지원되는 등록 기관.
* [일치 방식](https://docs.didit.me/ko/core-technology/database-validation/database-validation-matching-methods.md) — 1×1 / 2×2 결과(`validation_type: one_by_one` / `two_by_two`)가 도출되는 방식.
* [결과 코드](https://docs.didit.me/ko/core-technology/database-validation/database-validation-outcome-codes.md) — 국가별 세부 코드를 포함한 결과별 전체 분류 체계.
* [지원 국가 및 서비스](https://docs.didit.me/ko/core-technology/database-validation/database-validation-supported-countries.md) — 지원되는 모든 등록 기관, 필수 필드 및 호출당 가격.
* [데이터베이스 검증 경고](https://docs.didit.me/ko/core-technology/database-validation/database-validation-warnings.md) — 서비스를 실행할 수 없을 때 표시되는 내용.
* [데이터 모델 — 데이터베이스 검증](https://docs.didit.me/ko/reference/data-models.md#데이터베이스-검증) — 필드별 표준 스키마.


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