التتبع
لكل شحنة سجل أحداث زمني موحّد عبر جميع الناقلين: نفس الرموز ونفس الحقول مهما اختلف الناقل.
نقطة نهاية التتبع
اجلب أحداث شحنة عبر GET /api/v1/shipments/{id}/tracking. تعود الأحداث مرتبة من الأحدث إلى الأقدم، مع الحالة الراهنة للشحنة في الحقل status.
GET /api/v1/shipments/{id}/tracking
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 المطبوع على بوليصة الشحن.
لا تستطلع — استقبل
الاستطلاع الدوري لنقطة التتبع يستهلك حد الطلبات سريعًا مع نمو شحناتك. للاطلاع الفوري على كل تغيير حالة اشترك في الويبهوكس بدلًا من ذلك. إعداد الويبهوكس