Przejdź do treści

Błędy

Każdy błąd to dokument problem zgodny z RFC 7807 ze stabilnym kodem czytelnym maszynowo.

  1. Szczegóły problemu
  2. Kody, które napotkasz
  3. Bezpieczne ponawianie

Szczegóły problemu

Odpowiedzi inne niż 2xx mają typ application/problem+json i zawierają status, title, detail, stabilny code (snake_case), opcjonalne field wskazujące błędną właściwość żądania oraz traceId, który należy podać przy kontakcie z pomocą techniczną.

Przykład
{
  "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…"
}

Kody, które napotkasz

401 api_key_invalid, api_signature_invalid, api_timestamp_skew, api_nonce_reused, api_token_invalid — problemy z uwierzytelnianiem. 403 api_scope_missing (Twój klucz nie ma zakresu), api_ip_not_allowed, api_partner_suspended. 429 api_rate_limited, api_quota_exceeded. 400 validation_failed (z field). 404 search_session_not_found, order_not_found, booking_not_found. 409 offer_expired, rate_expired, price_changed. 402 insufficient_credit (tylko na produkcji — doładuj depozyt). 502 supplier_error — błąd po stronie linii lotniczej lub dostawcy hotelu; ponów wyszukiwanie.

Bezpieczne ponawianie

Ponawiaj 429 po czasie z Retry-After, a 502/503/504 z wykładniczym wycofaniem. Nigdy nie ponawiaj 4xx innych niż 429. Operacje zatwierdzające (zamówienia, rezerwacje, wystawienie, anulowanie) ponawiaj tylko z tym samym Idempotency-Key. Jeśli sesja wyszukiwania wygaśnie (404), rozpocznij nowe wyszukiwanie — ID ofert i klucze stawek nie są ważne między sesjami.