> ## 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: сверка национальных ID

> Didit: POST /v3/database-validation/ проверяет данные личности по 100+ национальным и глобальным источникам, сопоставление 1x1 и 2x2. Оплата за вызов.

## Адресные сервисы

Для сервисов, которые проверяют адрес проживания или адрес по счёту за коммунальные услуги, можно передать один параметр `address`, и Didit разделит его перед проверкой. Для лучшего процента совпадений передавайте структурированные поля адреса Didit напрямую:

| Поле | Значение |
| - | - |
| `address_element_1` | Улица, включая номер дома и тип улицы |
| `address_element_2` | Необязательно: квартира, корпус, этаж или дополнительная строка адреса |
| `address_element_3` | Район, округ, микрорайон или квартал |
| `address_element_4` | Город, населённый пункт, область, штат, провинция или регион |
| `address_element_5` | Почтовый индекс |

Структурированные поля имеют приоритет над значением `address`. `postal_code` принимается как альтернативное имя для `address_element_5`.

## Согласие

Для некоторых сервисов проверки баз данных к провайдеру можно обращаться только при наличии явного согласия конечного пользователя. В каталоге сервисов такие строки отмечены `requires_consent=true`.

Передайте `consent=true`, если согласие пользователя распространяется на выбранные сервисы.

Если выбранный сервис требует согласия, а вы его не передали, Didit отклоняет запрос до обращения к провайдеру и до какого-либо события тарификации.

## Загрузка файлов

Проверка по базам данных использует `multipart/form-data`. Биометрические сервисы, которым требуется `selfie`, представлены в среде тестирования API как поле загрузки файла, поэтому можно выбрать изображение напрямую, без вставки пути или строки в формате base64.

В коде загружайте файл стандартным синтаксисом multipart:

```bash theme={null}
-F "selfie=@./selfie.jpg"
```

## Ошибки валидации

Didit проверяет обязательные поля, структуру адреса и форматы, специфичные для сервиса, до обращения к провайдеру. Например, сервисы китайских реестров, такие как `chn_national_id` и `chn_passport_verification`, ожидают `full_name` в оригинальной китайской системе письма, а `chn_national_id` также требует действительный китайский национальный идентификационный номер из 15 или 18 символов с корректной контрольной суммой.

Если запрос не может быть выполнен, API возвращает явные ошибки по полям, и использование не тарифицируется. Если после предварительной проверки у провайдера произошла ошибка, ответ содержит `validation_errors`, а сохранённые API-запросы записывают эти ошибки в результат проверки по базам данных.

## Отклонённые данные и недоступные результаты

Если ни один сервис не вернул пригодный результат, просмотрите каждую запись `validation_errors`, прежде чем решать, нужна ли повторная попытка.
Один только HTTP-статус не определяет, уместна ли повторная попытка.
Ответ `400` с `code: "provider_rejected_input"` и `retryable: false` означает, что каждая попытка, не давшая результата, была явно отклонена провайдером из-за входных данных.
Исправьте переданные данные, прежде чем повторять запрос.
Эти попытки не тарифицируются.

Ответ `502` с `code: "empty_provider_response"` и `retryable: true` означает, что сервис по другой причине не смог получить пригодный результат.
Сюда входит случай, когда данные были отклонены, а резервный сервис недоступен или не дал никакого объяснения.
Повторите запрос позже: ответ не подтверждает, что входные данные неверны.
Если сервис базы данных продолжает давать сбои, Didit отправляет письмо организациям, которые недавно его использовали, один раз после того, как перебой длится достаточно долго, и снова, когда фактические проверки подтверждают, что сервис снова отвечает. См. [Уведомления о доступности](https://docs.didit.me/ru/core-technology/database-validation/overview.md#уведомления-о-доступности).

Если завершились с ошибкой только некоторые из выбранных сервисов, запрос всё равно выполнен успешно: ответ имеет статус `200`, а сервисы с ошибкой перечислены в `database_validation.errors[]`, каждый с теми же полями `code` и `retryable`.
Значение `database_validation.status` тогда определяется сервисами, которые ответили, и может быть `Approved`, поэтому проверяйте `errors[]` в каждом ответе, а не только при ответах `4xx` или `5xx`.
Сервис, указанный там, отсутствует в `validations` и `services_used` и не тарифицируется; повторите запрос только для этого сервиса.

Другие ошибки `502` могут требовать исправления входных данных.
Например, `provider_invalid_input` и `provider_validation_error` описывают данные, которые источник отклонил, и такие запросы нельзя повторять без изменений, даже если устаревший ответ не содержит `retryable`.
Рекомендации по повторным попыткам для `empty_provider_response` к этим кодам не относятся.
Окончательный результат без совпадений является завершённой проверкой, а не сбоем доступности.


## OpenAPI

````yaml ru/openapi-25.json POST /v3/database-validation/
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/database-validation/:
    post:
      tags:
        - Standalone APIs
      summary: Проверка по базам данных (автономная)
      description: >-
        Проверяйте данные личности человека по официальным государственным
        источникам и реестрам: CPF в Бразилии, RENAPER в Аргентине, реестры DNI
        в Испании и Перу, INE в Мексике и ещё 100+ сервисов в 60+ странах.


        **Выбор сервиса.** Для каждой страны доступен один или несколько
        каталожных сервисов, идентифицируемых по `service_id` (например,
        `bra_cpf`, `arg_renaper`, `pan_cedula_sib`). Задайте нужные сервисы с
        помощью массива `services` — если его опустить, выполняется ровно
        **один** сервис по умолчанию (самый давно действующий продакшн-сервис
        для этой страны). Передача `services` также переключает ответ на
        расширенный формат с полями `services_used` и `match_score`. Узнать
        доступные сервисы, их обязательные поля и цены можно через `GET
        /v1/organization/database-validation-countries/` (каталожный endpoint,
        не описанный в данной спецификации) или в редакторе сценариев в Business
        Console. Некоторые сервисы в каталоге помечены флагом
        `requires_consent=true` и требуют передачи `consent=true`; для вызова
        других требуется предварительный онбординг вашей организации.


        **Входные поля.** Поле `identification_number` является универсальным и
        автоматически сопоставляется с соответствующим полем конкретной страны
        (см. его описание). Правила формата для страны проверяются до обращения
        к какому-либо провайдеру (например, бразильский CPF должен содержать
        ровно 11 цифр), а ошибки формата никогда не тарифицируются.
        Биометрическим сервисам требуется загрузка `selfie` (только multipart);
        сервис RENAPER в Аргентине дополнительно требует `gender`.


        **Результаты.** Каждый сервис возвращает карту полей `validation`, а
        также независимый от вендора код `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`.
        Общий `match_type` агрегируется по всем сервисам (любое полное
        совпадение → `full_match`, иначе любое частичное → `partial_match`,
        иначе `no_match`), а `no_match_action`/`partial_match_action`
        преобразуют его в итоговый `status`. Значение `validation_type`
        вычисляется: `two_by_two`, если два или более различных сервиса дали
        полное совпадение (по идентификационному номеру, по полному имени вместе
        с датой рождения или по адресу без противоречий), иначе `one_by_one`.


        **Сохранение данных.** Параметр `save_api_request` по умолчанию имеет
        значение **true**: результат сохраняется как сессия (`request_id` можно
        использовать в `GET /v3/session/{sessionId}/decision/`), отображается в
        консоли и инициирует webhook `status.updated`. Он также управляет
        структурой `validations` — раздельные объекты по сервисам при
        сохранении, либо объединённая карта `{field: match}`, если сохранение
        отключено.


        **Биллинг.** Посервисно: с каждого сервиса, вернувшего тарифицируемый
        результат, взимается стоимость по каталогу. Неудачные или пропущенные
        сервисы не тарифицируются, а запросы, отклонённые со статусом `400`,
        ничего не стоят. Предварительная проверка баланса охватывает сумму цен
        всех выбранных сервисов (`403` при нехватке средств).


        **Ошибки.** Если ни один из выбранных сервисов не вернул пригодный
        результат, API возвращает `400` с массивом `validation_errors`, когда
        каждая неотвеченная попытка явно отклонила входные данные
        (`provider_rejected_input`, `retryable: false`). Исправьте входные
        данные перед повторной попыткой. В противном случае возвращается `502` с
        `validation_errors` (`empty_provider_response`, `retryable: true`),
        включая случаи сочетания отклонённых входных данных и недоступных
        резервных попыток; средства не списываются (сессия всё равно сохраняется
        со статусом `Not Finished`, если `save_api_request=true`). Если сбой
        произошёл только у части сервисов, ответ `200` содержит информацию об их
        ошибках в `database_validation.errors`.


        **Песочница.** Ключи приложений из песочницы не выполняют вызовы к
        реестрам, не тарифицируются и возвращают статичный ответ `full_match` —
        payload песочницы всегда содержит `services_used` и `match_score: 100`
        независимо от того, как был передан параметр `services`, поэтому не
        проверяйте логику расширенного формата продакшна или дробные значения
        `match_score` от 0.0 до 1.0 на ответах песочницы.


        Отправляйте запрос как `application/json` или как `multipart/form-data`
        при загрузке `selfie`.
      operationId: post_v3database-validation
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - issuing_state
              properties:
                issuing_state:
                  type: string
                  description: >-
                    Трехбуквенный код страны ISO 3166-1 **alpha-3** реестра для
                    проверки (например, `BRA`, `ESP`, `COL`). Определяет
                    доступные сервисы. Неподдерживаемые коды возвращают `400` с
                    полным списком допустимых вариантов.
                  example: BRA
                services:
                  type: array
                  items:
                    type: string
                  description: >-
                    Идентификаторы `service_id` из каталога для запуска по этой
                    стране (например, `["bra_cpf"]`). Также принимается одна
                    строка или строка с разделением запятыми/JSON-кодированная
                    строка. **Если параметр опущен или пуст, запускается ровно
                    один сервис по умолчанию** — наиболее устоявшийся
                    продакшн-сервис для данной страны; более новые,
                    биометрические и тарифицируемые по факту использования
                    сервисы должны быть указаны явно. Отправка `services`
                    переключает ответ на расширенный формат (добавляет
                    `services_used` и `match_score`). Каждый идентификатор
                    должен существовать и быть активен в продакшне для
                    `issuing_state`; сервисы, требующие онбординга, возвращают
                    `400` до момента их активации для вашей организации. Узнать
                    доступные сервисы по странам можно через `GET
                    /v1/organization/database-validation-countries/` (каталожный
                    endpoint, не описанный в данной спецификации) или в
                    редакторе сценариев Business Console.
                  example:
                    - bra_cpf
                validation_type:
                  type: string
                  deprecated: true
                  description: >-
                    УСТАРЕЛО. Принимается для обратной совместимости, но
                    игнорируется — `validation_type` в ответе теперь
                    определяется тем, сколько сервисов дали полное совпадение.
                    Используйте `services`, чтобы зафиксировать конкретные
                    сервисы.
                consent:
                  type: boolean
                  default: false
                  description: >-
                    Установите значение `true`, если конечный пользователь дал
                    явное согласие на использование выбранных сервисов
                    валидации. Обязательно для сервисов с флагом
                    `requires_consent=true` в каталоге — без него эти сервисы
                    возвращают `400` с `services_requiring_consent`.
                identification_number:
                  type: string
                  description: >-
                    Универсальный идентификационный номер — автоматически
                    сопоставляется с нужным полем для конкретной страны, поэтому
                    вы можете использовать его вместо
                    `personal_number`/`tax_number`/`document_number`:
                    ARG→document_number (DNI), BOL→document_number (CI),
                    BRA→tax_number (CPF, 11 цифр), CHL→personal_number (RUT),
                    COL→personal_number (Cédula), CRI→personal_number (Cédula),
                    DOM→personal_number (Cédula, 11 цифр), ECU→personal_number
                    (Cédula, 10 цифр), ESP→personal_number (DNI/NIE),
                    GTM→document_number (DPI), HND→document_number (DNI),
                    MEX→personal_number (CURP, 18 символов), PAN→personal_number
                    (Cédula), PER→personal_number (DNI, 8 цифр),
                    PRY→document_number (CI), SLV→document_number (DUI),
                    URY→personal_number (CI), VEN→document_number (Cédula). Он
                    никогда не перезаписывает явно переданное поле для
                    конкретной страны.
                first_name:
                  type: string
                  description: >-
                    Имя физического лица. Требуется для некоторых
                    сервисов/стран.
                  example: John
                last_name:
                  type: string
                  description: >-
                    Фамилия физического лица. Требуется для некоторых
                    сервисов/стран.
                  example: Doe
                middle_name:
                  type: string
                  description: >-
                    Второе имя, используемое сервисами некоторых стран (AUS,
                    NZL, …).
                full_name:
                  type: string
                  description: >-
                    Полное имя — некоторые сервисы принимают его вместо имени и
                    фамилии (например, китайские сервисы CHN, которые сверяют
                    имя в оригинальной системе письма).
                date_of_birth:
                  type: string
                  format: date
                  description: Дата рождения, `YYYY-MM-DD`. Требуется многими сервисами.
                  example: '1980-01-01'
                personal_number:
                  type: string
                  description: >-
                    Уникальный государственный идентификатор личности.
                    Используется в: CHL (RUT), COL (Cédula), CRI, DOM, ECU, ESP
                    (DNI/NIE), MEX (CURP), PAN (Cédula), PER (DNI), URY.
                    Рассмотрите `identification_number` вместо этого.
                tax_number:
                  type: string
                  description: >-
                    Налоговый номер. Используется: BRA (CPF, 11 цифр).
                    Рекомендуется использовать `identification_number`.
                document_number:
                  type: string
                  description: >-
                    Номер документа. Используется для: ARG (DNI), BOL (CI), GTM
                    (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN (Cédula).
                    Рекомендуется использовать `identification_number`.
                document_type:
                  type: string
                  enum:
                    - P
                    - DL
                    - ID
                    - RP
                    - SSC
                    - HIC
                    - WP
                    - TC
                    - VISA
                    - PSC
                    - BC
                    - OTHER
                  description: >-
                    Тип проверяемого документа: `P` паспорт, `DL` водительское
                    удостоверение, `ID` национальное удостоверение личности,
                    `RP` вид на жительство (а также `SSC`, `HIC`, `WP`, `TC`,
                    `VISA`, `PSC`, `BC`, `OTHER`). Требуется для некоторых
                    сервисов (например, ESP).
                expiration_date:
                  type: string
                  format: date
                  description: >-
                    Срок действия документа, `YYYY-MM-DD`. Обязательно для
                    валидации в ESP (Испания).
                  example: '2030-01-15'
                date_of_issue:
                  type: string
                  format: date
                  description: >-
                    Дата выдачи документа, `YYYY-MM-DD` (fecha de expedición).
                    Обязательно для валидации cédula в COL (Колумбия).
                  example: '2015-06-20'
                nationality:
                  type: string
                  description: >-
                    Гражданство в формате ISO 3166-1 alpha-3. Требуется для
                    некоторых сервисов.
                gender:
                  type: string
                  enum:
                    - M
                    - F
                    - X
                  description: >-
                    Пол: `M`, `F` или `X` (другой/неизвестно). Обязательно для
                    валидации RENAPER в Аргентине (`arg_renaper`).
                address:
                  description: >-
                    Адрес проживания. Предпочтительнее структурированный объект
                    `{"street_1":"123 Main St","street_2":"Apt
                    4B","city":"Springfield","region":"IL","postal_code":"62701","country":"US"}`;
                    полная однострочная строка также принимается. Требуется
                    сервисами подтверждения адреса; если сервис определяет
                    требования к адресу, при отсутствии обязательных данных
                    возвращается `400` с `address_fields_required_by`.
                  oneOf:
                    - type: object
                      properties:
                        street_1:
                          type: string
                        street_2:
                          type: string
                        city:
                          type: string
                        region:
                          type: string
                        postal_code:
                          type: string
                        country:
                          type: string
                    - type: string
                      description: Полный однострочный адрес (устаревший).
                address_element_1:
                  type: string
                  description: >-
                    Адрес улицы, включая номер дома и тип улицы. Если не
                    указано, определяется на основе `address`.
                address_element_2:
                  type: string
                  description: >-
                    Квартира, блок/помещение, здание, этаж или дополнительная
                    строка адреса. Отправляйте только при явном наличии этих
                    данных.
                address_element_3:
                  type: string
                  description: >-
                    Город, пригород, район, населённый пункт или квартал. Если
                    не указано, определяется из `address`.
                address_element_4:
                  type: string
                  description: >-
                    Штат, провинция, регион или населённый пункт. Если не
                    указано, определяется из `address`.
                address_element_5:
                  type: string
                  description: >-
                    Почтовый индекс. `postal_code` принимается в качестве
                    псевдонима.
                postal_code:
                  type: string
                  description: >-
                    Почтовый индекс для сервисов на основе адреса (псевдоним
                    `address_element_5`).
                driver_license_number:
                  type: string
                  description: >-
                    Номер водительского удостоверения для государственных служб
                    проверки документов (AUS, NZL, IND).
                driver_license_card_number:
                  type: string
                  description: >-
                    Номер физической карты водительского удостоверения, если он
                    требуется отдельно от номера удостоверения (AUS).
                driver_license_state:
                  type: string
                  description: >-
                    Штат или территория выдачи водительского удостоверения
                    (AUS).
                driver_license_version:
                  type: string
                  description: Код версии водительского удостоверения (NZL).
                passport_number:
                  type: string
                  description: >-
                    Номер паспорта для государственных сервисов верификации
                    паспортов (AUS, NZL, IND, CHN).
                passport_expiration_date:
                  type: string
                  format: date
                  description: >-
                    Срок действия паспорта, `YYYY-MM-DD`, для сервисов
                    верификации паспортов.
                passport_file_number:
                  type: string
                  description: Номер файла паспорта (IND).
                passport_issue_country:
                  type: string
                  description: >-
                    Страна выдачи паспорта (ISO 3166-1 alpha-3) для сервисов
                    верификации паспортов.
                medicare_card_number:
                  type: string
                  description: Номер карты Medicare (Австралия).
                immi_card_number:
                  type: string
                  description: Номер австралийской карты ImmiCard.
                immi_card_expiry_date:
                  type: string
                  format: date
                  description: Срок действия австралийской карты ImmiCard.
                citizenship_certificate_number:
                  type: string
                  description: Номер свидетельства о гражданстве (AUS).
                birth_registration_number:
                  type: string
                  description: Номер регистрации свидетельства о рождении (AUS).
                birth_registration_date:
                  type: string
                  format: date
                  description: Дата регистрации свидетельства о рождении (AUS).
                birth_registration_state:
                  type: string
                  description: Штат регистрации свидетельства о рождении (AUS).
                marriage_certificate_number:
                  type: string
                  description: Номер свидетельства о браке (AUS).
                change_of_name_certificate_number:
                  type: string
                  description: Номер свидетельства о смене имени (AUS).
                first_partner_name:
                  type: string
                  description: Имя партнёра в свидетельстве о браке (AUS).
                last_partner_name:
                  type: string
                  description: Фамилия партнёра в свидетельстве о браке (AUS).
                voter_id:
                  type: string
                  description: Номер регистрации избирателя (IND EPIC, IRL).
                epic_card:
                  type: string
                  description: Номер карты избирателя Индии (EPIC).
                pan:
                  type: string
                  description: PAN (Permanent Account Number) Индии.
                national_id:
                  type: string
                  description: >-
                    Номер национального удостоверения личности (CHN, MYS, KEN,
                    KHM, NGA, ZAF, …).
                cic:
                  type: string
                  description: >-
                    Мексиканский Código de Identificación de Credencial (CIC)
                    INE/IFE, 9 цифр. Используется сервисом проверки
                    действительности учетных данных MEX INE
                    (`mex_ine_vigencia`).
                identificador_ciudadano:
                  type: string
                  description: >-
                    Мексиканский Identificador del Ciudadano INE (9 цифр).
                    Используется вместе с `cic` для современных моделей INE
                    (E/F/G/H) в `mex_ine_vigencia`.
                ocr:
                  type: string
                  description: >-
                    Мексиканский номер OCR INE (13 цифр, на обратной стороне
                    карты). Используется вместе с `cic` для модели D в
                    `mex_ine_vigencia`.
                voter_number:
                  type: string
                  description: >-
                    Мексиканский Clave de Elector INE (18 символов).
                    Используется вместе с `emission_number` для устаревших
                    моделей IFE (A/B/C) в `mex_ine_vigencia`.
                emission_number:
                  type: string
                  description: >-
                    Мексиканский Número de Emisión INE. Используется вместе с
                    `voter_number` для устаревших моделей IFE (A/B/C) в
                    `mex_ine_vigencia`.
                bvn:
                  type: string
                  description: Банковский верификационный номер Нигерии (BVN).
                bank_card_number:
                  type: string
                  description: Номер банковской карты (верификация банковских карт CHN).
                company_registration_number:
                  type: string
                  description: >-
                    Регистрационный номер компании, выданный реестром компаний:
                    CNPJ в Бразилии (например, `11222333000181`),
                    регистрационный номер в Южной Африке (например,
                    `1936/007721/06`). Требуется сервисами реестра компаний и
                    директоров компаний (`bra_company_registry`,
                    `bra_company_directors`, `zaf_company_registry`,
                    `zaf_company_directors`).
                company_name:
                  type: string
                  description: >-
                    Зарегистрированное название компании, сверенное с записью в
                    реестре. Необязательно для `zaf_company_registry`.
                initials:
                  type: string
                  description: >-
                    Инициалы человека в том виде, в каком они напечатаны на
                    документе. Обязательно для `zaf_drivers_license`;
                    принимается для `zaf_bank_account_holder`.
                licence_number:
                  type: string
                  description: >-
                    Номер водительского удостоверения, как он напечатан на
                    карте, для `zaf_drivers_license`. Если не указан,
                    используется `document_number`.
                refugee_file_number:
                  type: string
                  description: >-
                    Номер дела беженца, выданный Министерством внутренних дел
                    ЮАР. Обязателен для `zaf_refugee`.
                bank_name:
                  type: string
                  description: >-
                    Название банка, в котором открыт счёт. Обязательно для
                    `zaf_bank_account_holder`.
                bank_account_number:
                  type: string
                  description: >-
                    Номер банковского счёта. Обязателен для
                    `zaf_bank_account_holder`; принимается в
                    `zaf_fraud_prevention`.
                account_type:
                  type: string
                  description: >-
                    Тип банковского счёта для `zaf_bank_account_holder`:
                    `current`, `savings`, `transmission`, `subscriptionShare`
                    или `notKnown` (без учёта регистра). Любое другое значение
                    возвращает `400`. Опустите его, если тип вам неизвестен: в
                    этом случае результат сверки типа счёта будет отмечен как
                    неподтверждённый.
                phone_number:
                  type: string
                  description: >-
                    Контактный номер мобильного телефона для сервисов,
                    перепроверяющих доступность для связи
                    (`zaf_bank_account_holder`, `zaf_fraud_prevention`,
                    `zaf_refugee`).
                right_thumb:
                  type: string
                  description: >-
                    Отпечаток большого пальца правой руки в кодировке Base64 для
                    `zaf_dha_fingerprint_match`, вместе с `left_thumb` или
                    отдельно.
                left_thumb:
                  type: string
                  description: >-
                    Отпечаток большого пальца левой руки в кодировке Base64 для
                    `zaf_dha_fingerprint_match`, вместе с `right_thumb` или
                    отдельно.
                score_level:
                  type: integer
                  description: >-
                    Минимальный уровень биометрической оценки для
                    `zaf_criminal_face_screening`. По умолчанию `3`.
                max_matches:
                  type: integer
                  description: >-
                    Максимальное количество кандидатов на совпадение,
                    возвращаемых `zaf_criminal_face_screening`. По умолчанию
                    `1`.
                vehicle_register_number:
                  type: string
                  description: >-
                    Регистрационный номер транспортного средства. Обязателен
                    вместе с `vehicle_licence_plate` и `vin` для
                    `zaf_vehicle_ownership`.
                vehicle_licence_plate:
                  type: string
                  description: >-
                    Регистрационный номерной знак транспортного средства.
                    Обязателен вместе с `vehicle_register_number` и `vin` для
                    `zaf_vehicle_ownership`.
                vin:
                  type: string
                  description: >-
                    Идентификационный номер транспортного средства (VIN или
                    номер шасси). Обязателен вместе с `vehicle_register_number`
                    и `vehicle_licence_plate` для `zaf_vehicle_ownership`.
                ssn:
                  type: string
                  description: Номер социального страхования (США).
                phone:
                  type: string
                  description: Номер телефона для сервисов проверки телефона.
                landline:
                  type: string
                  description: Номер стационарного телефона для сервисов проверки телефона.
                email:
                  type: string
                  format: email
                  description: Адрес электронной почты для сервисов верификации личности.
                country_of_residence:
                  type: string
                  description: >-
                    Двухбуквенный код страны проживания по стандарту ISO 3166-1
                    alpha-2. Используется глобальными сервисами обогащения
                    идентификационных данных (например,
                    `glb_identity_enrichment`) для сужения области поиска.
                  example: US
                partial_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: NO_ACTION
                  description: >-
                    Действие при `partial_match` в отношении
                    `database_validation.status`. По умолчанию `NO_ACTION`
                    (статус остаётся `Approved` с предупреждением).
                no_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    Действие при `no_match` в отношении
                    `database_validation.status`. По умолчанию `DECLINE`.
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    Сохранять валидацию как сессию (отображение в консоли,
                    endpoint решений, webhook `status.updated`). Также изменяет
                    структуру ответа `validations`: отдельные объекты по каждому
                    сервису при значении `true` (по умолчанию), объединенная
                    карта полей при `false`.
                vendor_data:
                  type: string
                  description: >-
                    Ваш идентификатор валидированного пользователя; возвращается
                    в ответе и сохраняется вместе с сессией.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    JSON в свободной форме, сохраняемый с запросом и
                    возвращаемый в ответе.
            example:
              issuing_state: BRA
              services:
                - bra_cpf
              identification_number: '12345678900'
              first_name: John
              last_name: Doe
              date_of_birth: '1980-01-01'
              vendor_data: user-1234
          multipart/form-data:
            schema:
              type: object
              required:
                - issuing_state
              properties:
                issuing_state:
                  type: string
                  description: >-
                    Трехбуквенный код страны ISO 3166-1 **alpha-3** реестра для
                    проверки (например, `BRA`, `ESP`, `COL`). Определяет
                    доступные сервисы. Неподдерживаемые коды возвращают `400` с
                    полным списком допустимых вариантов.
                  example: BRA
                services:
                  type: array
                  items:
                    type: string
                  description: >-
                    Идентификаторы `service_id` из каталога для запуска по этой
                    стране (например, `["bra_cpf"]`). Также принимается одна
                    строка или строка с разделением запятыми/JSON-кодированная
                    строка. **Если параметр опущен или пуст, запускается ровно
                    один сервис по умолчанию** — наиболее устоявшийся
                    продакшн-сервис для данной страны; более новые,
                    биометрические и тарифицируемые по факту использования
                    сервисы должны быть указаны явно. Отправка `services`
                    переключает ответ на расширенный формат (добавляет
                    `services_used` и `match_score`). Каждый идентификатор
                    должен существовать и быть активен в продакшне для
                    `issuing_state`; сервисы, требующие онбординга, возвращают
                    `400` до момента их активации для вашей организации. Узнать
                    доступные сервисы по странам можно через `GET
                    /v1/organization/database-validation-countries/` (каталожный
                    endpoint, не описанный в данной спецификации) или в
                    редакторе сценариев Business Console.
                  example:
                    - bra_cpf
                validation_type:
                  type: string
                  deprecated: true
                  description: >-
                    УСТАРЕЛО. Принимается для обратной совместимости, но
                    игнорируется — `validation_type` в ответе теперь
                    определяется тем, сколько сервисов дали полное совпадение.
                    Используйте `services`, чтобы зафиксировать конкретные
                    сервисы.
                consent:
                  type: boolean
                  default: false
                  description: >-
                    Установите значение `true`, если конечный пользователь дал
                    явное согласие на использование выбранных сервисов
                    валидации. Обязательно для сервисов с флагом
                    `requires_consent=true` в каталоге — без него эти сервисы
                    возвращают `400` с `services_requiring_consent`.
                identification_number:
                  type: string
                  description: >-
                    Универсальный идентификационный номер — автоматически
                    сопоставляется с нужным полем для конкретной страны, поэтому
                    вы можете использовать его вместо
                    `personal_number`/`tax_number`/`document_number`:
                    ARG→document_number (DNI), BOL→document_number (CI),
                    BRA→tax_number (CPF, 11 цифр), CHL→personal_number (RUT),
                    COL→personal_number (Cédula), CRI→personal_number (Cédula),
                    DOM→personal_number (Cédula, 11 цифр), ECU→personal_number
                    (Cédula, 10 цифр), ESP→personal_number (DNI/NIE),
                    GTM→document_number (DPI), HND→document_number (DNI),
                    MEX→personal_number (CURP, 18 символов), PAN→personal_number
                    (Cédula), PER→personal_number (DNI, 8 цифр),
                    PRY→document_number (CI), SLV→document_number (DUI),
                    URY→personal_number (CI), VEN→document_number (Cédula). Он
                    никогда не перезаписывает явно переданное поле для
                    конкретной страны.
                first_name:
                  type: string
                  description: >-
                    Имя физического лица. Требуется для некоторых
                    сервисов/стран.
                  example: John
                last_name:
                  type: string
                  description: >-
                    Фамилия физического лица. Требуется для некоторых
                    сервисов/стран.
                  example: Doe
                middle_name:
                  type: string
                  description: >-
                    Второе имя, используемое сервисами некоторых стран (AUS,
                    NZL, …).
                full_name:
                  type: string
                  description: >-
                    Полное имя — некоторые сервисы принимают его вместо имени и
                    фамилии (например, китайские сервисы CHN, которые сверяют
                    имя в оригинальной системе письма).
                date_of_birth:
                  type: string
                  format: date
                  description: Дата рождения, `YYYY-MM-DD`. Требуется многими сервисами.
                  example: '1980-01-01'
                personal_number:
                  type: string
                  description: >-
                    Уникальный государственный идентификатор личности.
                    Используется в: CHL (RUT), COL (Cédula), CRI, DOM, ECU, ESP
                    (DNI/NIE), MEX (CURP), PAN (Cédula), PER (DNI), URY.
                    Рассмотрите `identification_number` вместо этого.
                tax_number:
                  type: string
                  description: >-
                    Налоговый номер. Используется: BRA (CPF, 11 цифр).
                    Рекомендуется использовать `identification_number`.
                document_number:
                  type: string
                  description: >-
                    Номер документа. Используется для: ARG (DNI), BOL (CI), GTM
                    (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN (Cédula).
                    Рекомендуется использовать `identification_number`.
                document_type:
                  type: string
                  enum:
                    - P
                    - DL
                    - ID
                    - RP
                    - SSC
                    - HIC
                    - WP
                    - TC
                    - VISA
                    - PSC
                    - BC
                    - OTHER
                  description: >-
                    Тип проверяемого документа: `P` паспорт, `DL` водительское
                    удостоверение, `ID` национальное удостоверение личности,
                    `RP` вид на жительство (а также `SSC`, `HIC`, `WP`, `TC`,
                    `VISA`, `PSC`, `BC`, `OTHER`). Требуется для некоторых
                    сервисов (например, ESP).
                expiration_date:
                  type: string
                  format: date
                  description: >-
                    Срок действия документа, `YYYY-MM-DD`. Обязательно для
                    валидации в ESP (Испания).
                  example: '2030-01-15'
                date_of_issue:
                  type: string
                  format: date
                  description: >-
                    Дата выдачи документа, `YYYY-MM-DD` (fecha de expedición).
                    Обязательно для валидации cédula в COL (Колумбия).
                  example: '2015-06-20'
                nationality:
                  type: string
                  description: >-
                    Гражданство в формате ISO 3166-1 alpha-3. Требуется для
                    некоторых сервисов.
                gender:
                  type: string
                  enum:
                    - M
                    - F
                    - X
                  description: >-
                    Пол: `M`, `F` или `X` (другой/неизвестно). Обязательно для
                    валидации RENAPER в Аргентине (`arg_renaper`).
                address:
                  description: >-
                    Адрес проживания. Предпочтительнее структурированный объект
                    `{"street_1":"123 Main St","street_2":"Apt
                    4B","city":"Springfield","region":"IL","postal_code":"62701","country":"US"}`;
                    полная однострочная строка также принимается. Требуется
                    сервисами подтверждения адреса; если сервис определяет
                    требования к адресу, при отсутствии обязательных данных
                    возвращается `400` с `address_fields_required_by`.
                  oneOf:
                    - type: object
                      properties:
                        street_1:
                          type: string
                        street_2:
                          type: string
                        city:
                          type: string
                        region:
                          type: string
                        postal_code:
                          type: string
                        country:
                          type: string
                    - type: string
                      description: Полный однострочный адрес (устаревший).
                address_element_1:
                  type: string
                  description: >-
                    Адрес улицы, включая номер дома и тип улицы. Если не
                    указано, определяется на основе `address`.
                address_element_2:
                  type: string
                  description: >-
                    Квартира, блок/помещение, здание, этаж или дополнительная
                    строка адреса. Отправляйте только при явном наличии этих
                    данных.
                address_element_3:
                  type: string
                  description: >-
                    Город, пригород, район, населённый пункт или квартал. Если
                    не указано, определяется из `address`.
                address_element_4:
                  type: string
                  description: >-
                    Штат, провинция, регион или населённый пункт. Если не
                    указано, определяется из `address`.
                address_element_5:
                  type: string
                  description: >-
                    Почтовый индекс. `postal_code` принимается в качестве
                    псевдонима.
                postal_code:
                  type: string
                  description: >-
                    Почтовый индекс для сервисов на основе адреса (псевдоним
                    `address_element_5`).
                driver_license_number:
                  type: string
                  description: >-
                    Номер водительского удостоверения для государственных служб
                    проверки документов (AUS, NZL, IND).
                driver_license_card_number:
                  type: string
                  description: >-
                    Номер физической карты водительского удостоверения, если он
                    требуется отдельно от номера удостоверения (AUS).
                driver_license_state:
                  type: string
                  description: >-
                    Штат или территория выдачи водительского удостоверения
                    (AUS).
                driver_license_version:
                  type: string
                  description: Код версии водительского удостоверения (NZL).
                passport_number:
                  type: string
                  description: >-
                    Номер паспорта для государственных сервисов верификации
                    паспортов (AUS, NZL, IND, CHN).
                passport_expiration_date:
                  type: string
                  format: date
                  description: >-
                    Срок действия паспорта, `YYYY-MM-DD`, для сервисов
                    верификации паспортов.
                passport_file_number:
                  type: string
                  description: Номер файла паспорта (IND).
                passport_issue_country:
                  type: string
                  description: >-
                    Страна выдачи паспорта (ISO 3166-1 alpha-3) для сервисов
                    верификации паспортов.
                medicare_card_number:
                  type: string
                  description: Номер карты Medicare (Австралия).
                immi_card_number:
                  type: string
                  description: Номер австралийской карты ImmiCard.
                immi_card_expiry_date:
                  type: string
                  format: date
                  description: Срок действия австралийской карты ImmiCard.
                citizenship_certificate_number:
                  type: string
                  description: Номер свидетельства о гражданстве (AUS).
                birth_registration_number:
                  type: string
                  description: Номер регистрации свидетельства о рождении (AUS).
                birth_registration_date:
                  type: string
                  format: date
                  description: Дата регистрации свидетельства о рождении (AUS).
                birth_registration_state:
                  type: string
                  description: Штат регистрации свидетельства о рождении (AUS).
                marriage_certificate_number:
                  type: string
                  description: Номер свидетельства о браке (AUS).
                change_of_name_certificate_number:
                  type: string
                  description: Номер свидетельства о смене имени (AUS).
                first_partner_name:
                  type: string
                  description: Имя партнёра в свидетельстве о браке (AUS).
                last_partner_name:
                  type: string
                  description: Фамилия партнёра в свидетельстве о браке (AUS).
                voter_id:
                  type: string
                  description: Номер регистрации избирателя (IND EPIC, IRL).
                epic_card:
                  type: string
                  description: Номер карты избирателя Индии (EPIC).
                pan:
                  type: string
                  description: PAN (Permanent Account Number) Индии.
                national_id:
                  type: string
                  description: >-
                    Номер национального удостоверения личности (CHN, MYS, KEN,
                    KHM, NGA, ZAF, …).
                cic:
                  type: string
                  description: >-
                    Мексиканский Código de Identificación de Credencial (CIC)
                    INE/IFE, 9 цифр. Используется сервисом проверки
                    действительности учетных данных MEX INE
                    (`mex_ine_vigencia`).
                identificador_ciudadano:
                  type: string
                  description: >-
                    Мексиканский Identificador del Ciudadano INE (9 цифр).
                    Используется вместе с `cic` для современных моделей INE
                    (E/F/G/H) в `mex_ine_vigencia`.
                ocr:
                  type: string
                  description: >-
                    Мексиканский номер OCR INE (13 цифр, на обратной стороне
                    карты). Используется вместе с `cic` для модели D в
                    `mex_ine_vigencia`.
                voter_number:
                  type: string
                  description: >-
                    Мексиканский Clave de Elector INE (18 символов).
                    Используется вместе с `emission_number` для устаревших
                    моделей IFE (A/B/C) в `mex_ine_vigencia`.
                emission_number:
                  type: string
                  description: >-
                    Мексиканский Número de Emisión INE. Используется вместе с
                    `voter_number` для устаревших моделей IFE (A/B/C) в
                    `mex_ine_vigencia`.
                bvn:
                  type: string
                  description: Банковский верификационный номер Нигерии (BVN).
                bank_card_number:
                  type: string
                  description: Номер банковской карты (верификация банковских карт CHN).
                company_registration_number:
                  type: string
                  description: >-
                    Регистрационный номер компании, выданный реестром компаний:
                    CNPJ в Бразилии (например, `11222333000181`),
                    регистрационный номер в Южной Африке (например,
                    `1936/007721/06`). Требуется сервисами реестра компаний и
                    директоров компаний (`bra_company_registry`,
                    `bra_company_directors`, `zaf_company_registry`,
                    `zaf_company_directors`).
                company_name:
                  type: string
                  description: >-
                    Зарегистрированное название компании, сверенное с записью в
                    реестре. Необязательно для `zaf_company_registry`.
                initials:
                  type: string
                  description: >-
                    Инициалы человека в том виде, в каком они напечатаны на
                    документе. Обязательно для `zaf_drivers_license`;
                    принимается для `zaf_bank_account_holder`.
                licence_number:
                  type: string
                  description: >-
                    Номер водительского удостоверения, как он напечатан на
                    карте, для `zaf_drivers_license`. Если не указан,
                    используется `document_number`.
                refugee_file_number:
                  type: string
                  description: >-
                    Номер дела беженца, выданный Министерством внутренних дел
                    ЮАР. Обязателен для `zaf_refugee`.
                bank_name:
                  type: string
                  description: >-
                    Название банка, в котором открыт счёт. Обязательно для
                    `zaf_bank_account_holder`.
                bank_account_number:
                  type: string
                  description: >-
                    Номер банковского счёта. Обязателен для
                    `zaf_bank_account_holder`; принимается в
                    `zaf_fraud_prevention`.
                account_type:
                  type: string
                  description: >-
                    Тип банковского счёта для `zaf_bank_account_holder`:
                    `current`, `savings`, `transmission`, `subscriptionShare`
                    или `notKnown` (без учёта регистра). Любое другое значение
                    возвращает `400`. Опустите его, если тип вам неизвестен: в
                    этом случае результат сверки типа счёта будет отмечен как
                    неподтверждённый.
                phone_number:
                  type: string
                  description: >-
                    Контактный номер мобильного телефона для сервисов,
                    перепроверяющих доступность для связи
                    (`zaf_bank_account_holder`, `zaf_fraud_prevention`,
                    `zaf_refugee`).
                right_thumb:
                  type: string
                  description: >-
                    Отпечаток большого пальца правой руки в кодировке Base64 для
                    `zaf_dha_fingerprint_match`, вместе с `left_thumb` или
                    отдельно.
                left_thumb:
                  type: string
                  description: >-
                    Отпечаток большого пальца левой руки в кодировке Base64 для
                    `zaf_dha_fingerprint_match`, вместе с `right_thumb` или
                    отдельно.
                score_level:
                  type: integer
                  description: >-
                    Минимальный уровень биометрической оценки для
                    `zaf_criminal_face_screening`. По умолчанию `3`.
                max_matches:
                  type: integer
                  description: >-
                    Максимальное количество кандидатов на совпадение,
                    возвращаемых `zaf_criminal_face_screening`. По умолчанию
                    `1`.
                vehicle_register_number:
                  type: string
                  description: >-
                    Регистрационный номер транспортного средства. Обязателен
                    вместе с `vehicle_licence_plate` и `vin` для
                    `zaf_vehicle_ownership`.
                vehicle_licence_plate:
                  type: string
                  description: >-
                    Регистрационный номерной знак транспортного средства.
                    Обязателен вместе с `vehicle_register_number` и `vin` для
                    `zaf_vehicle_ownership`.
                vin:
                  type: string
                  description: >-
                    Идентификационный номер транспортного средства (VIN или
                    номер шасси). Обязателен вместе с `vehicle_register_number`
                    и `vehicle_licence_plate` для `zaf_vehicle_ownership`.
                ssn:
                  type: string
                  description: Номер социального страхования (США).
                phone:
                  type: string
                  description: Номер телефона для сервисов проверки телефона.
                landline:
                  type: string
                  description: Номер стационарного телефона для сервисов проверки телефона.
                email:
                  type: string
                  format: email
                  description: Адрес электронной почты для сервисов верификации личности.
                country_of_residence:
                  type: string
                  description: >-
                    Двухбуквенный код страны проживания по стандарту ISO 3166-1
                    alpha-2. Используется глобальными сервисами обогащения
                    идентификационных данных (например,
                    `glb_identity_enrichment`) для сужения области поиска.
                  example: US
                partial_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: NO_ACTION
                  description: >-
                    Действие при `partial_match` в отношении
                    `database_validation.status`. По умолчанию `NO_ACTION`
                    (статус остаётся `Approved` с предупреждением).
                no_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    Действие при `no_match` в отношении
                    `database_validation.status`. По умолчанию `DECLINE`.
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    Сохранять валидацию как сессию (отображение в консоли,
                    endpoint решений, webhook `status.updated`). Также изменяет
                    структуру ответа `validations`: отдельные объекты по каждому
                    сервису при значении `true` (по умолчанию), объединенная
                    карта полей при `false`.
                vendor_data:
                  type: string
                  description: >-
                    Ваш идентификатор валидированного пользователя; возвращается
                    в ответе и сохраняется вместе с сессией.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    JSON в свободной форме, сохраняемый с запросом и
                    возвращаемый в ответе.
                selfie:
                  type: string
                  format: binary
                  description: >-
                    Изображение селфи (`jpg`, `jpeg`, `png`, `webp`; макс. 2 МБ
                    — изображения сжимаются до ~1.5 МБ перед загрузкой в реестр)
                    для сервисов биометрической валидации, например Argentina
                    RENAPER (`arg_renaper`) и Panama SIB (`pan_cedula_sib`,
                    `pan_cedula_sib_plus`). Обязательно, если выбранный сервис
                    указывает его как обязательное поле. Доступно только через
                    `multipart/form-data`.
      responses:
        '200':
          description: >-
            Проверка завершена — как минимум один выбранный сервис вернул
            применимый результат. Проверьте `database_validation.match_type` для
            сводного результата, `validations` для сравнения полей по каждому
            сервису и кодов `outcome_code`, а также `errors` (при наличии) для
            сервисов, завершившихся ошибкой.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      Идентификатор сохраненной сессии при
                      `save_api_request=true` (доступен для использования с `GET
                      /v3/session/{sessionId}/decision/`); в противном случае
                      это временный корреляционный UUID.
                  database_validation:
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - Approved
                          - Declined
                          - In Review
                        description: >-
                          `Declined`, если общий `match_type` запускает действие
                          `DECLINE` (`no_match_action` по умолчанию имеет
                          значение `DECLINE`, а `partial_match_action` имеет
                          значение `NO_ACTION`); `In Review`, если ни один
                          сервис не предоставил пригодного для использования
                          результата сравнения, например когда единственный
                          выбранный сервис вернул `REGISTRY_UNAVAILABLE` или
                          `INCONCLUSIVE`; в противном случае `Approved`. Запрос,
                          в котором выбрано несколько сервисов, может получить
                          `Approved` по совпадению в одном сервисе, даже если
                          другой был недоступен, поэтому также проверяйте
                          `errors` и значения `outcome_code` по каждому сервису.
                      issuing_state:
                        type: string
                        description: >-
                          Эхо-значение страны по стандарту ISO 3166-1 alpha-3,
                          по которой проводилась проверка.
                        example: BRA
                      validation_type:
                        type: string
                        enum:
                          - one_by_one
                          - two_by_two
                        description: >-
                          Определяется на основе результатов: `two_by_two`,
                          когда ≥2 различных сервисов вернули полное совпадение
                          (по идентификационному номеру, по полному имени + дате
                          рождения вместе либо по адресу без противоречий);
                          `one_by_one` в противном случае. (Поле запроса с таким
                          же именем устарело и игнорируется.)
                      screened_data:
                        type: object
                        description: >-
                          Эхо входных полей, отправленных в выбранные сервисы
                          (даты нормализованы к формату `YYYY-MM-DD`; `selfie`,
                          если отправлено, возвращается в виде предварительно
                          подписанного URL; `consent_obtained: true` добавляется
                          при предоставлении согласия).
                      match_type:
                        type: string
                        nullable: true
                        enum:
                          - full_match
                          - partial_match
                          - no_match
                        description: >-
                          Общий результат, агрегированный по сервисам со
                          сравнением на уровне полей: любое `full_match` →
                          `full_match`; иначе любое `partial_match` →
                          `partial_match`; иначе `no_match`. Сервисы,
                          возвращающие только итог (например, биометрический
                          криминальный скрининг), могут возвращать `null`;
                          проверяйте `outcome_code` для каждого элемента в
                          `validations`.
                      validations:
                        description: >-
                          Формат зависит от `save_api_request`. **`true` (по
                          умолчанию):** массив объектов по каждому сервису
                          (`service_id`, `service_name`, `validation`,
                          `outcome_code`, `outcome_detail`, `source_data`).
                          **`false`:** единый плоский объект, объединяющий
                          результаты всех сервисов на уровне полей
                          (`{"full_name": "full_match", ...}`).
                        oneOf:
                          - type: array
                            items:
                              type: object
                              description: >-
                                Результат валидации по сервисам (возвращается,
                                когда `save_api_request=true`, по умолчанию).
                              properties:
                                service_id:
                                  type: string
                                  description: >-
                                    Каталожный идентификатор сервиса,
                                    сформировавшего этот результат (например,
                                    `bra_cpf`).
                                  example: bra_cpf
                                service_name:
                                  type: string
                                  description: Понятное название сервиса в каталоге.
                                  example: Brazil - CPF status check
                                validation:
                                  type: object
                                  description: >-
                                    Сравнение по каждому полю ваших входных
                                    данных с записью в реестре. Ключи:
                                    канонические имена полей (`full_name`,
                                    `date_of_birth`, `identification_number`,
                                    `address`, …); значения: `full_match`,
                                    `partial_match` или `no_match`.
                                  additionalProperties:
                                    type: string
                                    enum:
                                      - full_match
                                      - partial_match
                                      - no_match
                                outcome_code:
                                  type: string
                                  enum:
                                    - 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
                                  description: >-
                                    Нейтральный к вендору результат проверки по
                                    реестру. `MATCH`/`PARTIAL_MATCH`/`NO_MATCH`
                                    описывают результат сравнения;
                                    `DOCUMENT_NOT_FOUND` означает, что
                                    идентификатор отсутствует в реестре;
                                    `INCONCLUSIVE` означает, что реестр не смог
                                    подтвердить ни один из вариантов (направлено
                                    на проверку, это НЕ несовпадение);
                                    `BIOMETRIC_NO_MATCH` означает окончательное
                                    несовпадение лица, тогда как
                                    `BIOMETRIC_IMAGE_UNUSABLE` указывает на
                                    техническую проблему с изображением
                                    (переснимите селфи);
                                    `DECEASED`/`MINOR_BLOCKED` являются
                                    результатами, определяемыми политикой
                                    реестра; `DOCUMENT_SUPERSEDED` означает, что
                                    личность совпала, но версия предъявленного
                                    документа не соответствует
                                    зарегистрированной (была выпущена более
                                    новая версия);
                                    `INVALID_DOCUMENT_FORMAT`/`INVALID_INPUT`
                                    означают, что сам реестр отклонил переданные
                                    ему данные;
                                    `REGISTRY_UNAVAILABLE`/`REGISTRY_ERROR`
                                    указывают на сбои вышестоящего сервиса.
                                outcome_detail:
                                  type: string
                                  nullable: true
                                  description: >-
                                    Необработанные детали статуса от вышестоящей
                                    системы, лежащие в основе кода результата
                                    (например, HTTP-код статуса или статус
                                    реестра).
                                source_data:
                                  type: object
                                  nullable: true
                                  description: >-
                                    Очищенное и нормализованное представление
                                    записи реестра с каноническими именами полей
                                    (`identification_number`, `first_name`,
                                    `last_name`, `date_of_birth`, а также
                                    специфичные для реестра флаги). Поля
                                    изображений, если они присутствуют,
                                    возвращаются в виде предварительно
                                    подписанных URL.
                          - type: object
                            additionalProperties:
                              type: string
                              enum:
                                - full_match
                                - partial_match
                                - no_match
                            description: >-
                              Объединённые результаты на уровне полей (формат
                              stateless `save_api_request=false`).
                      warnings:
                        type: array
                        items:
                          type: object
                          properties:
                            feature:
                              type: string
                              description: Функция, вызвавшая предупреждение.
                            risk:
                              type: string
                              description: Машиночитаемый идентификатор риска.
                            additional_data:
                              type: object
                              nullable: true
                              description: >-
                                Дополнительный контекст предупреждения, если он
                                доступен.
                            log_type:
                              type: string
                              description: >-
                                `warning`, `information` или `error` — как этот
                                риск повлиял на результат.
                            short_description:
                              type: string
                              description: Однострочная понятная человеку сводка.
                            long_description:
                              type: string
                              description: Полное понятное человеку объяснение.
                        description: >-
                          `DATABASE_VALIDATION_NO_MATCH` или
                          `DATABASE_VALIDATION_PARTIAL_MATCH`, если применимо;
                          пусто при полном совпадении.
                      errors:
                        type: array
                        description: >-
                          Присутствует только тогда, когда завершились сбоем
                          некоторые (но не все) выбранные сервисы. Каждая запись
                          содержит `service_id`, `code`, `message` и
                          `retryable`. Сервис, указанный здесь, отсутствует в
                          `validations` и `services_used` и не тарифицируется.
                          Этот массив является единственным местом, где он
                          появляется, поэтому проверяйте его, даже если `status`
                          равен `Approved`.
                        items:
                          type: object
                          properties:
                            service_id:
                              type: string
                            code:
                              type: string
                              example: empty_provider_response
                            message:
                              type: string
                            retryable:
                              type: boolean
                              description: >-
                                `true`, если сервис не дал ответа и повторная
                                попытка позже может быть успешной; `false`, если
                                источник отклонил переданные данные и сначала
                                необходимо исправить входные данные.
                              example: true
                      services_used:
                        type: array
                        items:
                          type: string
                        description: >-
                          Каталожные идентификаторы сервисов, вернувших
                          тарифицируемый результат. **Присутствует только в том
                          случае, если запрос явно содержал `services`.**
                      match_score:
                        type: number
                        description: >-
                          Доля (0.0–1.0) сервисов, для которых была предпринята
                          попытка проверки, выдавших полное совпадение (по
                          идентификационному номеру, по полному имени вместе с
                          датой рождения или по адресу без противоречий).
                          **Присутствует только тогда, когда в запросе были явно
                          переданы `services`.**
                  vendor_data:
                    type: string
                    nullable: true
                    description: Эхо отправленных вами `vendor_data`.
                  metadata:
                    type: object
                    nullable: true
                    description: Эхо-значение переданного вами `metadata`.
                  created_at:
                    type: string
                    format: date-time
              examples:
                Full match (Approved):
                  summary: >-
                    По умолчанию save_api_request=true — объекты `validations`
                    для каждого сервиса
                  value:
                    request_id: 7f9a1c0e-1f2b-4f6e-9d3a-2b1c0e7f9a1c
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        - validation:
                            full_name: full_match
                            date_of_birth: full_match
                            identification_number: full_match
                          outcome_code: MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          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: []
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-11T10:30:00.000000+00:00'
                Explicit services (extended shape):
                  summary: >-
                    В запросе отправлено `services` — в ответе добавлены
                    `services_used` и `match_score`
                  value:
                    request_id: b3e7c1a2-9d4f-4f0b-8a6c-5e2d1f0a9b3e
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        - validation:
                            full_name: full_match
                            date_of_birth: full_match
                            identification_number: full_match
                          outcome_code: MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          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: []
                      services_used:
                        - bra_cpf
                      match_score: 1
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-11T10:30:00.000000+00:00'
                No match (Declined):
                  summary: >-
                    Запись в реестре не совпадает — по умолчанию
                    `no_match_action=DECLINE`
                  value:
                    request_id: 0a1b2c3d-4e5f-6789-abcd-ef0123456789
                    database_validation:
                      status: Declined
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: no_match
                      validations:
                        - validation:
                            full_name: no_match
                            date_of_birth: no_match
                            identification_number: no_match
                          outcome_code: NO_MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          source_data:
                            identification_number: '00987654321'
                            first_name: TOTALLY
                            last_name: DIFFERENT NAME
                            date_of_birth: '1999-01-01'
                            lgpd_minor: false
                            minor_under_16: false
                            minor_under_18: false
                      warnings:
                        - feature: DATABASE_VALIDATION
                          risk: DATABASE_VALIDATION_NO_MATCH
                          additional_data: null
                          log_type: error
                          short_description: Database validation no match
                          long_description: >-
                            The system identified a no match in the database
                            validation, requiring further investigation.
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-11T10:31:00.000000+00:00'
                Stateless (save_api_request=false):
                  summary: >-
                    `validations` сворачивается в объединённую карту полей;
                    ничего не сохраняется
                  value:
                    request_id: c4d5e6f7-8901-2345-6789-abcdef012345
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        full_name: full_match
                        date_of_birth: full_match
                        identification_number: full_match
                      warnings: []
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-11T10:32:00.000000+00:00'
        '400':
          description: >-
            Ошибка валидации: биллинг не выполняется. Предварительные ошибки
            полей возникают до любого внешнего вызова. Если каждая попытка без
            ответа явно отклоняет входные данные, ответ вместо этого содержит
            `validation_errors` с `code: provider_rejected_input` и `retryable:
            false`; исправьте входные данные перед повторной попыткой. Ошибки на
            уровне полей используют стандартную обёртку DRF; ошибки каталога
            возвращают массив `services` (плюс `requires_onboarding` или
            `services_requiring_consent`, когда это применимо); ошибки
            отсутствующих полей включают `fields_required_by`, сопоставляющий
            каждое отсутствующее поле с сервисами, которые его требуют; сервисы,
            которым требуется как минимум один дополнительный идентификатор
            (например, `usa_states_credit_bureau`, который не может проверить
            только имя), возвращают `any_field_required_by`, сопоставляющий
            каждый сервис с полями, хотя бы одно из которых должно
            присутствовать; ошибки формата, проверяемые для каждого сервиса,
            возвращают `invalid_fields_by_service`.
          content:
            application/json:
              examples:
                Invalid issuing_state:
                  summary: >-
                    Страна не поддерживается — в сообщении перечислены все
                    допустимые коды alpha-3
                  value:
                    error:
                      - >-
                        Invalid issuing state. Valid options are: ARE, ARG, AUS,
                        AUT, BEL, BGD, BOL, BRA, CAN, CHE, CHL, CHN, CIV, COL,
                        CRI, CZE, DEU, DNK, DOM, ECU, ESP, FIN, FRA, GBR, GHA,
                        GLB, GRC, GTM, HKG, HND, IDN, IND, IRL, ITA, KEN, KHM,
                        MAR, MEX, MYS, NGA, NLD, NOR, NZL, OMN, PAN, PER, PHL,
                        POL, PRT, PRY, QAT, SGP, SLV, SVK, SWE, THA, UGA, URY,
                        USA, VEN, ZAF, ZMB, ZWE
                Missing required fields:
                  summary: >-
                    Объединение обязательных полей для выбранных сервисов с
                    подсказкой об универсальном поле
                  value:
                    error:
                      - >-
                        Missing required fields: tax_number (or use
                        'identification_number' which maps to 'tax_number' for
                        BRA)
                    fields_required_by:
                      tax_number:
                        - bra_cpf
                Unknown service id:
                  summary: '`services` содержит идентификатор, отсутствующий в каталоге'
                  value:
                    services:
                      - 'Unknown service_id(s): [''bogus_service'']'
                Service not live for country:
                  summary: >-
                    `services` указывает сервис из другой страны (или фиктивную
                    запись)
                  value:
                    services:
                      - >-
                        Services not currently live for PER: ['bra_cpf'].
                        Available services: ['per_dni', 'per_residential',
                        'per_tax_registration']
                Service requires onboarding:
                  summary: >-
                    Сервис существует, но ещё не активирован для вашей
                    организации
                  value:
                    services:
                      - >-
                        Services require onboarding before they can be enabled
                        for AUS: ['aus_australia_driver_licence']. Contact Didit
                        support to activate them.
                    requires_onboarding:
                      - aus_australia_driver_licence
                Consent missing:
                  summary: >-
                    Выбранный сервис помечен requires_consent=true, а `consent`
                    не равен `true`
                  value:
                    consent:
                      - >-
                        Explicit end-user consent is required for these database
                        validation services: ['chn_national_id']. Send
                        `consent=true`.
                    services_requiring_consent:
                      - chn_national_id
                Country format rule violation:
                  summary: >-
                    Идентификатор не соответствует правилу формата для страны
                    (длина/цифры/регулярное выражение)
                  value:
                    tax_number:
                      - >-
                        Invalid tax number for BRA: Brazilian CPF (exactly 11
                        digits). Must be exactly 11 characters long (got 10).
                Service-specific format violation:
                  summary: >-
                    Поле не соответствует требованиям к формату выбранного
                    сервиса
                  value:
                    error:
                      - >-
                        One or more fields do not match the format required by
                        the selected service.
                    invalid_fields_by_service:
                      chn_national_id:
                        - national_id_format
                Input refused by every attempt:
                  summary: Исправьте входные данные перед повторной попыткой
                  value:
                    error: >-
                      The source refused to run this query with the supplied
                      input.
                    validation_errors:
                      - service_id: bra_cpf
                        code: provider_rejected_input
                        message: >-
                          The source refused to run this query with the supplied
                          input.
                        retryable: false
              schema:
                type: object
                additionalProperties: true
                properties:
                  error:
                    description: >-
                      Пояснение на уровне запроса или ошибки полей
                      предварительной проверки.
                    oneOf:
                      - type: string
                      - type: array
                        items:
                          type: string
                  validation_errors:
                    type: array
                    description: >-
                      Присутствует, если каждая попытка без ответа отклоняла
                      входные данные после предварительной проверки.
                    items:
                      type: object
                      properties:
                        service_id:
                          type: string
                        code:
                          type: string
                        message:
                          type: string
                        retryable:
                          type: boolean
                          description: >-
                            Может ли повторная попытка позже устранить этот сбой
                            сервиса. Значение false означает, что сначала
                            необходимо исправить переданные входные данные.
        '403':
          description: >-
            В доступе отказано. Возвращается, если заголовок `x-api-key`
            отсутствует, а также если баланс вызывающей организации не покрывает
            вызов; неверный, отозванный или истекший ключ возвращает `401`.
            Отсутствующий ключ возвращает `403` с `{"detail": ...}`; неверный,
            отозванный или истекший ключ возвращает `401`. При нехватке кредитов
            возвращается `403` с `{"error": ...}` до начала любого скрининга или
            вызова провайдера.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: >-
                    Отсутствует заголовок `x-api-key`, либо ключ
                    недействителен/отозван
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: Баланс организации недостаточен для совершения вызова
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            Превышен лимит запросов. Endpoint'ы POST/PATCH/DELETE делят общий
            лимит в 300 запросов на запись в минуту на один API-ключ (для
            создания транзакций и отправки событий действует отдельный лимит в
            600). Ответ содержит заголовки `X-RateLimit-Limit`,
            `X-RateLimit-Remaining`, `X-RateLimit-Reset` и `Retry-After`.
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: Более 300 запросов на запись в текущую минуту
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
              schema:
                type: object
                properties:
                  detail:
                    type: string
        '502':
          description: >-
            Ни один выбранный сервис не вернул пригодный результат. Проверьте
            каждую запись в validation_errors перед повторной попыткой; один
            лишь HTTP 502 не означает временный сбой. Запись
            empty_provider_response с retryable: true указывает на недоступные
            или необъяснимые результаты, включая отказ основного сервиса с
            последующей недоступностью резервного. Устаревшие записи
            provider_invalid_input и provider_validation_error вместо этого
            требуют исправления входных данных и могут опускать retryable.
            Списания средств не происходит. Если save_api_request=true,
            неудавшаяся попытка записывается как сессия со статусом Not
            Finished. Частичные сбои возвращают 200 с
            database_validation.errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  validation_errors:
                    type: array
                    items:
                      type: object
                      properties:
                        service_id:
                          type: string
                        code:
                          type: string
                        message:
                          type: string
                        retryable:
                          type: boolean
                          description: >-
                            Может ли повторная попытка позже устранить этот сбой
                            сервиса. Значение false означает, что сначала
                            необходимо исправить переданные входные данные.
              examples:
                Provider returned no result:
                  summary: Каждый выбранный сервис завершился сбоем
                  value:
                    error: >-
                      Database validation could not be performed. The external
                      validation service did not return a result. Please try
                      again later.
                    validation_errors:
                      - service_id: bra_cpf
                        code: empty_provider_response
                        message: >-
                          The provider did not return a database validation
                          result.
                        retryable: true
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/database-validation/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "issuing_state": "BRA",
                "services": ["bra_cpf"],
                "identification_number": "12345678900",
                "first_name": "John",
                "last_name": "Doe",
                "date_of_birth": "1980-01-01",
                "vendor_data": "user-1234"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.database_validation.validate(
                issuing_state="BRA",
                services=["bra_cpf"],
                identification_number="12345678900",
                first_name="John",
                last_name="Doe",
                date_of_birth="1980-01-01",
                vendor_data="user-1234",
            )
            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.databaseValidation.validate({
              issuing_state: "BRA",
              services: ["bra_cpf"],
              identification_number: "12345678900",
              first_name: "John",
              last_name: "Doe",
              date_of_birth: "1980-01-01",
              vendor_data: "user-1234",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{\n\tIssuingState:         \"BRA\",\n\tServices:             didit.Some([]string{\"bra_cpf\"}),\n\tIdentificationNumber: didit.String(\"12345678900\"),\n\tFirstName:            didit.String(\"John\"),\n\tLastName:             didit.String(\"Doe\"),\n\tDateOfBirth:          didit.String(\"1980-01-01\"),\n\tVendorData:           didit.String(\"user-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.time.LocalDate;

            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.DatabaseValidationValidateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
                    .issuingState("BRA")
                    .services(List.of("bra_cpf"))
                    .identificationNumber("12345678900")
                    .firstName("John")
                    .lastName("Doe")
                    .dateOfBirth(LocalDate.parse("1980-01-01"))
                    .vendorData("user-1234")
                    .build());
            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->databaseValidation->validate([
                'issuing_state' => 'BRA',
                'services' => ['bra_cpf'],
                'identification_number' => '12345678900',
                'first_name' => 'John',
                'last_name' => 'Doe',
                'date_of_birth' => '1980-01-01',
                'vendor_data' => 'user-1234',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.database_validation.validate(
              issuing_state: "BRA",
              services: ["bra_cpf"],
              identification_number: "12345678900",
              first_name: "John",
              last_name: "Doe",
              date_of_birth: "1980-01-01",
              vendor_data: "user-1234"
            )
            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.DatabaseValidation.ValidateAsync(new
            DatabaseValidationValidateParams

            {
                IssuingState = "BRA",
                Services = new string[] { "bra_cpf" },
                IdentificationNumber = "12345678900",
                FirstName = "John",
                LastName = "Doe",
                DateOfBirth = "1980-01-01",
                VendorData = "user-1234",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в
        Business Console. Основной ключ имеет полный доступ. Именованный ключ
        может иметь ограниченную область действия: без доступа, чтение или
        запись для каждого ресурса, ограничение определенными сценариями или
        одобренными сессиями, списком IP-адресов и сроком действия. 401
        означает, что ключ неверен, отозван или его срок действия истек; 403
        означает, что ключ не был передан, у ключа нет доступа к этому ресурсу
        или действию, либо запрос поступил с адреса вне его списка IP-адресов;
        404 на маршруте сессии означает, что сессия не входит в сценарии или
        статусы ключа. Ключ без доступа к медиа получает URL изображений, видео
        и PDF как null, а ключ без прав на запись сессий получает ссылки на
        сессии и токены как null. См. https://docs.didit.me/console/api-keys.

````

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