Справочник OAuth
Эндпоинты
| Метод | Путь | Авторизация | Назначение |
|---|---|---|---|
POST | /auth/oauth/auth | Нет | Client credentials |
POST | /auth/oauth/token | Нет | Обмен кода или обновление |
GET | /auth/oauth/client | Bearer (сессия входа) | Данные клиента для экрана подтверждения |
POST | /auth/get-one-time-token | Bearer (сессия пользователя) | Одноразовый токен |
Хосты:
| Среда | Хост |
|---|---|
| Продакшн | https://api.bito.uz |
| Дев | https://api.systematicdev.uz |
Ограничение частоты для /auth/oauth/auth, /auth/oauth/token и /auth/oauth/client: 20 запросов в минуту с одного IP. На /auth/get-one-time-token это ограничение не распространяется.
В Integration API webhook/subscribe и webhook/unsubscribe принимают 1 запрос в секунду.
Что Bito отправляет вам
| Событие | Метод | Куда | Тело |
|---|---|---|---|
| Установка | POST | ваш redirect_uri | { code, client_id, account_id } |
| Удаление | POST | ваш revoke_access_hook_uri | { account_id } |
| Изменение данных | POST | каждый destination вебхука | { collection_name, action, id, organization_id } |
Первые два подписаны вашим client_secret (проверка X-Bito-Signature описана в разделе Хуки установки и удаления), третий — в Вебхуках данных.
Формат ответа
Любой ответ Bito — успешный или нет — имеет одинаковую структуру.
Успех
json
{
"code": 0,
"message": "Success",
"messages": { "uz": "...", "ru": "Успешно", "en": "..." },
"data": {},
"time": "2025-01-15T10:30:00.000Z"
}Ошибка
json
{
"code": 401,
"message": "Unauthorized user",
"messages": { "uz": "...", "ru": "...", "en": "Unauthorized user" },
"time": "2025-01-15T10:30:00.000Z"
}При успехе code равен 0. При ошибке в нём код ошибки, а data отсутствует. Ветвитесь по code, а не по тексту message — текст локализован.
Частые ошибки
| HTTP | Ошибка | Что это значит | Что делать |
|---|---|---|---|
| 401 | Unauthorized | Заголовок Authorization отсутствует или некорректен | Отправьте Bearer <access_token> |
| 401 | Token expired | Access-токен старше 24 часов | Обновите |
| 401 | Unauthorized | Сессия за токеном была завершена | Авторизуйтесь заново. Смена секрета делает именно это. |
| 400 | Invalid credentials | client_id и client_secret не совпадают, либо код уже использован | Проверьте секрет, запросите новый код |
| 400 | Client not found | Клиента с таким client_id нет | Проверьте id, полученный при создании |
| 400 | Auth code expired | Прошло больше 20 минут | Начните сценарий заново |
| 400 | Invalid scope | Запрошенный scope не является известным значением | Исправьте значение scope |
| 429 | Too many requests | Больше 20 запросов в минуту с одного IP | Снизьте частоту: обновляйте токен по истечении срока |