Dashboard

Recursos

Câmeras

Gerencie câmeras conectadas à plataforma.

Scopes: cameras:read (listar, snapshot) · cameras:write (criar, atualizar, excluir)

Listar câmeras

GET /api/cameras
curl "https://api.placaflow.com.br/api/cameras" \
  -H "Authorization: Bearer pk_a1b2c3d4..."

Resposta 200:

{
  "cameras": [
    {
      "id": "7012e192-5005-43b6-978c-7e304b3676a6",
      "name": "Entrada principal",
      "location": "Portão A",
      "enabled": true,
      "rtspUrl": "rtsp://user:pass@host:5541/stream",
      "rtspTransport": "tcp",
      "minConfidence": 0.7,
      "motionDetectionEnabled": true,
      "motionDetectorType": "framediff",
      "createdAt": "2026-03-20T10:00:00.000Z",
      "updatedAt": "2026-03-20T10:00:00.000Z"
    }
  ]
}

Criar câmera

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

A câmera é registrada no agente de processamento automaticamente. Se o agente estiver indisponível, a criação falha (nada é salvo).

Campos:

CampoTipoObrigatórioPadrãoDescrição
namestringsimNome da câmera
locationstringnão""Localização
rtspUrlstringnão""URL do stream RTSP
rtspTransport"tcp" | "udp"não"tcp"Transporte RTSP
enabledbooleannãotrueCâmera ativa
minConfidencenumbernão0.5Confiança mínima (0-1)
motionDetectionEnabledbooleannãotrueDetecção de movimento
motionDetectorType"framediff" | "mog2"não"framediff"Algoritmo
motionThresholdPercentnumbernão0.01Threshold de movimento
motionFramesRequirednumbernão1Frames mínimos
roiobjectnãonullRegião de interesse
decodeMode"auto" | "gpu" | "cpu"não"auto"Modo de decodificação
frameIntervalMsnumbernão200Intervalo entre frames (ms)
frameSkipnumbernão0Frames ignorados
cropbooleannãotrueRecortar placa
cropResolutionstringnão"640x360"Resolução do recorte
processingMode"blocking" | "queue" | "disk"não"disk"Modo de processamento
queueSizenumbernão100Tamanho da fila
jpegQualitynumbernão100Qualidade JPEG (1-100)

Exemplo:

curl -X POST "https://api.placaflow.com.br/api/cameras" \
  -H "Authorization: Bearer pk_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{"name": "Entrada", "rtspUrl": "rtsp://admin:pass@192.168.1.200:554/stream"}'

Resposta 201: retorna { "camera": {...} }

Atualizar câmera

PUT /api/cameras/:id
Content-Type: application/json

Envie apenas os campos que deseja alterar. A atualização é propagada ao agente de processamento.

curl -X PUT "https://api.placaflow.com.br/api/cameras/7012e192-..." \
  -H "Authorization: Bearer pk_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{"minConfidence": 0.8}'

Excluir câmera

DELETE /api/cameras/:id

Remove a câmera do agente de processamento e ajusta a assinatura no Stripe (crédito proporcional).

curl -X DELETE "https://api.placaflow.com.br/api/cameras/7012e192-..." \
  -H "Authorization: Bearer pk_a1b2c3d4..."

Snapshot

GET /api/cameras/:id/snapshot

Retorna o último frame capturado pela câmera em JPEG.

curl "https://api.placaflow.com.br/api/cameras/7012e192-.../snapshot" \
  -H "Authorization: Bearer pk_a1b2c3d4..." \
  --output snapshot.jpg

Headers de resposta:

  • Content-Type: image/jpeg
  • X-Frame-Width: largura em pixels (quando disponível)
  • X-Frame-Height: altura em pixels (quando disponível)

Erros

CódigoDescrição
400Nome obrigatório ausente
401Não autenticado
404Câmera não encontrada
409Câmera duplicada no agente
502Agente de processamento indisponível
Esta página foi útil?