Ошибки
При ошибке API возвращает соответствующий HTTP-статус и машиночитаемый код в поле `error`.
Ориентируйтесь в первую очередь на HTTP-статус, а для точной обработки — на строку error. Коды стабильны и подходят для логики на клиенте.
Форма ошибки
{
"success": false,
"error": "course_not_found"
}Категории по статусу
| Статус | Типичные коды error | Причина |
|---|---|---|
400 | сообщение валидатора, invalid id format, invalid_params | Некорректное тело запроса или параметры |
401 | unauthorized | Нет токена, истёк или недействителен |
403 | forbidden, PAYMENT_REQUIRED | Недостаточно прав или приостановлен/просрочен биллинг |
404 | *_not_found (например, course_not_found) | Ресурс не найден или принадлежит другой школе |
409 | *_in_active_path, attempts_exhausted и др. | Конфликт бизнес-правил — см. конкретный эндпоинт |
423 | too many attempts, try again later | Защита входа от перебора |
500 | internal server error | Непредвиденная ошибка сервера |
Изоляция и приватность
- Объект чужой школы отдаёт
404, а не403— чтобы не подтверждать его существование. - Куратор, обращающийся к не своему ученику, также получает
404. - Некорректный UUID в пути даёт
400 invalid id format, а не404— без перебора идентификаторов. - Сообщения входа обобщены (
invalid credentials) — не раскрывают, что именно неверно.
Приостановка биллинга
Если пробный период истёк или школа приостановлена, защищённые эндпоинты отвечают 403 с кодом PAYMENT_REQUIRED. Администратору при этом остаётся доступ к чтению брендинга и данным биллинга для продления.Коды, специфичные для эндпоинта, перечислены в его карточке в Справочнике API в блоке «Ошибки».