Salt la conținut

Autentificare

Două moduri de autentificare, ambele legate de ID-ul cheii tale: cereri semnate (recomandat) sau tokenuri bearer OAuth 2 client-credentials.

  1. Cereri semnate (HMAC-SHA256)
  2. OAuth 2 cu credențiale de client
  3. ID-uri de cheie, secrete și rotire
  4. Listă de IP-uri permise

Cereri semnate (HMAC-SHA256)

Trimite X-API-Key, X-Timestamp, X-Nonce și X-Signature la fiecare apel. Semnătura acoperă metoda, ținta exactă a cererii (cale și interogare), marca temporală, nonce-ul și hash-ul corpului, astfel încât o cerere retrimisă sau modificată nu trece verificarea. Este tolerată o diferență de ceas de până la cinci minute; reutilizarea unui nonce în zece minute este respinsă cu 401 api_nonce_reused.

Calculează semnătura pe octeții bruți pe care îi trimiți efectiv. Serializează JSON-ul o singură dată, calculează hash-ul exact al acelor octeți și trimite aceiași octeți drept corp — reserializarea după semnare este cea mai frecventă cauză a erorii 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 cu credențiale de client

Dacă semnarea fiecărei cereri nu se potrivește cu stackul tău, schimbă ID-ul cheii și secretul pe un token bearer de scurtă durată la POST /v1/oauth/token (grant_type=client_credentials, codificat ca formular). Tokenurile sunt valabile 30 de minute și poartă scopurile acordate; poți solicita un subset prin parametrul scope.

Trimite tokenul ca Authorization: Bearer împreună cu X-API-Key la fiecare apel. ID-ul cheii este reverificat la fiecare cerere, așa că revocarea unei chei îi invalidează imediat tokenurile.

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

ID-uri de cheie, secrete și rotire

Cheile de sandbox încep cu dt_sbx_, cele de producție cu dt_live_. O cheie aparține unui singur mediu și unui singur partener. Secretele sunt afișate o singură dată — la creare, la rotire și prin linkul de dezvăluire — și sunt stocate sub formă de hash la noi.

Rotește din portalul pentru dezvoltatori: se emit un nou ID de cheie și un nou secret, iar cheia veche continuă să funcționeze pe durata perioadei de grație alese (până la șapte zile), ca să poți face trecerea fără întreruperi. Revocarea este imediată.

Listă de IP-uri permise

Opțional, poți restricționa fiecare mediu la un set de adrese IPv4/IPv6 sau intervale CIDR din portalul pentru dezvoltatori. Cererile de la orice altă adresă sunt refuzate cu 403 api_ip_not_allowed, chiar dacă sunt semnate corect. Lasă lista goală pentru a accepta orice origine.