Ошибки

При ошибке API возвращает соответствующий HTTP-статус и машиночитаемый код в поле `error`.

Ориентируйтесь в первую очередь на HTTP-статус, а для точной обработки — на строку error. Коды стабильны и подходят для логики на клиенте.

Форма ошибки
{
  "success": false,
  "error": "course_not_found"
}

Категории по статусу

СтатусТипичные коды errorПричина
400сообщение валидатора, invalid id format, invalid_paramsНекорректное тело запроса или параметры
401unauthorizedНет токена, истёк или недействителен
403forbidden, PAYMENT_REQUIREDНедостаточно прав или приостановлен/просрочен биллинг
404*_not_found (например, course_not_found)Ресурс не найден или принадлежит другой школе
409*_in_active_path, attempts_exhausted и др.Конфликт бизнес-правил — см. конкретный эндпоинт
423too many attempts, try again laterЗащита входа от перебора
500internal server errorНепредвиденная ошибка сервера

Изоляция и приватность

  • Объект чужой школы отдаёт 404, а не 403 — чтобы не подтверждать его существование.
  • Куратор, обращающийся к не своему ученику, также получает 404.
  • Некорректный UUID в пути даёт 400 invalid id format, а не 404 — без перебора идентификаторов.
  • Сообщения входа обобщены (invalid credentials) — не раскрывают, что именно неверно.
Приостановка биллинга
Если пробный период истёк или школа приостановлена, защищённые эндпоинты отвечают 403 с кодом PAYMENT_REQUIRED. Администратору при этом остаётся доступ к чтению брендинга и данным биллинга для продления.

Коды, специфичные для эндпоинта, перечислены в его карточке в Справочнике API в блоке «Ошибки».