Autentifikatsiya
Autentifikatsiyaning ikki usuli bor, ikkalasi ham kalit ID ingizga bogʻlangan: imzolangan soʻrovlar (tavsiya etiladi) yoki OAuth 2 client-credentials bearer tokenlari.
- Imzolangan soʻrovlar (HMAC-SHA256)
- OAuth 2 client credentials usuli
- Kalit ID lari, maxfiy kalitlar va almashtirish
- IP ruxsat roʻyxati
Imzolangan soʻrovlar (HMAC-SHA256)
Har bir chaqiruvda X-API-Key, X-Timestamp, X-Nonce va X-Signature ni yuboring. Imzo metodni, aniq soʻrov manzilini (yoʻl va soʻrov satri), vaqt tamgʻasini, nonce va tana xeshini qamrab oladi, shuning uchun qayta yuborilgan yoki oʻzgartirilgan soʻrov tekshiruvdan oʻtmaydi. Besh daqiqagacha soat farqiga yoʻl qoʻyiladi; nonce oʻn daqiqa ichida qayta ishlatilsa, 401 api_nonce_reused bilan rad etiladi.
Imzoni tarmoqqa yuboradigan xom baytlaringiz ustidan hisoblang. JSON ni bir marta seriyalang, aynan oʻsha baytlarni xeshlang va tana sifatida oʻsha baytlarni yuboring — imzolangandan keyin qayta seriyalash api_signature_invalid ning eng keng tarqalgan sababidir.
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 usuli
Agar har bir soʻrovni imzolash stekingizga mos kelmasa, kalit ID va maxfiy kalitingizni POST /v1/oauth/token (grant_type=client_credentials, form-encoded) orqali qisqa muddatli bearer tokenga almashtiring. Tokenlar 30 daqiqa amal qiladi va sizga berilgan doiralarni oʻz ichiga oladi; scope parametri bilan ularning bir qismini soʻrashingiz mumkin.
Tokenni har bir chaqiruvda X-API-Key bilan birga Authorization: Bearer sifatida yuboring. Kalit ID har bir soʻrovda qayta tekshiriladi, shuning uchun kalit bekor qilinsa, uning tokenlari darhol yaroqsiz boʻladi.
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
-d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRETKalit ID lari, maxfiy kalitlar va almashtirish
Sandbox kalitlari dt_sbx_ bilan, production kalitlari dt_live_ bilan boshlanadi. Kalit bitta muhit va bitta hamkorga tegishli. Maxfiy kalitlar bir marta — yaratishda, almashtirishda va ochish havolasi orqali — koʻrsatiladi va bizda xeshlangan holda saqlanadi.
Kalitni dasturchi portalida almashtiring: yangi kalit ID va maxfiy kalit beriladi, eski kalit esa siz tanlagan imtiyozli davr (yetti kungacha) davomida ishlashda davom etadi, shuning uchun uzilishsiz oʻtishingiz mumkin. Bekor qilish darhol amalga oshadi.
IP ruxsat roʻyxati
Ixtiyoriy ravishda dasturchi portalida har bir muhitni IPv4/IPv6 manzillar yoki CIDR diapazonlari toʻplamiga bogʻlang. Boshqa manzillardan kelgan soʻrovlar toʻgʻri imzolangan boʻlsa ham 403 api_ip_not_allowed bilan rad etiladi. Istalgan manbani qabul qilish uchun roʻyxatni boʻsh qoldiring.