> For the complete documentation index, see [llms.txt](https://docs.npck.kz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.npck.kz/servisy-coid/servis-sopostavleniya-fotoizobrazhenii/threshold.md).

# Threshold

## GET /v1/identity/vendors

### Назначение

Справочный метод сервиса сопоставления фотоизображений (Identity), который возвращает список поддерживаемых биометрических вендоров и применяемый для каждого из них порог совпадения (match-score threshold). Метод нужен для того, чтобы клиент мог корректно интерпретировать поле `score` в ответах методов верификации, не хардкодя пороговые значения на своей стороне.

### Endpoint

| Среда | URL                                                 |
| ----- | --------------------------------------------------- |
| Prod  | `GET https://api.npck.kz/v1/identity/vendors`       |
| Test  | `GET https://api.stage.npck.kz/v1/identity/vendors` |

### Авторизация

Basic Auth — тот же механизм, что и у остальных методов Identity API.

```
Authorization: Basic <base64(client_id:client_secret)>
```

Метод не требует активного биллингового контракта IDENTITY на организацию (в отличие от `sync/verify`, `async/verify` и методов получения персональных данных) — доступен любому авторизованному клиенту как справочная информация.

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

Отсутствуют — запрос не принимает ни query-параметров, ни тела.

### Формат ответа

`200 OK`, `Content-Type: application/json`

```json
{
  "vendors": [
    { "vendor": "VISIONLABS", "threshold": 0.85 },
    { "vendor": "OZFORENSICS", "threshold": 0.85 },
    { "vendor": "VERIGRAM", "threshold": 0.85 },
    { "vendor": "BIOMETRIC", "threshold": 0.85 },
    { "vendor": "BIOMETRICSOLUTION", "threshold": 0.85 },
    { "vendor": "FCB", "threshold": 0.85 },
    { "vendor": "BTS", "threshold": 0.85 },
    { "vendor": "SUNSOFT", "threshold": 0.85 },
    { "vendor": "UZINFOCOM", "threshold": 0.85 }
  ]
}
```

#### Объект `VendorInfo`

| Поле        | Тип                               | Обязательное | Описание                                                                                                                                                                              |
| ----------- | --------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `vendor`    | string (enum)                     | да           | Идентификатор вендора биометрической верификации. Возможные значения: `VISIONLABS`, `OZFORENSICS`, `VERIGRAM`, `BIOMETRIC`, `BIOMETRICSOLUTION`, `FCB`, `BTS`, `SUNSOFT`, `UZINFOCOM` |
| `threshold` | number (double), диапазон 0.0–1.0 | да           | Минимальный порог совпадения (`score`), при достижении которого результат верификации данным вендором считается принятым                                                              |

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

Поле `score` в ответах методов верификации (`POST /v1/identity/sync/verify`, `POST /v2/identity/sync/verify`, `POST /v1/identity/async/verify` + `GET /v1/identity/async/verify/{verificationId}`) — это скор совпадения биометрии (0.0–1.0), полученный от конкретного вендора. Чтобы определить, является ли результат успешным, сравните `score` с `threshold` того же `vendor`, полученным этим методом:

```
score >= threshold  →  верификация считается успешной
```

Важно: этот же порог применяется и на бэкенде сервиса — доступ к персональным данным (`GET /v1/identity/personal-data/{verificationId}` и v2) и регистрация согласия (`POST /v2/identity/sync/verify`) возможны только если `score` верификации не ниже порога вендора; в противном случае сервис возвращает бизнес-ошибку `SCORE_LESS_THRESHOLD`.

Пороги задаются конфигурацией сервиса, могут отличаться между вендорами и изменяться со временем — не хардкодите их на стороне клиента, запрашивайте актуальные значения через этот метод.

### Пример запроса

```bash
curl --location 'https://api.npck.kz/v1/identity/vendors' \
  --header 'Accept: application/json' \
  --header 'Authorization: Basic e3tiYXNpY0F1dGhVc2VybmFtZX19Ont7YmFzaWNBdXRoUGFzc3dvcmR9fQ=='
```

### Пример ответа

```json
{
  "vendors": [
    { "vendor": "VISIONLABS", "threshold": 0.85 },
    { "vendor": "OZFORENSICS", "threshold": 0.85 }
  ]
}
```

### Коды ошибок

| HTTP-код | Когда возникает                                                                         |
| -------- | --------------------------------------------------------------------------------------- |
| 401      | Отсутствуют или некорректны учётные данные авторизации                                  |
| 403      | Клиент не имеет прав на вызов метода                                                    |
| 405      | Использован неподдерживаемый HTTP-метод                                                 |
| 406      | Заголовок `Accept` не соответствует поддерживаемому формату ответа (`application/json`) |
| 429      | Превышен лимит частоты запросов                                                         |
| 500      | Внутренняя ошибка сервиса                                                               |

Тело ошибки для 401/403/405/406:

```json
{
  "requestId": "<уникальный идентификатор запроса, нужен при обращении в поддержку>"
}
```

### Связанные методы

* `POST /v1/identity/sync/verify` (deprecated), `POST /v2/identity/sync/verify` — синхронная верификация, возвращает `score`
* `POST /v1/identity/async/verify`, `GET /v1/identity/async/verify/{verificationId}` — асинхронная верификация
* `GET /v1/identity/personal-data/{verificationId}`, `GET /v2/identity/personal-data/{verificationId}` — получение персональных данных (доступно только при `score >= threshold`)
