Dashboard

Webhooks

POST /api/webhooks

Cria um novo webhook para receber notificações de eventos em tempo real. O sistema enviará requisições HTTP POST ao URL configurado sempre que os eventos selecionados ocorrerem.

Autenticação

Scope necessário: webhooks:write

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

Requisição

POST /api/webhooks
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 webhook
urlstringsimURL do endpoint que receberá os eventos (HTTPS recomendado)
eventsstring[]simLista de eventos a assinar
secretstringnãoauto-geradoSecret para verificação HMAC-SHA256. Se vazio ou omitido, um secret seguro é gerado automaticamente
enabledbooleannãotrueWebhook ativo
headersobjectnão{}Headers HTTP customizados enviados com cada requisição

Eventos disponíveis

EventoDescrição
recognition.createdNova placa reconhecida por uma câmera
alert.triggeredUm alerta foi acionado por uma detecção
camera.onlineUma câmera ficou online (conectada ao agente)
camera.offlineUma câmera ficou offline (desconectada do agente)

Exemplo

curl -X POST "https://api.placaflow.com.br/api/webhooks" \
  -H "Authorization: Bearer pk_a1b2c3d4e5f6g7h8i9j0..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sistema ERP",
    "url": "https://api.example.com/webhook/placaflow",
    "events": ["recognition.created", "alert.triggered"],
    "headers": {
      "Authorization": "Bearer meu-token-interno",
      "X-Source": "placaflow"
    }
  }'

Resposta 201

{
  "webhook": {
    "id": "w1b2c3d4-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": "Sistema ERP",
    "url": "https://api.example.com/webhook/placaflow",
    "secret": "whsec_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
    "enabled": true,
    "events": ["recognition.created", "alert.triggered"],
    "headers": {
      "Authorization": "Bearer meu-token-interno",
      "X-Source": "placaflow"
    },
    "lastDeliveryAt": null,
    "lastDeliveryStatus": null,
    "failureCount": 0
  }
}

Info

Se você não fornecer um secret, um será gerado automaticamente e retornado na resposta. Guarde esse valor para verificar a assinatura HMAC-SHA256 das requisições recebidas via header X-Signature-256.

Campos da resposta

CampoTipoDescrição
idstringUUID único do webhook
userIdstringUUID do proprietário
createdAtstringData de criação ISO 8601
updatedAtstringData da última atualização ISO 8601
namestringNome do webhook
urlstringURL do endpoint
secretstringSecret para HMAC-SHA256 (auto-gerado se não fornecido)
enabledbooleanWebhook ativo
eventsstring[]Eventos assinados
headersobjectHeaders HTTP customizados
lastDeliveryAtstring?Sempre null na criação
lastDeliveryStatusnumber?Sempre null na criação
failureCountnumberSempre 0 na criação

Erros

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