Skip to content

Функционал OTP ​

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

Handshake ​

POST /otp/handshake

Request:

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

Response:

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

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

POST otp/init

Request:

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

Response:

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

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

API ​

PUT otp/{uuid}/attempt

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

Request:

FieldRequiredTypeDescription
code✅stringКод для проверки

Response:

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

Поиск ​

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

Request:

FieldRequiredTypeDescription
type✅stringТип OTP указанные в challenge_type
mobilePhone❌stringНомер телефона
email❌stringЭл. Почта
entities❌arrayМассив связанных сущностей. Например: client: 123, lead: 5
entities.*.type✅stringТип сущности: client, lead, loanApp итд
entities.*.id✅stringИдентификатор сущности

Response:

json
{
  "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
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:

FieldRequiredTypeDescription
challenge_type_id✅intID Challenge-а
order❌intПорядок отправки канала
channel✅stringКанал отправки. (sms, email)
template_id✅intID шаблона для выбранного канала
attempts❌intМаксимальное кол-во попыток. По умолчанию: 1

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

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