محتويات الوثائق

المصادقة

كل طلب إلى واجهة منفذ يُصادق عليه بمفتاح فريقك عبر ترويسة Authorization بأسلوب Bearer.

مفتاح API

لكل فريق مفتاح واحد يبدأ بالبادئة mnf_live_ متبوعة بسلسلة سداسية عشرية. تجده في لوحة تحكم فريقك.

أرسل المفتاح في كل طلب ضمن الترويسة:

Authorization: Bearer mnf_live_9f2c4a7d1e8b3f6c5a0d9e2b

المفتاح سرّ

عامل المفتاح كما تعامل كلمة مرور: خزّنه في متغيرات البيئة أو مدير أسرار، ولا تضعه في كود الواجهة الأمامية أو مستودعات الشيفرة.

جرّب أول طلب

أبسط طلب موقّع هو قائمة الناقلين:

curl -s "https://manfath.example/api/v1/carriers" \
  -H "Authorization: Bearer $MANFATH_API_KEY"

عنوان البيئة

استبدل manfath.example بعنوان بيئة الورشة الذي زوّدك به المدرب. جميع الأمثلة في هذه الوثائق تستخدم المتغير MANFATH_API_KEY لتفادي كتابة المفتاح في الشيفرة.

تدوير المفاتيح

إن اشتبهت بتسرب المفتاح فاطلب تدويره من لوحة التحكم. يدعم منفذ مفتاحًا ثانويًا يعمل بالتوازي مع الأساسي خلال فترة الانتقال، فتحدّث أنظمتك تدريجيًا دون انقطاع ثم تلغي المفتاح القديم.

حدود الطلبات

الحد 60 طلبًا في الدقيقة لكل مفتاح. عند التجاوز تعيد الواجهة 429 مع ترويسة Retry-After التي تخبرك بعدد الثواني قبل إعادة المحاولة.

تصاحب كل استجابة ترويسات تساعدك على البقاء تحت الحد:

Headerالوصف
X-RateLimit-Limitالحد الأقصى للطلبات في النافذة الحالية
X-RateLimit-Remainingعدد الطلبات المتبقية في النافذة
Retry-Afterعلى استجابات 429: ثوانٍ قبل إعادة المحاولة
X-Manfath-Request-Idمعرّف فريد للطلب — سجّله وأرفقه عند التواصل مع الدعم

غلاف الأخطاء

جميع الأخطاء — من أي نقطة نهاية — تعود بالغلاف الموحّد نفسه، برسالة بالعربية وأخرى بالإنجليزية وحقل details اختياري بتفاصيل آلية:

{
  "error": {
    "code": "E_UNAUTHENTICATED",
    "message_en": "Missing or invalid API key. Send Authorization: Bearer mnf_live_...",
    "message_ar": "مفتاح API مفقود أو غير صالح. أرسل Authorization: Bearer mnf_live_...",
    "details": null
  }
}

أشهر الرموز التي ستقابلها:

الرمزHTTPالوصف
E_UNAUTHENTICATED401مفتاح API مفقود أو غير صالح
E_VALIDATION422فشل التحقق من صحة الطلب
E_NOT_FOUND404المورد غير موجود
E_QUOTE_EXPIRED409انتهت صلاحية التسعيرة
E_ADDRESS_NOT_NORMALISED422العنوان غير مطابق للعنوان الوطني
E_CANCEL_NOT_ALLOWED409لا يمكن الإلغاء بعد الاستلام
E_RATE_LIMITED429تم تجاوز حد الطلبات
E_CARRIER_UNAVAILABLE503الناقل غير متاح مؤقتًا

التالي

أول تسعيرة: مسار الرياض → دبي