Pular para o conteúdo principal

Autenticação

A API do ION Guard utiliza Laravel Sanctum para autenticação via tokens Bearer. Todo acesso autenticado requer um token válido no header Authorization.

Obtendo um token​

Envie as credenciais do usuário para o endpoint de login:

POST /api/v1/auth/login
Content-Type: application/json

{
"email": "operador@empresa.com",
"password": "sua-senha"
}

Resposta de sucesso (200)​

{
"token": "1|ionguard_abc123def456...",
"user": {
"id": "9c1a2b3c-...",
"name": "João Silva",
"email": "operador@empresa.com",
"role": "operator",
"status": "active",
"password_login_enabled": true,
"sso_login_enabled": false,
"role_managed_by_sso": false,
"tenant_id": "9c1a2b3c-...",
"last_login_at": "2026-07-03T12:00:00-03:00",
"created_at": "2026-01-10T09:30:00-03:00",
"updated_at": "2026-07-03T12:00:00-03:00"
}
}
Prefixo do token

Os tokens são emitidos com o prefixo ionguard_ (após o identificador 1|), o que facilita a detecção automática de segredos vazados por ferramentas de secret scanning.

Respostas de erro​

StatusSituação
401Credenciais inválidas
403Conta não está ativa (inativa ou bloqueada)
429Muitas tentativas — rate limit excedido

Usando o token​

Inclua o token no header Authorization de todas as requisições autenticadas:

GET /api/v1/sites
Authorization: Bearer 1|abc123def456...
Content-Type: application/json

Renovando o token​

Para obter um novo token sem refazer login, use o endpoint de refresh. O token atual é revogado e um novo é gerado:

POST /api/v1/auth/refresh
Authorization: Bearer 1|abc123def456...

Resposta (200)​

{
"token": "2|xyz789ghi012..."
}
Token anterior revogado

Após o refresh, o token anterior deixa de funcionar. Use o novo token nas requisições seguintes.

Validade do token​

Cada token tem validade de 24 horas (1440 minutos) a partir da emissão. Depois disso, o token expira e as requisições passam a retornar 401 Unauthorized — é necessário obter um novo token via login ou refresh.

O tempo de expiração é definido no servidor pela variável SANCTUM_TOKEN_EXPIRATION (em minutos); o administrador da instalação pode ajustá-lo.

Logout​

Para revogar o token atual:

POST /api/v1/auth/logout
Authorization: Bearer 1|abc123def456...

Resposta (200)​

{
"message": "Logged out."
}

Rate limiting​

Os endpoints de autenticação possuem rate limiting mais restritivo que os demais:

GrupoLimite
Auth (login, refresh, logout)5 req/min
Endpoints autenticados60 req/min

Quando o limite é excedido, a API retorna status 429 Too Many Requests com o header Retry-After indicando quantos segundos aguardar.

Permissões por perfil​

O token herda as permissões do perfil do usuário. As mesmas regras de autorização da interface web se aplicam à API:

PerfilAcesso
Platform AdminTodos os endpoints, todos os tenants
Tenant MasterTodos os endpoints dentro do seu tenant
Tenant AdminCRUD de sites, zonas, dispositivos e usuários operacionais
OperatorLeitura + ações de alerta (acknowledge, resolve) nos sites atribuídos
ViewerSomente leitura nos sites atribuídos

Exemplo completo (cURL)​

# 1. Login
TOKEN=$(curl -s -X POST https://ionguard.exemplo.local/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"operador@empresa.com","password":"senha123"}' \
| jq -r '.token')

# 2. Listar sites
curl -s https://ionguard.exemplo.local/api/v1/sites \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"

# 3. Listar alertas de um site
curl -s https://ionguard.exemplo.local/api/v1/sites/{site_id}/alerts \
-H "Authorization: Bearer $TOKEN"

# 4. Reconhecer um alerta
curl -s -X POST https://ionguard.exemplo.local/api/v1/alerts/{alert_id}/acknowledge \
-H "Authorization: Bearer $TOKEN"

# 5. Logout
curl -s -X POST https://ionguard.exemplo.local/api/v1/auth/logout \
-H "Authorization: Bearer $TOKEN"

Referência completa​

Para a lista completa de endpoints e seus parâmetros, consulte a documentação interativa gerada automaticamente:

https://<seu-servidor>/docs/api