דילוג לתוכן

אימות

שתי דרכים לאימות, ושתיהן קשורות למזהה המפתח שלכם: בקשות חתומות (מומלץ) או אסימוני Bearer של OAuth 2 client credentials.

  1. בקשות חתומות (HMAC-SHA256)
  2. OAuth 2 client credentials
  3. מזהי מפתחות, סודות והחלפה
  4. רשימת היתרי IP

בקשות חתומות (HMAC-SHA256)

שלחו X-API-Key, X-Timestamp, X-Nonce ו-X-Signature בכל קריאה. החתימה מכסה את השיטה, יעד הבקשה המדויק (נתיב ושאילתה), חותמת הזמן, ה-nonce וגיבוב הגוף, כך שבקשה שהושמעה מחדש או שונתה נכשלת באימות. סטיית שעון של עד חמש דקות מותרת; שימוש חוזר ב-nonce בתוך עשר דקות נדחה עם 401 api_nonce_reused.

חשבו את החתימה על הבתים הגולמיים שאתם שולחים בפועל. בצעו סריאליזציה ל-JSON פעם אחת, גבבו בדיוק את הבתים האלה ושלחו אותם כגוף — סריאליזציה מחדש אחרי החתימה היא הסיבה הנפוצה ביותר ל-api_signature_invalid.

Node.js
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 client credentials

אם חתימה על כל בקשה לא מתאימה לסטאק שלכם, החליפו את מזהה המפתח והסוד באסימון Bearer קצר חיים דרך POST /v1/oauth/token (grant_type=client_credentials, בקידוד form). אסימונים תקפים 30 דקות ונושאים את ההיקפים שהוענקו לכם; אפשר לבקש תת-קבוצה באמצעות הפרמטר scope.

שלחו את האסימון בתור Authorization: Bearer יחד עם X-API-Key בכל קריאה. מזהה המפתח נבדק מחדש בכל בקשה, כך שביטול מפתח מבטל מיד את האסימונים שלו.

cURL
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
  -d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRET

מזהי מפתחות, סודות והחלפה

מפתחות Sandbox מתחילים ב- dt_sbx_, מפתחות ייצור ב- dt_live_. כל מפתח שייך לסביבה אחת ולשותף אחד. סודות מוצגים פעם אחת — ביצירה, בהחלפה ודרך קישור החשיפה — ונשמרים אצלנו כגיבוב בלבד.

ההחלפה מתבצעת מפורטל המפתחים: מונפקים מזהה מפתח וסוד חדשים, והמפתח הישן ממשיך לפעול במהלך תקופת החסד שבחרתם (עד שבעה ימים), כך שאפשר לעבור בלי השבתה. ביטול נכנס לתוקף מיד.

רשימת היתרי IP

אפשר לקבע כל סביבה לקבוצה של כתובות IPv4/IPv6 או טווחי CIDR בפורטל המפתחים. בקשות מכל כתובת אחרת נדחות עם 403 api_ip_not_allowed גם כשהן חתומות כראוי. השאירו את הרשימה ריקה כדי לקבל כל מקור.