Αυθεντικοποίηση
Δύο τρόποι αυθεντικοποίησης, και οι δύο δεμένοι με το αναγνωριστικό του κλειδιού σας: υπογεγραμμένα αιτήματα (συνιστάται) ή bearer tokens OAuth 2 client-credentials.
- Υπογεγραμμένα αιτήματα (HMAC-SHA256)
- OAuth 2 client credentials
- Αναγνωριστικά κλειδιών, μυστικά και εναλλαγή
- Λίστα επιτρεπόμενων IP
Υπογεγραμμένα αιτήματα (HMAC-SHA256)
Στείλτε X-API-Key, X-Timestamp, X-Nonce και X-Signature σε κάθε κλήση. Η υπογραφή καλύπτει τη μέθοδο, τον ακριβή στόχο του αιτήματος (διαδρομή και query), το timestamp, το nonce και το hash του σώματος, οπότε ένα αίτημα που αναπαράγεται ή αλλοιώνεται αποτυγχάνει στην επαλήθευση. Γίνεται ανεκτή απόκλιση ρολογιού έως πέντε λεπτά· η επαναχρησιμοποίηση ενός nonce μέσα σε δέκα λεπτά απορρίπτεται με 401 api_nonce_reused.
Υπολογίστε την υπογραφή πάνω στα ακατέργαστα bytes που στέλνετε. Σειριοποιήστε το JSON σας μία φορά, κατακερματίστε ακριβώς αυτά τα bytes και στείλτε τα ίδια bytes ως σώμα — η επανασειριοποίηση μετά την υπογραφή είναι η πιο συχνή αιτία του 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 client credentials
Αν η υπογραφή κάθε αιτήματος δεν ταιριάζει στο stack σας, ανταλλάξτε το αναγνωριστικό κλειδιού και το μυστικό σας με ένα βραχύβιο bearer token στο POST /v1/oauth/token (grant_type=client_credentials, κωδικοποίηση φόρμας). Τα tokens ισχύουν 30 λεπτά και φέρουν τα δικαιώματα που σας έχουν παραχωρηθεί· μπορείτε να ζητήσετε υποσύνολο με την παράμετρο scope.
Στείλτε το token ως Authorization: Bearer μαζί με X-API-Key σε κάθε κλήση. Το αναγνωριστικό κλειδιού ελέγχεται ξανά σε κάθε αίτημα, οπότε η ανάκληση ενός κλειδιού ακυρώνει αμέσως τα tokens του.
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 ακόμη και όταν είναι σωστά υπογεγραμμένα. Αφήστε τη λίστα κενή για να γίνεται δεκτή οποιαδήποτε προέλευση.