للمطوّرين
وثائق B2B API
واجهة B2B API خلف nwp.ae: سعّر واحجز لعملائك بالسعر الصافي، وأصدر القسائم، وأدِر مكتب فندق ونقل الشركات وبرامج شركات إدارة الوجهات، مع أسعارك وكشوف حسابك وفواتيرك في المكان نفسه. وصول مبكر: مفاتيح الاختبار تردّ ببيانات اختبارية موسومة، والمفاتيح الفعلية تُصدر عند الاعتماد.
الحالةوصول مبكر · بيئة الاختبار فقط
تفحص بيئة الاختبار الطلبات الحقيقية وفق المخطط الحقيقي وتردّ ببيانات اختبارية. لا يُحجز شيء، ولا تُحجز أي مركبة، ولا يُعاد أي سعر. لا تتضمن بيئة الاختبار أي التزام بمستوى الخدمة، وتُصدر مفاتيح الإنتاج للشركاء المعتمدين عند فتح واجهة API.
طلب وصول مبكرنظرة عامة
JSON عبر HTTPS. أرسلوا Content-Type: application/json. كل رد بصيغة JSON ويحمل ترويسة x-request-id لذكرها لمكتب الوكالات؛ كما تحمل ردود بيئة الاختبار x-nwp-environment: sandbox.
| عنوان URL الأساسي | — |
|---|---|
| بيئة الاختبار | https://nwp.ae/api/b2b/sandbox |
| بيئة الإنتاج | https://nwp.ae/api/b2b/v1غير متاحة بعد · يتطلب مفتاحاً فعلياً — يُصدر عند الموافقة |
واجهة B2B API v1
واجهة برمجية واحدة لكل ما يقوم به الحساب: النقل البري والجولات والأنشطة مسعّرة وفق شروطك التجارية (سعر صافٍ أو عمولة أو تعرفة)، وحجوزات عملائك، والقسائم ولوحات الأسماء، ومكتب الفندق، ونقل الشركات، وبرامج شركات إدارة الوجهات، وأداة الحجز، والمستخدمون، والإشعارات، وكشوف الحساب والفواتير. مفاتيح الاختبار (nwp_test_…) متاحة للمتقدمين: تجيب على كل نقطة ببيانات تجريبية موسومة sandbox: true ولا تحجز أبداً ولا تغيّر حسابك. المفاتيح الفعلية (nwp_live_…) تُصدر عند الموافقة، وتعمل بعد أن تفعّل NWP الوصول الفعلي لحسابك. كل طلب POST يقبل Idempotency-Key، وكل رد يحمل x-request-id، ولكل مفتاح حدّه في الدقيقة.
مستند OpenAPI 3.1: /api/b2b/v1/openapi.json
النقل البري
POST/api/b2b/v1/transport/quoteالتسعير وفق شروطك
النطاق:
transport:readPOST/api/b2b/v1/transport/bookingsالحجز
النطاق:
transport:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/transport/bookings/{id}حالة الحجز وشروط الإلغاء
النطاق:
transport:readPOST/api/b2b/v1/transport/bookings/{id}/cancelالإلغاء وفق السياسة
النطاق:
transport:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/transport/bookings/{id}/voucherقسيمة باسمك التجاري (HTML أو PDF)
النطاق:
transport:read
الجولات والأنشطة
GET/api/b2b/v1/activities/productsالمنتجات المعروضة، للشخص أو للمركبة
النطاق:
activities:readGET/api/b2b/v1/activities/products/{id}/availabilityالتوافر يوماً بيوم
النطاق:
activities:readPOST/api/b2b/v1/activities/quoteالتسعير وفق شروطك
النطاق:
activities:readPOST/api/b2b/v1/activities/bookingsالحجز
النطاق:
activities:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/activities/bookings/{id}حالة الحجز وشروط الإلغاء
النطاق:
activities:readPOST/api/b2b/v1/activities/bookings/{id}/cancelالإلغاء وفق السياسة
النطاق:
activities:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/activities/bookings/{id}/voucherقسيمة باسمك التجاري (HTML أو PDF)
النطاق:
activities:read
الرحلات البحرية
GET/api/b2b/v1/cruise/sailingsالرحلات
النطاق:
cruise:readغير متاح بعد: يجيب 501 حتى يُربط مزوّد رحلات بحريةPOST/api/b2b/v1/cruise/quoteالتسعير وفق شروطك
النطاق:
cruise:readغير متاح بعد: يجيب 501 حتى يُربط مزوّد رحلات بحريةPOST/api/b2b/v1/cruise/bookingsالحجز
النطاق:
cruise:writeغير متاح بعد: يجيب 501 حتى يُربط مزوّد رحلات بحريةGET/api/b2b/v1/cruise/bookings/{id}حالة الحجز وشروط الإلغاء
النطاق:
cruise:readغير متاح بعد: يجيب 501 حتى يُربط مزوّد رحلات بحريةPOST/api/b2b/v1/cruise/bookings/{id}/cancelالإلغاء وفق السياسة
النطاق:
cruise:writeغير متاح بعد: يجيب 501 حتى يُربط مزوّد رحلات بحرية
أدلة الترحيب
GET/api/b2b/v1/guides/propertiesعقاراتك
النطاق:
guides:readPOST/api/b2b/v1/guides/propertiesإضافة عقار
النطاق:
guides:writeGET/api/b2b/v1/guides/properties/{id}دليل العقار ورابطه وملفاته
النطاق:
guides:readPATCH/api/b2b/v1/guides/properties/{id}تعديل عقار
النطاق:
guides:writePOST/api/b2b/v1/guides/properties/{id}/statusإيقاف دليل أو استئنافه
النطاق:
guides:writePOST/api/b2b/v1/guides/properties/{id}/linkاستبدال رابط الضيوف
النطاق:
guides:writeGET/api/b2b/v1/guides/properties/{id}/wifiقراءة بيانات الواي فاي
النطاق:
guides_wifi:readPOST/api/b2b/v1/guides/properties/{id}/wifiضبط الواي فاي
النطاق:
guides_wifi:writeGET/api/b2b/v1/guides/properties/{id}/qrرمز QR (PNG أو SVG)
النطاق:
guides:readGET/api/b2b/v1/guides/properties/{id}/cardبطاقة للطباعة (PDF أو HTML)
النطاق:
guides:readGET/api/b2b/v1/guides/statsالمسح والمشاهدات والحجوزات وحصتك
النطاق:
guides:read
الحساب
GET/api/b2b/v1/whoamiفحص المفتاح
النطاق:
account:readGET/api/b2b/v1/openapi.jsonهذه الواجهة بصيغة OpenAPI 3.1
المسوّقون بالعمولة
GET/api/b2b/v1/affiliate/statsإحصاءات فترة محددة: النقرات والحجوزات ومعدل التحويل والأرباح
النطاق:
affiliate:readGET/api/b2b/v1/affiliate/linksروابط التتبع الخاصة بك، مع رموز QR
النطاق:
affiliate:readPOST/api/b2b/v1/affiliate/linksإنشاء رابط تتبع مع معلمات UTM
النطاق:
affiliate:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/affiliate/links/{code}/qrرمز QR لرابط (SVG أو PNG)
النطاق:
affiliate:readGET/api/b2b/v1/affiliate/performanceالنقرات والحجوزات والأرباح لكل رابط
النطاق:
affiliate:readGET/api/b2b/v1/affiliate/payoutsرصيد المستحقات وطلبات الصرف
النطاق:
affiliate:readPOST/api/b2b/v1/affiliate/payoutsطلب صرف المستحقات، ويُرسل بتحويل مصرفي
النطاق:
affiliate:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/affiliate/payouts/{reference}/cancelالتراجع عن طلب صرف
النطاق:
affiliate:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/affiliate/bank-detailsحفظ البيانات المصرفية (تُرسل فقط ولا تُعاد أبداً)
النطاق:
affiliate:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/affiliate/widgetإعدادات الأداة ومقتطفها البرمجي
النطاق:
affiliate:readPOST/api/b2b/v1/affiliate/widgetإعداد أداة الحجز
النطاق:
affiliate:writeيتطلب مفتاحاً فعلياً — يُصدر عند الموافقة
حجوزات عملائك
POST/api/b2b/v1/bookings/quoteالتسعير وفق شروطك
النطاق:
bookings:createPOST/api/b2b/v1/bookingsالحجز
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/bookingsالقائمة
النطاق:
bookings:viewGET/api/b2b/v1/bookings/creditedالحجوزات المحتسبة لحسابك
النطاق:
bookings:viewGET/api/b2b/v1/bookings/{ref}التفاصيل
النطاق:
bookings:viewPOST/api/b2b/v1/bookings/{ref}/cancelالإلغاء وفق السياسة
النطاق:
bookings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/bookings/{ref}/amendmentsطلب تعديل من مكتب الوكالات
النطاق:
bookings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/bookings/{ref}/brandعلامتك التجارية، أو بلا علامة، على مستنداته
النطاق:
bookings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/bookings/{ref}/voucherقسيمة باسمك التجاري (HTML أو PDF)
النطاق:
bookings:viewGET/api/b2b/v1/bookings/{ref}/name-boardلوحة الاسم التي يحملها السائق (HTML)
النطاق:
bookings:viewGET/api/b2b/v1/requestsطلبات التعديل والخدمة، مع ردود المكتب
النطاق:
bookings:viewPOST/api/b2b/v1/requests/{id}/withdrawسحب طلب مفتوح
النطاق:
bookings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقة
مكتب الفندق
POST/api/b2b/v1/desk/salesالبيع السريع من المكتب
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/desk/days/{date}مبيعات يوم، أو تسويته بصيغة CSV أو PDF
النطاق:
statements:readPOST/api/b2b/v1/desk/days/{date}/closeإقفال اليوم وتثبيت تسويته
النطاق:
statements:readيتطلب مفتاحاً فعلياً — يُصدر عند الموافقة
نقل الشركات
GET/api/b2b/v1/corporate/cost-centresالقائمة
النطاق:
bookings:viewPOST/api/b2b/v1/corporate/cost-centresالإنشاء أو التعديل
النطاق:
settings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/corporate/cost-centres/{id}/approversالإنشاء أو التعديل
النطاق:
settings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/corporate/requestsالقائمة
النطاق:
bookings:viewPOST/api/b2b/v1/corporate/requestsالحجز
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/corporate/requests/{id}/decisionالموافقة أو الرفض
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/corporate/shuttlesالقائمة
النطاق:
bookings:viewPOST/api/b2b/v1/corporate/shuttlesالإنشاء أو التعديل
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/corporate/shuttles/{id}/statusتغيير الحالة
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/corporate/shuttles/{id}/scheduleجدولة رحلات شهر
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/corporate/shuttles/{id}/repriceاعتماد سعر اتُّفق عليه حديثاً
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/corporate/usageالاستخدام حسب مركز التكلفة (JSON أو CSV)
النطاق:
statements:read
برامج DMC
GET/api/b2b/v1/dmc/programmesالقائمة
النطاق:
bookings:viewPOST/api/b2b/v1/dmc/programmesالإنشاء أو التعديل
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/dmc/programmes/{id}التفاصيل
النطاق:
bookings:viewPOST/api/b2b/v1/dmc/programmes/{id}/versionsحفظ نسخة مسعّرة
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/dmc/programmes/{id}/statusتغيير الحالة
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/dmc/programmes/{id}/brandعلامتك التجارية، أو بلا علامة، على مستنداته
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/dmc/programmes/{id}/acceptقبول نسخة وحجزها
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/dmc/programmes/{id}/proposalعرض للعميل (HTML)
النطاق:
bookings:viewPOST/api/b2b/v1/dmc/programmes/{id}/linksإصدار رابط للعميل محدد المدة
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةGET/api/b2b/v1/dmc/programmes/{id}/linksروابط العملاء ومن قبِلها
النطاق:
bookings:viewPOST/api/b2b/v1/dmc/programmes/{id}/links/{link}/revokeإلغاء رابط عميل
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقة
الأسعار وطلبات عروض الأسعار
GET/api/b2b/v1/rates/catalogueالكتالوج بأسعارك (JSON أو CSV أو PDF)
النطاق:
rates:viewGET/api/b2b/v1/rates/sheetجدول أسعار الخدمات
النطاق:
rates:viewPOST/api/b2b/v1/quote-requestsإرسال طلب عرض سعر
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/wholesale-requestsطلب سعة من المركبات
النطاق:
bookings:createيتطلب مفتاحاً فعلياً — يُصدر عند الموافقة
أداة الحجز
GET/api/b2b/v1/widgetإعدادات الأداة ومقتطفها البرمجي
النطاق:
tracking:viewPOST/api/b2b/v1/widgetتعديل الأداة
النطاق:
tracking:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقة
المستخدمون
GET/api/b2b/v1/usersالقائمة
النطاق:
users:viewPOST/api/b2b/v1/usersدعوة شخص
النطاق:
users:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/users/{id}/roleتغيير دور شخص
النطاق:
users:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/users/{id}/deactivateإيقاف وصول شخص
النطاق:
users:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/users/{id}/reactivateاستعادة وصول شخص
النطاق:
users:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقة
الإشعارات
GET/api/b2b/v1/inboxإشعارات تخص حسابك
النطاق:
inbox:view
كشوف الحساب والفواتير
GET/api/b2b/v1/statementsكشوف الحساب والرصيد والفواتير المفتوحة
النطاق:
statements:readGET/api/b2b/v1/statements/{period}كشف حساب شهر واحد (JSON أو PDF)
النطاق:
statements:readGET/api/b2b/v1/invoices/{id}فاتورة واحدة (JSON أو PDF)
النطاق:
statements:read
إعدادات الحساب
GET/api/b2b/v1/settingsبيانات الحساب وجهات الاتصال وبريد الفواتير
النطاق:
settings:viewPOST/api/b2b/v1/settings/billing-emailتحديد بريد الفواتير
النطاق:
settings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/settings/contactsإضافة جهة اتصال أو تعديلها
النطاق:
settings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/settings/contacts/{id}/removeحذف جهة اتصال
النطاق:
settings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقةPOST/api/b2b/v1/settings/brandعلامتك التجارية، أو بلا علامة، على مستنداته
النطاق:
settings:manageيتطلب مفتاحاً فعلياً — يُصدر عند الموافقة
curl -X POST 'https://nwp.ae/api/b2b/v1/transport/quote' \
-H 'Authorization: Bearer nwp_test_…' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: 7f1c2b0e-quote-1' \
-d '{"airport":"dxb","terminal":"t3","direction":"from_airport","place":"downtown","vehicle":"vclass","pickup_date":"2026-11-02","pickup_time":"14:30","passengers":3,"bags":3}'المصادقة
كل استدعاء لبيئة الاختبار يتطلب رمز مصادقة (bearer token). تُصدره مصافحة المطوّر: رمز بصيغة JWT يبدأ بـ nwp_sandbox_، صالح لمدة 30 يوماً، ولا يفتح إلا البيانات الاختبارية.
1طلب رمز لبيئة الاختبار
curl -X POST https://nwp.ae/api/b2b/orchestration \
-H 'Content-Type: application/json' \
-d '{
"action": "developer_handshake",
"platform_name": "Example Travel App",
"contact_email": "developers@example.com",
"use_case": "transfers"
}'{
"environment": "sandbox",
"status": "early-access",
"test_data": true,
"token_type": "Bearer",
"token": "nwp_sandbox_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImVudiI6InNhbmRib3gifQ…",
"expires_at": "2026-10-31T08:00:00.000Z",
"scopes": [
"sandbox:transfers.quote",
"sandbox:availability.read"
],
"endpoints": [
{
"method": "POST",
"url": "https://nwp.ae/api/b2b/sandbox/transfers"
},
{
"method": "GET",
"url": "https://nwp.ae/api/b2b/sandbox/availability"
},
{
"method": "GET",
"url": "https://nwp.ae/api/b2b/sandbox/status"
}
],
"production": {
"status": "not_open",
"request_access": "https://nwp.ae/register?type=institutional"
}
}2استدعاء بيئة الاختبار باستخدامه
curl -X POST https://nwp.ae/api/b2b/sandbox/transfers \
-H 'Authorization: Bearer nwp_sandbox_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImVudiI6InNhbmRib3gifQ…' \
-H 'Content-Type: application/json' \
-d @transfer.jsonطلب النقل
أرسلوا الحقول أدناه إلى نقطة نهاية النقل في بيئة الاختبار. أسماء الحقول جزء من واجهة API وتبقى بالإنجليزية في كل اللغات.
pickup_locationإلزامي{ type: "airport" | "coordinates" | "hotel", … }مكان استقبال الراكب: مبنى ركاب في المطار (DXB_T1, DXB_T2, DXB_T3, DWC, SHJ)، أو إحداثيات داخل الإمارات، أو مرجع فندق.
dropoff_locationإلزامي{ type: "hotel" | "coordinates" | "airport", … }المكان الذي يُنقل إليه الراكب: نص مرجعي للفندق (رمز الفندق لديكم أو اسم الفندق)، أو إحداثيات، أو مبنى ركاب في المطار.
flight_numberمشروطstringالرحلة القادمة، مثل EK202. يُضبط موعد الاستقبال على موعد الهبوط المجدول للرحلة.
pickup_atمشروطstring (ISO 8601)بصيغة ISO 8601 مع فارق التوقيت. إلزامي عندما لا يكون الاستقبال من مطار، أو عندما لا يكون لاستقبال المطار رقم رحلة.
buffer_minutes_overrideاختياريintegerالانتظار المجاني بعد الهبوط، بالدقائق، من 0 إلى 180. القيمة الافتراضية 60: وهي مدة الانتظار المجاني التي يمنحها موقع النقل التابع للمجموعة لكل وصول.
vehicle_classإلزاميenumإحدى القيم: VIP_V_CLASS أو EXECUTIVE_SEDAN أو LUXURY_COACH.
passengersاختياريintegerيُرفض إذا تجاوز عدد مقاعد الفئة.
client_metadataاختياريobjectتفاصيل العلامة البيضاء لقسيمة المسافر: agency_name و logo_url (عبر https فقط) و voucher_branding و agency_reference.
| الحقل | النوع | إلزامي | الوصف |
|---|---|---|---|
pickup_location | { type: "airport" | "coordinates" | "hotel", … } | إلزامي | مكان استقبال الراكب: مبنى ركاب في المطار (DXB_T1, DXB_T2, DXB_T3, DWC, SHJ)، أو إحداثيات داخل الإمارات، أو مرجع فندق. |
dropoff_location | { type: "hotel" | "coordinates" | "airport", … } | إلزامي | المكان الذي يُنقل إليه الراكب: نص مرجعي للفندق (رمز الفندق لديكم أو اسم الفندق)، أو إحداثيات، أو مبنى ركاب في المطار. |
flight_number | string | مشروط | الرحلة القادمة، مثل EK202. يُضبط موعد الاستقبال على موعد الهبوط المجدول للرحلة. |
pickup_at | string (ISO 8601) | مشروط | بصيغة ISO 8601 مع فارق التوقيت. إلزامي عندما لا يكون الاستقبال من مطار، أو عندما لا يكون لاستقبال المطار رقم رحلة. |
buffer_minutes_override | integer | اختياري | الانتظار المجاني بعد الهبوط، بالدقائق، من 0 إلى 180. القيمة الافتراضية 60: وهي مدة الانتظار المجاني التي يمنحها موقع النقل التابع للمجموعة لكل وصول. |
vehicle_class | enum | إلزامي | إحدى القيم: VIP_V_CLASS أو EXECUTIVE_SEDAN أو LUXURY_COACH. |
passengers | integer | اختياري | يُرفض إذا تجاوز عدد مقاعد الفئة. |
client_metadata | object | اختياري | تفاصيل العلامة البيضاء لقسيمة المسافر: agency_name و logo_url (عبر https فقط) و voucher_branding و agency_reference. |
{
"pickup_location": {
"type": "airport",
"terminal": "DXB_T3"
},
"dropoff_location": {
"type": "hotel",
"hotel_ref": "EXAMPLE-HOTEL-DOWNTOWN"
},
"flight_number": "EK202",
"buffer_minutes_override": 60,
"vehicle_class": "VIP_V_CLASS",
"passengers": 4,
"client_metadata": {
"agency_name": "Example Travel",
"logo_url": "https://example.com/logo.png",
"voucher_branding": {
"mode": "white_label",
"accent_hex": "#0A0A0A"
},
"agency_reference": "EX-10442"
}
}فئات المركبات
| الفئة | المركبة | المقاعد |
|---|---|---|
VIP_V_CLASS | Mercedes-Benz V-Class or similar | 7 |
EXECUTIVE_SEDAN | Lexus ES 350 or a similar executive saloon | 3 |
LUXURY_COACH | Toyota Coaster or King Long coach | 30 |
تُستأجر كل مركبة مع سائقها المرخّص للمهمة؛ وتحدد الفئة نوع المركبة وعدد مقاعدها.
الرد
يعيد عرض السعر في بيئة الاختبار الطلبَ نفسه ويضيف كيفية توقيت الاستقبال وكيفية وسم القسيمة بالعلامة التجارية. ولا يتضمن أي سعر أبداً.
{
"environment": "sandbox",
"test_data": true,
"notice": "Sandbox response: test data only. Nothing is booked, no vehicle is held and no price is quoted. Production is not open yet.",
"quote_id": "SBX-WT5PCXWF",
"status": "sandbox_accepted",
"vehicle": {
"class": "VIP_V_CLASS",
"description": "Mercedes-Benz V-Class or similar",
"max_passengers": 7
},
"passengers": 4,
"pickup": {
"location": {
"type": "airport",
"terminal": "DXB_T3"
},
"timing": {
"mode": "flight_landing",
"flight_number": "EK202",
"driver_ready": "at the scheduled landing time",
"free_waiting_minutes": 60,
"live_arrival_tracking": "planned"
}
},
"dropoff": {
"location": {
"type": "hotel",
"hotel_ref": "EXAMPLE-HOTEL-DOWNTOWN"
}
},
"voucher": {
"branding": "white_label",
"agency_name": "Example Travel",
"logo_url": "https://example.com/logo.png",
"accent_hex": "#0A0A0A",
"footer_text": null,
"agency_reference": "EX-10442",
"shows_nwp_branding": false
},
"price": null,
"price_note": "Sandbox quotes carry no price. Net rates are issued to approved partners in the portal.",
"default_buffer_minutes": 60,
"created_at": "2026-10-01T08:00:00.000Z"
}{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid.",
"retryable": false,
"fields": [
"flight_number"
],
"issues": [
{
"path": "flight_number",
"message": "flight_number must be an airline flight number such as EK202."
}
]
},
"environment": "sandbox"
}توقيت الرحلات
حالياً يُضبط موعد الاستقبال على وقت الهبوط المسجّل في الحجز، وينتظر السائق مجاناً طوال مدة المهلة بعده. إذا تغيّر موعد الرحلة، أبلغوا مكتب الوكالات فيتغيّر موعد الاستقبال معه.
التتبّع الآلي المباشر للوصول عبر FlightAware أو AeroDataBox مُخطَّط له. لم يُربط أيٌّ منهما بعد، وتُظهر بيئة الاختبار live_arrival_tracking بحالة «مُخطَّط له» (planned).
التوفر الموقَّع
تعيد المصافحة عنوان URL موقَّعاً للتوفر. يغطي التوقيع التاريخ وفئة المركبة وموعد الانتهاء؛ وإذا غيّرتم أياً منها يُرفض الاستدعاء. الحالات عيّنات للبناء عليها.
curl 'https://nwp.ae/api/b2b/sandbox/availability?date=2026-10-15&vehicle_class=VIP_V_CLASS&expires=1760572800&sig=…'{
"environment": "sandbox",
"test_data": true,
"notice": "Sandbox response: test data only. Nothing is booked, no vehicle is held and no price is quoted. Production is not open yet.",
"date": "2026-10-15",
"vehicle_class": "VIP_V_CLASS",
"vehicle": {
"description": "Mercedes-Benz V-Class or similar",
"max_passengers": 7
},
"sample_status": "on_request",
"note": "A sample status for building against. Real availability is confirmed by the trade desk until the API opens."
}إجراءات الحساب
أرسلوا طلب POST إلى نقطة نهاية التنسيق مع إجراء. أي إجراء يطلب من شخص القيام بشيء يُخزَّن ويُحال إلى مكتب الوكالات قبل أن يُشير الرد إلى ذلك.
| الإجراء | ما يفعله |
|---|---|
credit_line_application | شروط Net-15 أو 30 أو 45 أو 60 لشركة مسجّلة في الإمارات. رقم الرخصة التجارية ورقم TRN (15 رقماً، يبدأ بـ 100) مطلوبان. يراجع موظف كل طلب، وتكون الحجوزات مدفوعة مسبقاً إلى أن يُعتمد خط ائتمان. |
wallet_topup | دفعة مسبقة إلى حسابكم. الشحن بالبطاقة غير متاح بعد، لذا يرسل إليكم مكتب الوكالات فاتورة للدفع بتحويل بنكي، ويشير الرد إلى ذلك. |
account_payload | مصفوفة العملات لحسابكم. AED هي العملة الأساسية والعملة الوحيدة التي يُحتسب بها أي مبلغ مدفوع أو مكتسب؛ والعملات الأخرى تحويلات للعرض بالسعر اليومي للموقع، فلا يتغيّر الهامش أبداً بالتحويل. |
tracking_link | رابط شريك حتمي ورمز QR لمستويي بيوت العطلات والمسوّقين بالعمولة، مع بيان واضح بالجهة التي يُنسب إليها حالياً. |
developer_handshake | رمز لبيئة الاختبار، ونقاط نهاية بيئة الاختبار، وعنوان URL موقَّع للتوفر. |
{
"action": "credit_line_application",
"company_legal_name": "Example Travel L.L.C.",
"trade_licence_number": "1234567",
"licence_authority": "Department of Economy and Tourism, Dubai",
"trn": "100000000000003",
"contact_name": "Finance Desk",
"contact_email": "finance@example.com",
"requested_terms": "NET_30",
"requested_limit_aed": 50000
}{
"action": "wallet_topup",
"company_name": "Example Travel L.L.C.",
"contact_email": "finance@example.com",
"amount_aed": 10000,
"purchase_order": "PO-2291"
}{
"action": "account_payload",
"company_name": "Example Travel L.L.C.",
"tier": "Tier_4_Regional_DMCs",
"display_currencies": [
"USD",
"EUR"
],
"lines": [
{
"label": "Your own city-tour package",
"net_aed": 400,
"sell_aed": 560
}
]
}{
"action": "tracking_link",
"partner_code": "HHO-EXAMPLE",
"tier": "Tier_1_Holiday_Homes",
"property_id": "marina-2104",
"destination": "dubaitransfers.ae"
}الأخطاء
لكل خطأ الشكل نفسه: error.code و error.message و error.retryable، مع fields و issues عند فشل التحقق.
| الحالة | الرمز | المعنى |
|---|---|---|
| 400 | invalid_json | نص الطلب ليس JSON صالحاً. |
| 401 | unauthenticated | لا يوجد رمز لبيئة الاختبار، أو الرمز مشوّه أو منتهي الصلاحية أو موقَّع بشكل خاطئ. |
| 404 | not_found | نقطة النهاية غير موجودة على هذا الخادم. |
| 405 | method_not_allowed | نقطة النهاية تقبل طريقة أخرى. |
| 413 | payload_too_large | نص الطلب أكبر من 16 KB. |
| 422 | validation_failed | حقل مفقود أو مشوّه: راجعوا fields و issues. |
| 429 | rate_limited | طلبات كثيرة جداً من هذا العنوان: أعيدوا المحاولة بعد retry_after_seconds. |
| 500 | internal | حدث خطأ من جهتنا: اذكروا معرّف الطلب. |
| 502 | upstream_unavailable | لم يستجب مزوّد الدفع. |
| 503 | not_configured | تعذّر تخزين الطلب: راسلوا مكتب الوكالات بالبريد الإلكتروني. |
حدود المعدل
إجراءات الحساب محدودة لكل عنوان في الساعة: credit_line_application: 5 وwallet_topup: 10 وaccount_payload: 60 وtracking_link: 60 وdeveloper_handshake: 10. واستدعاءات بيئة الاختبار محدودة بـ 120 في الساعة لكل عنوان.
أداة الحجز
أداة الحجز مفتوحة للشركاء المعتمدين ضمن الوصول المبكر: وسم برمجي واحد يضع جولات nwp.ae وتنقلاتها على موقعك بالسعر العام، باثنتي عشرة لغة، وباسمك، مع رمز الشريك على كل حجز. اضبطها عبر واجهة API: نقاط أداة الحجز تقرأ إعداداتها وتغيّرها وتعيد المقتطف البرمجي الذي تلصقه في موقعك.