Autenticação

Métodos de autenticação para diferentes contextos de uso.

Visão Geral

A plataforma expõe públicos diferentes — automações de integradores, o painel administrativo, sistemas de prestadores parceiros. Cada um tem necessidades distintas de segurança, e por isso há um método de autenticação para cada contexto (todos independentes entre si):

MétodoUsoEscopo
API Key + Secret LegadoIntegrações simples (mensagens, financeiro, config)API clássica (/api/external/messages, /api/external/financeiro, /api/v2/config)
OAuth2 client_credentials RecomendadoAutomações (n8n, Zapier, Make) e novas integraçõesAPI Externa (/api/external/v2/**) — ver OAuth2
JWT Bearer TokenPainel administrativoAPI Admin — disponível mediante contrato comercial
API Key do Prestador (nbwp_)Sistema de um prestador parceiroAPI do Prestador (/api/external/prestador/**) — ver Prestador

Por que métodos diferentes?

A escolha do método não é arbitrária — cada um resolve um problema de segurança específico:

Regra prática: automação nova → OAuth2 (escopos + token temporário). Integração simples existente → API Key. Ação de pessoa no painel → JWT (não em automação). Sistema de prestador → chave nbwp_.

API Key + Secret (API — legado)

A API Key permanece ativa e suportada para as rotas clássicas (mensagens, financeiro, configuração). Para novas integrações, prefira OAuth2 client_credentials — oferece escopos granulares por automação e acesso à superfície completa da API externa (pacientes, agendamentos, atendimentos).

Utilize os headers X-Api-Key e X-Api-Secret em todas as requisições.

Obtendo as Credenciais

As credenciais são geradas automaticamente ao cadastrar uma aplicação no painel admin. O API Secret é exibido apenas uma vez — armazene-o em local seguro.

Exemplo de Requisição

curl https://api.avizuai.com.br/api/external/financeiro/saldo \ -H "X-Api-Key: ak_1234567890abcdef" \ -H "X-Api-Secret: sk_abcdef1234567890"

Erros de Autenticação

Se as credenciais forem inválidas ou ausentes, a API retorna 401 Unauthorized:

{ "status": 401, "error": "Unauthorized", "message": "Credenciais inválidas", "timestamp": "2024-04-11T10:30:00" }

JWT Bearer Token (API Admin)

A API Admin utiliza autenticação via JWT (JSON Web Token). Primeiro, obtenha um token através do endpoint de login.

Login

POST

/api/admin/auth/login

Request body:

{ "email": "admin@example.com", "senha": "sua-senha" }

Resposta (200):

{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "tipo": "Bearer", "usuario": { "id": 1, "nome": "João Silva", "email": "admin@example.com", "nivel": "ADMINISTRADOR" } }

Proteções do login admin (MFA, reCAPTCHA e rate limit)

O login administrativo é protegido em camadas. A resposta do /api/admin/auth/login pode não trazer o token de imediato quando há um segundo fator:

Esses fluxos valem para o painel web. Automações server-to-server devem usar a API Externa (API Key/Secret ou OAuth2), que não passa por MFA/reCAPTCHA.

Usando o Token

Inclua o token no header Authorization de todas as requisições à API Admin:

curl https://api.avizuai.com.br/api/admin/aplicacoes \ -H "Authorization: Bearer eyJhbGciOi..."

Erros de Login

CódigoSituaçãoResposta
400Falha na verificação do reCAPTCHA{"erro": "Falha na verificação de segurança. Tente novamente."}
401Email ou senha incorretos{"erro": "Credenciais inválidas"}
403Usuário desativado{"erro": "Usuário inativo"}
429Muitas tentativas (rate limit/lockout){"erro": "...", "retryAfter": 900} + header Retry-After

Segurança

Importante: Nunca exponha suas credenciais em código client-side (JavaScript no navegador, apps mobile sem ofuscação). Utilize sempre chamadas server-to-server.

Próximos Passos