Authorization/Verify-2fa
URI: /account/verify-2fa/
Метод завершує вхід при увімкненій двофакторній автентифікації (2FA). Використовуйте його після успішного /account/login/ для передачі pre_auth_token та 6-значного коду з додатка-автентифікатора.
Запит виконується методом POST з тілом запиту у форматі JSON.
Детальніше про загальні вимоги до запитів — у розділі Формат запитів до API.
Заголовки
Запит обов'язково повинен мати заголовок Content-Type: application/json, інакше запит буде вважатися некоректним навіть при валідному JSON у ньому.
Для підтвердження запиту користувача API необхідно передавати заголовок API-Key (той самий ключ, що й для /account/login/).
На цьому кроці не передавайте заголовок Authorization з постійним токеном. Після login використовуйте лише pre_auth_token у тілі запиту. Постійний token ви отримаєте лише в успішній відповіді цього методу
Параметр pre_auth_token отримується методом /account/login/ після успішної перевірки email і пароля
Тимчасовий pre_auth_token дійсний лише 5 хвилин. Якщо час вичерпано, повторіть /account/login/
Перший вхід (додаток автентифікації ще не налаштовано)
Якщо двофакторну автентифікацію увімкнено, але додаток-автентифікатор ще не налаштовано (або QR-код був отриманий раніше, але так і не був успішно підтверджений), /account/login/ повертає pre_auth_token, qr_code_url та qr_code_base64 для налаштування TOTP-додатка.
Якщо ви отримали QR-код під час попередньої спроби входу, але не відсканували його, система згенерує новий QR-код при наступній спробі. Просто відскануйте новий код і завершіть перевірку.
- Виконайте POST /account/login/ і отримайте
pre_auth_tokenта дані QR-коду. - Відкрийте Google Authenticator, Microsoft Authenticator, Authy або інший TOTP-додаток.
- Натисніть
+→ Сканувати QR-код і відскануйте зображення зqr_code_base64. - Надішліть POST
/account/verify-2fa/зpre_auth_tokenта поточним 6-значним кодом із додатка.
Регулярний вхід (автентифікатор уже налаштовано)
Якщо автентифікатор уже налаштовано, /account/login/ повертає лише pre_auth_token. Відкрийте додаток-автентифікатор, знайдіть поточний 6-значний код для SkarbCloud і надішліть POST /account/verify-2fa/ з pre_auth_token та цим кодом.
Параметри запиту
| Ім'я | Тип | Обов'язковий | Опис |
|---|---|---|---|
pre_auth_token | string | Так | Тимчасовий токен попередньої авторизації, отриманий після успішного /account/login/ |
code | string | Так | 6-значний OTP-код з додатка-автентифікатора (без пробілів, передавайте як рядок, наприклад "012345") |
Приклад запиту
{
"pre_auth_token": "xyz789...",
"code": "123456"
}
Параметри відповіді
| Ім'я | Тип | Опис |
|---|---|---|
| data | object | Дані авторизації |
| data.token | string | Постійний токен користувача для подальших запитів до API |
| data.url | string | Посилання для авторизації в eHealth (якщо потрібно для вашого сценарію) |
Приклад успішної відповіді
200 OK
{
"data": {
"token": "97jJdHs9vkl9TvfkDl0n6VY6QgFRVQQt",
"url": "https://..."
}
}
Приклади неуспішних відповідей
У разі помилки API повертає об'єкт errors. Текст помилки зазвичай відповідає таблиці нижче ключ у errors може бути message, code, pre_auth_token.
Прострочений або некоректний pre_auth_token
422 Unprocessable Entity
{
"errors": {
"message": "Токен недійсний або прострочений"
}
}
Що робити: повторіть POST /account/login/, отримайте новий pre_auth_token і надішліть verify знову протягом 5 хвилин.
Невірний OTP-код
422 Unprocessable Entity
{
"errors": {
"message": "Невірний код підтвердження"
}
}
Що робити: візьміть поточний 6-значний код з додатка (коди оновлюються кожні ~30 с), і повторіть запит з тим самим pre_auth_token (поки не вичерпано ліміт спроб).
Некоректний формат code
422 Unprocessable Entity
{
"errors": {
"message": "Код підтвердження має містити 6 цифр"
}
}
Перевищено кількість спроб
422 Unprocessable Entity
{
"errors": {
"message": "Перевищено кількість спроб підтвердження 2FA"
}
}
Що робити: знову виконайте /account/login/ для нового pre_auth_token.
Некоректний API-Key
403 Forbidden
{
"errors": {
"message": "Помилка авторизації некоректний заголовок API-Key"
}
}
Що робити: перевірте наявність і значення заголовка API-Key (без заголовка Authorization на цьому кроці).