Перейти к содержимому

Ошибки

Любая ошибка — это документ problem по RFC 7807 со стабильным машиночитаемым кодом.

  1. Описание ошибки
  2. Коды, которые вам встретятся
  3. Безопасные повторы

Описание ошибки

Ответы с кодом не 2xx имеют тип application/problem+json и содержат status, title, detail, стабильный code (snake_case), необязательное поле field с именем ошибочного свойства запроса и traceId, который нужно указать при обращении в поддержку.

Пример
{
  "type": "https://dubaitrip.com/docs/api/errors#price_changed",
  "title": "Price changed",
  "status": 409,
  "detail": "The fare is now 412.50 USD (was 398.00 USD). Re-price and confirm.",
  "code": "price_changed",
  "traceId": "00-3f2a…"
}

Коды, которые вам встретятся

401 api_key_invalid, api_signature_invalid, api_timestamp_skew, api_nonce_reused, api_token_invalid — проблемы аутентификации. 403 api_scope_missing (у ключа нет нужного скоупа), api_ip_not_allowed, api_partner_suspended. 429 api_rate_limited, api_quota_exceeded. 400 validation_failed (с field). 404 search_session_not_found, order_not_found, booking_not_found. 409 offer_expired, rate_expired, price_changed. 402 insufficient_credit (только в продакшене — пополните депозит). 502 supplier_error — сбой у авиакомпании или отельного поставщика; повторите поиск.

Безопасные повторы

Повторяйте 429 после Retry-After, а 502/503/504 — с экспоненциальной задержкой. Никогда не повторяйте 4xx, кроме 429. Повторяйте подтверждающие операции (заказы, бронирования, выписку, отмену) только с тем же Idempotency-Key. Если сессия поиска истекла (404), начните новый поиск — ID предложений и ключи тарифов не действуют между сессиями.