تخطَّ إلى المحتوى

الحالة والدعم

كل فشل مُبلَّغ عنه تقريبًا واحد من خمسة أمور، ولكل منها بصمة يمكن تمييزها:

العَرَضالسبب المرجّحأين تبحث
401 unauthorized في نداء كان يعمل أمسمفتاح دُوِّر أو عُطِّل، أو الترويسة مفقودة في أحد مسارات الكودالمصادقة
402 insufficient_balanceرصيد أقل من الحجز اللازم لهذا الإرسالالحساب والرصيد
طلب واحد يعيد 200 دون أن يُحتسب شيءفشلت التركيبة كلها؛ وحالة HTTP ليست النتيجةالفوترة والاسترداد
الطلب نفسه ينجح ويفشل بالتبادلتحديد معدل، أو إعادة استخدام Idempotency-Key عبر حمولات مختلفةحدود المعدل، عدم التكرار
مهمة جماعية تبقى في processing ويتوقف last_progress_at عن التحركمهمة عالقة فعلًا، لا مهمة بطيئةحالة المهمة

حالة last_progress_at تستحق أن تُقال بوضوح: الإشارة إلى الفشل ليست الزمن المنقضي، بل طابع زمني متوقف. فمهمة من 500,000 صف قد تستغرق وقتًا طويلًا مشروعًا. أما المهمة التي لم يتحرك last_progress_at فيها فهي مهمة تستحق التصعيد.

ما يجب تضمينه في طلب الدعم

Section titled “ما يجب تضمينه في طلب الدعم”

كل حقل أدناه يعيده الـ API، أي أن تضمينه لا يكلّفك شيئًا ويوفّر عليك جولة:

ضمّنمن أين يأتي
request_idكل استجابة وقت فعلي، بما في ذلك حالات الفشل التي أعادت جسمًا
task_idكل إرسال جماعي وكل استجابة حالة مهمة
api_key_idGET /v1/api-key — يحدد المفتاح دون كشفه
حالة HTTP الدقيقة وجسم الاستجابةسجلاتك أنت؛ وحقل code خاصةً
طابع زمني بتوقيت UTC مع الثوانيسجلاتك أنت
الطلب الذي أرسلته، مع حجب المفتاحالكود الخاص بك

لا تلصق مفتاح API أبدًا في طلب دعم. فـ api_key_id يحدد المفتاح، والمفتاح نفسه يمنح وصولًا إلى رصيدك.

تظهر إشعارات مستوى الحساب — الصيانة المخططة، وتدهور السعة — في لوحة التحكم، وهي أيضًا حيث يقيم الرصيد والسجلات. ويكشف الـ API الظروف نفسها لتكاملك مباشرةً، كرموز أخطاء لا كنصوص:

الرمزماذا يعني لتكامل قيد التشغيل
detection_capacity_unavailableلا سعة الآن. تراجع وأعد المحاولة؛ ولم يُحتسب شيء.
realtime_route_unavailableلا مسار وقت فعلي متاح. تراجع وأعد المحاولة.
realtime_rate_limiter_unavailableمحدد المعدل نفسه معطّل، فلا يمكن تقرير القبول. أعد المحاولة لاحقًا.
realtime_fact_cache_unavailableإحدى تبعيات الوقت الفعلي معطّلة. أعد المحاولة لاحقًا.

هذه حالات 503 وكلها في مجموعة “انتظر ثم أعد المحاولة” — راجع رموز الأخطاء للتجميع الكامل، بما في ذلك أي حالات فشل آمنة لإعادة المحاولة بـ Idempotency-Key نفسه.

هناك حقيقتان تشغيليتان يمكن التحقق منهما من الخارج ويستحقان المعرفة قبل تسجيل حادثة:

  • يُقدَّم الـ API خلف Cloudflare، فمسار الشبكة وإنهاء TLS يشغّلهما Cloudflare لا مضيف مصدر واحد.
  • تحمل كل استجابة X-RateLimit-Remaining، فيستطيع العميل الذي يسجّل ترويسات الاستجابة التمييز بين “خنقني حدّي الخاص” و”الخدمة معطّلة” دون سؤال أحد. كما تحمل مجموعتا العام والفحص X-RateLimit-Limit على كل استجابة؛ أما الوقت الفعلي فلا، لأنه يستهلك حاوية رموز لا سقفًا ثابتًا لكل دقيقة.
  • رموز الأخطاء — مجموعات إعادة المحاولة، وهي أسرع جدول فرز
  • الأمان — التعامل مع المفتاح، وتدوير مفتاح، وما لا يجب إرساله أبدًا