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

التتبع

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

نقطة نهاية التتبع

اجلب أحداث شحنة عبر GET /api/v1/shipments/{id}/tracking. تعود الأحداث مرتبة من الأحدث إلى الأقدم، مع الحالة الراهنة للشحنة في الحقل status.

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

استجابة نموذجية

شحنة محلية في منتصف رحلتها:

{
  "tracking_number": "SRE0248817359",
  "status": "IN_TRANSIT",
  "events": [
    {
      "code": "IN_TRANSIT",
      "status_ar": "في الطريق",
      "status_en": "In transit",
      "location_ar": "الرياض",
      "location_en": "Riyadh",
      "occurred_at": "2026-07-26T21:10:00+03:00",
      "is_exception": false
    },
    {
      "code": "DEPARTED_ORIGIN",
      "status_ar": "غادرت بلد المنشأ",
      "status_en": "Departed origin",
      "location_ar": "الرياض",
      "location_en": "Riyadh",
      "occurred_at": "2026-07-26T18:40:00+03:00",
      "is_exception": false
    },
    {
      "code": "AT_ORIGIN_HUB",
      "status_ar": "وصلت إلى مركز الفرز في بلد المنشأ",
      "status_en": "Arrived at origin hub",
      "location_ar": "الرياض",
      "location_en": "Riyadh",
      "occurred_at": "2026-07-26T15:05:00+03:00",
      "is_exception": false
    },
    {
      "code": "PICKED_UP",
      "status_ar": "تم الاستلام من المرسل",
      "status_en": "Picked up",
      "location_ar": "الرياض",
      "location_en": "Riyadh",
      "occurred_at": "2026-07-26T13:30:00+03:00",
      "is_exception": false
    },
    {
      "code": "PICKUP_SCHEDULED",
      "status_ar": "تم جدولة الاستلام",
      "status_en": "Pickup scheduled",
      "location_ar": "الرياض",
      "location_en": "Riyadh",
      "occurred_at": "2026-07-26T10:00:00+03:00",
      "is_exception": false
    },
    {
      "code": "CREATED",
      "status_ar": "تم إنشاء الشحنة",
      "status_en": "Shipment created",
      "location_ar": "الرياض",
      "location_en": "Riyadh",
      "occurred_at": "2026-07-26T09:12:00+03:00",
      "is_exception": false
    }
  ]
}

حقول الحدث

الحقلالوصف
codeرمز الحالة الآلي من نموذج الحالات الموحّد
status_arوصف الحالة بالعربية — جاهز للعرض لعملائك
status_enوصف الحالة بالإنجليزية
location_arالموقع بالعربية
location_enالموقع بالإنجليزية
occurred_atوقت وقوع الحدث بصيغة ISO 8601
is_exceptionهل الحدث استثناء يعطل المسار الطبيعي
exception_typeنوع الاستثناء — يظهر فقط عندما يكون is_exception صحيحًا

أنواع الاستثناءات

عندما يكون is_exception صحيحًا يحدد الحقل exception_type نوع المشكلة. تعامل مع كل نوع كما يلي:

النوعالتسميةالتعامل المقترح
CUSTOMS_HOLDاحتجاز جمركيارفع المستندات الجمركية عبر POST /shipments/{id}/documents
ADDRESS_ISSUEمشكلة في العنوانحدّث عنوان الوجهة عبر PATCH /shipments/{id}/destination
WEIGHT_MISMATCHاختلاف في الوزنالوزن المقيس لدى الناقل يخالف المصرّح به؛ تُحدَّث الفوترة على الوزن الفعلي
FAILED_DELIVERY_ATTEMPTمحاولة تسليم فاشلةيعيد الناقل المحاولة؛ تأكد من رقم جوال المستلم وعنوانه
CARRIER_DELAYتأخير من الناقلتأخير تشغيلي ينحل تلقائيًا في العادة دون إجراء منك

صفحة التتبع العامة

لعملائك النهائيين صفحة تتبع عامة لا تحتاج مصادقة:

https://manfath.example/track/SRE0248817359

شارك الرابط في رسائل تأكيد الطلب، وهو نفسه الرابط الذي يشير إليه رمز QR المطبوع على بوليصة الشحن.

لا تستطلع — استقبل

الاستطلاع الدوري لنقطة التتبع يستهلك حد الطلبات سريعًا مع نمو شحناتك. للاطلاع الفوري على كل تغيير حالة اشترك في الويبهوكس بدلًا من ذلك. إعداد الويبهوكس