Ошибки и коды ответов
Обновлено: 2026-06-24 17:30 MSK
API использует стандартные HTTP-коды ответа. Тело ошибки — в формате ProblemDetails (RFC 7807, стандарт ASP.NET Core).
HTTP-коды
| Код | Значение | Когда |
|---|---|---|
200 OK | Успех | Запрос выполнен, тело содержит результат |
201 Created | Создано | Ресурс создан |
400 Bad Request | Ошибка валидации | Некорректное тело/параметры запроса |
401 Unauthorized | Не аутентифицирован | Токен отсутствует, истёк или недействителен |
402 Payment Required | Требуется оплата | Действие недоступно на текущем тарифе/балансе |
403 Forbidden | Нет прав | Нет доступа к ресторану или действию |
404 Not Found | Не найдено | Ресурс с таким идентификатором отсутствует |
409 Conflict | Конфликт | Дубликат / конфликт состояния (например, повторное создание) |
410 Gone | Истекло | Ресурс/код больше недействителен |
423 Locked | Заблокировано | Ресурс временно заблокирован |
429 Too Many Requests | Слишком часто | Превышен лимит запросов — нужен бэкофф |
503 Service Unavailable | Недоступно | Временная недоступность — повторить позже |
Формат тела ошибки
Ответ с ошибкой — объект ProblemDetails:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"detail": "Описание проблемы",
"instance": "/api/rsv/admin/restaurants/123/reservations"
}
| Поле | Тип | Описание |
|---|---|---|
type | string | Ссылка на тип проблемы |
title | string | Краткое название ошибки |
status | integer | HTTP-код |
detail | string | Детальное описание (если есть) |
instance | string | Путь запроса, вызвавшего ошибку |
Объект допускает дополнительные поля (additionalProperties) — например, при ошибках валидации может присутствовать словарь errors с разбивкой по полям.
Рекомендации по обработке
401— получите новый токен и повторите запрос. Не считайте401за «ресурс не найден».403— проверьте, что учётная запись имеет доступ к данномуrestaurantId.400— читайтеdetail/errors; чините запрос, не повторяйте его «как есть».404— проверьте идентификаторы в пути (особенно строковые ID брони/гостя).409— вероятен дубль; перед повтором проверьте, не создан ли ресурс (GET).429/503— повторяйте с экспоненциальной задержкой (backoff), а не сразу.
Повторные попытки (retry)
| Код | Повторять? | Как |
|---|---|---|
429, 503 | Да | Экспоненциальный бэкофф (например, 1s → 2s → 4s), с ограничением попыток |
5xx (прочие) | Осторожно | Только идемпотентные GET; для POST — сначала проверить, не создалось ли |
400, 401, 403, 404, 409 | Нет | Это ошибки запроса/прав — повтор без изменений не поможет |
При повторе POST-запросов на создание убедитесь, что не создаёте дубликат — см. Соглашения → Идемпотентность.