logo
Comece AquiAutenticacao
Comece Aqui

Autenticação

Entenda o fluxo de autenticação JWT de duas fases da Keyspot Partner API, com exemplos de código e boas práticas de segurança.

Visão geral

A Partner API usa autenticação JWT (JSON Web Token) em duas fases:

  1. Fase 1 — Obter token: envie suas credenciais (X-API-Key + X-API-Secret) e receba um token JWT
  2. Fase 2 — Usar token: inclua o token como Bearer no header Authorization de todas as rotas protegidas

Os exemplos desta página usam o ambiente sandbox (https://sandbox-partner-api.keyspot.com.br). Para produção, use https://partner-api.keyspot.com.br.

Fase 1 — Gerar token

Envie suas credenciais via headers para o endpoint de autenticação:

curl -X POST https://sandbox-partner-api.keyspot.com.br/v1/auth/token \
  -H "X-API-Key: ks_live_k9xv2mp8qr1nl4wz7jy0ea3sd6fh5tg2u" \
  -H "X-API-Secret: ks_secret_c8bn1mq4pk7rv0xj3yw6za9oe2iu5lhd"

Resposta de sucesso

{
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expiresIn": 3600,
    "tokenType": "Bearer"
  }
}
CampoTipoDescrição
tokenstringToken JWT assinado com HS256
expiresInintegerTempo de expiração em segundos (3600 = 1 hora)
tokenTypestringTipo do token (sempre Bearer)

Possíveis erros

StatusCódigoCausa
401MISSING_CREDENTIALSHeaders X-API-Key e/ou X-API-Secret ausentes
401INVALID_API_KEYAPI Key não encontrada no sistema
401INVALID_API_SECRETAPI Secret não confere com a API Key
403API_DISABLEDAcesso à API desabilitado para este cliente
403IP_BLOCKEDIP da requisição não está na lista de IPs permitidos
500NO_DATABASEBanco de dados do cliente não configurado

Fase 2 — Usar o token

Inclua o token no header Authorization com o prefixo Bearer:

curl https://sandbox-partner-api.keyspot.com.br/v1/properties?fields=code,title \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Se o token estiver ausente, malformado ou expirado, a API retorna 401 com código MISSING_TOKEN ou INVALID_TOKEN.

Renovação de token

O token expira em 1 hora (3600 segundos). Você tem duas estratégias para lidar com a renovação:

Armazene o momento de emissão do token e renove-o antes de expirar (por exemplo, a cada 50 minutos):

let token: string;
let tokenIssuedAt: number;

async function ensureValidToken(): Promise<string> {
  const now = Date.now();
  const tokenAge = (now - tokenIssuedAt) / 1000;

  // Renovar se faltam menos de 10 minutos
  if (!token || tokenAge > 3000) {
    token = await getToken(API_KEY, API_SECRET);
    tokenIssuedAt = now;
  }

  return token;
}

Segurança

Nunca exponha suas credenciais (API Key e API Secret) em código client-side, repositórios públicos ou logs.

Boas práticas:

  • Armazene credenciais em variáveis de ambiente ou gerenciadores de secrets
  • Use HTTPS em todas as requisições
  • Não compartilhe tokens JWT entre aplicações diferentes
  • Implemente renovação automática de token
  • Se suas credenciais forem comprometidas, solicite novas via chamado no CRM imediatamente: https://crm.keyspot.com.br/support/tickets

Restrição por IP

A Keyspot pode configurar uma lista de IPs permitidos para suas credenciais. Se o IP da requisição não estiver na lista, a API retorna 403 IP_BLOCKED. Solicite a inclusão de novos IPs via chamado no CRM: https://crm.keyspot.com.br/support/tickets.

Próximos passos