Autenticação
Autenticação
Seção intitulada “Autenticação”A API do Healthing CRM usa autenticação JWT (JSON Web Token). Este guia explica como obter e usar tokens de acesso.
Fluxo de Autenticação
Seção intitulada “Fluxo de Autenticação”┌─────────┐ POST /auth/login ┌─────────┐│ Cliente │ ────────────────────────► │ API ││ │ ◄──────────────────────── │ │└─────────┘ access_token + └─────────┘ refresh_tokenObter Token de Acesso
Seção intitulada “Obter Token de Acesso”Endpoint
Seção intitulada “Endpoint”POST /api/v1/auth/loginRequisição
Seção intitulada “Requisição”{ "email": "usuario@empresa.com", "password": "sua_senha"}Resposta
Seção intitulada “Resposta”{ "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "bearer", "expires_in": 1800}Exemplo cURL
Seção intitulada “Exemplo cURL”curl -X POST https://crm.healthing.com.br/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"email": "usuario@empresa.com", "password": "sua_senha"}'Usar o Token
Seção intitulada “Usar o Token”Inclua o token em todas as requisições:
GET /api/v1/contactsAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Exemplo cURL
Seção intitulada “Exemplo cURL”curl https://crm.healthing.com.br/api/v1/contacts \ -H "Authorization: Bearer SEU_ACCESS_TOKEN"Renovar Token (Refresh)
Seção intitulada “Renovar Token (Refresh)”O access token expira em 30 minutos. Use o refresh token para obter um novo:
Endpoint
Seção intitulada “Endpoint”POST /api/v1/auth/refreshRequisição
Seção intitulada “Requisição”{ "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}Resposta
Seção intitulada “Resposta”{ "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "bearer", "expires_in": 1800}Tempo de Expiração
Seção intitulada “Tempo de Expiração”| Token | Duração |
|---|---|
| Access Token | 30 minutos |
| Refresh Token | 7 dias |
Obter Usuário Atual
Seção intitulada “Obter Usuário Atual”Endpoint
Seção intitulada “Endpoint”GET /api/v1/auth/meResposta
Seção intitulada “Resposta”{ "id": 1, "email": "usuario@empresa.com", "full_name": "Nome Completo", "tenant_id": 1, "role": "admin", "is_active": true, "created_at": "2024-01-15T10:30:00Z"}Endpoint
Seção intitulada “Endpoint”POST /api/v1/auth/logoutInvalida o refresh token atual.
Erros de Autenticação
Seção intitulada “Erros de Autenticação”401 Unauthorized
Seção intitulada “401 Unauthorized”{ "detail": "Could not validate credentials", "code": "INVALID_CREDENTIALS"}Causas:
- Token expirado
- Token inválido
- Token não fornecido
403 Forbidden
Seção intitulada “403 Forbidden”{ "detail": "Not enough permissions", "code": "INSUFFICIENT_PERMISSIONS"}Causas:
- Usuário sem permissão para a operação
- Tentando acessar recurso de outro tenant
Boas Práticas
Seção intitulada “Boas Práticas”- Nunca exponha tokens em logs ou URLs
- Armazene tokens de forma segura (não em localStorage para apps web)
- Implemente refresh automático antes do token expirar
- Use HTTPS sempre
- Revogue tokens quando o usuário fizer logout