Skip to content

Функционал 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:

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

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

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

API

PUT otp/{uuid}/attempt

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

Request:

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

Response:

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

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
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