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

Функционал OTP

Отправка кода

Handshake

POST /otp/handshake

Request:

FieldRequiredTypeDescription
typestringТип OTP указанные в challenge_type
mobilePhoneЕсли не указан emailstringНомер телефона
emailЕсли не указан mobilePhonestringЭл. Почта
entitiesarrayМассив связанных сущностей. Например: client: 123, lead: 5
entities.*.typestringТип сущности: client, lead, loanApp итд
entities.*.idstringИдентификатор сущности

Response:

{
"status": "ok",
"timestamp": 1657524075000,
"data": {
"type": "", // Название типа OTP
"channel": "sms", // Какой канал будет использоваться для отправки кода
"availableIn": 120 // Время жизни процесса OTP
}
}

Инициализация

POST otp/init

Request:

FieldRequiredTypeDescription
typestringТип OTP указанные в challenge_type
mobilePhoneЕсли не указан emailstringНомер телефона
emailЕсли не указан mobilePhonestringЭл. Почта
entitiesarrayМассив связанных сущностей. Например: client: 123, lead: 5
entities.*.typestringТип сущности: client, lead, loanApp итд
entities.*.idstringИдентификатор сущности

Response:

{
"status": "ok",
"timestamp": 1657524169000,
"data": {
"uuid": "", // Идентификатор процесса OTP
"channel": "sms" // Канал отправки кода
}
}

Подтверждение кода

API

PUT otp/{uuid}/attempt

  • uuid → идентификатор процесса OTP, полученный при инициализации

Request:

FieldRequiredTypeDescription
codestringКод для проверки

Response:

{
"status": "ok",
"timestamp": 1657524358000,
"data": {
"accepted": true
}
}

Поиск

GET|POST otp/{type}, где type - Тип OTP

Request:

FieldRequiredTypeDescription
typestringТип OTP указанные в challenge_type
mobilePhonestringНомер телефона
emailstringЭл. Почта
entitiesarrayМассив связанных сущностей. Например: client: 123, lead: 5
entities.*.typestringТип сущности: client, lead, loanApp итд
entities.*.idstringИдентификатор сущности

Response:

{
"status": "ok",
"timestamp": 1686816422000,
"data": [
{
"id": 50,
"uuid": "98df8e4e-7240-4291-9322-282a8d97542a",
"type": "email-verification",
"status": "accepted",
"phone": null,
"email": "email@example.com",
"ip": null,
"entities": [
{
"type": "client",
"id": "338"
},
{
"type": "process",
"id": "13513451345-sdnfsfgnsfgn-13135"
}
],
"attempts": 0,
"createdAt": "2023-04-07T08:22:06+00:00",
"updatedAt": "2023-04-07T08:22:06+00:00",
"currentRoute": {
"status": "sent",
"channel": "email",
"templateId": "34",
"attempts": 0
}
}
]
}

Настройки типов OTP

Для тенанта можно настроить несколько типов OTP

Challenge Types

Возможные параметры:

  • Название
  • Тип кода:
    • numeric - только цифры
    • alphanumeric - цифры и заглавные латинские буквы
    • alphabetic - заглавные латинские буквы
  • Длина кода
  • Время жизни процесса OTP
  • Максимальное кол-во попыток ввода кода, вне зависимости способа доставки

CRUD

Endpoint api/otp/crud/challenge-types

Request:

FieldRequiredTypeDescription
namestringНазвание
code_typestringТип генерируемого кода. (numeric, alphanumeric, alphabetic). По умолчанию: numeric
code_lengthintДлин кода. По умолчанию: 6
ttlintВремя работы кода OTP. Указывается в секундах По умолчанию: 3600
max_attemptsintМаксимальное кол-во попыток. По умолчанию: 5

Challenge Type Routes

Для каждого типа OTP можно настроить разные способы доставки кода:

Возможные параметры:

  • Канал доставки - (sms, email)
  • ID шаблона - Код шаблоне можно получить через переменную ${answer}
  • Порядок способа доставки
  • Кол-во попыток ввода кода для данного типа доставки

CRUD

Endpoint api/otp/crud/challenge-types-routes

Request:

FieldRequiredTypeDescription
challenge_type_idintID Challenge-а
orderintПорядок отправки канала
channelstringКанал отправки. (sms, email)
template_idintID шаблона для выбранного канала
attemptsintМаксимальное кол-во попыток. По умолчанию: 1

Ограничение по запросам

ПравилоВ минутуВ часВ день
Тип OTP + контакт (email или телефон)61824