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

Симуляция результатов (Test Mock)

MarkdownChatGPTClaude

В песочнице можно симулировать результат процесса без привязки к реальному биометрическому захвату. Добавьте поле expected_result в тело запроса Создать процесс — остальная часть интеграции (рендеринг SDK, биометрический захват, Получение процесса) остаётся точно такой же, как и в реальном потоке.

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

Каждый flow принимает только один из двух форматов ниже, в зависимости от того, как он настроен:

ФорматКогда использовать
id_cloud_one_resultПотоки, возвращающие единый результат (одобрено, отклонено, высокий риск и т. д.)
authentication_infoПотоки, возвращающие отдельные сигналы (UnicoId, Trust, Liveness, IdAge, IdFace...)

Отправка формата, не соответствующего вашему flow, либо отправка обоих форматов одновременно приводит к ошибке — см. Ошибки.

Эндпоинт​

СредаURL
SandboxPOST https://api.idcloud.uat.unico.app/client/v1/process

Мок доступен только в песочнице. В production поле expected_result отклоняется.

Единый результат — id_cloud_one_result

Используйте это, если ваш flow возвращает единый результат в стиле одобрения.

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

ПолеТипОбязателенОписание
expected_result.​id_cloud_one_resultstringдаЕдиный результат для симуляции. Должен быть результатом, который ваш flow действительно формирует, — проверьте конфигурацию своего потока на предмет распознаваемых им результатов.

Пример​

curl -X POST https://api.idcloud.uat.unico.app/client/v1/process \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"expected_result": {
"id_cloud_one_result": "PROCESS_RESULT_APPROVED"
}
// ... the remaining parameters are the same ones you use on a real Create Process call
}'

Ответ (200 OK)​

{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"flow": "your-sandbox-flow",
"simulated": true,
"capacities": ["PROCESS_CAPACITY_IDCHECK"],
"person": { "duiType": "DUI_TYPE_BR_CPF", "duiValue": "12345678909" }
}
}

simulated: true помечает этот процесс как имеющий симулированный результат, а не реальную оценку.

Возможные значения id_cloud_one_result совпадают со значениями результата процесса, задокументированными в разделе Интерпретация результатов — отправляйте только тот результат, который ваш flow действительно распознаёт.

BrazilОтдельные сигналы — authentication_info

Используйте это, если ваш flow возвращает отдельные сигналы вместо единого результата.

Каждый сигнал, который ваш flow обычно возвращает, должен присутствовать в authentication_info. Отправка только части из них отклоняется — нельзя симулировать один сигнал и оставить остальные для реальной оценки.

trust_result vs. identity_fraudsters_result

trust_result и identity_fraudsters_result представляют один и тот же сигнал (индикация мошенничества с личностью): trust_result покрывает отрицательную сторону, identity_fraudsters_result — положительную. Используйте тот, который соответствует результату, который вы хотите симулировать.

Для возможных значений каждого поля см. Результаты возможностей в authenticationInfo.

Фрикционные потоки не поддерживаются в этом формате — см. Неподдерживаемые сигналы.

Пример​

curl -X POST https://api.idcloud.uat.unico.app/client/v1/process \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"expected_result": {
"authentication_info": {
"authentication_result": "AUTHENTICATION_RESULT_POSITIVE",
"liveness_result": "LIVENESS_RESULT_LIVE",
"id_age_result": "ID_AGE_RESULT_POSITIVE"
}
}
// ... the remaining parameters are the same ones you use on a real Create Process call
}'

Ответ (200 OK)​

{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"flow": "your-sandbox-flow",
"simulated": true,
"capacities": ["PROCESS_CAPACITY_IDUNICO", "PROCESS_CAPACITY_IDAGE"],
"authenticationInfo": {
"authenticationResult": "AUTHENTICATION_RESULT_POSITIVE",
"livenessResult": "LIVENESS_RESULT_LIVE",
"idAgeResult": "ID_AGE_RESULT_POSITIVE"
},
"person": { "duiType": "DUI_TYPE_BR_CPF", "duiValue": "12345678909" }
}
}

Неподдерживаемые сигналы​

Сигналы ниже не поддерживаются моком ни в одном из форматов:

  • multi_accounts
  • data_mismatch
  • serial_fraudster
  • smart_revalidation_result
  • passkey_result (устарело)

Фрикционные потоки (аутентификация без биометрического захвата) поддерживаются только в формате id_cloud_one_result — они не работают с authentication_info.

Примечания к ответу​

Скор возвращается только тогда, когда результат проверки личности неоднозначен. Поле score_engine_result содержит значение только тогда, когда authentication_result равен AUTHENTICATION_RESULT_INCONCLUSIVE. Если вы симулируете authentication_result как POSITIVE или NEGATIVE вместе с ненулевым score_engine_result, итоговый ответ возвращает score_enabled: SCORE_ENABLED_FALSE и score: 0, независимо от отправленного значения.

Это стандартное поведение API — то же правило действует и для реальных процессов, оно не специфично для мока. Если сценарий, который вы хотите протестировать, зависит от появления скора в ответе, используйте authentication_result: AUTHENTICATION_RESULT_INCONCLUSIVE.

Ошибки​

СитуацияОшибка
expected_result вне песочницыPERMISSION_DENIED
id_cloud_one_result и authentication_info отправлены вместеINVALID_ARGUMENT
Пустой authentication_info: {}INVALID_ARGUMENT
В authentication_info отсутствует сигнал, который возвращает потокОшибка валидации — включите каждый сигнал
Значение id_cloud_one_result, которое поток не распознаётОшибка валидации
flow не поддерживает симуляциюОшибка валидации

Что дальше​

После создания симулированного процесса пройдите биометрический захват обычным образом и используйте Получение процесса для получения симулированного результата.