Autenticação
Duas formas de autenticação, ambas associadas ao ID da sua chave: pedidos assinados (recomendado) ou tokens bearer OAuth 2 client-credentials.
- Pedidos assinados (HMAC-SHA256)
- Credenciais de cliente OAuth 2 (client credentials)
- IDs de chave, segredos e rotação
- Lista de IPs permitidos
Pedidos assinados (HMAC-SHA256)
Envie X-API-Key, X-Timestamp, X-Nonce e X-Signature em todas as chamadas. A assinatura abrange o método, o destino exato do pedido (caminho e query), o timestamp, o nonce e o hash do corpo, pelo que um pedido repetido ou alterado falha a verificação. É tolerada uma diferença de relógio de até cinco minutos; a reutilização de um nonce no prazo de dez minutos é rejeitada com 401 api_nonce_reused.
Calcule a assinatura sobre os bytes em bruto que coloca na rede. Serialize o seu JSON uma vez, faça o hash desses bytes exatos e envie os mesmos bytes como corpo — voltar a serializar depois de assinar é a causa mais comum de 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");Credenciais de cliente OAuth 2 (client credentials)
Se assinar cada pedido não se adequar à sua stack, troque o ID da sua chave e o segredo por um token bearer de curta duração em POST /v1/oauth/token (grant_type=client_credentials, codificado como formulário). Os tokens duram 30 minutos e incluem os âmbitos concedidos; pode pedir um subconjunto com o parâmetro scope.
Envie o token como Authorization: Bearer juntamente com X-API-Key em todas as chamadas. O ID da chave é verificado novamente em cada pedido, pelo que revogar uma chave invalida os seus tokens de imediato.
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
-d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRETIDs de chave, segredos e rotação
As chaves de sandbox começam por dt_sbx_, as chaves de produção por dt_live_. Uma chave pertence a um único ambiente e a um único parceiro. Os segredos são mostrados uma vez — na criação, na rotação e através do link de revelação — e guardados do nosso lado sob a forma de hash.
Rode as chaves no portal do programador: são emitidos um novo ID de chave e um novo segredo enquanto a chave antiga continua a funcionar durante o período de tolerância que escolher (até sete dias), para que possa mudar sem interrupções. A revogação é imediata.
Lista de IPs permitidos
Opcionalmente, restrinja cada ambiente a um conjunto de endereços IPv4/IPv6 ou intervalos CIDR no portal do programador. Os pedidos de qualquer outro endereço são recusados com 403 api_ip_not_allowed, mesmo quando corretamente assinados. Deixe a lista vazia para aceitar qualquer origem.