Dashboard

Alertas

POST /api/alertas

Cria um novo alerta para ser notificado quando placas específicas (ou quaisquer placas) são detectadas pelas câmeras.

Autenticação

Scope necessário: alerts:write

Inclua o header Authorization: Bearer <api-key> ou use cookie de sessão.

Requisição

POST /api/alertas
Content-Type: application/json

Headers

HeaderObrigatórioDescrição
AuthorizationsimBearer pk_... (API key) ou cookie de sessão
Content-Typesimapplication/json

Body

CampoTipoObrigatórioPadrãoDescrição
namestringsimNome do alerta
descriptionstringnão""Descrição do alerta
enabledbooleannãotrueAlerta ativo
plateMatchMode"any" | "specific" | "allowlist"não"specific"Modo de correspondência
platesstring[]não[]Lista de placas para correspondência
cameraScope"all" | "specific"não"all"Escopo de câmeras monitoradas
cameraIdsstring[]não[]UUIDs das câmeras (quando cameraScope é "specific")
scheduleEnabledbooleannãofalseAtivar restrição de horário
schedule.startTimestringnão"00:00"Horário de início (HH:mm)
schedule.endTimestringnão"23:59"Horário de fim (HH:mm)
schedule.daysOfWeekstring[]não[]Dias: mon, tue, wed, thu, fri, sat, sun. Vazio = todos
minConfidencenumbernão0.5Confiança mínima para disparar (0-1)
cooldownMinutesnumbernão5Minutos entre disparos consecutivos
notificationsarraynão[]Canais de notificação

Modos de correspondência (plateMatchMode)

ModoComportamentoQuando usar
anyDispara para qualquer placa detectadaMonitoramento noturno, detecção de intrusão
specificDispara apenas para placas na lista plates[]Alerta de VIP, veículo procurado
allowlistDispara para placas NÃO presentes na lista plates[]Detecção de estranhos, controle de acesso

Exemplo

curl -X POST "https://api.placaflow.com.br/api/alertas" \
  -H "Authorization: Bearer pk_a1b2c3d4e5f6g7h8i9j0..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Intruso noturno",
    "description": "Alerta para placas desconhecidas à noite",
    "plateMatchMode": "allowlist",
    "plates": ["ABC1D23", "XYZ9K87", "DEF4G56"],
    "cameraScope": "all",
    "scheduleEnabled": true,
    "schedule": {
      "startTime": "22:00",
      "endTime": "06:00",
      "daysOfWeek": ["mon", "tue", "wed", "thu", "fri"]
    },
    "minConfidence": 0.8,
    "cooldownMinutes": 5,
    "notifications": [
      { "type": "email", "addresses": ["seguranca@empresa.com"] },
      { "type": "webhook", "url": "https://api.example.com/hook" }
    ]
  }'

Resposta 201

{
  "alert": {
    "id": "a1b2c3d4-5678-9abc-def0-123456789abc",
    "userId": "c3a1e902-4f5b-4b8a-9c6d-1a2b3c4d5e6f",
    "createdAt": "2026-03-22T16:00:00.000Z",
    "updatedAt": "2026-03-22T16:00: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": ["mon", "tue", "wed", "thu", "fri"]
    },
    "minConfidence": 0.8,
    "cooldownMinutes": 5,
    "notifications": [
      { "type": "email", "addresses": ["seguranca@empresa.com"] },
      { "type": "webhook", "url": "https://api.example.com/hook" }
    ],
    "lastTriggeredAt": null,
    "triggerCount": 0
  }
}

Campos da resposta

CampoTipoDescrição
idstringUUID único do alerta
userIdstringUUID do proprietário
createdAtstringData de criação ISO 8601
updatedAtstringData da última atualização ISO 8601
namestringNome do alerta
descriptionstringDescrição
enabledbooleanAlerta ativo
plateMatchModestringModo de correspondência
platesstring[]Lista de placas
cameraScopestringEscopo de câmeras
cameraIdsstring[]UUIDs das câmeras
scheduleEnabledbooleanRestrição de horário ativa
scheduleobjectConfiguração de horário {startTime, endTime, daysOfWeek[]}
minConfidencenumberConfiança mínima (0-1)
cooldownMinutesnumberMinutos entre disparos
notificationsarrayCanais de notificação
lastTriggeredAtstring?Sempre null na criação
triggerCountnumberSempre 0 na criação

Erros

CódigoDescrição
400Campo name obrigatório ausente ou dados inválidos
401Não autenticado ou API key inválida
403API key não possui scope alerts:write
Esta página foi útil?