प्रमाणीकरण
प्रमाणीकरण के दो तरीके, दोनों आपकी कुंजी ID से बंधे: हस्ताक्षरित अनुरोध (अनुशंसित) या OAuth 2 client-credentials bearer टोकन।
- हस्ताक्षरित अनुरोध (HMAC-SHA256)
- OAuth 2 क्लाइंट क्रेडेंशियल
- कुंजी ID, सीक्रेट और रोटेशन
- IP अनुमति-सूची
हस्ताक्षरित अनुरोध (HMAC-SHA256)
हर कॉल पर X-API-Key, X-Timestamp, X-Nonce और X-Signature भेजें। हस्ताक्षर में मेथड, सटीक अनुरोध लक्ष्य (पाथ और क्वेरी), टाइमस्टैम्प, nonce और बॉडी हैश शामिल होते हैं, इसलिए दोहराया गया या बदला गया अनुरोध सत्यापन में विफल हो जाता है। पाँच मिनट तक का घड़ी का अंतर सहन किया जाता है; दस मिनट के भीतर nonce का दोबारा उपयोग 401 api_nonce_reused के साथ अस्वीकार किया जाता है।
हस्ताक्षर की गणना उन्हीं raw बाइट्स पर करें जो आप भेजते हैं। अपना JSON एक बार serialize करें, ठीक उन्हीं बाइट्स का हैश निकालें, और वही बाइट्स बॉडी के रूप में भेजें — हस्ताक्षर के बाद दोबारा serialize करना api_signature_invalid का सबसे आम कारण है।
const payload = JSON.stringify(body);
const ts = Math.floor(Date.now() / 1000);
const nonce = randomBytes(16).toString("hex");
const bodyHash = createHash("sha256").update(payload).digest("hex");
const canonical = ["POST", "/v1/flights/search", ts, nonce, bodyHash].join("\n");
const signature = createHmac("sha256", SECRET).update(canonical).digest("hex");OAuth 2 क्लाइंट क्रेडेंशियल
अगर हर अनुरोध पर हस्ताक्षर करना आपके स्टैक के अनुकूल नहीं है, तो POST /v1/oauth/token पर अपनी कुंजी ID और सीक्रेट के बदले एक अल्पकालिक bearer टोकन लें (grant_type=client_credentials, form-encoded)। टोकन 30 मिनट तक मान्य रहते हैं और आपको दिए गए स्कोप साथ रखते हैं; scope पैरामीटर से आप उनमें से कुछ का अनुरोध कर सकते हैं।
हर कॉल पर टोकन को X-API-Key के साथ Authorization: Bearer के रूप में भेजें। हर अनुरोध पर कुंजी ID दोबारा जाँची जाती है, इसलिए कुंजी रद्द करने से उसके टोकन तुरंत अमान्य हो जाते हैं।
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
-d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRETकुंजी ID, सीक्रेट और रोटेशन
सैंडबॉक्स कुंजियाँ dt_sbx_ से शुरू होती हैं, प्रोडक्शन कुंजियाँ dt_live_ से। एक कुंजी एक एनवायरनमेंट और एक पार्टनर की होती है। सीक्रेट एक बार दिखाए जाते हैं — बनाते समय, रोटेशन पर और लिंक के ज़रिए — और हमारी ओर हैश करके संग्रहीत होते हैं।
डेवलपर पोर्टल से रोटेट करें: एक नई कुंजी ID और सीक्रेट जारी होते हैं, जबकि पुरानी कुंजी आपकी चुनी हुई ग्रेस अवधि (सात दिन तक) तक काम करती रहती है, ताकि आप बिना डाउनटाइम के बदलाव कर सकें। रद्दीकरण तुरंत होता है।
IP अनुमति-सूची
वैकल्पिक रूप से, डेवलपर पोर्टल में हर एनवायरनमेंट को IPv4/IPv6 पतों या CIDR रेंज के एक सेट तक सीमित करें। किसी अन्य पते से आने वाले अनुरोध सही हस्ताक्षर होने पर भी 403 api_ip_not_allowed के साथ अस्वीकार किए जाते हैं। किसी भी स्रोत को स्वीकार करने के लिए सूची खाली छोड़ें।