الأخطاء ورموز الحالة

الأخطاء بصيغة JSON، وبالشكل نفسه دائمًا، وتحمل دائمًا رمزًا ثابتًا مقروءًا آليًا. فرّع بحسب الرمز لا بحسب الرسالة.

الشكل

كل إخفاق يُرجع كائنًا يحوي error مقروءًا للبشر وcode ثابتًا. والرسالة مكتوبة لإنسان وقد تُعاد صياغتها؛ أما الرمز فالتزام ولن يتغيّر من تحتك.

{
  "error": "That file is larger than the 200 MB limit on your plan.",
  "code": "VALIDATION_FAILED"
}

رموز ينبغي أن تعالجها

الرمز‏HTTPالمعنى
NOT_AUTHENTICATED401رمز bearer مفقود أو مُشوَّه
FORBIDDEN403المفتاح صالح لكنه غير مخوَّل بهذا
NOT_ENTITLED402خطة الحساب لا تشمل الوصول إلى واجهة البرمجة
VALIDATION_FAILED400 / 413طلب خاطئ، أو تحويل غير مدعوم، أو ملف أكبر من اللازم
NOT_FOUND404لا توجد مهمة بهذا المعرّف، أو أنها تخص حسابًا آخر
RATE_LIMITED429بلغتَ الحد الساعي. انتظر ثم أعد المحاولة.
INTERNAL500حدث خلل من جانبنا. إعادة المحاولة آمنة.

ما الذي يستحق إعادة المحاولة

429 و500 يستحقان إعادة المحاولة مع تأخير — بتباعدٍ متزايد لا بحلقة متلاحقة، لأن المحاولات تُحتسب على حدّك الساعي كأي طلب آخر.

وما عدا ذلك نهائي لذلك الطلب. فإعادة محاولة 400 أو 402 أو 404 تُنتج الجواب نفسه وتستهلك حدّك لتكتشف ذلك.

502 أو 503 بلا متن JSON لم يأتِ من التطبيق — بل من الوسيط الذي أمامه، وهناك تستحق إعادة المحاولة دائمًا.