Функционал OTP
Отправка кода
Handshake
POST /otp/handshake
Request:
Field | Required | Type | Description |
---|---|---|---|
type | ✅ | string | Тип OTP указанные в challenge_type |
mobilePhone | Если не указан email | string | Номер телефона |
Если не указан mobilePhone | string | Эл. Почта | |
entities | ❌ | array | Массив связанных сущностей. Например: client: 123, lead: 5 |
entities.*.type | ✅ | string | Тип сущности: client, lead, loanApp итд |
entities.*.id | ✅ | string | Идентификатор сущности |
Response:
{
"status": "ok",
"timestamp": 1657524075000,
"data": {
"type": "", // Название типа OTP
"channel": "sms", // Какой канал будет использоваться для отправки кода
"availableIn": 120 // Время жизни процесса OTP
}
}
Инициализация
POST otp/init
Request:
Field | Required | Type | Description |
---|---|---|---|
type | ✅ | string | Тип OTP указанные в challenge_type |
mobilePhone | Если не указан email | string | Номер телефона |
Если не указан mobilePhone | string | Эл. Почта | |
entities | ❌ | array | Массив связанных сущностей. Например: client: 123, lead: 5 |
entities.*.type | ✅ | string | Тип сущности: client, lead, loanApp итд |
entities.*.id | ✅ | string | Идентификатор сущности |
Response:
{
"status": "ok",
"timestamp": 1657524169000,
"data": {
"uuid": "", // Идентификатор процесса OTP
"channel": "sms" // Канал отправки кода
}
}
Подтверждение кода
API
PUT otp/{uuid}/attempt
uuid
→ идентификатор процесса OTP, полученный при инициализации
Request:
Field | Required | Type | Description |
---|---|---|---|
code | ✅ | string | Код для проверки |
Response:
{
"status": "ok",
"timestamp": 1657524358000,
"data": {
"accepted": true
}
}
Поиск
GET|POST otp/{type}
, где type - Тип OTP
Request:
Field | Required | Type | Description |
---|---|---|---|
type | ✅ | string | Тип OTP указанные в challenge_type |
mobilePhone | ❌ | string | Номер телефона |
❌ | string | Эл. Почта | |
entities | ❌ | array | Массив связанных сущностей. Например: client: 123, lead: 5 |
entities.*.type | ✅ | string | Тип сущности: client, lead, loanApp итд |
entities.*.id | ✅ | string | Идентификатор сущности |
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:
Field | Required | Type | Description |
---|---|---|---|
name | ✅ | string | Название |
code_type | ❌ | string | Тип генерируемого кода. (numeric, alphanumeric, alphabetic). По умолчанию: numeric |
code_length | ❌ | int | Длин кода. По умолчанию: 6 |
ttl | ❌ | int | Время работы кода OTP. Указывается в секундах По умолчанию: 3600 |
max_attempts | ❌ | int | Максимальное кол-во попыток. По умолчанию: 5 |
Challenge Type Routes
Для каждого типа OTP можно настроить разные способы доставки кода:
Возможные параметры:
- Канал доставки - (sms, email)
- ID шаблона - Код шаблоне можно получить через переменную
${answer}
- Порядок способа доставки
- Кол-во попыток ввода кода для данного типа доставки
CRUD
Endpoint api/otp/crud/challenge-types-routes
Request:
Field | Required | Type | Description |
---|---|---|---|
challenge_type_id | ✅ | int | ID Challenge-а |
order | ❌ | int | Порядок отправки канала |
channel | ✅ | string | Канал отправки. (sms, email) |
template_id | ✅ | int | ID шаблона для выбранного канала |
attempts | ❌ | int | Максимальное кол-во попыток. По умолчанию: 1 |
Ограничение по запросам
Правило | В минуту | В час | В день |
---|---|---|---|
Тип OTP + контакт (email или телефон) | 6 | 18 | 24 |