Authorization no formato Bearer:
401 Unauthorized.
Anatomia do token
O token é um JWT (JSON Web Token) com três partes separadas por.:
Payload (claims)
Você pode decodificar o payload (sem validar a assinatura) em jwt.io durante debug. Conteúdo típico:| Claim | Descrição |
|---|---|
tenantId | ID interno da unidade de negócio. Resolve qual banco será consultado em todas as chamadas |
nickname | Identificador da API Key (ex.: API.1) — aparece em logs de auditoria |
iat | Issued at (timestamp Unix da geração) |
exp | Expira em (timestamp Unix do fim da validade) |
O token NÃO contém escopo nem permissões granulares hoje. Quem tem o
token pode tudo que a API Pontua pública permite naquele tenant. Se você
precisa de leitura-only para um sistema downstream, faça um proxy no seu
lado que filtre antes de propagar.
Como gerar um token
Acesse o dashboard
Entre em oi.pontua.com.br com sua conta
administrativa. Navegue até Gestão de Pessoas → Configurações → API.
Crie um novo token
Clique em Criar novo token e preencha:
- Nome identificador — descritivo por integração (ex.:
[PROD] erp-totvs,[HML] script-relatorio-mensal). Vai aparecer em logs de auditoria. - Validade — entre 7 dias e 5 anos:
| Validade | Caso de uso |
|---|---|
| 7 dias | Scripts one-shot, testes manuais, POCs |
| 30 dias | Homologações, integrações experimentais |
| 45 / 90 / 180 dias | Integrações em evolução, ciclos de revisão |
| 1 ano | Integrações estáveis com rotação anual programada |
| 5 anos | Sistemas críticos onde rotação manual é inviável (use com cautela) |
Padrão de wrapper HTTP autenticado
Recomendamos encapsular a lógica de auth em uma função reutilizável:Armazenamento seguro
Faça
- Cofre de secrets (1Password, Doppler, AWS SM, HashiCorp Vault)
- Variável de ambiente em runtime (
PONTUA_API_TOKEN) - Token diferente por ambiente (PROD/HML/PRE/CI)
- Token diferente por integração (revogar uma sem afetar outras)
- Restringir leitura do secret aos serviços que precisam
Não faça
- ❌ Comitar em repositório git (mesmo privado)
- ❌ Enviar por e-mail, Slack ou Jira
- ❌ Usar em código frontend (qualquer JS no browser expõe o token)
- ❌ Tokens de 5 anos para scripts de desenvolvedor individual
- ❌ Compartilhar um único token entre times / integrações
- ❌ Logar o token em arquivos de log ou stdout
Rotação zero-downtime
Recomendamos rotacionar tokens no mínimo a cada 12 meses. Para sistemas críticos, rotação trimestral é mais segura.Gere o novo token (mantém o antigo ativo)
Dashboard ou via API:
POST /api-key. Não revogue o antigo ainda.Faça deploy progressivo
Os pods/instances vão pegar o novo token gradualmente. Monitore logs
de erro 401 — se aumentar, faça rollback do secret antes de revogar.
Erros de autenticação
Todos retornam401 Unauthorized com envelope { service, method, message }.
| Mensagem | Causa típica | Ação |
|---|---|---|
Token inválido | Malformado, assinatura corrompida, ou de ambiente errado | Cheque que Bearer tem espaço, e que o token é do ambiente correto |
Token expirado | Atingiu exp (claim) | Gere novo token, atualize secret |
Acesso não autorizado | Header Authorization ausente ou token revogado | Confirme que está enviando o header (cuidado com proxies que filtram) |
Revogação imediata (token vazou)
- Dashboard → Gestão de Pessoas → Configurações → API
- Localize o token pelo nome identificador
- Clique em Revogar
- Token desativado em até 30 segundos. Chamadas subsequentes falham com 401.
- Gere novo token e atualize secret antes de re-deployar.
Auditoria e observabilidade
Toda ação realizada via API fica registrada com onickname do token
que a originou. Você pode consultar a trilha em Auditoria no dashboard,
filtrando por “Origem: API”.
Eventos auditáveis incluem:
- Criação de colaborador, ajuste de registro de ponto, geração de relatório
- Mudanças em escalas, turnos, banco de horas
- Tentativas de revogação ou modificação de tokens
- Nome do token (
nickname) - Timestamp aproximado (BRT)
service,method,messageda resposta de erro (se houver)
Veja também
- Multi-tenant — como o
tenantIdno token resolve a UN - Referência: Api Keys — gerenciar tokens via API
- Erros — outros 4xx além de 401