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

# Бразилия - CNH QR-код + сравнение лиц (Datavalid) API

> Бразилия - CNH QR-код + сравнение лиц (Datavalid): проверка по официальной базе Бразилии через Didit. Оплата за вызов от $0.62, без контрактов и минимумов.

SERPRO Datavalid v4 pf-facial-qrcode декодирует QR-код, напечатанный на бразильских водительских удостоверениях CNH (физических или цифровых, выданных с мая 2017 года), проверяет CPF, имя и дату рождения по данным Receita Federal и сравнивает селфи, сделанное в реальном времени, с портретом из CNH, который хранится в Senatran. Didit предоставляет этот сервис через `POST /v3/database-validation/`, чтобы вы могли сверить отправленные данные с первоисточником и получить нормализованные результаты сравнения. Формат ввода: `tax_number` принимает бразильский CPF (ровно 11 цифр).

## Покрытие

* **Покрытие:** —
* **Страна:** Бразилия
* **ID сервиса:** `bra_cnh_facial_qrcode`
* **Домен данных:** Биометрические данные
* **Категория:** DriverLicence

## Входные данные

| Поле | Обязательно | Пример |
| - | -: | - |
| `tax_number` | Да | `11111111111` |
| `selfie` | Да | `@./selfie.jpg` |
| `cnh_qr_code_image` | Да | `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB` |
| `first_name` | Нет | `John` |
| `last_name` | Нет | `Doe` |
| `date_of_birth` | Нет | `1990-01-01` |
| `vendor_data` | Нет | `user-1234` |

* **Обязательные входные данные:** `tax_number`, `selfie`, `cnh_qr_code_image`
* **Необязательные входные данные:** `first_name`, `last_name`, `date_of_birth`, `vendor_data`
* **Согласие:** Обязательно
* **Доступность в сценарии:** Доступно в сценарии
* **Покрытие:** —
* **Цена:** \$0.62 за успешный запрос

## Параметры тела запроса

**issuing\_state** `string` *required* (default: BRA)

Код страны по ISO 3166-1 alpha-3 для этого сервиса проверки по базам данных.

Пример: `BRA`

**services** `string` *required* (default: bra\_cnh\_facial\_qrcode)

Массив, содержащий идентификатор этого сервиса. Фиксация сервиса ограничивает запрос этой конкретной базой данных.

Пример: `bra_cnh_facial_qrcode`

**consent** `boolean` *required* (default: true)

Явное согласие конечного пользователя на использование этого сервиса.

Пример: `true`

**tax\_number** `string` *required* (default: 11111111111)

Налоговый или фискальный идентификационный номер.

Пример: `11111111111`

**selfie** `file` *required*

Файл изображения селфи для загрузки в целях биометрической проверки по базе данных. Допустимые форматы: JPEG, PNG или WebP.

Пример: `@./selfie.jpg`

**cnh\_qr\_code\_image** `string` *required* (default: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB)

Значение `cnh_qr_code_image`, которое требуется этим сервисом проверки по базе данных.

Пример: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB`

**first\_name** `string`

Имя, которое нужно проверить.

Пример: `John`

**last\_name** `string`

Фамилия, которую нужно проверить.

Пример: `Doe`

**date\_of\_birth** `string`

Дата рождения в формате `YYYY-MM-DD`.

Пример: `1990-01-01`

**vendor\_data** `string` (default: user-1234)

Ваш постоянный идентификатор этого человека, например внутренний ID пользователя. Didit использует его, чтобы связывать отдельные проверки с одним и тем же конечным пользователем и уменьшать количество ложных срабатываний при поиске дубликатов.

Пример: `user-1234`

## Правила ввода и примечания по валидации

* Бразильский CPF (ровно 11 цифр)
* `tax_number` должен содержать только цифры: перед отправкой запроса удалите пробелы, дефисы и знаки препинания.
* Длина `tax_number` должна быть ровно 11 символов.

## Как выполнить запрос

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=BRA" \
  -F "services=bra_cnh_facial_qrcode" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "tax_number=11111111111" \
  -F "selfie=@./selfie.jpg" \
  -F "cnh_qr_code_image=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB"
```

Каждый успешный вызов возвращает HTTP `200`. Поле **`outcome_code`** показывает, что произошло на самом деле: например, отличает реальное несовпадение биометрии (`BIOMETRIC_NO_MATCH`) от селфи, которое не удалось прочитать (`BIOMETRIC_IMAGE_UNUSABLE`). Указанный `status` является статусом функции по умолчанию; ваши настроенные [действия для Partial Match / No Match](https://docs.didit.me/ru/core-technology/database-validation/database-validation-warnings.md) могут его переопределить.

**`MATCH`**: реестр подтвердил личность, и все проверенные поля совпали.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "BRA",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "bra_cnh_facial_qrcode",
      "service_name": "Brazil - CNH QR code + face match (Datavalid)",
      "source_data": {
        "cnh_qrcode": "sample_value",
        "date_of_birth": "1990-01-01",
        "face_match_probability": "Altíssima probabilidade",
        "face_match_score": "0.990",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "name_match_score": "1.000",
        "verifications": {
          "identification_number": true
        }
      },
      "validation": {
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: реестр не вернул совпадений для отправленных данных.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "BRA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "bra_cnh_facial_qrcode",
      "service_name": "Brazil - CNH QR code + face match (Datavalid)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`BIOMETRIC_NO_MATCH`**: оценка совпадения при сравнении лиц ниже порога принятия, то есть на селфи изображён не тот же человек, что и на фото в реестре.

```json 200 OK — BIOMETRIC_NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "BRA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_NO_MATCH",
      "service_id": "bra_cnh_facial_qrcode",
      "service_name": "Brazil - CNH QR code + face match (Datavalid)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`BIOMETRIC_IMAGE_UNUSABLE`**: селфи не удалось обработать (оно пустое, на нем нет лица, низкого качества или реестр не смог его прочитать). Попросите пользователя переснять селфи.

```json 200 OK — BIOMETRIC_IMAGE_UNUSABLE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "BRA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
      "service_id": "bra_cnh_facial_qrcode",
      "service_name": "Brazil - CNH QR code + face match (Datavalid)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

## Возвращаемые данные

Точный набор полей, которые попадают в `source_data`, зависит от того, что возвращает реестр. Сгенерированный пример для `bra_cnh_facial_qrcode` сейчас описывает такую нормализованную структуру:

* `cnh_qrcode`
* `date_of_birth`
* `face_match_probability`
* `face_match_score`
* `first_name`
* `identification_number`
* `last_name`
* `name_match_score`

## Цены и SLA

Бразилия: проверки QR-кода CNH и сравнения лиц (Datavalid) оплачиваются только в том случае, если Didit получает окончательный результат от источника проверки.

* **Цена за вызов:** \$0.62 USD.
* **Оплата:** за успешный запрос. Плата не взимается, если реестр недоступен, если не заполнены обязательные поля или если запрос отклонен до обращения к источнику.
* **Задержка:** типичный p95 \< 2 с.
* **Доступность:** 99.9% в квартал со стороны Didit; доступность источников данных зависит от страны и набора данных.

## Читайте также

* [Обзор проверки по базам данных в Бразилии](https://docs.didit.me/api-reference/database-validation/brazil.md)
* [Обзор проверки по базам данных](https://docs.didit.me/ru/core-technology/database-validation/overview.md)
* [Коды результатов](https://docs.didit.me/ru/core-technology/database-validation/database-validation-outcome-codes.md)


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