Skip to content
  1. Компоненты
  2. mxHeadless
  3. API
  4. Ошибки

Ошибки ​

Неуспешный ответ приходит в формате RFC 9457 (application/problem+json). Обёртки {data, meta} нет.

Формат ​

json
{
  "type": "https://mxheadless.dev/problems/unauthorized",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication required",
  "instance": "/api/v1/resources",
  "code": "token_required"
}
ПолеРоль
typeURI категории
titleКраткий заголовок
statusHTTP-код
detailТекст, безопасный для production
instanceПуть запроса
codeСтабильный код для клиентов
errorsОпционально: ошибки по полям

Коды ​

codeHTTPКогда
service_disabled503mxheadless_enabled=false
token_required401Нет credentials
invalid_token401Неверный / истёкший / отозванный
scope_denied403Нет нужного scope
rate_limited429Rate limit
idempotency_conflict409Конфликт Idempotency-Key
invalid_grant400OAuth отклонён
not_found404Нет маршрута, объекта или имени в registry
validation_failed422Тело, поля, фильтры, сортировка не прошли проверку
internal_error500Необработанное исключение

Перечень совпадает с enum code в OpenAPI-схеме пакета: клиент, сгенерированный по спецификации, знает все коды.

Не у каждой ошибки есть code: у 400, 406, 413, 414, 415 поле отсутствует. Для общей обработки используйте status + type.

HTTP ​

КодКогда
400invalid_grant: клиент или grant отклонён на POST /auth/token
401 / 403Auth: нет credentials, неверный токен, нет scope
404Маршрут, объект или {name} вне registry
406Accept без application/json и без */*
409Idempotency-Key занят или пришёл с другим телом
413Content-Length больше mxheadless_max_body_bytes (1 MB)
414Path длиннее mxheadless_max_uri_bytes (2048 байт)
415Content-Type не application/json и не application/x-www-form-urlencoded
422Валидация, неизвестный filter/field/sort
429Rate limit
500Сервер
503Kill switch

Кода 405 пакет не отдаёт. Неизвестный путь и неизвестный метод на существующем пути дают 404 not_found, заголовка Allow в ответе нет. Если клиент шлёт Accept: text/html, ответ придёт только на /api/v1/docs; на остальных путях такой Accept даёт 406.

Не ошибки ​

Два кода из этого же списка HTTP-статусов относятся к успеху:

КодКогда
201POST на маршрутах *.create
304GET с совпавшим If-None-Match

При mxheadless_debug=false в ответе нет SQL, stack trace и путей к файлам.