Autenticazione
Due modi per autenticarsi, entrambi legati al tuo ID chiave: richieste firmate (consigliate) oppure token bearer OAuth 2 con client credentials.
Richieste firmate (HMAC-SHA256)
Invia X-API-Key, X-Timestamp, X-Nonce e X-Signature a ogni chiamata. La firma copre il metodo, il target esatto della richiesta (percorso e query), il timestamp, il nonce e l'hash del corpo, quindi una richiesta ripetuta o alterata non supera la verifica. È tollerato uno scarto dell'orologio fino a cinque minuti; il riutilizzo di un nonce entro dieci minuti viene rifiutato con 401 api_nonce_reused.
Calcola la firma sui byte grezzi che invii effettivamente. Serializza il JSON una sola volta, calcola l'hash di quei byte esatti e invia gli stessi byte come corpo: riserializzare dopo la firma è la causa più comune di 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");Credenziali client OAuth 2
Se firmare ogni richiesta non si adatta al tuo stack, scambia il tuo ID chiave e il secret con un token bearer di breve durata su POST /v1/oauth/token (grant_type=client_credentials, codificato come form). I token durano 30 minuti e portano gli scope concessi; puoi richiederne un sottoinsieme con il parametro scope.
Invia il token come Authorization: Bearer insieme a X-API-Key a ogni chiamata. L'ID chiave viene ricontrollato a ogni richiesta, quindi revocare una chiave invalida immediatamente i suoi token.
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
-d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRETID chiave, secret e rotazione
Le chiavi sandbox iniziano con dt_sbx_, quelle di produzione con dt_live_. Una chiave appartiene a un solo ambiente e a un solo partner. I secret vengono mostrati una sola volta (alla creazione, alla rotazione e tramite il link di visualizzazione) e conservati come hash dalla nostra parte.
Ruota le chiavi dal portale sviluppatori: vengono emessi un nuovo ID chiave e un nuovo secret, mentre la vecchia chiave continua a funzionare per il periodo di tolleranza che scegli (fino a sette giorni), così puoi passare alla nuova senza interruzioni. La revoca è immediata.
Allow-list IP
Facoltativamente, nel portale sviluppatori puoi vincolare ogni ambiente a un insieme di indirizzi IPv4/IPv6 o intervalli CIDR. Le richieste da qualsiasi altro indirizzo vengono rifiutate con 403 api_ip_not_allowed anche se firmate correttamente. Lascia l'elenco vuoto per accettare qualsiasi origine.