2FA API
BSG 2FA API — це RESTful API для двофакторної автентифікації користувачів на сайті чи у вебзастосунку: з його допомогою можна підтверджувати транзакції та контактні дані користувача, використовувати його як другий фактор автентифікації тощо.
BSG 2FA API дає змогу обрати канал надсилання одноразового пароля (OTP) користувачеві: SMS або Viber. Підключіть потрібний канал в особистому кабінеті на сторінці «Налаштування» розділу «2FA» — і починайте працювати з BSG 2FA API.
Зверніть увагу: 2FA API недоступний у демо-режимах акаунта (режимах, у яких дані вашого акаунта не верифіковано).
Переконайтеся, що ви вказали всі необхідні дані в налаштуваннях акаунта, щоб користуватися сервісом 2FA.
Доступні методи HTTP
Надіслати одноразовий пароль
Цей виклик API використовується, щоб згенерувати й надіслати користувачеві одноразовий пароль у повідомленні SMS або Viber. Зверніть увагу: автентифікація отримувачів, які перебувають у стоп-листі SMS або Viber у вашій контактній книзі, відповідним методом неможлива. (Тобто якщо отримувач у стоп-листі SMS, то під час запиту автентифікації методом SMS одноразовий пароль не буде надіслано, а у відповідь ви отримаєте помилку).
Щоб надіслати одноразовий пароль, зробіть запит на цей URL:
| POST https://one-api.bsg.world/api/2fa/authentications/otp |
Будьте надійними. Використовуйте 2FA
Почати
Параметри запиту
| Параметр | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| channel | Так | string | Ні | Канал для надсилання одноразового пароля. Можливі значення: “SMS”, “Viber”. |
| sender | Так | string | Ні | Імʼя відправника: від 3 до 11 символів для алфавітно-цифрового імені відправника (латинські літери, символи, цифри, пробіли); від 3 до 15 символів для цифрового імені відправника. |
| recipient | Так | integer | Ні | Номер телефону отримувача одноразового пароля. Від 9 до 15 цифр без знака +. Від 3 до 15 символів для цифрового імені відправника. |
| template_id | Так | string | Ні | Унікальний ідентифікатор шаблону зі статусом Approved. Вказувати ID шаблону в інших статусах не можна. ID шаблону має містити від 1 до 9 цифр. |
| code_digits | Так | integer | Ні | Довжина числового коду, від 3 до 9 цифр. |
| code_lifetime | Так | integer | Ні | Термін дії пароля, після якого пароль стає недійсним. Ціле число від 30 до 300 секунд. |
| code_max_tries | Так | integer | Ні | Кількість спроб перевірки пароля. Ціле число від 1 до 5. |
| sender_alt | Ні | string | Ні | Використовується лише для каналу Viber, щоб альтернативно надіслати одноразовий код в SMS (якщо надіслати код у Viber-повідомленні не вдалося, наприклад, якщо отримувач не користується Viber). Імʼя або номер відправника SMS. Рядок до 15 символів: від 3 до 11 символів для алфавітно-цифрового імені відправника (латинські літери, символи, цифри, пробіли); від 3 до 15 символів для цифрового імені відправника. |
Приклад запиту
{
"recipient": "61401629754",
"channel": "string",
"sender": "SENDER",
"sender_alt": "SENDER_ALT",
"template_id": "12",
"code_lifetime": 300,
"code_max_tries": 3,
"code_digits": 5
}
Параметри відповіді
| Параметр | Тип | Опис |
|---|---|---|
| id | string | ID згенерованої автентифікації. |
| recipient | string | Номер отримувача повідомлення з одноразовим кодом. |
| status | string | Статус автентифікації. Можливі значення: pending (сесію автентифікації успішно створено, вона очікує на підтвердження). |
| channel | string | Канал автентифікації, обраний для надсилання одноразового коду |
| sender | string | Імʼя відправника. |
| sender_alt | string/ null | Імʼя відправника SMS. |
| message_text | string | Текст повідомлення. |
| code_lifetime | integer | Термін дії OTP. |
| code_max_tries | integer | Кількість спроб перевірки OTP. |
| code_digits | integer | Кількість цифр в OTP. |
| price | float | Вартість автентифікації. На момент створення автентифікації вказується значення 0 . |
| currency | string | Трилітерний код валюти, у якій вказано значення. Відповідає валюті облікового запису користувача. |
| country_code | string | Код країни отримувача одноразового пароля за стандартом ISO 3166-1 alpha-2. |
| expired_at | string | Дата й час завершення терміну дії автентифікації у форматі ISO 8601. |
| created_at | string | Дата й час створення сесії автентифікації у форматі ISO 8601. |
| finished_at | null | Дата й час закриття сесії автентифікації. На момент створення автентифікації вказується значення “null”. |
Приклад відповіді
Відповідь у разі успішного запиту:
{
"data": {
"id": "bf4381c8-9d4a-4705-bd28-f89a830b7f96",
"recipient": "380979965073",
"status": "pending",
"channel": "sms",
"sender": "SENDER",
"sender_alt": "SENDER_ALT",
"message_text": "Your verification code: {code}",
"code_lifetime": 300,
"code_max_tries": 3,
"code_digits": 5,
"price": "0,02",
"currency": "USD",
"country_code": "UA",
"expired_at": "2023-01-04 18:37:06",
"created_at": "2023-01-04 17:37:06"
"finished_at": "2023-01-04 17:37:06"
}
}
Коди помилок
| Код | Помилка | Опис |
|---|---|---|
| 404 | Канал користувача не знайдено | Ця помилка може виникати, коли канал вказано неправильно. Переконайтеся, що використовуєте правильний канал, і повторіть спробу. |
| 404 | Шаблон не знайдено | Ця помилка може виникати, коли ідентифікатор шаблону вказано неправильно або вказаного шаблону немає в системі. Переконайтеся, що використовуєте правильний ідентифікатор шаблону, і повторіть спробу. |
| 422 | Недійсний статус шаблону | Ця помилка виникає, коли шаблон із вказаним у запиті ідентифікатором не має статусу “Approved”. |
| 402 | Insufficient funds | Недостатньо коштів для надсилання OTP. Поповніть рахунок. |
| 422 | Присутній у стоп-листі | Ми не можемо надіслати повідомлення, оскільки номер телефону отримувача наразі в стоп-листі. |
| 422 | Канал користувача неактивний | Метод надсилання повідомлень вимкнено. Увімкніть його в особистому кабінеті й повторіть спробу. |
| 422 | Ця дія доступна для облікового запису вашого типу лише для номера телефону вашого менеджера. | Надсилання OTP-коду недоступне в демо-режимі акаунта. |
| 422 | Ліміт автентифікацій зі статусом pending | Ця помилка може виникати, коли для вашого акаунта перевищено загальний ліміт автентифікацій зі статусом “pending”. |
| 422 | Загальний ліміт автентифікацій | Ця помилка може виникати, коли для вашого акаунта перевищено загальний ліміт автентифікацій. |
| 422 | Шаблон недоступний | Ця помилка виникає, коли ви намагаєтеся створити автентифікацію з шаблоном, доступним лише в тестовому режимі вашого акаунта. Оберіть інший шаблон. |
Повторно надіслати одноразовий код
Використовується для повторного надсилання одноразового пароля отримувачеві: генерується й надсилається в повідомленні новий одноразовий пароль, а попередній стає недійсним. Під час повторного надсилання для генерування OTP використовуються вже збережені дані із запиту https://one-api.bsg.world/api/2fa/authentications/otp
Цей виклик API доступний, лише якщо поточну автентифікацію не завершено до закінчення терміну її дії (термін дії автентифікації вказується в кожній відповіді 2FA API).
Щоб повторно надіслати одноразовий код, зробіть запит на цей URL:
| POST https://one-api.bsg.world/api/2fa/authentications/otp/{id}/resend |
Будьте надійними. Використовуйте 2FA
Почати
Параметри запиту
| Параметр | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| id | Так | string | Ні | ID автентифікації, отриманий у відповіді на https://one-api.bsg.world/api/2fa/authentications/otp Максимальна довжина — 36 символів. |
Параметри відповіді
| Параметр | Тип | Опис |
|---|---|---|
| id | string | ID згенерованої автентифікації. |
| recipient | string | Номер отримувача повідомлення з одноразовим кодом. |
| status | string | Статус автентифікації. Можливі значення: pending (сесію автентифікації успішно створено, вона очікує на підтвердження). |
| channel | string | Канал автентифікації, обраний для надсилання одноразового коду |
| sender | string | Імʼя відправника. |
| sender_alt | string/ null | Імʼя відправника SMS. |
| message_text | string | Текст повідомлення. |
| code_lifetime | integer | Термін дії OTP. |
| code_max_tries | integer | Кількість спроб перевірки OTP. |
| code_digits | integer | Кількість цифр в OTP. |
| price | float | Вартість автентифікації. На момент створення автентифікації вказується значення 0 . |
| currency | string | Трилітерний код валюти, у якій вказано значення. Відповідає валюті облікового запису користувача. |
| country_code | string | Код країни отримувача одноразового пароля за стандартом ISO 3166-1 alpha-2. |
| expired_at | string | Дата й час завершення терміну дії автентифікації у форматі ISO 8601. |
| created_at | string | Дата й час створення сесії автентифікації у форматі ISO 8601. |
| finished_at | null | Дата й час закриття сесії автентифікації. На момент створення автентифікації вказується значення “null”. |
Приклад відповіді
Відповідь у разі успішного запиту:
{
"data": {
"id": "bf4381c8-9d4a-4705-bd28-f89a830b7f96",
"recipient": "380979965073",
"status": "pending",
"channel": "sms",
"sender": "SENDER",
"sender_alt": "SENDER_ALT",
"message_text": "Your verification code: {code}",
"code_lifetime": 300,
"code_max_tries": 3,
"code_digits": 5,
"price": "0,02",
"currency": "USD",
"country_code": "UA",
"expired_at": "2023-01-04 18:37:06",
"created_at": "2023-01-04 17:37:06"
"finished_at": "2023-01-04 17:37:06"
}
}
Коди помилок
| Код | Помилка | Опис |
|---|---|---|
| 422 | Статус автентифікації — помилка | Ця помилка може виникати під час спроби повторно надіслати OTP-код для сесії автентифікації, яку вже завершено зі статусом ‘failed’. Повторне надсилання OTP-коду можливе, лише коли сесія автентифікації має статус ‘pending’. |
| 422 | Статус автентифікації — скасовано | Ця помилка може виникати під час спроби повторно надіслати OTP-код для сесії автентифікації, яку вже завершено зі статусом ‘canceled’. Повторне надсилання OTP-коду можливе, лише коли сесія автентифікації має статус ‘pending’. |
| 422 | Authentication expired | Ця помилка може виникати під час спроби повторно надіслати OTP-код для сесії автентифікації, яку вже завершено зі статусом ‘expired’. Повторне надсилання OTP-коду можливе, лише коли сесія автентифікації має статус ‘pending’ |
| 404 | Автентифікацію не знайдено | Ця помилка може виникати, коли ідентифікатор автентифікації вказано неправильно або вказаної автентифікації немає в системі. Переконайтеся, що використовуєте правильний ідентифікатор автентифікації, і повторіть спробу. |
Перевірити одноразовий код
Цей виклик API використовується, щоб перевірити, що одноразовий пароль, отриманий вами від користувача, збігається з надісланим BSG.
Щоб перевірити одноразовий код, зробіть запит на цей URL:
| POST https://one-api.bsg.world/api/2fa/authentications/otp/{id}/verify |
Параметри запиту
| Параметр | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| id | Так | string | Ні | ID автентифікації, отриманий у відповіді на https://one-api.bsg.world/api/2fa/authentications/otp Максимальна довжина — 36 символів. |
| access_code | Так | integer | Ні | Одноразовий пароль, який потрібно перевірити і який користувач отримав через канал, вказаний у запиті на генерування, або через альтернативний канал (необовʼязково). Ціле число від 3 до 9 цифр. |
Параметри відповіді
Приклад відповіді, якщо код неправильний:
{
"errors": [
{
"message": "The code does not match the expected value"
}
]
}
Якщо одноразовий код правильний:
| Параметр | Тип | Опис |
|---|---|---|
| id | string | ID згенерованої автентифікації. |
| recipient | string | Номер отримувача повідомлення з одноразовим паролем. |
| status | string | Статус автентифікації. Можливі значення: verified (код успішно перевірено, сесію закрито з успішним результатом). |
| channel | string | Канал автентифікації. |
| sender | string | Імʼя відправника. |
| sender_alt | string | Імʼя відправника SMS. |
| message_text | string | Текст повідомлення. |
| code_lifetime | integer | Термін дії OTP. |
| code_max_tries | integer | Кількість спроб перевірки OTP. |
| code_digits | integer | Кількість цифр в OTP. |
| price | float | Вартість автентифікації (без вартості надісланих повідомлень). |
| currency | string | Трилітерний код валюти, у якій вказано значення. Відповідає валюті облікового запису користувача. |
| country_code | string | Код країни отримувача за ISO 3166-1 alpha-2. |
| expired_at | string | Дата й час завершення терміну дії сесії автентифікації у форматі ISO 8601. |
| created_at | string | Дата й час створення сесії автентифікації у форматі ISO 8601. |
| finished_at | string | Дата й час закриття сесії автентифікації у форматі ISO 8601. |
Приклад відповіді
{
"data": {
"id": "bf4381c8-9d4a-4705-bd28-f89a830b7f96",
"recipient": "380979965073",
"status": "pending",
"channel": "sms",
"sender": "SENDER",
"sender_alt": "SENDER_ALT",
"message_text": "Your verification code: {code}",
"code_lifetime": 300,
"code_max_tries": 3,
"code_digits": 5,
"price": "0,02",
"currency": "USD",
"country_code": "UA",
"expired_at": "2023-01-04 18:37:06",
"created_at": "2023-01-04 17:37:06"
"finished_at": "2023-01-04 17:37:06"
}
}
Коди помилок
| Код | Помилка | Опис |
|---|---|---|
| 404 | Автентифікацію не знайдено | Ця помилка може виникати, коли ідентифікатор автентифікації вказано неправильно або вказаної автентифікації немає в системі. Переконайтеся, що використовуєте правильний ідентифікатор автентифікації, і повторіть спробу. |
| 404 | Код не відповідає очікуваному значенню | Помилка виникає, коли наданий код не збігається зі значенням, надісланим на номер отримувача. |
| 422 | Термін дії коду доступу закінчився | Термін дії вашого OTP-пароля минув. OTP-пароль більше не дійсний. |
| 422 | Ліміт спроб перевірки автентифікації | Ця помилка може виникати, коли перевищено ліміт спроб для сесії автентифікації. |
Скасувати сесію автентифікації
Використовується для скасування процесу автентифікації. У цьому разі автентифікація має бути в статусі Pending.
Щоб скасувати сесію автентифікації, зробіть запит на цей URL:
| POST https://one-api.bsg.world/api/2fa/authentications/{id}/cancel |
Параметри запиту
| Параметри | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| id | Так | string | Ні | ID автентифікації, отриманий у відповіді на https://one-api.bsg.world/api/2fa/authentications/otp Максимальна довжина — 36 символів. |
Параметри відповіді
| Параметр | Тип | Опис |
|---|---|---|
| id | string | ID згенерованої автентифікації. |
| recipient | string | Номер отримувача повідомлення з OTP-кодом. |
| status | string | Статус автентифікації. Можливі значення: canceled. |
| channel | string | Канал автентифікації. |
| sender | string | Імʼя відправника. |
| sender_alt | string | Альтернативне імʼя відправника SMS |
| message_text | string | Текст повідомлення. |
| code_lifetime | integer | Термін дії OTP. |
| code_max_tries | integer | Кількість спроб перевірки OTP. |
| code_digits | integer | Кількість цифр в OTP. |
| price | float | Вартість сесії автентифікації. Якщо автентифікацію скасовано, вартість дорівнює 0. |
| currency | string | Трилітерний код валюти, у якій вказано вартість. |
| country_code | string | Код країни отримувача за ISO 3166-1 alpha-2. |
| expired_at | string | Дата й час завершення терміну дії сесії автентифікації у форматі ISO 8601. |
| created_at | string | Дата й час створення сесії автентифікації у форматі ISO 8601. |
| finished_at | string | Дата й час закриття сесії автентифікації у форматі ISO 8601. |
Приклад відповіді
Відповідь у разі успішного запиту:
{
"data": {
"id": "bf4381c8-9d4a-4705-bd28-f89a830b7f96",
"recipient": "380979965073",
"status": "canceled",
"channel": "sms",
"sender": "SENDER",
"sender_alt": "SENDER_ALT",
"message_text": "Your verification code: {code}",
"code_lifetime": 300,
"code_max_tries": 3,
"code_digits": 5,
"price": "0,02",
"currency": "USD",
"country_code": "UA",
"expired_at": "2023-01-04 18:37:06",
"created_at": "2023-01-04 17:37:06"
"finished_at": "2023-01-04 17:37:06"
}
}
Можливі помилки
| Код | Помилка | Опис |
|---|---|---|
| 404 | Автентифікацію не знайдено | Ця помилка може виникати, коли ідентифікатор автентифікації вказано неправильно або вказаної автентифікації немає в системі. Переконайтеся, що використовуєте правильний ідентифікатор автентифікації, і повторіть спробу. |
| 422 | Статус автентифікації — помилка | Ця помилка може виникати під час спроби скасувати сесію автентифікації, яку вже завершено зі статусом “failed”. Скасувати сесію автентифікації можна, лише поки вона має статус “pending”. |
| 422 | Authentication expired | Ця помилка може виникати під час спроби скасувати сесію автентифікації, яку вже завершено зі статусом “expired”. Скасувати сесію автентифікації можна, лише поки вона має статус “pending”. |
Перевірити статус автентифікації
Використовується для отримання інформації про поточний статус автентифікації за її ідентифікатором.
Щоб перевірити статус автентифікації, зробіть запит на цей URL:
| GET https://one-api.bsg.world/api/2fa/authentications/{id} |
Будьте надійними. Використовуйте 2FA
Почати
Параметри запиту
| Параметр | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| id | Так | string | Ні | ID автентифікації, отриманий у відповіді на https://one-api.bsg.world/api/2fa/authentications/otp . Максимальна довжина — 36 символів. |
Параметри відповіді
| Параметр | Тип | Опис |
|---|---|---|
| id | string | ID автентифікації, створеної за запитом користувача. |
| recipient | string | Номер отримувача повідомлення з OTP (вказує користувач у запиті автентифікації) |
| status | string | Статус автентифікації. Можливі значення: pending — автентифікацію створено, вона очікує на підтвердження; verified — автентифікація успішна (код успішно перевірено); expired — термін дії автентифікації минув; failed — автентифікація неуспішна; canceled — автентифікацію скасовано. |
| channel | string | Канал автентифікації. Можливі значення: SMS, Viber. |
| sender | string | Імʼя відправника (вказує користувач у запиті автентифікації). |
| sender_alt | string | Альтернативне імʼя відправника для надсилання SMS (вказує користувач у запиті автентифікації). |
| code_lifetime | integer | Термін дії OTP (вказує користувач у запиті автентифікації). |
| code_max_tries | integer | Кількість спроб перевірки OTP (вказує користувач у запиті автентифікації). |
| code_digits | integer | Кількість цифр в OTP (вказує користувач у запиті автентифікації). |
| price | string | Вартість автентифікації (без вартості надісланих повідомлень). Сума відображається із 7 знаками після коми. |
| currency | string | Трилітерний код валюти, у якій вказано значення. |
| country_code | string | Код країни отримувача за ISO 3166-1 alpha-2. |
| expired_at | string | Дата завершення терміну дії сесії автентифікації. |
| created_at | string | Дата й час створення автентифікації у форматі ISO 8601. |
| finished_at | string | Дата й час закриття автентифікації у форматі ISO 8601. |
| messages | array | Масив обʼєктів повідомлень: |
| messages[]id | string | Унікальний ID повідомлення. |
| messages[]recipient | string | Номер телефону отримувача. |
| messages[]status | string | Статус повідомлення. Можливі значення: delivered — повідомлення надіслано; accepted — повідомлення прийнято до надсилання; undelivered — повідомлення не доставлено. |
| messages[]channel | string | Канал надсилання повідомлення. Можливі значення: SMS або Viber. |
| messages[]sender | string | Імʼя відправника повідомлення. |
| messages[]text | string | Текст повідомлення. |
| messages[]price | float | Вартість повідомлення. |
| messages[]currency | string | Трилітерний код валюти, у якій вказано значення. |
| messages[]sent_at | string | Дата й час надсилання повідомлення у форматі ISO 8601. |
| messages[]created_at | string | Дата й час створення повідомлення у форматі ISO 8601. |
Приклад відповіді
Відповідь у разі успішного запиту:
{
"data": {
"id": "ea5db413-e368-4952-b745-cc2030210c49",
"recipient": "380501403813",
"status": "verified",
"channel": "sms",
"sender": "testsms",
"sender_alt": "string",
"message_text": "Your BSG 2FA confirmation code is {code}. Do not share this with anyone else.",
"code_lifetime": 30,
"code_max_tries": 5,
"code_digits": 6,
"price": 50.25,
"currency": "EUR",
"country_code": "FR",
"expired_at": "2022-04-28 14:21:16",
"created_at": "2022-04-28 14:21:16",
"updated_at": "2022-04-28 14:21:16",
"finished_at": "2022-04-28 14:21:16",
"messages": [
{
"id": "1ed32701-5d4f-6cfa-ba06-9db3aa8bab68",
"recipient": "61401629754",
"status": "accepted",
"channel": "sms",
"sender": "SENDER",
"price": 0.0642918,
"currency": "EUR",
"sent_at": "2022-04-18 11:00:30",
"created_at": "2022-04-18 10:55:35"
}
]
}
}
Можливі помилки
| Код | Помилка | Опис |
|---|---|---|
| 404 | Автентифікацію не знайдено | Ця помилка може виникати, коли ідентифікатор автентифікації вказано неправильно або вказаної автентифікації немає в системі. Переконайтеся, що використовуєте правильний ідентифікатор автентифікації, і повторіть спробу. |
Отримати список сесій автентифікації
Використовується для отримання списку автентифікацій за період.
Щоб отримати список сесій автентифікації, зробіть запит на цей URL:
| GET https://one-api.bsg.world/api/2fa/authentications |
Будьте надійними. Використовуйте 2FA
Почати
Параметри запиту
| Параметр | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| page[offset] | Ні | integer | 0 | Отримати автентифікації, починаючи зі зсуву offset. |
| page[limit] | Ні | integer | 10 | Кількість автентифікацій у відповіді. Можливі значення — від 10 до 500. |
| filter[from] | Так | string | Дата початку періоду (дата й час створення сесії автентифікації) у форматі ISO 8601. | |
| filter[to] | Так | string | Дата завершення періоду (дата й час створення автентифікації) у форматі ISO 8601. | |
| filter[ids] | Ні | string | ID автентифікації. Максимальна кількість — 3. | |
| filter[status] | Ні | string | Можливі значення: “pending”, “verified”, “expired”, “failed”, “canceled”. | |
| filter[channel] | Ні | string | Можливі значення: “ SMS ”, “ Viber ”. | |
| filter[recipient] | Ні | string | Номер телефону, на який ви хочете надіслати OTP-код. Від 9 до 15 цифр. | |
| filter[country_code] | Ні | string | Код країни отримувача за стандартом ISO 3166-1 alpha-2 | |
| way | Ні | string | asc | Варіанти сортування: asc, desc |
| sort | Ні | string | created_at | Сортування за: id, status, channel, recipient, created_at, finished_at, country_code. |
Параметри відповіді
| Параметр | Тип | Опис |
|---|---|---|
| list | array | Масив обʼєктів автентифікацій. |
| list[]id | string | ID згенерованої автентифікації. |
| list[]recipient | string | Номер отримувача повідомлення з OTP-кодом. |
| list[]status | string | Статус автентифікації. Можливі значення: pending — автентифікацію створено, вона очікує на підтвердження; verified — автентифікація успішна (одноразовий пароль успішно перевірено); expired — термін дії автентифікації минув; failed — автентифікація неуспішна; canceled — автентифікацію скасовано. |
| list[]channel | string | Канал автентифікації. |
| list[]sender | string | Імʼя відправника. |
| list[]sender_alt | string | Альтернативне імʼя відправника для SMS. |
| list[]code_lifetime | integer | Термін дії одноразового пароля. |
| list[]code_max_tries | integer | Кількість спроб перевірки одноразового пароля. |
| list[]code_digits | integer | Кількість цифр в одноразовому паролі. |
| list[]price | float | Вартість сесії автентифікації. |
| list[]currency | string | Трилітерний код валюти, у якій вказано вартість автентифікації. |
| list[]country_code | string | Код країни отримувача за ISO 3166-1 alpha-2. |
| list[]expired_at | string | Дата завершення терміну дії автентифікації у форматі ISO 8601. |
| list[]created_at | string | Дата й час створення автентифікації у форматі ISO 8601. |
| list[]finished_at | string | Дата й час закриття автентифікації у форматі ISO 8601. |
| list[]messages | array | Масив обʼєктів повідомлень: |
| list[]messages[]id | string | Унікальний ID повідомлення. |
| list[]messages[]recipient | string | Номер телефону отримувача. |
| list[]messages[]status | string | Статус повідомлення. Можливі значення: delivered — повідомлення надіслано; accepted — повідомлення прийнято до надсилання; undelivered — повідомлення не доставлено. |
| list[]messages[]sender | string | Імʼя відправника повідомлення. |
| list[]messages[]text | string | Текст повідомлення. |
| list[]messages[]price | float | Вартість повідомлення. |
| list[]messages[]currency | string | Валюта акаунта, у якій вказано вартість. Відповідає валюті облікового запису користувача. |
| list[]messages[]sent_at | string | Дата й час надсилання повідомлення у форматі ISO 8601. |
| list[]messages[]created_at | string | Дата й час створення повідомлення у форматі ISO 8601. |
| total | integer | Загальна кількість автентифікацій. |
Приклад відповіді
Відповідь у разі успішного запиту:
{
"data": {
"list": [
{
"id": "ea5db413-e368-4952-b745-cc2030210c49",
"recipient": "380501403813",
"status": "verified",
"channel": "sms",
"sender": "testsms",
"sender_alt": "string",
"message_text": "Your BSG 2FA confirmation code is {code}. Do not share this with anyone else.",
"code_lifetime": 30,
"code_max_tries": 5,
"code_digits": 6,
"price": 50.25,
"currency": "EUR",
"country_code": "FR",
"expired_at": "2022-04-28 14:21:16",
"created_at": "2022-04-28 14:21:16",
"updated_at": "2022-04-28 14:21:16",
"finished_at": "2022-04-28 14:21:16",
"messages": [
{
"id": "1ed32701-5d4f-6cfa-ba06-9db3aa8bab68",
"recipient": "61401629754",
"status": "accepted",
"channel": "sms",
"sender": "SENDER",
"price": 0.0642918,
"currency": "EUR",
"sent_at": "2022-04-18 11:00:30",
"created_at": "2022-04-18 10:55:35"
}
]
},
"total": 100
}
}
Створити шаблон повідомлення
Цей метод створює новий шаблон повідомлення для надсилання OTP-коду.
Зверніть увагу: після створення шаблон проходить модерацію. Він буде доступний для надсилання повідомлень з OTP-кодом лише після модерації. Щойно шаблон буде готовий, його статус зміниться з Requested на Approved.
Щоб створити шаблон повідомлення, зробіть запит на цей URL:
| POST https://one-api.bsg.world/api/2fa/authentications/templates |
Параметри запиту
| Параметр | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| name | Так | string | Назва шаблону. Рядок від 3 до 50 символів. | |
| countries | Так | string | Дволітерний код(и) країни, для якої/яких застосовується створений шаблон. Надсилання повідомлень з OTP-кодом буде можливим, лише якщо номер отримувача належить країні, вказаній у шаблоні. | |
| text | Так | string | Текст шаблону повідомлення. Рядок від 9 до 70 символів у будь-якому кодуванні (кирилиця, латиниця). Текст повинен містити одну змінну для OTP-коду — {code2fa}, яка автоматично замінюється на OTP-код під час надсилання повідомлення. |
Приклад запиту
{
"name": "template name",
"countries": ["UA","PT","AD","IT"],
"text": "test code is {code2fa}"
}
Параметри відповіді
| Параметр | Тип | Опис |
|---|---|---|
| template_id | string | Унікальний ідентифікатор шаблону в сервісі 2FA, автоматично згенерований системою. |
| name | string | Назва шаблону. |
| text | string | Текст шаблону повідомлення. |
| countries | string | Список країн, для яких створено шаблон. |
| status | string | Статус шаблону. Після створення шаблону його статус завжди буде «requested». |
| updated_at | string | Дата й час останньої зміни шаблону у форматі ISO 8601. |
Приклад відповіді
Відповідь у разі успішного запиту:
{
"data": {
"template_id": 515,
"name": "template name",
"text": "test code is {code2fa}",
"countries": [
"AD",
"IT",
"PT",
"UA"
],
"status": "requested",
"updated_at": "2023-06-30 14:52:58"
}
}
Можливі помилки
| Код | Помилка | Опис |
|---|---|---|
| 422 | Кількість запитів на створення шаблону обмежена 10. Дочекайтеся підтвердження від менеджера, перш ніж надсилати новий запит. | Ви можете мати не більше 10 шаблонів зі статусом «Requested». Якщо у вас уже є 10 таких шаблонів, потрібно видалити один із них, щоб створити новий. Також місце для нового шаблону звільняється, якщо будь-який з існуючих шаблонів переходить у статус «Approved» або «Rejected». |
| 422 | У тексті обовʼязково повинна бути змінна {code2fa} | Ця помилка виникає, якщо текст шаблону повідомлення не містить обовʼязкової змінної {code2fa} або синтаксис змінної некоректний. Ця змінна призначена для вставки фактичного OTP-коду в текст повідомлення. |
| 422 | Змінна {code2fa} має зустрічатися в тексті лише один раз | Ця помилка виникає, якщо в тексті шаблону повідомлення знайдено кілька входжень змінної {code2fa}. Перевірте весь текст шаблону та видаліть зайві входження змінної. |
| 422 | Ця дія недоступна для облікового запису вашого типу | Створення шаблону повідомлення для надсилання OTP-кодів недоступне в режимі облікового запису Demo та Test. |
| 422 | У користувача вже є шаблон з такою самою назвою! | Шаблон із назвою, вказаною в параметрі «name», уже існує. Використовуйте назви, що відрізняються від наявних шаблонів. |
Видалити шаблон повідомлення
Цей метод видаляє шаблон повідомлення для надсилання OTP-коду за його унікальним ідентифікатором.
Щоб видалити шаблон повідомлення, надішліть запит на цей URL:
| DELETE https://one-api.bsg.world/api/2fa/authentications/templates/{template_id} |
Параметри запиту
| Параметр | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| template_id | Так | string | Ні | Ідентифікатор шаблону повідомлення, який потрібно видалити. Від 1 до 9 цифр. |
Параметри відповіді
Якщо запит виконано успішно, повертається відповідь — Successfully removed.
Коди помилок
| Код | Помилка | Опис |
|---|---|---|
| 422 | Шаблон за замовчуванням не можна видалити | Ця помилка виникає під час спроби видалити шаблон, який встановлено як шаблон за замовчуванням. Такий шаблон видалити не можна. |
| 404 | Шаблон не знайдено | Ця помилка може виникати, коли ідентифікатор шаблону вказано неправильно або вказаного шаблону немає в системі. Переконайтеся, що використовуєте правильний ідентифікатор шаблону, і повторіть спробу. |
Отримати список шаблонів
Цей метод повертає список шаблонів повідомлень для надсилання OTP-коду з можливістю фільтрації за різними параметрами.
Щоб отримати список шаблонів, надішліть запит на цей URL:
| GET https://one-api.bsg.world/api/2fa/authentications/templates |
Параметри запиту
| Параметр | Обовʼязковий | Тип | За замовчуванням | Опис |
|---|---|---|---|---|
| page[offset] | Ні | integer | 0 | Отримати шаблони 2FA, починаючи зі зсуву (offset). |
| page[limit] | Ні | integer | 10 | Кількість шаблонів 2FA у відповіді. |
| filter[ids] | Ні | array($string) | Список ідентифікаторів шаблонів. | |
| filter[status] | Ні | string | Можливі значення: requested, rejected, approved. | |
| way | Ні | string | asc | Варіанти сортування: asc, desc |
| sort | Ні | string | updated_at | Сортування за template_id, status, name, updated_at. |
Параметри відповіді
| Параметр | Тип | Опис |
|---|---|---|
| template_id | string | Унікальний ідентифікатор шаблону. |
| name | string | Назва шаблону. |
| text | string | Текст повідомлення |
| countries | string | Список країн, для яких створено шаблон. |
| status | string |
Статус шаблону. Можливі значення:
|
| updated_at | string | Дата й час створення або останньої зміни шаблону. Формат відображення — ISO 8601: yyyy-mm-dd hh:mm:ss. |
| total | integer | Загальна кількість шаблонів, що відповідають умовам пошуку. |
Приклад відповіді
Відповідь у разі успішного запиту:
{
"data": [
{
"template_id": "49",
"name": "string",
"countries": [
"AD",
"IT",
"PT",
"UA"
],
"text": "Your BSG 2FA confirmation code is {code2fa}.",
"status": "approved",
"updated_at": "2022-04-18 10:55:35"
}
],
"total": 1,
}
}
2FA errors:
Відповіді з помилками One API:
1.1. Термін дії коду доступу закінчився
1.2. Код доступу не знайдено
1.3. Статус автентифікації — скасовано
1.4. Термін дії автентифікації закінчився
1.5. Статус автентифікації — помилка
1.6. Недійсний статус автентифікації
1.7. Ліміт автентифікацій зі статусом pending
1.8. Загальний ліміт автентифікацій
1.9. Ліміт спроб перевірки автентифікації
1.10. Автентифікацію не знайдено
1.11. Ціну автентифікації не знайдено
1.12. Недостатньо коштів
1.13. Отримувач присутній у стоп-листі
1.14. Канал автентифікації неактивний
1.15. Канал автентифікації не знайдено
1.16. Шаблон не знайдено
1.17. Шаблон за замовчуванням не можна видалити
1.18. У користувача вже є шаблон з такою самою назвою!
1.19. Ця дія недоступна для облікового запису вашого типу.
1.20. Змінна {code2fa} має зустрічатися в тексті лише один раз
1.21. У тексті обовʼязково повинна бути змінна {code2fa}
1.22. Кількість запитів на створення шаблону обмежена 10. Дочекайтеся підтвердження від менеджера, перш ніж надсилати новий запит.
{
"errors": [
{
"message": "ERROR_MESSAGE_1"
}
]
}
2. Помилки валідації OneAPI:
{
"message": "The given data was invalid.",
"errors": {
"<FIELD_1>": [
"<VALIDATION_ERROR_1>"
], ...
"<FIELD_N>": [
"<VALIDATION_ERROR_N>"
]
}
}
3. Помилки інтеграції OneAPI з 2FA:
3.1. Необроблена відповідь сервісу 2FA порожня.
3.2. Необроблена відповідь сервісу 2FA містить некоректний вміст.
3.3. Відповідь сервісу 2FA з помилкою порожня.
3.4. Структура відповіді сервісу 2FA з помилкою некоректна.
3.5. Помилка отримання відповіді-помилки від сервісу 2FA.
3.6. Помилка отримання успішної відповіді від сервісу 2FA.
3.7. Помилка отримання відповіді від сервісу 2FA.
3.8. Помилка сервісу 2FA.
3.9. Помилка отримання відповіді-помилки від сервісу 2FA.
3.10. Помилка отримання успішної відповіді від сервісу 2FA.
3.11. Помилка отримання відповіді від сервісу 2FA.
{
"message": "<ERROR_MESSAGE>",
"errors": [
...
]
}