Autenticação
A API usa JWT Bearer + cabeçalho de workspace. Toda chamada precisa dos dois.
Headers obrigatórios
http
Authorization: Bearer <jwt>
x-workspace-id: <workspaceId>
Content-Type: application/jsonLogin
bash
curl -X POST https://agentflow.vulkania.cloud/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "voce@exemplo.com",
"password": "..."
}'Resposta:
json
{
"user": { "id": "...", "name": "...", "email": "..." },
"token": "eyJhbGciOi...",
"workspaces": [
{ "id": "ws_...", "name": "Bee Delivery", "role": "OWNER" }
]
}Use o token em Authorization: Bearer e o workspaces[].id em x-workspace-id.
Roles
| Role | Pode fazer |
|---|---|
OWNER | Tudo, incluindo deletar workspace, gerenciar billing |
MANAGER | Tudo exceto billing/owner; pode acessar Supervisor IA |
AGENT | Atender chats em tempo real (assumir conversa, responder) |
VIEWER | Apenas ler — sem edição |
Mudanças sensíveis (prompt, intenções, webhooks) feitas pelo Supervisor IA geram um PendingApproval — só OWNER/MANAGER aprovam.
Convites
bash
POST /api/workspaces/{workspaceId}/invites
{
"email": "novo@exemplo.com",
"role": "AGENT"
}Retorna { inviteUrl } que você manda por e-mail/WhatsApp pra pessoa. Aceitar em /invite/{token}.
Tokens de API (workspace)
Para integrações server-to-server:
bash
POST /api/workspaces/{workspaceId}/api-tokens
{
"label": "Integração CRM"
}Retorna o token uma única vez. Use em Authorization: Bearer <token> sem precisar de login. Tokens não expiram, só DELETE /api/workspaces/{workspaceId}/api-tokens/{id} pra revogar.