دليل واجهة القنوات
الأخطاء وإعادة المحاولة
صيغة الخطأ
{ "error": { "code": "NOT_AVAILABLE", "message": "Not enough free cabins", "details": {} } }
اعتمد في منطقك على code، ولا تعتمد أبدًا على message.
| HTTP | الرموز |
|---|---|
| 400 | VALIDATION_FAILED: الطلب لا يطابق العقد التقني (بما في ذلك الحقول غير المعروفة) |
| 401 | UNAUTHENTICATED: احصل على token جديد |
| 403 | CONTRACT_FORBIDS، FORBIDDEN |
| 404 | NOT_FOUND، وكذلك للحجوزات المؤقتة والحجوزات الخاصة بقناة أخرى |
| 409 | NOT_AVAILABLE، STOP_SALE، SAILING_CLOSED، HOLD_EXPIRED، HOLD_NOT_ACTIVE، QUOTE_EXPIRED، REVISION_CHANGED، INVALID_STATE، RETRY_LATER، IN_PROGRESS |
| 422 | INVALID_OCCUPANCY، NO_RATE_FOR_SEASON، IDEMPOTENCY_KEY_REUSED |
| 429 | RATE_LIMITED |
| 503 | SERVICE_UNAVAILABLE |
مفاتيح منع التكرار (Idempotency-Key)
يحتاج كل طلب POST وPATCH وDELETE إلى header باسم Idempotency-Key. استخدم UUID جديدًا لكل إجراء، والقيمة نفسها عند إعادة محاولة ذلك الإجراء. يحتفظ ريفرديسك بالمفاتيح لمدة ٧ أيام ويُعيد النتيجة الأصلية عند التكرار.
| الحالة | ما يجب فعله |
|---|---|
| انتهاء المهلة أو خطأ في الشبكة أثناء عملية كتابة | أعد المحاولة بالمفتاح نفسه: تحصل على النتيجة الأصلية، ولن يُنشأ حجز ثانٍ أبدًا |
409 IN_PROGRESS |
محاولتك الأولى ما زالت قيد التنفيذ. انتظر عدد الثواني المحدد في Retry-After، ثم أعد المحاولة بالمفتاح نفسه |
422 IDEMPOTENCY_KEY_REUSED |
المفتاح نفسه مع محتوى مختلف. هذا خطأ برمجي: استخدم مفتاحًا جديدًا لكل إجراء |
| إعادة المحاولة بعد أكثر من ٧ أيام | أكّد أو اطلب مرة أخرى بالقيمة نفسها لـ channel_ref: يُعاد الحجز الموجود |
409 RETRY_LATER |
ضغط شديد على النظام. أعد المحاولة بعد Retry-After |
429 RATE_LIMITED |
انتظر عدد الثواني المحدد في Retry-After |
503 SERVICE_UNAVAILABLE |
لا يستطيع ريفرديسك الوصول إلى قاعدة بياناته. اعرض الإبحارات على أنها عند الطلب، وأعد المحاولة بعد Retry-After (٣٠ ثانية) |