Помилки та відповіді
Успішна відповідь
Успішна відповідь загортає результат у data. Списки додають pagination.
json
{
"data": [ { "id": "…", "slug": "spring", "shortLink": "https://rvlnk.link/spring" } ],
"pagination": { "page": 1, "limit": 50, "total": 1 }
}
Помилки
Помилки приходять із відповідним HTTP-статусом і завжди мають такий вигляд:
json
{
"error": {
"code": "conflict",
"message": "This slug is already taken."
}
}
| HTTP | code | Значення |
|---|---|---|
| 400 | invalid_request | Запит неправильний. message пояснює, що саме. |
| 401 | unauthorized | Немає ключа, або ключ недійсний чи прострочений. |
| 403 | forbidden | У ключа немає дозволу (error.requiredPermission), або роль власника ключа не дозволяє цю дію. |
| 403 | license_limit_reached | Досягнуто ліміт тарифу. error.licenseLimitReached дорівнює true. error.licenseExpired дорівнює true, якщо тариф прострочено. |
| 404 | not_found | Такого елемента немає в цьому робочому просторі. |
| 409 | conflict | Уже існує, наприклад зайнятий slug або назва тега. |
| 429 | rate_limited | Понад 300 запитів на хвилину для ключа. Дивіться Retry-After. |
| 5xx | internal_error | Щось пішло не так на нашому боці. |
Масові запити
Масове створення, оновлення й видалення повертають HTTP 200 і звітують про кожен елемент окремо. Один невдалий елемент не зупиняє решту. Невдалий елемент має error і code (ті самі коди, що вище), а також index (позиція в масиві запиту, для створення) або id (для оновлення й видалення).
json
{
"data": {
"created": [ { "id": "…", "slug": "a1", "shortLink": "https://rvlnk.link/a1" } ],
"failed": [ { "index": 1, "error": "This slug is already taken.", "code": "conflict" } ]
}
}
Пагінація
GET /links приймає page (за замовчуванням 1) і limit (за замовчуванням 50, максимум 200).