Симуляция результатов (Test Mock)
В песочнице можно симулировать результат процесса без привязки к реальному биометрическому захвату. Добавьте поле expected_result в тело запроса Создать процесс — остальная часть интеграции (рендеринг SDK, биометрический захват, Получение процесса) остаётся точно такой же, как и в реальном потоке.
Мок не пропускает этап биометрического захвата. Пользователю (или вашему тестовому скрипту) по-прежнему нужно пройти обычный поток — меняется то, что после завершения процесс возвращает значения, определённые в expected_result, вместо результата реальной оценки.
Каждый flow принимает только один из двух форматов ниже, в зависимости от того, как он настроен:
| Формат | Когда использовать |
|---|---|
id_cloud_one_result | Потоки, возвращающие единый результат (одобрено, отклонено, высокий риск и т. д.) |
authentication_info | Потоки, возвращающие отдельные сигналы (UnicoId, Trust, Liveness, IdAge, IdFace...) |
Отправка формата, не соответствующего вашему flow, либо отправка обоих форматов одновременно приводит к ошибке — см. Ошибки.
Эндпоинт
| Среда | URL |
|---|---|
| Sandbox | POST https://api.idcloud.uat.unico.app/client/v1/process |
Мок доступен только в песочнице. В production поле expected_result отклоняется.
Используйте это, если ваш flow возвращает единый результат в стиле одобрения.
Параметры тела запроса
| Поле | Тип | Обязателен | Описание |
|---|---|---|---|
expected_result.id_cloud_one_result | string | да | Единый результат для симуляции. Должен быть результатом, который ваш 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 действительно распознаёт.
Используйте это, если ваш flow возвращает отдельные сигналы вместо единого результата.
Каждый сигнал, который ваш flow обычно возвращает, должен присутствовать в authentication_info. Отправка только части из них отклоняется — нельзя симулировать один сигнал и оставить остальные для реальной оценки.
trust_result vs. identity_fraudsters_resulttrust_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_accountsdata_mismatchserial_fraudstersmart_revalidation_resultpasskey_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 не поддерживает симуляцию | Ошибка валидации |
Что дальше
После создания симулированного процесса пройдите биометрический захват обычным образом и используйте Получение процесса для получения симулированного результата.