Перейти к основному содержимому

# Верификация пользователя

Список распространенных ошибок регистрации и авторизации

HTTP код | Сообщение | Описание | Код
400 | Request "validationRequest.Id" was already completed | Попытка регистрации зарегистрированного аппликанта | 120036
400 | All available attempts were used for requestId "validationRequest.Id" | Все попытки зарегистрироваться исчерпаны | 120037
400 | Face image is empty | Переданное изображение пустое | 120038
400 | Graphql error: "error message" | Платформа вернула ошибки в ответ на запрос | 120029
400 | Profile search is missing | Попытка поиска профилей на платформе не удалась. | 120039
400 | No faces found | Переданное изображение не содержит лиц | 120058
400 | Multiple faces found | На изображении несколько лиц | 120059
400 | Quality calculation failed | Попытка рассчитать качество в платформе не удалась | 120039
400 | Liveness calculation failed | Попытка расчета Liveness не удалась | 120039
400 | Request is closed | Попытка регистрации закрытого аппликанта | 120040
400 | This document type is not supported | У BAF отключена функция «Сохранить профиль лица». | 120041
400 | Face image is required | Изображение не было передано | 120042
400 | Applicant doesn't have verified face | Попытка авторизации аппликанта без связанного профиля | 120043
400 | Endeavor id is null when required Endeavor external link not equal to applicant | Попытка от Video Recorder содержит неверные данные | 120044
400 | Applicant profile not found | Профиль аппликанта не найден на платформе | 120043

### Сохранение лица пользователя​

Эндпоинт POST /publicapi/api/v2/public/Validation

1. Создайте запрос на верификацию.
2. Загрузите изображение лица пользователя.
3. Укажите DocumentType: 10 (регистрация/авторизация по лицу).

Регистрация пользователя считается успешной, если:

- Все включенные опциональные проверки успешно пройдены.
- Качество фото с лицом выше порога в настройках.
- Живость лица с фото выше порога в настройках.
- В базе отсутствует похожие аппликанты, скор сравнения с которыми выше порога в настройках.

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

    {
      "model": {
          "faceImageBase64": "вставьте изображение лица в base64",
          "documentType": 10
      },
      "applicantId": "вставьте applicantId",
      "endeavorId": "вставьте endeavorId (только если включен LRS)"
    }

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

Status Code | 200

    {
      "applicantId": "05fcd***",
      "attemptId": 1,
      "documentType": 10,
      "document": null,
      "attemptsCount": 5,
      "attemptsLeft": 0,
      "status": 0,
      "validationStatus": {
        "expired": null,
        "documentIsValid": null,
        "faceIsValid": true,
        "antiSpoofingIsValid": null,
        "qualityIsValid": true,
        "livenessReflectionIsValid": true,
        "hasBeenBlackListed": false
      },
      "invalidDataErrors": [
        {
          "code": null,
          "message": "Multiple faces or strong face movement spotted when recording liveness reflection video",
          "description": null
        }
      ],
      "validations": {
        "liveness": {
          "verdict": true,
          "details": [
            {
              "name": "FaceLiveness",
              "verdict": true,
              "score": 0.99
            }
          ]
        },
        "quality": {
          "verdict": true,
          "details": [
            {
              "name": "FaceQuality",
              "verdict": true,
              "score": 0.53
            }
          ]
        },
        "matching": {
          "verdict": true,
          "details": [
            {
              "name": "FaceMatching",
              "verdict": true,
              "score": 0.0
            }
          ]
        },
        "motionControl": {
          "verdict": false,
          "motionControlInfo": [
            {
                "pattern": "up",
                "result": true
            },
            {
                "pattern": "left",
                "result": false
            }
          ]
        }
      },
      "faceSuccess": true,
      "documentSuccess": null,
      "documentHasNotExpired": null,
      "hasRiskEvents": false,
      "riskEvents": [
        {
          "created": "2024-08-14T09:21:08.2064762Z",
          "riskNumber": 8,
          "riskName": "MissingMetadata",
          "isActive": false
        }
      ],
      "documentValidationTests": [],
      "callBackUrl": null
    }

В случае успешной регистрации пользователь будет проинформирован системным сообщением Status Code 200.

Если первая попытка регистрации не оказалась успешной, можно повторить попытку загрузки изображения документа и/или селфи: число попыток регистрации можно настроить в диапазоне от одного до пяти.

Если все попытки регистрации оказались неудачными, пользователь получит сообщение "Status Code 400".

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

Эндпоинт POST /publicapi/api/v2/public/Validation

1. Укажите ID аппликанта.
2. Загрузите изображение лица пользователя.
3. Укажите DocumentType: 10 (регистрация или авторизация по лицу).

Авторизация пользователя считается успешной, если:

- Все включенные опциональные проверки успешно пройдены.
- Качество фото с лицом выше порога в настройках.
- Живость лица с фото выше порога в настройках.
- Скор сравнения лица из фото на авторизацию с лицом из фото на регистрацию выше порога в настройках.

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

    {
      "model": {
          "faceImageBase64": "вставьте изображение лица в base64",
          "documentType": 10
      },
      "applicantId": "вставьте applicantId",
      "endeavorId": "вставьте endeavorId (только если включен LRS)"
    }

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

Status Code | 200

    {
      "applicantId": "05fcd***",
      "attemptId": 1,
      "documentType": 10,
      "document": null,
      "attemptsCount": 5,
      "attemptsLeft": 0,
      "status": 0,
      "validationStatus": {
        "expired": null,
        "documentIsValid": null,
        "faceIsValid": true,
        "antiSpoofingIsValid": null,
        "qualityIsValid": true,
        "livenessReflectionIsValid": true,
        "hasBeenBlackListed": false
      },
      "invalidDataErrors": [],
      "validations": {
        "liveness": {
          "verdict": true,
          "details": [
            {
              "name": "FaceLiveness",
              "verdict": true,
              "score": 0.99
            }
          ]
        },
        "quality": {
          "verdict": true,
          "details": [
            {
              "name": "FaceQuality",
              "verdict": true,
              "score": 0.53
            }
          ]
        },
        "matching": {
          "verdict": true,
          "details": [
            {
              "name": "FaceMatching",
              "verdict": true,
              "score": 0.0
            }
          ]
        },
        "motionControl": {
          "verdict": false,
          "motionControlInfo": [
            {
                "pattern": "up",
                "result": true
            },
            {
                "pattern": "left",
                "result": false
            }
          ]
        }
      },
      "faceSuccess": true,
      "documentSuccess": null,
      "documentHasNotExpired": null,
      "hasRiskEvents": false,
      "riskEvents": [
        {
          "created": "2024-08-14T09:21:08.2064762Z",
          "riskNumber": 8,
          "riskName": "MissingMetadata",
          "isActive": false
        }
      ],
      "documentValidationTests": [],
      "callBackUrl": null
    }

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

## Регистрация/авторизация по applicantId​

Подлежит уточнению.