Към съдържанието

Удостоверяване

Два начина за удостоверяване, и двата обвързани с ID на ключа ви: подписани заявки (препоръчително) или bearer токени по OAuth 2 client credentials.

  1. Подписани заявки (HMAC-SHA256)
  2. OAuth 2 client credentials
  3. ID на ключове, тайни ключове и смяна
  4. Разрешени IP адреси

Подписани заявки (HMAC-SHA256)

Изпращайте X-API-Key, X-Timestamp, X-Nonce и X-Signature при всяко извикване. Подписът обхваща метода, точната цел на заявката (път и низ на заявката), времевия печат, nonce и хеша на тялото, така че повторена или променена заявка не преминава проверката. Допуска се разминаване на часовника до пет минути; повторното използване на nonce в рамките на десет минути се отхвърля с 401 api_nonce_reused.

Изчислявайте подписа върху суровите байтове, които изпращате по мрежата. Сериализирайте JSON веднъж, хеширайте точно тези байтове и изпратете същите байтове като тяло — повторната сериализация след подписване е най-честата причина за 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 client credentials

Ако подписването на всяка заявка не пасва на технологичния ви стек, обменете ID на ключа и тайния ключ срещу краткотраен bearer токен на POST /v1/oauth/token (grant_type=client_credentials, form-encoded). Токените са валидни 30 минути и носят предоставените ви обхвати; можете да заявите подмножество с параметъра scope.

Изпращайте токена като Authorization: Bearer заедно с X-API-Key при всяко извикване. ID на ключа се проверява отново при всяка заявка, така че отнемането на ключ незабавно обезсилва неговите токени.

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 на ключове, тайни ключове и смяна

Ключовете за sandbox започват с dt_sbx_, а тези за production — с dt_live_. Един ключ принадлежи на една среда и един партньор. Тайните ключове се показват веднъж — при създаване, при смяна и чрез линка за показване — и се съхраняват хеширани от наша страна.

Сменяйте от портала за разработчици: издават се нов ID на ключа и таен ключ, докато старият ключ продължава да работи през избрания от вас гратисен период (до седем дни), така че да преминете без прекъсване. Отнемането е незабавно.

Разрешени IP адреси

По желание обвържете всяка среда с набор от IPv4/IPv6 адреси или CIDR диапазони в портала за разработчици. Заявките от всеки друг адрес се отказват с 403 api_ip_not_allowed, дори когато са правилно подписани. Оставете списъка празен, за да приемате заявки от всеки източник.