تستخدم الأخطاء صيغة RFC 7807 وهي application/problem+json، فتكون متسقة وقابلة للقراءة آليا:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
{
"type": "https://docs.grem.capital/api/errors/validation",
"title": "validation",
"status": 400,
"detail": "totalArea (m2) is required",
"requestId": "req_…"
}
سجّل دائما قيمة requestId - واذكرها في طلبات الدعم لتتبع الاستدعاء.
رموز الحالة
| الحالة | المعنى | ماذا تفعل |
|---|---|---|
400 | خطأ في التحقق | صحح جسم الطلب أو معاييره وفق detail. |
401 | مفتاح غير صالح أو مفقود | تحقق من ترويسة Authorization. |
402 | رصيد أو حصة غير كافية | اشحن الرصيد أو ارفع الباقة. |
403 | نطاق مفقود | المفتاح غير مخوّل لهذه الأداة. |
404 | غير موجود | مسار خاطئ أو المورد غير موجود. |
409 | تعارض في الحياد التكراري | ما زال هناك طلب جار بالمفتاح Idempotency-Key نفسه. |
422 | قاعدة عمل | الطلب صالح لكن لا يمكن تنفيذه كما هو. |
429 | حد المعدل | انتظر ثم أعد المحاولة - انظر حدود المعدل. |
5xx | خطأ في الخدمة | عارض؛ أعد المحاولة بتراجع متزايد. |
الطلب المرفوض (4xx) لا يحتسب - فرسم الاستدعاء يؤخذ عند النجاح فقط.
التعامل مع الأخطاء
- تفرّع بحسب قيمة
statusالرقمية في HTTP لا بحسب نصdetailالمقروء. - أعد محاولة
429و5xxبتراجع أسي؛ ولا تعد محاولة4xx(عدا409بعد انتهاء الطلب الجاري). - ولا تتسرب تفاصيل المزودين في الأخطاء أبدا - إذ يظهر العطل بوصفه
provider_errorعاما.