GET /api/alertas
Retorna todos os alertas do usuário autenticado, ordenados por data de criação (mais recentes primeiro).
Autenticação
Scope necessário: alerts:read
Inclua o header Authorization: Bearer <api-key> ou use cookie de sessão.
Requisição
GET /api/alertas
Headers
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization | sim | Bearer pk_... (API key) ou cookie de sessão |
Exemplo
curl "https://api.placaflow.com.br/api/alertas" \
-H "Authorization: Bearer pk_a1b2c3d4e5f6g7h8i9j0..."
Resposta 200
{
"alerts": [
{
"id": "a1b2c3d4-5678-9abc-def0-123456789abc",
"userId": "c3a1e902-4f5b-4b8a-9c6d-1a2b3c4d5e6f",
"createdAt": "2026-03-15T10:00:00.000Z",
"updatedAt": "2026-03-20T18:30:00.000Z",
"name": "Intruso noturno",
"description": "Alerta para placas desconhecidas à noite",
"enabled": true,
"plateMatchMode": "allowlist",
"plates": ["ABC1D23", "XYZ9K87", "DEF4G56"],
"cameraScope": "all",
"cameraIds": [],
"scheduleEnabled": true,
"schedule": {
"startTime": "22:00",
"endTime": "06:00",
"daysOfWeek": []
},
"minConfidence": 0.8,
"cooldownMinutes": 5,
"notifications": [
{ "type": "email", "addresses": ["seguranca@empresa.com"] },
{ "type": "webhook", "url": "https://api.example.com/hook" }
],
"lastTriggeredAt": "2026-03-22T03:15:00.000Z",
"triggerCount": 42
},
{
"id": "b2c3d4e5-6789-abcd-ef01-23456789abcd",
"userId": "c3a1e902-4f5b-4b8a-9c6d-1a2b3c4d5e6f",
"createdAt": "2026-03-10T12:00:00.000Z",
"updatedAt": "2026-03-10T12:00:00.000Z",
"name": "VIP chegou",
"description": "Notifica quando diretores chegam",
"enabled": true,
"plateMatchMode": "specific",
"plates": ["DIR1A00", "DIR2B00"],
"cameraScope": "specific",
"cameraIds": ["7012e192-5005-43b6-978c-7e304b3676a6"],
"scheduleEnabled": false,
"schedule": {
"startTime": "00:00",
"endTime": "23:59",
"daysOfWeek": []
},
"minConfidence": 0.9,
"cooldownMinutes": 10,
"notifications": [
{ "type": "email", "addresses": ["recepcao@empresa.com"] }
],
"lastTriggeredAt": "2026-03-21T08:45:00.000Z",
"triggerCount": 15
}
]
}
Campos de cada alerta
| Campo | Tipo | Descrição |
|---|---|---|
id | string | UUID único do alerta |
userId | string | UUID do proprietário |
createdAt | string | Data de criação ISO 8601 |
updatedAt | string | Data da última atualização ISO 8601 |
name | string | Nome do alerta |
description | string | Descrição do alerta |
enabled | boolean | Alerta ativo ou desativado |
plateMatchMode | "any" | "specific" | "allowlist" | Modo de correspondência de placas |
plates | string[] | Lista de placas para correspondência |
cameraScope | "all" | "specific" | Escopo de câmeras monitoradas |
cameraIds | string[] | UUIDs das câmeras (quando cameraScope é "specific") |
scheduleEnabled | boolean | Restrição de horário ativa |
schedule | object | Configuração de horário |
schedule.startTime | string | Horário de início (HH:mm) |
schedule.endTime | string | Horário de fim (HH:mm) |
schedule.daysOfWeek | string[] | Dias da semana: mon, tue, wed, thu, fri, sat, sun. Vazio = todos |
minConfidence | number | Confiança mínima para disparar (0-1) |
cooldownMinutes | number | Minutos entre disparos consecutivos |
notifications | array | Canais de notificação configurados |
lastTriggeredAt | string? | Data/hora do último disparo ISO 8601 |
triggerCount | number | Total de vezes que o alerta foi disparado |
Erros
| Código | Descrição |
|---|---|
| 401 | Não autenticado ou API key inválida |
| 403 | API key não possui scope alerts:read |