Удостоверяване
Два начина за удостоверяване, и двата обвързани с ID на ключа ви: подписани заявки (препоръчително) или bearer токени по OAuth 2 client credentials.
- Подписани заявки (HMAC-SHA256)
- OAuth 2 client credentials
- ID на ключове, тайни ключове и смяна
- Разрешени IP адреси
Подписани заявки (HMAC-SHA256)
Изпращайте X-API-Key, X-Timestamp, X-Nonce и X-Signature при всяко извикване. Подписът обхваща метода, точната цел на заявката (път и низ на заявката), времевия печат, nonce и хеша на тялото, така че повторена или променена заявка не преминава проверката. Допуска се разминаване на часовника до пет минути; повторното използване на nonce в рамките на десет минути се отхвърля с 401 api_nonce_reused.
Изчислявайте подписа върху суровите байтове, които изпращате по мрежата. Сериализирайте JSON веднъж, хеширайте точно тези байтове и изпратете същите байтове като тяло — повторната сериализация след подписване е най-честата причина за 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
Ако подписването на всяка заявка не пасва на технологичния ви стек, обменете ID на ключа и тайния ключ срещу краткотраен bearer токен на POST /v1/oauth/token (grant_type=client_credentials, form-encoded). Токените са валидни 30 минути и носят предоставените ви обхвати; можете да заявите подмножество с параметъра scope.
Изпращайте токена като Authorization: Bearer заедно с X-API-Key при всяко извикване. ID на ключа се проверява отново при всяка заявка, така че отнемането на ключ незабавно обезсилва неговите токени.
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
-d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRETID на ключове, тайни ключове и смяна
Ключовете за sandbox започват с dt_sbx_, а тези за production — с dt_live_. Един ключ принадлежи на една среда и един партньор. Тайните ключове се показват веднъж — при създаване, при смяна и чрез линка за показване — и се съхраняват хеширани от наша страна.
Сменяйте от портала за разработчици: издават се нов ID на ключа и таен ключ, докато старият ключ продължава да работи през избрания от вас гратисен период (до седем дни), така че да преминете без прекъсване. Отнемането е незабавно.
Разрешени IP адреси
По желание обвържете всяка среда с набор от IPv4/IPv6 адреси или CIDR диапазони в портала за разработчици. Заявките от всеки друг адрес се отказват с 403 api_ip_not_allowed, дори когато са правилно подписани. Оставете списъка празен, за да приемате заявки от всеки източник.