Причины отказа¶
Причина отказа — сохранённая диагностическая запись с категорией type и необязательным описанием detail. Она может относиться к сессии целиком или к результату технологии. Наличие такой записи, отрицательный result, HTTP-ошибка запроса и окончательный статус сессии — разные признаки: проверяйте их совместно.
Эта страница описывает фактический контракт текущего backend. Сообщения, которые только возвращаются отдельным HTTP-запросом или записываются в технический журнал, не становятся автоматически failure_reason.
Где получить причины отказа¶
Полный и light-результаты Flow Session используют одинаковый формат ошибок:
POST /api/flows/sessions/result/— полный результат;POST /api/flows/sessions/result/light/— light-результат;<блок_технологии>.failure_reason— причина выбранного результата технологии;flow_session_failure_reasons[]— причины самой сессии и выборка причин технологий. Это общий массив, а не только ошибки уровня сессии.
У сессии нет отдельного корневого failure_reason в этих ответах. В webhook место ошибки и правила включения полей зависят от события.
Структура и отсутствие значений¶
| Поле | Тип в JSON | Условия |
|---|---|---|
<блок>.failure_reason |
object | Если у выбранной записи есть причина. Исключение — адрес, см. ниже. |
failure_reason.type |
string, enum | Обязательно внутри объекта, не null; точные значения — в таблице категорий. |
failure_reason.detail |
string | При наличии описания. Пустая строка допустима и сохраняется. Это диагностический текст, а не отдельный код ошибки. |
flow_session_failure_reasons |
object[] | В полном и light-ответе формируется массив, в том числе []. |
flow_session_failure_reasons[].type |
string | Обязательно, не null. Схема общего массива не ограничивает строку enum технологий: здесь встречается и EXPIRED. |
flow_session_failure_reasons[].detail |
string | При наличии описания. |
Объект причины не содержит идентификатора, времени, кода технологии или номера попытки. В общем массиве нельзя надёжно восстановить источник ошибки только по позиции или тексту. Ограничение хранения detail — 512 символов; единого механизма безопасного усечения внешних сообщений код не задаёт.
Категории ошибок¶
Регистр значений значим. Название категории описывает способ классификации ошибки backend и само по себе не устанавливает виновника, возможность повторения или окончательность отказа.
type |
Значение | Уровень и подтверждённое использование |
|---|---|---|
EXPIRED |
Истёк срок действия сессии | Сессия. Периодическая обработка просроченных незавершённых сессий. |
OTHER |
Прочая причина | Оба уровня. Ограничение по fingerprint, проверка хеша изображения, сообщения клиента. |
CALC_RESULT |
Отрицательное решение или нарушение условия проверки | Технологии. Оценки лица, правила документа, наличие записей в реестре, некоторые ошибки OTP. Может означать и отсутствие необходимых данных для расчёта. |
SERVICE_ERROR |
Ошибка, отнесённая обработчиком к сервисной | Технологии. Соединение, обработка, ответ поставщика. Иногда сюда попадают ошибки входных данных внешнего запроса. |
REQUEST_ERROR |
Ошибка выполнения запроса | Технологии. AML, MRZ и IP. Единого разграничения с SERVICE_ERROR для всех технологий нет. |
CLIENT |
Ошибка, отнесённая обработчиком к клиентской | Технологии. Отклонение доступа, входных данных, правил IP и анкеты. |
TIMEOUT |
Превышение времени ожидания | Технологии. В GBDFL и PPS — превышение времени опроса; также принимается от клиента. Не каждый тайм-аут имеет этот type. |
NO_CAM |
Сообщение об отсутствии / недоступности камеры | Объявлено для технологий и принимается входной схемой сообщения об ошибке. |
DIFFERENT_FACES |
Несовпадение лиц между детекциями Liveness | Технологии Liveness. Для самостоятельного Face2Face и NPCK несовпадение имеет CALC_RESULT. |
VR_CAM |
Отрицательная проверка виртуальной камеры | Технологии Liveness, сообщение VR Camera Attack. |
Ошибки и итог проверки¶
result: falseвозможен без причины: начальное состояние некоторых реестров, найденное совпадение AML при включённом отказе по санкциям, отрицательный расчёт DR v1 без отдельной записи.result: trueвозможен с причиной: подтверждённый пример — ГБД ЮЛ сallow_service_unavailable. Успешная запись значений в существующий результат также не означает универсальную очистку прежней ошибки.resultможет ещё не иметь значения. API тогда исключает поле. У Liveness Core это возможно и при направлении на ручное рассмотрение.- У KZ Info и ЕРД поля
resultвообще нет: анализируйте статус получения данных и причину.
Статус сессии и flow_session_result¶
При штатном завершении наличие собственной причины сессии приводит к FAILED. Далее проверяются результаты активных технологий: неполное или отрицательное прохождение обычно даёт FAILED, успешное — FINISHED; для Liveness Core с неопределённым результатом предусмотрен IN_REVIEW. Полный перечень статусов — в обзоре результатов.
Публичный flow_session_result вычисляется отдельно:
- Пока статус не
FINISHEDи неAPPROVED, возвращаетсяfalse. - Для выбранных результатов технологий наличие
failure_reasonили явногоresult: falseдаётfalse. - Отсутствие значения
resultсамо по себе не проверяется какfalse; отсутствие одиночной связи и пустая коллекция обрабатываются неодинаково.
В этом расчёте обходятся технологии Workflow без фильтра активности, кроме Person. Проверка статуса при завершении использует активные технологии и их результаты, а KZ Info/ЕРД считает завершёнными по статусам RECEIVED или FAILED. Поэтому возможны status: "FINISHED" и flow_session_result: false, в частности при сохранённой ошибке технологии. Ручное APPROVED также не отменяет проверки сохранённых ошибок в публичном агрегате. Собственные причины сессии напрямую в этом агрегате повторно не проверяются — они учитываются штатным завершением через статус.
Сохранение причины технологии обычно не меняет статус сессии немедленно. Исключения указаны ниже. Промежуточный отрицательный результат при PROGRESS не равен уже завершённой сессии FAILED.
Workflow¶
Причины уровня сессии находятся в flow_session_failure_reasons[].
type |
detail |
Когда возникает и последствия |
|---|---|---|
EXPIRED |
Flow session was expired |
Периодическая задача находит expired_at в прошлом у сессии CREATED, PROGRESS или QR, добавляет причину и переводит сессию в FAILED. |
OTHER |
Too many sessions by fingerprint |
При включённой проверке fingerprint число сессий данного Workflow с этим fingerprint за Fingerprint timeout (seconds) превышает Fingerprint timeout attempts, включая текущую запись. Сессия немедленно становится FAILED. |
OTHER |
Динамический текст или без detail |
Клиентский метод записи ошибки сессии принимает описание. Само добавление причины не меняет статус; при последующем штатном завершении наличие записи приводит к FAILED. |
EXPIRED |
Динамический текст или без detail |
Тот же входной метод допускает категорию EXPIRED; это не гарантирует, что сработала задача истечения срока. |
Liveness¶
Публичный блок: liveness_result. Варианты Head Position, Short, Distance, Distance v2, Pro Max и Core используют общий блок. Его схема не возвращает статус обработки Liveness.
Расчёт живости¶
Ниже автоматические причины; они приводят к result: false и также устанавливают статус обработки FAILED.
type |
Точный detail |
Условие и смысл |
|---|---|---|
CALC_RESULT |
Mask Attack |
При Enable mandatory mask attack check: Проверка масочной атаки отрицательна. |
CALC_RESULT |
Closed eyes |
При Enable open eyes check: закрытые глаза у детекции |
CALC_RESULT |
Low overall prediction |
Результат моделей не проходит threshold. |
CALC_RESULT |
No face detected |
Не прошедшая модельная проверка при отсутствии результатов моделей, оценки и области лица у детекции. |
CALC_RESULT |
No VR scoring data |
Включён VR cam scoring check, но запись необходимых данных VR-scoring отсутствует. Это отсутствие данных для проверки, а не доказанная виртуальная камера. |
VR_CAM |
VR Camera Attack |
При VR cam scoring check отрицательный результат проверки на виртуальную камеру. |
CALC_RESULT |
Several faces |
Включён Reject liveness when several faces are detected in the frame, в лучшей детекции известно число лиц и оно больше одного. |
CALC_RESULT |
Age is too low |
Целая часть оценённого возраста ниже Age threshold, и условие перевода на ручное рассмотрение по Age manual threshold не выполнено. При отсутствии оценки возраста эта причина не создаётся. |
CALC_RESULT |
Face comparison timeout |
При Enable face swap check during the process у неинициальной детекции нет результата сравнения к моменту итоговой проверки. Категория именно CALC_RESULT, не TIMEOUT. |
CALC_RESULT |
Face comparison failed |
При той же настройке у неинициальной детекции отрицательный результат проверки. |
Эти причины дают result: false и статус обработки FAILED. Liveness может выбрать IN_REVIEW без причины вместо отказа по пограничным оценкам живости или возраста; в публичном результате result тогда отсутствует. Состояние проверки оценивается после ожидания предусмотренных обработчиком фоновых расчётов, а не по одному промежуточному кадру.
Целостность изображения и ошибки клиента¶
type |
Точный detail |
Условие |
|---|---|---|
OTHER |
Incorrect image hash |
В production проверка привязки изображения к сессии не прошла. Записывается причина и result: false; Liveness результат дополнительно получают FAILED. |
Face2Face¶
Публичный блок: face2face_result. Статуса обработки в нём нет.
type |
Точный detail |
Условие и последствия |
|---|---|---|
CALC_RESULT |
Different faces |
Сравнение отрицательно. При наличии конфигурации используется условие prediction >= threshold; при отсутствии — решение сервиса. result: false. |
CALC_RESULT |
Several faces |
Fail if more than one face in frame включён и хотя бы на одном изображении больше одного лица. Имеет приоритет перед Different faces, принудительно ставит result: false, даже если сходство достаточно. |
SERVICE_ERROR |
No face found |
Сервис сравнения сообщает, что лицо не найдено. |
SERVICE_ERROR |
Can`t connect to face2face service |
Ошибка вызова сервиса сравнения. |
OTHER |
Incorrect image hash |
Не прошла проверка хеша переданного изображения. Причина сохраняется до сравнения, result может отсутствовать. |
Document Recognition¶
Публичный блок API и flow.end: document_recognition_v2_result. В отдельном technology.end DR2 обработчик использует имя data.document_recognition_result; не путайте его со структурой результата DR v1.
Ошибки получения результата:
type |
Точный detail |
Условие; result и статус |
|---|---|---|
SERVICE_ERROR |
Document recognition service not available now |
Перехваченная ошибка API при запросе / обработке распознавания; false, FAILED. |
CALC_RESULT |
Document not found |
Ответ распознавателя с success: false и error.message точно Document not found; false, NOT_FOUND. |
SERVICE_ERROR |
Document recognition process was failed |
Другой обработанный ответ success: false; false, FAILED. |
Ограничения Workflow после успешного распознавания проверяются последовательно. Первая сработавшая проверка создаёт причину и ставит result: false; статус распознавания остаётся SUCCESS. Это успешно распознанный, но отклонённый по правилам документ.
type |
Точный detail / шаблон |
Условие |
|---|---|---|
CALC_RESULT |
Disallowed document country |
Непустой список разрешенных к проверке стран не пересекается со странами распознанных типов документа. |
CALC_RESULT |
Disallowed document type |
Непустой список разрешенных к проверке типов документов не пересекается с распознанными типами документов. |
CALC_RESULT |
Age is lower than minimal |
Задан Minimum holder age, optical_checks.text строго false, и выбранный возраст ниже минимума. Сначала берётся возраст визуальной зоны, а при его отсутствии — MRZ. Без условия text: false именно эта ветка не срабатывает. |
CALC_RESULT |
Document is expired |
Включён Reject expired documents, optical_checks.expiry строго false. |
CALC_RESULT |
MRZ is invalid. {missed_values} is missing. |
Включён Reject documents with invalid MRZ, имеется непустой MRZ JSON и отсутствуют требуемые значения. {missed_values} — строковое представление списка имён с одинарными кавычками, например ['date_of_birth']. Проверяются по порядку mrz_type, nationality_code, first_name, last_name, document_number, sex, age, date_of_birth; отсутствующим считается значение null или отсутствующий ключ. |
CALC_RESULT |
Authenticity checks are not passed |
При Fail on authenticity check хотя бы одна из проверок подлинности страницы строго false: экран, чёрно-белая копия, графические шаблоны, штрихкод, сопоставление портретов, вклейка фото. Отсутствие данных не эквивалентно false. |
E-Document¶
Публичные блоки: edocument_result и edocument_child_result. В сохраняющих ошибку ветках ниже устанавливаются result: false и status: "CANCELED". У сессии действует общий механизм завершения.
Доступ и соответствие документа¶
| Блок / операция | type |
Точный detail |
Условие |
|---|---|---|---|
| Обычный E-Document, проверка БМГ | CLIENT |
Subject not found in MCDB |
Проверка Базы мобильных граждан не нашла пользователя. Дополнительно сохраняется is_subject_in_mcdb: false. |
| Обычный / детский, запрос доступа | CLIENT |
Profile is not found |
Внешний ответ о ненайденном профиле, преобразованный в HTTP 404 обработчиком доступа. |
| Обычный, получение списка детей | SERVICE_ERROR |
Profile is not found |
Та же ошибка профиля, но обработчик списка детей классифицирует все перехваченные API-ошибки как сервисные. |
| Обычный / детский, запрос доступа | CLIENT |
Invalid IIN |
Внешний ответ о недопустимом ИИН преобразован в клиентскую ошибку. |
| Обычный, получение списка детей | SERVICE_ERROR |
Invalid IIN |
Та же ошибка входных данных в обработчике списка детей. |
| Обычный / детский, запрос доступа | CLIENT |
Document does not exist |
Поставщик сообщил об отсутствии документа. Для обычного удостоверения при Alternative VNZH (Residence Permit) check сначала возможен запрос ВНЖ; успешный запасной путь не создаёт эту причину. |
| Обычный / детский, подтверждение и получение | CLIENT |
Document type is not the same as requested type |
Тип полученного документа не соответствует допустимому для запроса. Для обычного E-Document учитывается разрешённая замена удостоверения на ВНЖ. |
| Обычный E-Document | CLIENT |
IIN from document does not match requested IIN |
Запрошенный и полученный ИИН известны и не совпадают при проверке ответа. |
| Детский E-Document, получение по коду | CLIENT |
Document owner is not the same as requested owner |
Непустое запрошенное ФИО, собранное в верхнем регистре, не совпадает с ФИО владельца полученного документа. |
| Обычный / детский, подтверждение доступа | CLIENT |
Access to document is not found or is not active |
Доступ не найден / неактивен. |
Сервисные ошибки¶
Каждое сочетание ниже имеет type: "SERVICE_ERROR"; применяется к обычному или детскому блоку, если соответствующий вызов находится в сохраняющей ошибку операции.
Точный detail |
Условие |
|---|---|
Can`t connect to E-Document service |
Ошибка соединения с сервисом. |
Could not send request to E-Document service |
Ошибка отправки / ожидания запроса, преобразованная обработчиком в соответствующее исключение. |
Government service error |
Не удалось разобрать ответ государственного сервиса как ожидаемый JSON; категория остаётся сервисной, в том числе для исключения с HTTP 424. |
E-Document service is not available now |
Поставщик вернул ответ, отнесённый к недоступности, вместо обработанной ошибки профиля, документа или доступа. |
Address¶
Публичный блок: address_result.
Ответ подтверждения доступа¶
type |
Точный detail |
Условие и последствия |
|---|---|---|
CLIENT |
INVALID |
Отрицательный статус подтверждения доступа; сохраняется тот же статус технологии. |
CLIENT |
TIMEOUT |
Статус тайм-аута подтверждения доступа; категория не TIMEOUT. |
CLIENT |
NOT_FOUND |
КДП вернул статус отсутствия. |
CLIENT |
FAILED |
КДП вернул FAILED. |
Запрос токена и адреса¶
| Операция | type |
Точный detail |
Условие |
|---|---|---|---|
| Токен КДП | SERVICE_ERROR |
Can`t connect to kdp service |
Ошибка соединения при запросе токена. |
| Токен КДП | SERVICE_ERROR |
Invalid IIN |
КДП вернул ответ о невалидном ИИН. |
| Токен КДП | SERVICE_ERROR |
Could not send request to address service |
Другой неуспешный HTTP-ответ от КДП |
| Получение адреса | CLIENT |
Token Expired |
Срок токена уже прошёл. |
| Получение адреса | SERVICE_ERROR |
Could not send request to address service |
Неуспешный запрос адреса, преобразованный в сервисное исключение. |
GBDFL¶
Публичный блок: gbdfl_result. Начальная запись может иметь result: false без ошибки. Общие ошибки запроса токена совпадают с адресом:
| Операция | type |
Точный detail |
Условие |
|---|---|---|---|
| Токен | SERVICE_ERROR |
Can`t connect to kdp service |
Ошибка соединения с КДП. |
| Токен | SERVICE_ERROR |
Invalid IIN |
КДП вернул ответ о невалидном ИИН. |
| Токен | SERVICE_ERROR |
Could not send request to address service |
Другой неуспешный HTTP-ответ КДП. |
| Данные | SERVICE_ERROR |
Can`t connect to GBDFL service |
Ошибка соединения с сервисом ГБД ФЛ. |
| Данные | SERVICE_ERROR |
A server error occurred. |
Неуспешный HTTP-ответ получения данных создаёт общее исключение; сохраняется его стандартное описание, а не тело ответа поставщика. |
type |
Точный detail |
Условие и последствия |
|---|---|---|
CLIENT |
INVALID |
Статус КДП INVALID, сохраняется причина и отрицательный результат. |
CLIENT |
NOT_FOUND |
Статус КДП NOT_FOUND; причина не уточняет, что именно не найдено. |
CLIENT |
FAILED |
Статус КДП FAILED. |
CLIENT |
TIMEOUT |
Статус КДП TIMEOUT сразу сохраняется как причина. |
SERVICE_ERROR |
GBDFL token request timed out multiple times |
Повторный TIMEOUT, пока сохранён маркер предыдущего тайм-аута (300 секунд); result: false, статус FAILED. Первый TIMEOUT позволяет повторный опрос и не создаёт эту причину. |
TIMEOUT |
Session polling timeout exceeded |
Имеется запись результата и прошло больше 300 секунд от сохранённого начала опроса; result: false, статус FAILED. |
Для отклонённых статусов сохраняется статус ответа КДП; сессия обычно завершается общим механизмом.
ГБД ЮЛ¶
Публичный блок: gbdul_result.
type |
Точный detail |
Условие и последствия |
|---|---|---|
SERVICE_ERROR |
Cannot connect to GBDUL service |
Ошибка запроса или ответ поставщика, отнесённый к недоступности. Обычно result: false, FAILED. При Complete flow successfully on service error: true — result: true, ERROR_ACCEPTED, причина сохраняется. |
SERVICE_ERROR |
Organization not found in GBDUL |
Обработанный ответ об отсутствии организации. result: false, FAILED; разрешение недоступности не принимает отсутствие организации. Категория именно сервисная, хотя исходное исключение имеет HTTP 404. |
Возможность пройти технологию с ERROR_ACCEPTED не гарантирует положительный flow_session_result.
PPS¶
Публичный блок: pps_result.
| Операция | type |
Точный detail |
Условие и последствия |
|---|---|---|---|
| Опрос | TIMEOUT |
Session polling timeout exceeded |
Есть результат и прошло больше 300 секунд от сохранённого начала опроса; false, FAILED. |
| Токен | SERVICE_ERROR |
PPS token request timed out multiple times |
Повторный статус TIMEOUT в пределах срока маркера 300 секунд; false, FAILED. Первый такой ответ оставляет возможность опроса без новой причины. |
| Токен | CLIENT |
INVALID |
Отрицательный статус КДП; result: false. |
| Токен | CLIENT |
NOT_FOUND |
Статус КДП о ненайденных данных; result: false. |
| Токен | CLIENT |
FAILED |
Статус КДП FAILED; result: false. |
| Токен | SERVICE_ERROR |
Can`t connect to kdp service |
Ошибка соединения с КДП; false, FAILED. |
| Токен | SERVICE_ERROR |
Invalid IIN |
КДП вернул ответ о невалидном ИИН; false, FAILED. |
| Данные | CLIENT |
Can`t connect to PPS service |
Ошибка запроса или HTTP 5xx; false, FAILED. |
| Данные | CLIENT |
PPS data is rejected |
Не доступно получение данных от потавщика; его тело не сохраняется в detail, используется стандартное сообщение; false, FAILED. |
| Данные | CLIENT |
IIN data not found |
Субъект с данным ИИН не найден; false, FAILED. |
| Данные | CLIENT |
PPS token request timed out |
Превышено время ожидания на получение токена; false, FAILED. Отличается и текстом, и категорией от повторного тайм-аута токена. |
| Данные | SERVICE_ERROR |
A server error occurred. |
Прочий неуспешный HTTP-ответ; стандартное описание общего исключения вместо сформированного в сервисе текста PPS error: ...; false, FAILED. |
При INVALID, NOT_FOUND, FAILED сохраняется соответствующий статус ответа КДП.
РПН¶
Публичный блок: rpn_result. Причины ниже дают result: false; ошибки вызовов — FAILED, отклонённый статус КДП сохраняется как статус технологии.
| Операция | type |
Точный detail |
Условие |
|---|---|---|---|
| Токен | CLIENT |
INVALID |
КДП вернул INVALID. |
| Токен | CLIENT |
TIMEOUT |
КДП вернул TIMEOUT. |
| Токен | CLIENT |
NOT_FOUND |
КДП вернул NOT_FOUND. |
| Токен | CLIENT |
FAILED |
КДП вернул FAILED. |
| Токен | SERVICE_ERROR |
Can`t connect to kdp service |
Ошибка соединения с КДП. |
| Токен | SERVICE_ERROR |
Invalid IIN |
КДП вернул ответ о невалидном ИИН |
| Данные | SERVICE_ERROR |
Can`t connect to RPN service |
Ошибка запроса данных регистра. |
| Данные | SERVICE_ERROR |
RPN service error |
Неуспешный HTTP-ответ или отсутствие необходимых данных в ответе регистра. |
NPCK¶
Публичный блок: npck_result.
type |
Точный detail |
Условие |
|---|---|---|
CALC_RESULT |
Different faces |
Полученное решение сравнения отрицательно; сохраняется и полученная оценка prediction. |
CLIENT |
Invalid data passed |
Сервисом получены некорректные данные. |
CLIENT |
Credentials not provided |
Ошибка учётных данных. |
SERVICE_ERROR |
NPCK service unavailable |
Другая обработанная HTTP-ошибка. |
Kz-Info¶
Публичный блок: kz_info_result, без булева result.
type |
Точный detail |
Условие и смысл |
|---|---|---|
CALC_RESULT |
Existence in the debtor register |
Session failure on debtor presence включён и exec_proc_info непустой. Наличие исполнительных производств отклоняется правилами Workflow, хотя данные могли успешно прийти (RECEIVED). |
SERVICE_ERROR |
Exec proc info request failed |
Session failure on debtor registry error включён и exec_proc_info_status: "FAILED". |
ЕРД¶
Публичный блок: erd_result, без булева result.
type |
Точный detail |
Условие и смысл |
|---|---|---|
CALC_RESULT |
Existence in the debtor register |
Session failure on debtor presence включён и result_json непустой. Найдены записи реестра, запрещённые настройкой Workflow. |
SERVICE_ERROR |
Exec proc info request failed |
Session failure on debtor registry error включён и статус запроса FAILED. Несмотря на текст, причина относится к ЕРД. |
AML¶
Публичный блок: aml_result, без отдельного статуса.
type |
Точный detail |
Условие и последствия |
|---|---|---|
CLIENT |
personal_number and full_name not found |
Не удалось получить ни персональный номер, ни ФИО для запроса, и включён Fail on error; result: false. |
REQUEST_ERROR |
AML request failed |
Перехваченная HTTP-ошибка AML-запроса при Fail on error; result: false. |
При выключенном Fail on error эти обработанные ошибки дают result: true без новой причины. При найденном совпадении и Fail when found in sanctions lists сохраняется result: false без failure_reason. Если отказ по совпадениям выключен, результат может быть true при имеющихся совпадениях. Не все неожиданные исключения поставщика охвачены обработчиком: текст любого сбоя нельзя считать новой публичной причиной.
MRZ¶
Публичный блок: mrz_result.
type |
Точный detail / источник |
Условие и последствия |
|---|---|---|
REQUEST_ERROR |
MRZ request failed |
В Flow перехвачена ошибка недоступности MRZ-сервиса: ошибка запроса, неожиданный HTTP-статус либо соответствующий вариант ответа. result: false, REQUEST_FAILED. |
CLIENT |
Error while parsing MRZ или динамический текст |
Ошибка распознавания / проверки MRZ. result: false, PARSE_FAILED. |
MxDocument¶
Публичный блок: mxdocument_result, без статуса обработки. Все перечисленные автоматические причины имеют SERVICE_ERROR и дают result: false.
Точный detail |
Условие |
|---|---|
Cannot connect to MX-Document service |
Ошибка соединения. |
Cannot decode MX-Document response |
Не удалось декодировать JSON ответа. |
MX-Document extraction failed |
Ошибка получения данных от поставщика |
MX-Document service not available |
Другой обработанный неуспешный HTTP-ответ. |
Tunduk¶
Публичный блок: tunduk_result, без статуса обработки. Ошибка запроса паспорта сохраняет result: false.
type |
Точный detail / источник |
Условие |
|---|---|---|
CLIENT |
Passport not found in Tunduk system |
Документ не найден в системе Tunduk |
CLIENT |
Данные ответа поставщика | Ошибки валидации входных данных |
SERVICE_ERROR |
Can`t connect to Tunduk service |
Ошибка соединения. |
SERVICE_ERROR |
Can`t connect to service via Timeout |
Тайм-аут запроса, преобразованный в HTTP 408; категория именно сервисная. |
SERVICE_ERROR |
Tunduk service is not available now |
Другой неуспешный HTTP-ответ. |
Проверка IP¶
Публичный массив: ip_check_results[]. Проверяются все переданные адреса; причины отдельного элемента не заменяют проверку остальных элементов. Булев result важнее попытки вывести итог из одного verdict.
Получение данных¶
type |
Точный detail |
Условие и последствия |
|---|---|---|
REQUEST_ERROR |
No IP addresses were found |
Список IP пуст. Создаётся отрицательный результат с verdict: "suspicious" независимо от Fail on error. |
SERVICE_ERROR |
No providers available |
Не создан ни один доступный поставщик. Отрицательные результаты для адресов, suspicious, независимо от Fail on error. |
REQUEST_ERROR |
All provider requests failed |
Для всех либо отдельного IP нет разобранных данных и включён Fail on error. result: false, suspicious. |
Проверка полученных признаков¶
Проверки выполняются в порядке таблицы; выбирается первая сработавшая. Причина даёт result: false, обычно verdict: "blocked" при наличии данных.
type |
Точный detail |
Условие |
|---|---|---|
CLIENT |
VPN detected |
Reject VPN and proxy IP addresses и признак VPN. |
CLIENT |
Proxy detected |
Reject VPN and proxy IP addresses и признак proxy, если не сработала проверка VPN. |
CLIENT |
Datacenter detected |
Reject data center IP addresses и признак hosting. |
CLIENT |
High risk score |
Целочисленный risk больше выставленного порога. |
CLIENT |
Country mismatch: {country_code} |
Block on IP country mismatch, активна обычная технология E-Document, страна IP не KZ. При отсутствии кода в тексте может быть None. Это сравнение с ожидаемым KZ, а не с прочитанным гражданством документа. |
Если эта функция будет вызвана, она изменит только ранее положительные IP-результаты: ставит false и причину, но не меняет verdict. Поэтому предусмотрена запись verdict: "ok" с ошибкой страны, но активный путь её формирования этой функцией не подтверждён.
Анкеты¶
Публичный массив: questionnaire_results[].
type |
Точный detail |
Условие и последствия |
|---|---|---|
CLIENT |
Required questions were not answered |
При отправке анкеты отсутствуют сохранённые ответы на обязательные вопросы. result: false, статус обработки FAILED. |
Одноразовый код (OTP)¶
Публичный массив: otp_results[].
type |
Точный detail / шаблон |
Условие и последствия |
|---|---|---|
CALC_RESULT |
phone_number_missing |
Телефон не передан в запросе и не найден в metadata.otp.phone_number. Создаётся запись с пустой строкой телефона, result: false, status: "failed". |
SERVICE_ERROR |
Telegram Gateway error: {error} |
При проверке кода шлюз вернул ok: false; {error} — значение error ответа либо запасное unknown error. result: false, failed. |
CALC_RESULT |
expired |
При проверке провайдер сообщил об истечении срока; result: false, expired. |
CALC_RESULT |
revoked |
Провайдер сообщил об отзыве; в локальном результате также result: false, expired, а не cancelled. |
CALC_RESULT |
Динамический статус провайдера | Проверка отрицательна, статус не expired/revoked, после увеличения числа попыток достигнут Maximum attempts. result: false, wrong_code; detail сохраняет статус источника. |
DS Identifier / DS NPCK / DS Signer¶
Публичные блоки: ds_identifier_result и ds_signer_result. DSI и DSN используют общий блок идентификации. Статусы обработки ЭП этими блоками не возвращаются.
Идентификация DSI / DSN¶
В сохраняющих ветках result: false, статус обработки FAILED.
| Вариант | type |
Точный detail |
Условие |
|---|---|---|---|
| DSI | CLIENT |
Digital Signature invalid input |
Сервис ЭП отклонил входные данные в операции, использующей такое преобразование ответа. |
| DSI / DSN | CLIENT |
Digital Signature Organization does not exist |
Ответ сервиса об отсутствии организации при получении / создании клиента. |
| DSI / DSN | CLIENT |
Digital Signature Client does not exist |
Ответ об отсутствии клиента при работе с клиентом организации. |
| DSI / DSN | CLIENT |
Digital Signature Organization Client does not exist |
Ответ об отсутствии связи клиента с организацией. |
| DSI, загрузка документа | CLIENT |
Digital Signature Identity card does not exist |
Отсутствие документа при загрузке данных в ЭП. При первоначальном получении документа эта ошибка перехватывается отдельно и запускает запрос доступа, без причины отказа. |
| DSI | CLIENT |
Document type is not the same as requested type |
При подтверждении доступа получен документ, который не является удостоверением личности или ВНЖ. |
| DSI | CLIENT |
IIN from document does not match requested IIN |
При подтверждении известные ИИН запроса и полученного документа различаются. |
| DSI / DSN | SERVICE_ERROR |
Cannot connect to Digital Signature service |
Ошибка соединения в перехваченной операции сервиса ЭП. |
| DSI / DSN | SERVICE_ERROR |
Digital Signature service is not available now |
Другой обработанный неуспешный ответ сервиса ЭП. |
| DSN, загрузка ГБД ФЛ | SERVICE_ERROR |
Could not upload Gbdfl data |
Ошибка HTTP при загрузке данных ГБД ФЛ, преобразованная в это исключение. |
Подписание DSS¶
Сохранённые ошибки инициализации сертификата, перевыпуска и подписания дают result: false, статус обработки FAILED.
| Операция | type |
Точный detail / источник |
Условие |
|---|---|---|---|
| Инициализация сертификата / подписание | SERVICE_ERROR |
Can`t connect to Digital Signature Signer service |
Ошибка соединения с сервисом подписания. |
| Перевыпуск сертификата | SERVICE_ERROR |
Cannot connect to Digital Signature service |
Ошибка соединения при перевыпуске; используется сообщение сервиса идентификации. |
| Сертификат / подписание | SERVICE_ERROR |
Digital Signature Signer service is not available now |
Серверная ошибка поставщика. |
| Сертификат / подписание | CLIENT |
Динамический message ответа; запасное Digital Signature Signer client organization not found |
HTTP 404 поставщика. |
| Сертификат / подписание | CLIENT |
Динамический message ответа; запасное Digital Signature Signer MS Cloud service has troubles with handling this request |
Другой HTTP 4xx поставщика. |
| Загрузка документов | SERVICE_ERROR |
Can`t connect to Digital Signature Signer service |
Ошибка соединения при загрузке. |
| Загрузка документов | SERVICE_ERROR |
Digital Signature Signer service is not available now |
Серверная ошибка при загрузке. |
| Загрузка документов | SERVICE_ERROR |
Динамический message ответа; те же запасные сообщения об организации / MS Cloud |
HTTP 4xx при загрузке. |
При перевыпуске сертификата известные сообщения поставщика переводятся перед сохранением. Для ответов 4xx это CLIENT:
Точный публичный detail |
Условие: исходное сообщение поставщика |
|---|---|
Password already set |
Пароль для пользователя уже установлен |
Digital Signature invalid OTP code |
Неверный код подтверждения |
Digital Signature too many invalid OTP codes |
Неверный код подтверждения. Количество попыток ввода кода подтверждения исчерпано. |
Digital Signature OTP code not found |
Код подтверждения не найден - прошло много времени с момента отправки коды подтверждения. Либо количество попыток исчерпано |
Этот словарь не гарантирует, что поставщик выдаёт каждое сообщение именно на перевыпуске. Он задаёт преобразование, если такое сообщение пришло в этой операции; остальные сообщения сохраняются как получены.
При принятии сертификата применяется тот же перевод, но новая причина отказа не сохраняется. При подписании сообщение, содержащее неверный пароль без учёта регистра, превращается в HTTP-ошибку Digital Signature incorrect certificate password без новой причины и без перевода записи в FAILED; это позволяет исправить пароль и повторить вызов при сохранении остальных условий. Invalid verification code из старой страницы не подтверждён как фиксированная причина текущего кода.