انتقل إلى المحتوى

الأخطاء

كل إخفاق هو مستند مشكلة وفق 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)، فابدأ بحثًا جديدًا — معرّفات العروض ومفاتيح الأسعار غير صالحة عبر الجلسات.