Geliştiriciler
B2B API dokümantasyonu
nwp.ae'nin arkasındaki B2B API: müşterileriniz için net fiyattan fiyat alın ve rezervasyon yapın, kupon düzenleyin, otel masası, kurumsal ulaşım ve DMC programları yürütün; fiyatlarınız, ekstreleriniz ve faturalarınız da yanında. Erken erişim: sandbox anahtarları etiketli test verisiyle yanıt verir, canlı anahtarlar onayla verilir.
DurumErken erişim · yalnızca test ortamı
Test ortamı gerçek istekleri gerçek şemaya göre denetler ve test verisiyle yanıt verir. Hiçbir şey rezerve edilmez, hiçbir araç ayrılmaz ve fiyat döndürülmez. Test ortamı hiçbir hizmet düzeyi taahhüdü içermez; canlı anahtarlar, API açıldığında onaylı partnerlere verilir.
Erken erişim talep edinGenel bakış
HTTPS üzerinden JSON. Content-Type: application/json gönderin. Her yanıt JSON'dur ve acente ekibine iletmeniz için bir x-request-id başlığı taşır; test ortamı yanıtları ayrıca x-nwp-environment: sandbox taşır.
| Temel URL | — |
|---|---|
| Test ortamı | https://nwp.ae/api/b2b/sandbox |
| Canlı ortam | https://nwp.ae/api/b2b/v1Henüz açık değil · Canlı anahtar gerekir — onayla verilir |
B2B API v1
Bir hesabın yaptığı her şey için tek bir API: ticari koşullarınıza göre (net fiyat, komisyon ya da tarife) fiyatlanan kara ulaşımı ile turlar ve aktiviteler, müşterileriniz için rezervasyonlar, kuponlar ve isim tabelaları, otel masası, kurumsal ulaşım, DMC programları, rezervasyon widget'ı, kullanıcılar, bildirimler, ekstreler ve faturalar. Sandbox anahtarları (nwp_test_…) başvuru sahiplerine açıktır: her uç noktada sandbox: true işaretli test verisiyle yanıt verir, asla rezervasyon yapmaz ve hesabınızı değiştirmez. Canlı anahtarlar (nwp_live_…) onayla verilir ve NWP hesabınız için canlı erişimi açtığında çalışır. Her POST bir Idempotency-Key kabul eder, her yanıtta x-request-id bulunur ve her anahtarın kendi dakika sınırı vardır.
OpenAPI 3.1 belgesi: /api/b2b/v1/openapi.json
Kara ulaşımı
POST/api/b2b/v1/transport/quoteKoşullarınıza göre fiyat
Kapsam:
transport:readPOST/api/b2b/v1/transport/bookingsRezervasyon yap
Kapsam:
transport:writeCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/transport/bookings/{id}Rezervasyon durumu ve iptal koşulları
Kapsam:
transport:readPOST/api/b2b/v1/transport/bookings/{id}/cancelPolitikaya göre iptal
Kapsam:
transport:writeCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/transport/bookings/{id}/voucherMarkanızla kupon (HTML veya PDF)
Kapsam:
transport:read
Turlar ve aktiviteler
GET/api/b2b/v1/activities/productsSatıştaki ürünler, kişi başı ya da araç başı
Kapsam:
activities:readGET/api/b2b/v1/activities/products/{id}/availabilityGünlük müsaitlik
Kapsam:
activities:readPOST/api/b2b/v1/activities/quoteKoşullarınıza göre fiyat
Kapsam:
activities:readPOST/api/b2b/v1/activities/bookingsRezervasyon yap
Kapsam:
activities:writeCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/activities/bookings/{id}Rezervasyon durumu ve iptal koşulları
Kapsam:
activities:readPOST/api/b2b/v1/activities/bookings/{id}/cancelPolitikaya göre iptal
Kapsam:
activities:writeCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/activities/bookings/{id}/voucherMarkanızla kupon (HTML veya PDF)
Kapsam:
activities:read
Kruvaziyer
GET/api/b2b/v1/cruise/sailingsSeferler
Kapsam:
cruise:readHenüz kullanılamıyor: bir kruvaziyer tedarikçisi bağlanana kadar 501 dönerPOST/api/b2b/v1/cruise/quoteKoşullarınıza göre fiyat
Kapsam:
cruise:readHenüz kullanılamıyor: bir kruvaziyer tedarikçisi bağlanana kadar 501 dönerPOST/api/b2b/v1/cruise/bookingsRezervasyon yap
Kapsam:
cruise:writeHenüz kullanılamıyor: bir kruvaziyer tedarikçisi bağlanana kadar 501 dönerGET/api/b2b/v1/cruise/bookings/{id}Rezervasyon durumu ve iptal koşulları
Kapsam:
cruise:readHenüz kullanılamıyor: bir kruvaziyer tedarikçisi bağlanana kadar 501 dönerPOST/api/b2b/v1/cruise/bookings/{id}/cancelPolitikaya göre iptal
Kapsam:
cruise:writeHenüz kullanılamıyor: bir kruvaziyer tedarikçisi bağlanana kadar 501 döner
Karşılama rehberleri
GET/api/b2b/v1/guides/propertiesMülkleriniz
Kapsam:
guides:readPOST/api/b2b/v1/guides/propertiesMülk ekle
Kapsam:
guides:writeGET/api/b2b/v1/guides/properties/{id}Bir mülkün rehberi, bağlantısı ve dosyaları
Kapsam:
guides:readPATCH/api/b2b/v1/guides/properties/{id}Mülkü düzenle
Kapsam:
guides:writePOST/api/b2b/v1/guides/properties/{id}/statusRehberi duraklat veya sürdür
Kapsam:
guides:writePOST/api/b2b/v1/guides/properties/{id}/linkMisafir bağlantısını değiştir
Kapsam:
guides:writeGET/api/b2b/v1/guides/properties/{id}/wifiWi-Fi bilgisini oku
Kapsam:
guides_wifi:readPOST/api/b2b/v1/guides/properties/{id}/wifiWi-Fi'yi ayarla
Kapsam:
guides_wifi:writeGET/api/b2b/v1/guides/properties/{id}/qrQR kod (PNG veya SVG)
Kapsam:
guides:readGET/api/b2b/v1/guides/properties/{id}/cardYazdırılabilir kart (PDF veya HTML)
Kapsam:
guides:readGET/api/b2b/v1/guides/statsTaramalar, görüntülemeler, rezervasyonlar ve payınız
Kapsam:
guides:read
Hesap
GET/api/b2b/v1/whoamiAnahtarı kontrol et
Kapsam:
account:readGET/api/b2b/v1/openapi.jsonBu API, OpenAPI 3.1 olarak
Satış ortakları
GET/api/b2b/v1/affiliate/statsBir dönemin istatistikleri: tıklamalar, rezervasyonlar, dönüşüm, kazançlar
Kapsam:
affiliate:readGET/api/b2b/v1/affiliate/linksTakip bağlantılarınız, QR kodlarıyla
Kapsam:
affiliate:readPOST/api/b2b/v1/affiliate/linksUTM ile takip bağlantısı oluştur
Kapsam:
affiliate:writeCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/affiliate/links/{code}/qrBir bağlantının QR kodu (SVG veya PNG)
Kapsam:
affiliate:readGET/api/b2b/v1/affiliate/performanceBağlantı başına tıklamalar, rezervasyonlar ve kazançlar
Kapsam:
affiliate:readGET/api/b2b/v1/affiliate/payoutsÖdeme bakiyesi ve ödeme talepleri
Kapsam:
affiliate:readPOST/api/b2b/v1/affiliate/payoutsÖdeme talep et; banka havalesiyle gönderilir
Kapsam:
affiliate:writeCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/affiliate/payouts/{reference}/cancelÖdeme talebini geri çek
Kapsam:
affiliate:writeCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/affiliate/bank-detailsBanka bilgilerini kaydet (yalnızca yazma)
Kapsam:
affiliate:writeCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/affiliate/widgetWidget ayarları ve kod parçacığı
Kapsam:
affiliate:readPOST/api/b2b/v1/affiliate/widgetRezervasyon widget'ını kur
Kapsam:
affiliate:writeCanlı anahtar gerekir — onayla verilir
Müşterileriniz için rezervasyonlar
POST/api/b2b/v1/bookings/quoteKoşullarınıza göre fiyat
Kapsam:
bookings:createPOST/api/b2b/v1/bookingsRezervasyon yap
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/bookingsListele
Kapsam:
bookings:viewGET/api/b2b/v1/bookings/creditedHesabınıza yazılan rezervasyonlar
Kapsam:
bookings:viewGET/api/b2b/v1/bookings/{ref}Ayrıntılar
Kapsam:
bookings:viewPOST/api/b2b/v1/bookings/{ref}/cancelPolitikaya göre iptal
Kapsam:
bookings:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/bookings/{ref}/amendmentsAcente ekibinden değişiklik iste
Kapsam:
bookings:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/bookings/{ref}/brandBelgelerinde sizin markanız ya da hiçbiri
Kapsam:
bookings:manageCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/bookings/{ref}/voucherMarkanızla kupon (HTML veya PDF)
Kapsam:
bookings:viewGET/api/b2b/v1/bookings/{ref}/name-boardŞoförün isim tabelası (HTML)
Kapsam:
bookings:viewGET/api/b2b/v1/requestsDeğişiklik ve hizmet talepleri, ekibin yanıtlarıyla
Kapsam:
bookings:viewPOST/api/b2b/v1/requests/{id}/withdrawAçık bir talebi geri çek
Kapsam:
bookings:manageCanlı anahtar gerekir — onayla verilir
Otel masası
POST/api/b2b/v1/desk/salesMasada hızlı satış
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/desk/days/{date}Bir günün satışları ya da CSV veya PDF olarak gün sonu hesabı
Kapsam:
statements:readPOST/api/b2b/v1/desk/days/{date}/closeGünü kapat ve gün sonu hesabını dondur
Kapsam:
statements:readCanlı anahtar gerekir — onayla verilir
Kurumsal ulaşım
GET/api/b2b/v1/corporate/cost-centresListele
Kapsam:
bookings:viewPOST/api/b2b/v1/corporate/cost-centresOluştur ya da değiştir
Kapsam:
settings:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/corporate/cost-centres/{id}/approversOluştur ya da değiştir
Kapsam:
settings:manageCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/corporate/requestsListele
Kapsam:
bookings:viewPOST/api/b2b/v1/corporate/requestsRezervasyon yap
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/corporate/requests/{id}/decisionOnayla ya da reddet
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/corporate/shuttlesListele
Kapsam:
bookings:viewPOST/api/b2b/v1/corporate/shuttlesOluştur ya da değiştir
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/corporate/shuttles/{id}/statusDurumunu değiştir
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/corporate/shuttles/{id}/scheduleBir aylık seferleri planla
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/corporate/shuttles/{id}/repriceYeni anlaşılan fiyatı uygula
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/corporate/usageMasraf merkezine göre kullanım (JSON veya CSV)
Kapsam:
statements:read
DMC programları
GET/api/b2b/v1/dmc/programmesListele
Kapsam:
bookings:viewPOST/api/b2b/v1/dmc/programmesOluştur ya da değiştir
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/dmc/programmes/{id}Ayrıntılar
Kapsam:
bookings:viewPOST/api/b2b/v1/dmc/programmes/{id}/versionsFiyatlı bir sürüm kaydet
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/dmc/programmes/{id}/statusDurumunu değiştir
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/dmc/programmes/{id}/brandBelgelerinde sizin markanız ya da hiçbiri
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/dmc/programmes/{id}/acceptBir sürümü kabul et ve rezerve et
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/dmc/programmes/{id}/proposalMüşteri teklifi (HTML)
Kapsam:
bookings:viewPOST/api/b2b/v1/dmc/programmes/{id}/linksSüreli bir müşteri bağlantısı oluştur
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirGET/api/b2b/v1/dmc/programmes/{id}/linksMüşteri bağlantıları ve kabul edenler
Kapsam:
bookings:viewPOST/api/b2b/v1/dmc/programmes/{id}/links/{link}/revokeMüşteri bağlantısını iptal et
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilir
Fiyatlar ve teklif talepleri
GET/api/b2b/v1/rates/catalogueSizin fiyatlarınızla katalog (JSON, CSV veya PDF)
Kapsam:
rates:viewGET/api/b2b/v1/rates/sheetHizmet fiyat listesi
Kapsam:
rates:viewPOST/api/b2b/v1/quote-requestsTeklif talebi gönder
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/wholesale-requestsAraç kapasitesi talep et
Kapsam:
bookings:createCanlı anahtar gerekir — onayla verilir
Rezervasyon widget'ı
GET/api/b2b/v1/widgetWidget ayarları ve kod parçacığı
Kapsam:
tracking:viewPOST/api/b2b/v1/widgetWidget'ı değiştir
Kapsam:
tracking:manageCanlı anahtar gerekir — onayla verilir
Kullanıcılar
GET/api/b2b/v1/usersListele
Kapsam:
users:viewPOST/api/b2b/v1/usersBirini davet et
Kapsam:
users:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/users/{id}/roleBir kişinin rolünü değiştir
Kapsam:
users:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/users/{id}/deactivateBir kişinin erişimini kaldır
Kapsam:
users:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/users/{id}/reactivateBir kişinin erişimini geri ver
Kapsam:
users:manageCanlı anahtar gerekir — onayla verilir
Bildirimler
GET/api/b2b/v1/inboxHesabınızla ilgili bildirimler
Kapsam:
inbox:view
Ekstreler ve faturalar
GET/api/b2b/v1/statementsEkstreler, bakiye ve açık faturalar
Kapsam:
statements:readGET/api/b2b/v1/statements/{period}Bir aylık ekstre (JSON veya PDF)
Kapsam:
statements:readGET/api/b2b/v1/invoices/{id}Tek bir fatura (JSON veya PDF)
Kapsam:
statements:read
Hesap ayarları
GET/api/b2b/v1/settingsHesap bilgileri, kişiler ve fatura e-postası
Kapsam:
settings:viewPOST/api/b2b/v1/settings/billing-emailFatura e-postasını belirle
Kapsam:
settings:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/settings/contactsKişi ekle ya da değiştir
Kapsam:
settings:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/settings/contacts/{id}/removeKişiyi kaldır
Kapsam:
settings:manageCanlı anahtar gerekir — onayla verilirPOST/api/b2b/v1/settings/brandBelgelerinde sizin markanız ya da hiçbiri
Kapsam:
settings:manageCanlı anahtar gerekir — onayla verilir
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}'Kimlik doğrulama
Her test ortamı çağrısı bir bearer token gerektirir. Geliştirici el sıkışması (handshake) bunu verir: nwp_sandbox_ ile başlayan, 30 gün geçerli, JWT biçiminde ve yalnızca test verisine erişim açan bir token.
1Test ortamı token'ı isteyin
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"
}
}2Test ortamını bu token'la çağırın
curl -X POST https://nwp.ae/api/b2b/sandbox/transfers \
-H 'Authorization: Bearer nwp_sandbox_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImVudiI6InNhbmRib3gifQ…' \
-H 'Content-Type: application/json' \
-d @transfer.jsonTransfer isteği
Aşağıdaki alanları test ortamının transfer uç noktasına gönderin. Alan adları API'ye aittir ve her dilde İngilizce kalır.
pickup_locationZorunlu{ type: "airport" | "coordinates" | "hotel", … }Yolcunun alındığı yer: bir havalimanı terminali (DXB_T1, DXB_T2, DXB_T3, DWC, SHJ), BAE içindeki koordinatlar ya da bir otel referansı.
dropoff_locationZorunlu{ type: "hotel" | "coordinates" | "airport", … }Yolcunun götürüldüğü yer: bir otel referans metni (kendi otel kodunuz ya da otelin adı), koordinatlar ya da bir havalimanı terminali.
flight_numberKoşullustringGelen uçuş, örneğin EK202. Karşılama, uçuşun planlanan iniş saatine göre ayarlanır.
pickup_atKoşullustring (ISO 8601)Saat dilimi farkıyla ISO 8601. Karşılama havalimanında değilse ya da havalimanı karşılamasında uçuş yoksa zorunludur.
buffer_minutes_overrideİsteğe bağlıintegerİnişten sonra ücretsiz bekleme, dakika cinsinden, 0 ile 180 arasında. Varsayılan 60: grubun transfer sitesinin her varışta zaten verdiği ücretsiz bekleme süresi.
vehicle_classZorunluenumŞunlardan biri: VIP_V_CLASS, EXECUTIVE_SEDAN veya LUXURY_COACH.
passengersİsteğe bağlıintegerSınıfın koltuk sayısını aşarsa reddedilir.
client_metadataİsteğe bağlıobjectYolcu voucher'ı için white-label bilgileri: agency_name, logo_url (yalnızca https), voucher_branding ve agency_reference.
| Alan | Tür | Zorunluluk | Açıklama |
|---|---|---|---|
pickup_location | { type: "airport" | "coordinates" | "hotel", … } | Zorunlu | Yolcunun alındığı yer: bir havalimanı terminali (DXB_T1, DXB_T2, DXB_T3, DWC, SHJ), BAE içindeki koordinatlar ya da bir otel referansı. |
dropoff_location | { type: "hotel" | "coordinates" | "airport", … } | Zorunlu | Yolcunun götürüldüğü yer: bir otel referans metni (kendi otel kodunuz ya da otelin adı), koordinatlar ya da bir havalimanı terminali. |
flight_number | string | Koşullu | Gelen uçuş, örneğin EK202. Karşılama, uçuşun planlanan iniş saatine göre ayarlanır. |
pickup_at | string (ISO 8601) | Koşullu | Saat dilimi farkıyla ISO 8601. Karşılama havalimanında değilse ya da havalimanı karşılamasında uçuş yoksa zorunludur. |
buffer_minutes_override | integer | İsteğe bağlı | İnişten sonra ücretsiz bekleme, dakika cinsinden, 0 ile 180 arasında. Varsayılan 60: grubun transfer sitesinin her varışta zaten verdiği ücretsiz bekleme süresi. |
vehicle_class | enum | Zorunlu | Şunlardan biri: VIP_V_CLASS, EXECUTIVE_SEDAN veya LUXURY_COACH. |
passengers | integer | İsteğe bağlı | Sınıfın koltuk sayısını aşarsa reddedilir. |
client_metadata | object | İsteğe bağlı | Yolcu voucher'ı için white-label bilgileri: agency_name, logo_url (yalnızca https), voucher_branding ve 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"
}
}Araç sınıfları
| Sınıf | Araç | Koltuk |
|---|---|---|
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 |
Her araç, iş için lisanslı şoförüyle birlikte kiralanır; sınıf, aracın türünü ve koltuk sayısını belirler.
Yanıt
Test ortamı teklifi isteği aynen yansıtır ve karşılamanın nasıl zamanlanacağını ve voucher'ın nasıl markalanacağını ekler. Asla fiyat içermez.
{
"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"
}Uçuş zamanlaması
Bugün karşılama, rezervasyondaki iniş saatine göre ayarlanır ve şoför bu saatten sonra tampon süre boyunca ücretsiz bekler. Uçuş değişirse acente ekibine bildirin, karşılama da onunla birlikte değişir.
FlightAware ya da AeroDataBox üzerinden otomatik canlı varış takibi planlanıyor. Henüz ikisi de bağlı değil ve test ortamı live_arrival_tracking değerini planned (planlanıyor) olarak bildirir.
İmzalı müsaitlik
El sıkışma, imzalı bir müsaitlik URL'si döndürür. İmza tarihi, araç sınıfını ve geçerlilik süresini kapsar; bunlardan herhangi birini değiştirirseniz çağrı reddedilir. Durumlar, geliştirme için örneklerdir.
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."
}Hesap işlemleri
Orkestrasyon uç noktasına bir işlemle POST gönderin. Bir kişinin bir şey yapmasını gerektiren işlem, yanıt bunu bildirmeden önce kaydedilir ve acente ekibine iletilir.
| İşlem | Ne yapar |
|---|---|
credit_line_application | BAE'de kayıtlı bir şirket için Net-15, 30, 45 ya da 60 vade. Ticari lisans numarası ve TRN (15 hane, 100 ile başlayan) zorunludur. Her başvuruyu bir kişi inceler; kredi limiti onaylanana kadar rezervasyonlar ön ödemelidir. |
wallet_topup | Hesabınıza ön ödeme. Kartla yükleme henüz mevcut değil; bu nedenle acente ekibi size banka havalesi için fatura keser ve yanıt bunu belirtir. |
account_payload | Hesabınızın para birimi matrisi. Temel para birimi AED'dir ve herhangi bir tutarın tahsil edildiği ya da kazanıldığı tek para birimidir; diğer para birimleri sitenin günlük kuruyla yapılan gösterim dönüşümleridir, bu yüzden marj dönüşümde hiç değişmez. |
tracking_link | Tatil evi ve satış ortağı kademeleri için deterministik bir partner URL'si ve QR kod; bugün nereye yazıldığına dair açık bir ifadeyle. |
developer_handshake | Bir test ortamı token'ı, test ortamı uç noktaları ve imzalı bir müsaitlik URL'si. |
{
"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"
}Hatalar
Her hata aynı biçimdedir: error.code, error.message ve error.retryable; doğrulama hatasında ayrıca fields ve issues.
| Durum | Kod | Anlamı |
|---|---|---|
| 400 | invalid_json | Gövde geçerli bir JSON değil. |
| 401 | unauthenticated | Test ortamı token'ı yok ya da token bozuk, süresi dolmuş veya yanlış imzalanmış. |
| 404 | not_found | Uç nokta bu sunucuda yok. |
| 405 | method_not_allowed | Uç nokta başka bir yöntem kabul eder. |
| 413 | payload_too_large | Gövde 16 KB sınırını aşıyor. |
| 422 | validation_failed | Bir alan eksik ya da hatalı: fields ve issues alanlarına bakın. |
| 429 | rate_limited | Bu adresten çok fazla istek: retry_after_seconds süresi dolduktan sonra yeniden deneyin. |
| 500 | internal | Bizim tarafımızda bir hata oluştu: istek kimliğini iletin. |
| 502 | upstream_unavailable | Bir ödeme sağlayıcısı yanıt vermedi. |
| 503 | not_configured | İstek kaydedilemedi: acente ekibine e-posta gönderin. |
İstek limitleri
Hesap işlemleri adres başına saatlik olarak sınırlıdır: credit_line_application: 5, wallet_topup: 10, account_payload: 60, tracking_link: 60 ve developer_handshake: 10. Test ortamı çağrıları adres başına saatte 120 ile sınırlıdır.
Rezervasyon widget'ı
Rezervasyon widget'ı erken erişimde onaylı iş ortaklarına açık: tek bir script etiketi nwp.ae'nin turlarını ve transferlerini sitenize halka açık fiyatla, on iki dilde, sizin adınızla ve her rezervasyonda iş ortağı kodunuzla taşır. Kurulumu API üzerinden yapılır: rezervasyon widget'ı uç noktaları ayarlarını okur ve değiştirir, yapıştıracağınız kod parçacığını döndürür.