Skip to content

Коды ошибок ​

Формат ​

Все отказы приходят в одном виде, без исключений:

json
{
  "error": "terminal_offline",
  "message": "постамат не на связи",
  "detail": "последний раз выходил на связь 10.10.2026, 11:42",
  "request_id": "01JA7F3K9P2QWERTYUIOPASDFG"
}
ПолеДля кого
errorдля кода. По нему ветвитесь. Не меняется внутри v1
messageдля человека: короткое объяснение
detailдля человека: подробности. Есть не всегда
request_idдля нас: назовите его в письме, и мы найдём этот запрос

Разбирайте error, а не message: текст сообщения мы вправе улучшать, машинный код — нет.

HTTP-коды ​

КодСмысл
400тело запроса не прошло проверку
401ключ не передан, отозван либо неверен
403ключу не хватает уровня: read там, где нужен write
404своего такого нет (чужое тоже 404)
409состояние не позволяет: ячейка заблокирована, машина молчит
429превышена частота
500наша поломка — пришлите request_id
503связь с постаматами временно недоступна

Машинные коды ​

errorHTTPКогда и что делать
bad_request400Поле не прошло проверку. Что именно — в detail
unauthorized401Ключ не передан, отозван либо неверен. Проверьте заголовок Authorization: Bearer …
insufficient_scope403Ключ только на чтение. Для открытия ячеек нужен ключ с правом записи
terminal_not_found404Постамата с таким кодом нет либо он принадлежит другой компании
cell_not_found404Ячейки с таким номером нет у этого постамата
command_not_found404Команды нет либо она принадлежит другой компании
cell_locked409Ячейка заблокирована оператором. Причина в detail
cell_service409Ячейка служебная: открывается только нашим оператором
terminal_offline409Постамат не на связи. Время последней связи в detail
rate_limited429Превышена частота. Сколько ждать — в заголовке Retry-After
broker_unavailable503Связь с постаматами временно недоступна. Повторите позже
internal500Наша поломка. Пришлите request_id на info@tetrabox.ru

Ещё два кода — not_found и conflict — приходят редко: это запасные значения для случаев, которым не назначен свой код. Обрабатывайте их так же, как 404 и 409 соответственно.

Что повторять, а что нет ​

Повторять можно (ошибка временная):

  • 429 — через Retry-After секунд;
  • 503 — с задержкой, увеличивая её: 5 с, 30 с, 2 мин;
  • 500 — один раз, затем писать нам.

Повторять бесполезно (не изменится само):

  • 400, 401, 403, 404 — запрос надо исправить;
  • cell_service — эта ячейка не откроется никогда.

Особый случай — terminal_offline. Машина может вернуться на связь через минуту, а может стоять обесточенной до приезда человека. Бесконечно повторять нельзя: показывайте человеку, что постамат недоступен, и дайте кнопку повторить вручную.

Проверка ввода ​

При 400 в detail перечислены все претензии через точку с запятой:

json
{
  "error": "bad_request",
  "message": "в запросе есть ошибки",
  "detail": "ttl_seconds must not be greater than 300",
  "request_id": "01JA7F3K9P2QWERTYUIOPASDFG"
}

Лишние поля в теле — тоже ошибка. Если прислать поле, которого нет в описании метода, запрос будет отклонён: property мусор should not exist. Это защита от опечаток в названиях полей — молча проигнорированное поле хуже отказа, потому что приложение будет думать, что передало значение.

Вопросы по интеграции: info@tetrabox.ru