Skip to content

الأخطاء

تفرّع على statusMessage وstatusCode في HTTP، لا على error.message المترجم.

الغلاف

json
{
  "success": false,
  "statusCode": 400,
  "statusMessage": "VALIDATION_ERROR",
  "results": null,
  "error": {
    "message": "خطأ في التحقق",
    "data": []
  }
}

رسائل الحالة

statusMessageHTTPمتى
SUCCESS200نجاح عام
CREATED200أُنشئ المورد
UPDATED200طُبّق التعديل (إجراءات التجهيز)
DELETED200حُذف
DATA_LOADED200قائمة / قراءة
VALIDATION_ERROR400مخطط أو قاعدة عمل (بما فيها وضع الصيانة)
SLUG_TAKEN400تعارض اختصار فريد
OUT_OF_STOCK400السلة / الإنشاء
CART_EMPTY400الإنشاء أو إجراء السلة
INVALID_CREDENTIALS401كلمة مرور موظف أو OTP خاطئ
INVALID_TOKEN401رمز سيئ
TOKEN_EXPIRED401انتهت صلاحية OTP / الرمز
AUTHENTICATION_REQUIRED401غياب JWT العميل أو الموظف
UNAUTHENTICATED401رُفض JWT
FORBIDDEN403مصادق لكن غير مسموح
ACCESS_DENIED403صلاحية ناقصة (مثل orders:update)
RESOURCE_NOT_FOUND404معرّف مجهول
RESOURCE_EXISTS409تكرار
RATE_LIMITED429حد Redis
TOO_MANY_ATTEMPTS429تقييد OTP / الدخول
INTERNAL_ERROR500غير متوقع
SERVICE_UNAVAILABLE503اعتماد متوقف

إخفاقات المصادقة

الموقفالرمز المعتاد
مسار عميل بلا BearerAUTHENTICATION_REQUIRED / UNAUTHENTICATED
مسار موظف بلا Bearerنفسه
POST ملتقط/سائق بلا orders:updateACCESS_DENIED
واجهة دور خاطئما يزال 200 على /auth/me — اخفِ الشاشات باستخدام roleKey

المتجر مغلق

تعديلات /v1/cart و/v1/orders (POST) و/v1/account/wishlist أثناء وضع الصيانة ترجع VALIDATION_ERROR مع رسالة إغلاق مترجمة.

قائمة فحص العميل

  1. إن كان success === false اعرض error.message للمستخدم.
  2. إن كان statusCode === 401 في تطبيق العميل استدعِ POST /v1/auth/refresh مرة وأعد المحاولة. إن فشل التحديث أرسله إلى OTP.
  3. إن كان statusCode === 401 في الملتقط/السائق حدّث JWT الموظف مرة؛ إن فشل أرسله إلى دخول الموظف.
  4. أعد محاولة 429 بتراجع.
  5. بعد كل POST تجهيز أعد تحميل الطلب؛ لا تفترض الحالة المحلية.
  6. POST /v1/assistant/messages وGET /v1/notifications/sse هما SSE — حلّل أسطر event: / data: وليس غلاف JSON.