الأخطاء
شكلٌ واحدٌ ثابتٌ لكلّ خطأ، ورمزٌ قابلٌ للقراءة آلياً. وكلُّ ردٍّ يحمل رابطَه إلى هذه الصفحة وإلى موضعِ رمزِه فيها.
شكلُ الخطأ
error.code ولا تُحلّل النصّ.{
"error": {
"code": "quota_exceeded", // اقرأ هذا
"message": "تجاوزتَ حصّةَ المدّة.",
"message_en": "Subscription period quota exceeded.",
"doc_url": "https://nafarat.app/developers/errors#quota_exceeded",
"request_id": "req_8f3a…" // اذكره في أيّ بلاغ
}
}
"status": "no_route_found" ومصفوفةُ plans فارغة — لأنه جوابٌ حُسب لا عطلٌ وقع،
وتغطيتُنا معلَنةٌ سلفاً.
ولو جعلناه خطأً لأفسد كلَّ لوحةِ مراقبةٍ عندك. وهو يُحتسب من حصّتك لأننا حسبناه.
المصادقة HTTP 401
هذا المسار يتطلّب مفتاحَ وصول.
This endpoint requires an access key.
Authorization: Bearer nfr_live_… — أو X-Nafarat-Key. وتحقّق أن وكيلك (proxy) لا يحذف ترويسةَ المصادقة.مفتاحُ الوصول غيرُ صالح.
The supplied access key is not valid.
test بمفتاح live.مفتاحُ الوصول مُلغى.
This access key has been revoked.
الاشتراك HTTP 402
الاشتراكُ منتهٍ وانقضت مهلةُ السماح.
Your subscription has expired and the grace period has ended.
النطاق HTTP 403
أحدُ طرفَي الطلب خارجَ النطاق المشتَرك.
One endpoint of the request lies outside your subscribed scope.
point (أيُّ الطرفين) وpoint_governorate (أينَ يقع فعلاً) وsubscribed_governorates. وسّع نطاقَك أو صحّح النقطة.غيرُ موجود HTTP 404
لا خطَّ بهذا المعرّف في المحافظات المفعَّلة.
No such route in the active governorates.
GET /v1/routes، وأبطِل كاشَك حين يتغيّر X-Nafarat-Data-Version. وهذا الخطأ لا يُحتسب من حصّتك.صياغةُ الطلب HTTP 422
الطلبُ غيرُ صالحِ الصياغة.
The request is malformed.
fields وفيه اسمُ كلّ حقلٍ مرفوضٍ وسببُه. وهذا الخطأ لا يُحتسب من حصّتك.الحدود HTTP 429
تجاوزتَ السقفَ اللحظيّ للنداءات.
Per-second rate limit exceeded.
Retry-After — انتظرها ثمّ أعِد. وفي الإنتاج: طابورٌ عندك بمعدّلٍ ثابتٍ أفضلُ من إعادةٍ فوريّة.تجاوزتَ حصّةَ المدّة.
Subscription period quota exceeded.
X-Quota-Remaining في كلّ ردٍّ لتعرف قبل أن تصطدم، وX-Quota-Reset يذكر لحظةَ التصفير — وهي نهايةُ مدّة اشتراكك لا أوّلُ الشهر الميلاديّ.الواجهةُ مشغولةٌ لحظياً — أعِد المحاولة.
The platform is momentarily saturated; please retry.
Retry-After. وتكرارُه يعني أن تتواصل معنا.من عندنا HTTP 500
تعذّر حسابُ المسار.
The routing engine failed to compute a result.
request_id من الردّ — به نجد طلبَك بعينه في سجلّاتنا. وهذا الخطأ لا يُحتسب من حصّتك.التوقّف HTTP 503
الواجهةُ التجاريّةُ متوقّفةٌ مؤقّتاً.
The commercial API is temporarily disabled.
ما يُحتسب من حصّتك وما لا يُحتسب
| الحالة | يُحتسب؟ | لماذا |
|---|---|---|
| 200 مسارٌ وُجد | نعم | خدمةٌ أُدّيت |
200 no_route_found | نعم | جوابٌ حُسب، والتغطيةُ معلَنةٌ سلفاً |
| 4xx طلبٌ خاطئُ الصياغة | لا | لم نحسب شيئاً |
| 403 خارجَ النطاق | لا | رُفض قبل المحرّك |
| 429 تجاوزُ حدّ | لا | لم يُنفَّذ الطلب |
| 5xx خطأٌ من عندنا | لا | عطلُنا لا يُفوتَر عليك |