Autenticação
O AllyOneCRM tem dois modelos de credencial, para dois usos diferentes: sessão de usuário (produto/dashboard) e integração servidor-a-servidor (API).
Sessão de usuário — JWT
Usada pela própria aplicação web e por qualquer client que precise agir como um usuário logado.
Cria o tenant e o primeiro usuário numa única chamada — não existe etapa manual de aprovação para começar a testar.
{
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "9f2c9e7a-...",
"tenant": { "id": "...", "name": "..." },
"user": { "id": "...", "email": "...", "role": "owner" }
}
Envie o token em toda chamada autenticada:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
- Algoritmo
HS256, expira em 4 horas. - Payload contém
userId,tenantIderole— o tenant é sempre resolvido a partir do token, nunca de um header solto. refreshTokené um UUID opaco com TTL deslizante de 24h — cada uso renova a janela.
Integração servidor-a-servidor — API Key
Para chamar a API a partir do seu backend, sem um usuário logado por trás.
Só o owner do tenant cria chaves. A chave é exibida em texto puro uma única vez, na criação — o backend guarda só o hash (SHA-256) dela. Se você perder o valor, precisa gerar uma nova.
crm_live_3f9a1c... (prefixo + 64 caracteres hex)
Use no header em toda chamada:
X-API-Key: crm_live_3f9a1c...
Escopo
Toda chave carrega uma lista explícita de permissões, por exemplo:
Ou ["*"] para acesso irrestrito — uma escolha consciente do owner na criação, nunca o padrão implícito. Para ajustar permissões sem invalidar a chave existente:
300 requisições por minuto por usuário em sessão, ou por endereço IP de origem com API key (rotas de login e cadastro: 5 a cada 15 minutos). Toda resposta traz X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset; ao exceder, a API responde 429 com Retry-After. Detalhes em Erros e limites. Se sua integração precisa de mais throughput, fale com o time AllyOne.
