Lewati ke konten

Autentikasi

Dua cara autentikasi, keduanya terikat pada ID kunci Anda: permintaan bertanda tangan (disarankan) atau token bearer OAuth 2 client-credentials.

  1. Permintaan bertanda tangan (HMAC-SHA256)
  2. Kredensial klien OAuth 2
  3. ID kunci, kunci rahasia, dan rotasi
  4. Daftar izin IP

Permintaan bertanda tangan (HMAC-SHA256)

Kirim X-API-Key, X-Timestamp, X-Nonce, dan X-Signature pada setiap panggilan. Tanda tangan mencakup metode, target permintaan yang persis (path dan query), timestamp, nonce, dan hash body, sehingga permintaan yang diputar ulang atau diubah gagal diverifikasi. Selisih jam hingga lima menit masih ditoleransi; penggunaan ulang nonce dalam sepuluh menit ditolak dengan 401 api_nonce_reused.

Hitung tanda tangan atas byte mentah yang Anda kirim. Serialisasikan JSON Anda sekali, hash byte persis tersebut, dan kirim byte yang sama sebagai body — serialisasi ulang setelah penandatanganan adalah penyebab paling umum 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");

Kredensial klien OAuth 2

Jika menandatangani setiap permintaan tidak cocok dengan stack Anda, tukarkan ID kunci dan kunci rahasia Anda dengan token bearer berumur pendek di POST /v1/oauth/token (grant_type=client_credentials, form-encoded). Token berlaku 30 menit dan membawa cakupan yang diberikan kepada Anda; Anda dapat meminta sebagian cakupan dengan parameter scope.

Kirim token sebagai Authorization: Bearer bersama X-API-Key pada setiap panggilan. ID kunci diperiksa ulang pada setiap permintaan, sehingga mencabut kunci langsung membatalkan token-tokennya.

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 kunci, kunci rahasia, dan rotasi

Kunci sandbox diawali dt_sbx_, kunci produksi diawali dt_live_. Sebuah kunci dimiliki oleh satu lingkungan dan satu mitra. Kunci rahasia ditampilkan sekali — saat dibuat, saat dirotasi, dan melalui tautan tampilan — dan disimpan dalam bentuk hash di pihak kami.

Rotasi dari portal pengembang: ID kunci dan kunci rahasia baru diterbitkan sementara kunci lama tetap berfungsi selama masa tenggang yang Anda pilih (hingga tujuh hari), sehingga Anda dapat beralih tanpa henti layanan. Pencabutan berlaku seketika.

Daftar izin IP

Secara opsional, kunci setiap lingkungan ke sekumpulan alamat IPv4/IPv6 atau rentang CIDR di portal pengembang. Permintaan dari alamat lain ditolak dengan 403 api_ip_not_allowed meskipun ditandatangani dengan benar. Biarkan daftar kosong untuk menerima asal mana pun.