Главная/Справочник/Коды ошибок ENУКРРУС API-справочник (ReDoc) ↗

Коды ошибок

Каждый error.code, когда он случается и что с ним делать.

Ветвитесь по error.code. Он стабилен. message для людей и может быть переформулирован.

{ "error": { "code": "language_not_found",
             "message": "Unknown language code: 'xx-YY'",
             "details": { "language": "xx-YY" } } }

Публичный API

language_not_found — 404

Код не совпал ни с каноническим кодом, ни с алиасом, и укорачивание тоже ничего не нашло.

Делайте: залогируйте сырое значение. Это либо опечатка на стороне отправителя, либо написание, которого каталог ещё не несёт. Если вы классифицируете, а не резолвите, берите /v1/normalize: он отдаёт known: false с 200 — см. Нормализация входящих кодов.

Не делайте ретраев. Ответ не изменится, пока кто-то не отредактирует каталог.

details.language несёт присланное вами значение.

provider_not_found — 404

Ни код провайдера, ни один зарегистрированный алиас не совпали с присланным значением.

Делайте: проверьте актуальный перечень в GET /v1/providers, а алиасы каждого — в GET /v1/providers/{code}. См. Providers and Vendors.

language_unsupported — 409

Провайдер и язык существуют; пара зафиксирована как нерабочая.

409, а не 404, потому что оба названных ресурса реальны — отказано именно их комбинации, а вызывающий, вечно ретраящий тот же 404, делал бы неверный вывод.

Делайте: выберите другого провайдера для этого языка. GET /v1/languages/{code}/providers показывает, кто его возьмёт.

Info

/v1/resolve отдаёт это в теле Эндпоинт возвращает 200 с supported: false и code: null, а не бросает ошибку, так что вызывающий может залогировать пару и идти дальше без обработки исключений. Форма 409 появляется там, где неподдерживаемая пара — жёсткий сбой.

validation_error — 422

Некорректный запрос: неправильный тип, отсутствующий параметр или батч свыше 500 пар.

details.fields перечисляет каждую проблему с её расположением.

payload_too_large — 413

Тело свыше 256 КБ. Разбейте батч.

internal_error — 500

Необработанное исключение. Сообщение намеренно обобщённое: неожиданное исключение может нести DSN или строку данных, так что оно идёт в лог, а не к вам.

Делайте: один ретрай с бэкоффом, затем сообщите с X-Correlation-Id из заголовков вашего ответа.

service_unavailable — 503

От /health/ready, когда сервис не способен отвечать — база недоступна или каталог не загружен.

Делайте: ретрай с бэкоффом. Если у вас есть закешированный ответ — берите его; именно от этого случая кеш и защищает.

Далее