Ошибки

Единый плоский конверт ошибки, который возвращает каждый эндпоинт, коды статусов рядом с ним и какие отказы имеет смысл повторять.

У каждого ответа с ошибкой одна и та же плоская форма:

{
  "error": "VALIDATION_ERROR",
  "message": "name is required",
  "details": [{ "field": "name", "issue": "required" }]
}

error — стабильный машиночитаемый код, message — текст для человека, details — необязательное поле. Конверт никогда не бывает вложенным и никогда не несёт флаг success: ветвитесь по HTTP-статусу и по error, а не по наличию полезной нагрузки.

Коды статусов

статусзначение
400запрос повреждён или в нём не хватает поля
401не аутентифицирован — токен отсутствует, повреждён, истёк или отозван
403аутентифицирован, но не разрешено; в публичном API это почти всегда INSUFFICIENT_SCOPE
404ресурса не существует
409конфликт — конкурентное обновление потеряно либо ресурс уже в запрошенном состоянии
422запрос корректен по форме, но не может быть обработан
429превышен лимит частоты запросов для токена
500непредвиденный сбой на нашей стороне
503сервис ещё запускается — можно повторить

INSUFFICIENT_SCOPE — отказ, под который надо проектировать

Поскольку публичный API работает на запрет по умолчанию, самая частая ошибка работающей интеграции — не провал валидации, а отказ по области доступа. Токен достаёт только те сущности и действия, под которые он выпущен, а всё остальное отвечает 403 INSUFFICIENT_SCOPE с сущностью и действием, названными в сообщении. Модель областей доступа и точное тело ответа — в разделе Аутентификация.

Считайте это ошибкой конфигурации, а не временным сбоем: для данной пары «токен и эндпоинт» она детерминирована и исчезает только после перевыпуска токена с недостающей областью доступа.

Что имеет смысл повторять

  • 429 и 503 временные. Отступите и повторите.
  • 5xx, кроме 503, могут быть временными; повторяйте с задержкой и потолком.
  • 400, 401, 403, 404, 409, 422 — нет. Тот же запрос упадёт так же. В частности, 403 INSUFFICIENT_SCOPE — это токен, который нужно перевыпустить, а повторы лишь расходуют ваш лимит частоты.

Списки кодов в справочнике — образец, а не закрытое множество

Отдельные эндпоинты в справочнике описывают коды ошибок, которые действительно отдаёт сервис этого эндпоинта. Эти списки — образец того, что вы вероятно увидите, а не исчерпывающее объединение: клиент обязан обрабатывать нераспознанное значение error, опираясь на HTTP-статус.

См. также

← Вся документация