PUT /api/cameras/:id
Atualiza uma câmera existente. Envie apenas os campos que deseja alterar (atualização parcial). As alterações são propagadas automaticamente ao agente de processamento.
Autenticação
Scope necessário: cameras:write
Inclua o header Authorization: Bearer <api-key> ou use cookie de sessão.
Requisição
PUT /api/cameras/:id
Content-Type: application/json
Headers
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization | sim | Bearer pk_... (API key) ou cookie de sessão |
Content-Type | sim | application/json |
Parâmetros de rota
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | sim | UUID da câmera |
Body
Envie apenas os campos que deseja alterar. Todos os campos são opcionais na atualização.
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome da câmera |
location | string | Localização física |
rtspUrl | string | URL do stream RTSP |
rtspTransport | "tcp" | "udp" | Protocolo de transporte RTSP |
enabled | boolean | Câmera ativa ou desativada |
roi | object | Região de interesse |
minConfidence | number | Confiança mínima (0-1) |
motionDetectionEnabled | boolean | Detecção de movimento |
motionDetectorType | "framediff" | "mog2" | Algoritmo de detecção |
motionThresholdPercent | number | Threshold de movimento |
motionFramesRequired | number | Frames consecutivos necessários |
decodeMode | "auto" | "gpu" | "cpu" | Modo de decodificação |
frameIntervalMs | number | Intervalo entre frames (ms) |
frameSkip | number | Frames ignorados |
crop | boolean | Recortar região da placa |
cropResolution | "426x240" | "640x360" | "1280x720" | Resolução do recorte |
processingMode | "blocking" | "queue" | "disk" | Modo de processamento |
queueSize | number | Tamanho da fila |
jpegQuality | number | Qualidade JPEG (1-100) |
Exemplo
curl -X PUT "https://api.placaflow.com.br/api/cameras/7012e192-5005-43b6-978c-7e304b3676a6" \
-H "Authorization: Bearer pk_a1b2c3d4e5f6g7h8i9j0..." \
-H "Content-Type: application/json" \
-d '{
"minConfidence": 0.8,
"motionDetectionEnabled": false
}'
Resposta 200
{
"camera": {
"id": "7012e192-5005-43b6-978c-7e304b3676a6",
"userId": "c3a1e902-4f5b-4b8a-9c6d-1a2b3c4d5e6f",
"createdAt": "2026-03-20T10:00:00.000Z",
"updatedAt": "2026-03-22T16:30:00.000Z",
"enabled": true,
"name": "Entrada principal",
"location": "Portão A",
"rtspUrl": "rtsp://admin:pass@192.168.1.200:554/stream",
"rtspTransport": "tcp",
"roi": null,
"minConfidence": 0.8,
"motionDetectionEnabled": false,
"motionDetectorType": "framediff",
"motionThresholdPercent": 0.01,
"motionFramesRequired": 1,
"decodeMode": "auto",
"frameIntervalMs": 200,
"frameSkip": 0,
"crop": true,
"cropResolution": "640x360",
"processingMode": "disk",
"queueSize": 100,
"jpegQuality": 100,
"snapshotUrl": null,
"lastSnapshotAt": "2026-03-22T14:30:00.000Z"
}
}
Erros
| Código | Descrição |
|---|---|
| 400 | Dados inválidos no body |
| 401 | Não autenticado ou API key inválida |
| 403 | API key não possui scope cameras:write |
| 404 | Câmera não encontrada |
| 502 | Agente de processamento indisponível (falha ao propagar) |