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

Создание процесса

Это точка входа для каждой интеграции Web & SDK. Ваш бэкенд вызывает его для создания процесса; ваш фронтенд использует возвращённые токены для отображения iFrame, перенаправления пользователя или инициализации нативного SDK.

Полный поток интеграции см. в Обзор Web & SDK.

Эндпоинт

ОкружениеURL
ProductionPOST https://api.idcloud.unico.app/client/v1/process
SandboxPOST https://api.idcloud.uat.unico.app/client/v1/process

Запрос

Заголовки
ЗаголовокЗначение
AuthorizationBearer <access_token> (см. Аутентификация)
Content-Typeapplication/json
Параметры тела запроса
ПолеТипОбязательныйОписание
callbackUristringдаURL, на который пользователь перенаправляется после завершения пути. Используйте / для потоков нативного SDK, где обратный вызов обрабатывается внутри приложения.
flowstringдаИдентификатор потока -- определяет, какие возможности выполняются. Примеры: idunicodocs, idunicosign, idchecktrust, idtoken, idsmart. См. Доступные потоки.
purposestringдаБизнес-назначение. Допустимые значения: creditprocess, biometryonboarding, carpurchase, ageverification.
person.duiTypeenumдаТип документа. Допустимые значения: DUI_TYPE_BR_CPF, DUI_TYPE_MX_CURP, DUI_TYPE_US_SSN, DUI_TYPE_BR_PASSPORT, DUI_TYPE_AR_PASSPORT, DUI_TYPE_AR_DNI, DUI_TYPE_NG_NIN, DUI_TYPE_CL_RUN, DUI_TYPE_EC_NI, DUI_TYPE_US_PASSPORT, DUI_TYPE_GT_CUI, DUI_TYPE_UY_CI, DUI_TYPE_ZZ_EMAIL, DUI_TYPE_ID_NIK, DUI_TYPE_ZZ_PHONE_NUMBER, DUI_TYPE_US_DRIVER_LICENSE, DUI_TYPE_NG_BVN, DUI_TYPE_MX_RFC_PERSONA_FISICA, DUI_TYPE_CO_NIT, DUI_TYPE_PE_RUC, DUI_TYPE_CA_SIN, DUI_TYPE_DK_CPR, DUI_TYPE_GB_NINO, DUI_TYPE_PL_PESEL, DUI_TYPE_SE_PNR, DUI_TYPE_AT_STNR, DUI_TYPE_FI_HETU.
person.duiValuestringдаНомер документа, без форматирования.
person.friendlyNamestringнетОтображаемое имя пользователя, показываемое в интерфейсе пути. Максимум 50 символов.
person.phonestringнетНомер телефона в формате DDI + DDD + номер, без разделителей. Обязателен при отправке уведомлений по SMS или WhatsApp.
person.emailstringнетАдрес электронной почты. Обязателен для потоков с электронной подписью.
person.notificationsarrayнетКаналы уведомлений для отправки ссылки на путь. Каждый элемент содержит notificationChannel: NOTIFICATION_CHANNEL_WHATSAPP, NOTIFICATION_CHANNEL_SMS или NOTIFICATION_CHANNEL_EMAIL.
bioTokenIdstring (UUID)условноУстарело. Используйте references вместо этого. ID ссылочного биометрического процесса. Обязателен для потоков Валидации 1:1 (idtoken, idtokentrust, idtokensign) и Умной ревалидации (idsmart).
referencesarrayусловноВходные данные для потоков Валидации 1:1 и Умной ревалидации, заменяющие bioTokenId. Каждый элемент содержит referenceType (REFERENCE_TYPE_IMAGE_BASE64 или REFERENCE_TYPE_PROCESS_ID) и referenceContent (base64-изображение или UUID процесса).
useCasestringусловноВариант использования Умной ревалидации. Обязателен для idsmart. Примеры: USE_CASE_LOGIN, USE_CASE_IDENTITY_REVALIDATION_7_DAYS, USE_CASE_FIN_TRANSACTIONS.
clientReferencestringнетВаш внутренний идентификатор для этого процесса (внешний ключ для перекрёстных ссылок в портале).
companyBranchIdstring (UUID)нетID филиала. Обязателен только если у сервисного аккаунта более одного связанного филиала.
expiresInstringнетОкно действия процесса с момента создания. Формат: "3600s". По умолчанию 7 дней, если не указано.
flow_configobjectнетПереопределения конфигурации для каждого потока.
flow_config.biometry_capture.enabled_back_camerabooleanнетИспользовать заднюю камеру устройства. Несовместимо с потоками захвата документов или электронной подписи.
contextualizationobjectнетКонтекст транзакции, показываемый пользователю во время пути для объяснения захвата.
contextualization.company_namestringнетНазвание компании, отображаемое во время пути. Максимум 20 символов.
contextualization.currencystringнетКод валюты, отображаемый пользователю. Допустимые значения: BRL, MXN, USD.
contextualization.pricenumberнетСумма транзакции, отображаемая пользователю.
contextualization.localeobjectнетЛокализованный текст, отображаемый во время пути. Ключи: ptBr, enUs, esMx.
contextualization.locale.{ptBr|enUs|esMx}.reasonstringнетКраткая причина захвата, отображаемая во время пути. Максимум 50 символов.
contextualization.locale.{ptBr|enUs|esMx}.titlestringнетЗаголовок уведомления для клиента, отображаемый во время пути. Максимум 100 символов. Должен указываться вместе с text. HTML-теги удаляются.
contextualization.locale.{ptBr|enUs|esMx}.textstringнетТекст уведомления для клиента, отображаемый во время пути. Максимум 210 символов. Должен указываться вместе с title. HTML-теги удаляются.

Пример

curl -X POST https://api.idcloud.unico.app/client/v1/process \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"callbackUri": "https://app.client.com/callback",
"flow": "idunicodocs",
"purpose": "biometryonboarding",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909",
"friendlyName": "Luke Skywalker",
"phone": "5511912345678",
"email": "[email protected]"
}
}'

Ответы

200 OK
{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"state": "PROCESS_STATE_CREATED",
"flow": "idunicosign",
"purpose": "biometryonboarding",
"callbackUri": "https://app.client.com/callback",
"clientReference": "your-internal-id-123",
"companyBranchId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"userRedirectUrl": "https://cadastro.unico.app/process/53060f52-f146-4c12-a234-5bb5031f6f5b",
"token": "eyJhbGciOiJSUzI1NiIs...",
"webAppToken": "eyJhbGciOiJSUzI1NiIs...",
"createdAt": "2023-10-09T09:15:25.417105Z",
"expiresAt": "2023-10-09T16:15:25.417105Z",
"capacities": [],
"authenticationInfo": {},
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909",
"friendlyName": "Luke Skywalker",
"phone": "5511912345678",
"email": "[email protected]",
"notifications": []
},
"companyData": {
"branchId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"countryCode": "BR"
}
}
}
ПолеТипОписание
process.idstring (UUID)Идентификатор процесса. Используйте его для получения результата через Получение процесса.
process.stateenumPROCESS_STATE_CREATED -- процесс создан, путь ещё не начат. PROCESS_STATE_FAILED -- создание процесса не удалось.
process.flowstringИдентификатор потока, отправленный при создании.
process.purposestringБизнес-назначение, отправленное при создании.
process.callbackUristringURI обратного вызова, отправленный при создании.
process.clientReferencestringВаш внутренний идентификатор, отправленный при создании. Присутствует только если указан в запросе.
process.companyBranchIdstring (UUID)ID филиала. Присутствует только если указан в запросе.
process.userRedirectUrlstringURL для перенаправления пользователя (интеграции Web Redirect и iFrame). Не изменяйте этот URL.
process.tokenstringJWT для инициализации Web SDK iFrame.
process.webAppTokenstringJWT для инициализации нативных SDK (Android, iOS, Flutter).
process.createdAtstring (date-time)Временная метка создания процесса.
process.expiresAtstring (date-time)Временная метка, после которой процесс истекает и не может быть завершён.
process.capacitiesarrayВозможности, настроенные для данного процесса.
process.authenticationInfoobjectИнформация об аутентификации для процесса (пустая при создании).
process.personobjectЭхо объекта person, отправленного при создании.
process.companyData.branchIdstring (UUID)ID филиала, связанного с процессом.
process.companyData.countryCodestringКод страны, связанный с филиалом (например, BR, MX).
400 Bad Request

Возвращается, когда тело запроса содержит ошибки, обязательные поля отсутствуют или значение flow неизвестно.

401 Unauthorized

Bearer-токен отсутствует, истёк или недействителен. См. Аутентификация.

429 Too Many Requests

Достигнут лимит запросов. Когда ваша система получает ошибку HTTP 429, необходимо реализовать механизмы для предотвращения каскадных сбоев и ухудшения ограничения.

Лучшие практики:

  • Период ожидания (backoff): Немедленно остановите или ограничьте последующие запросы из вашей системы. Не повторяйте неудачные запросы непрерывно в плотном цикле.
  • Очередь и ограничение: Буферизуйте или ставьте в очередь исходящие запросы на вашей стороне для управления потоком трафика перед повторной отправкой.
  • Экспоненциальный backoff с jitter: При повторных попытках увеличивайте время ожидания экспоненциально между попытками (например, 1 с, 2 с, 4 с, 8 с) и добавляйте небольшую случайную задержку ("jitter"), чтобы предотвратить эффект стада, когда все поставленные в очередь запросы повторяются в один и тот же момент.
предупреждение

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

Для получения информации о лимитах по умолчанию, увеличении запросов и дополнительных деталях см. Лимиты запросов.

Коды ошибок

КодСообщениеОписание
3invalid flowКогда указанный поток не существует.
3invalid person: friendly name exceeds 50 characters.Когда отображаемое имя превышает 50 символов.
3invalid purposeКогда указанное назначение недействительно.
3invalid callbackUri: unable to parse callbackUri: parse "": empty url, invalid callbackUri: url:Когда указанный callbackUri недействителен.
3invalid person: email required for notification channel NOTIFICATION_CHANNEL_EMAIL, invalid email address for notification channel NOTIFICATION_CHANNEL_EMAILКогда указанный email недействителен и настроено уведомление по email.
3invalid person: phone number required for notification channel NOTIFICATION_CHANNEL_WHATSAPP, phone number does not contain 13 chars for notification channel NOTIFICATION_CHANNEL_WHATSAPPКогда указанный номер телефона недействителен и настроено уведомление по SMS или WhatsApp.
3idnsv2/GetPublicID request error: rpc error: code = InvalidArgument desc = invalid dui valueКогда указанный идентификатор (duiValue) недействителен.
3invalid expiresIn argumentКогда значение expiresIn недействительно.
3invalid company_name argument in process contextualization, max length is 20Когда значение contextualization.company_name превышает 20 символов.
3title and text must be provided together in process contextsКогда указано только одно из полей title или text в локали.
3invalid title argument in process contexts, max length is 100Когда значение title в локали превышает 100 символов.
3invalid text argument in process contexts, max length is 210Когда значение text в локали превышает 210 символов.
3invalid reason argument in process contexts, max length is 50Когда значение reason в локали превышает 50 символов.
9XX ID Apikeys are not setКогда API-ключ не настроен должным образом.

Что дальше