Saltar para o conteúdo

Autenticação

Duas formas de autenticação, ambas associadas ao ID da sua chave: pedidos assinados (recomendado) ou tokens bearer OAuth 2 client-credentials.

  1. Pedidos assinados (HMAC-SHA256)
  2. Credenciais de cliente OAuth 2 (client credentials)
  3. IDs de chave, segredos e rotação
  4. 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.

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");

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
curl -X POST "https://api.dubaitrip.com/v1/oauth/token" \
  -d grant_type=client_credentials -d client_id=$KEY_ID -d client_secret=$SECRET

IDs 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.