Authentication, rate limits, базові endpoints, формати запитів-відповідей, error handling.
REST API UBD — точка інтеграції з зовнішніми системами. На відміну від веб-інтерфейсу, API працює без UX-припущень: інтегратор повинен явно надсилати всі параметри, обробляти всі помилки, керувати своїми токенами. Стаття описує базовий рівень для інтегратора, який вперше підключається до UBD.
API UBD спроєктований як RESTful, з основними принципами:
/api/v1/documents/123), метод описує дію (GET/POST/PUT/DELETE)./api/v1/, /api/v2/).API сертифіковано як частина експертного висновку Г-3 — функції безпеки, доступні через API, ідентичні функціям веб-інтерфейсу.
Підтримуються два механізми:
Інтегратор отримує access token через endpoint /api/v1/auth/login з логіном/паролем сервісного облікового запису. Token живе 1 годину. Refresh token використовується для отримання нового access token без повторної автентифікації — живе 24 години.
Усі подальші запити несуть header Authorization: Bearer {token}.
Стандартний OAuth 2.0 з authorization code flow. Клієнтське застосування реєструється у UBD як OAuth-клієнт, отримує client_id і client_secret. Користувач явно авторизує доступ через свій обліковий запис.
Підходить для випадків, коли інтегратор не повинен мати власний доступ — діє від імені користувача.
API обмежує кількість запитів для запобігання DoS і нерівномірному навантаженню:
| Категорія | Ліміт | Період |
|---|---|---|
| Звичайний запит (читання) | 1000 | хвилина на токен |
| Запис | 100 | хвилина на токен |
| Експорт даних | 10 | хвилина на токен |
| Auth login | 10 | хвилина на IP |
Перевищення → відповідь 429 Too Many Requests з header Retry-After, що вказує, через скільки секунд повторити.
Адміністратор UBD може налаштовувати ліміти індивідуально на токен для критичних інтеграцій.
Стандартний патерн для будь-якої таблиці моделі:
GET /api/v1/{entity}/ — список записів з фільтрацією, пагінацією, сортуванням.GET /api/v1/{entity}/{id} — отримання конкретного запису.POST /api/v1/{entity}/ — створення.PUT /api/v1/{entity}/{id} — оновлення (повне).PATCH /api/v1/{entity}/{id} — часткове оновлення.DELETE /api/v1/{entity}/{id} — видалення.Не CRUD-операції, а конкретні дії над об’єктом: затвердити документ, відмінити транзакцію, надіслати на узгодження.
POST /api/v1/{entity}/{id}/actions/{action} з тілом, що містить параметри дії.
Запит структури таблиці (для динамічних інтеграторів):
GET /api/v1/metadata/{entity} — повертає JSON Schema моделі: поля, типи, обов’язковість, обмеження.
Стандартизовано на JSON Schema. Кожна відповідь має передбачувану структуру:
Успішна відповідь зі списком:
{
"data": [...],
"meta": { "total": 1234, "page": 1, "per_page": 50 }
}
Успішна відповідь з одним об’єктом:
{
"data": {...}
}
Помилкова відповідь:
{
"error": {
"code": "VALIDATION_FAILED",
"message": "Поле name обов'язкове",
"details": [...]
}
}
HTTP-статуси відповідають семантиці:
| Статус | Значення | Дія інтегратора |
|---|---|---|
| 200/201/204 | Успіх | Продовжити |
| 400 | Помилка валідації | Виправити дані, повторити |
| 401 | Не автентифіковано / токен недійсний | Отримати новий токен через refresh |
| 403 | Немає прав на операцію | Перевірити налаштування ролей |
| 404 | Об’єкт не знайдено | Перевірити ID |
| 409 | Конфлікт (наприклад, дубль) | Перевірити стан, можливо повторити |
| 429 | Перевищено rate limit | Зачекати Retry-After, повторити |
| 5xx | Помилка сервера | Повторити з backoff (exp): 1с, 2с, 4с, 8с, 16с, потім аларм |
Версія API — частина URL: /api/v1/, /api/v2/. UBD підтримує дві версії одночасно: поточну та попередню. При випуску v3 версія v1 deprecated за 6 місяців.
Зміни всередині однієї версії — тільки сумісні: додавання полів, додавання endpoint’ів. Зміни типу полів, видалення полів, перейменування — тільки у наступну версію.
# Логін
curl -X POST https://api.example.com/api/v1/auth/login
-H "Content-Type: application/json"
-d '{"login":"service_account","password":"..."}'
# Запит списку документів
curl https://api.example.com/api/v1/documents/?status=active&page=1
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
# Створення документа
curl -X POST https://api.example.com/api/v1/documents/
-H "Authorization: Bearer ..."
-H "Content-Type: application/json"
-d '{"title":"Договір №123","type":"contract"}'
UBD REST API сертифіковано як частина експертного висновку Г-3 — функції безпеки (автентифікація, авторизація, журналювання) однакові для веб-інтерфейсу і API. Це означає: для інтегратора не потрібно окремої експертизи. JSON Schema моделі експортується через metadata endpoint — інтегратор може автоматично генерувати клієнтський код.