Dashboard

Analytics

GET /api/analytics

Retorna dados consolidados dos últimos 30 dias para construir dashboards e relatórios customizados. Inclui estatísticas gerais, gráficos diários e por hora, top placas, distribuição por câmera e reconhecimentos recentes.

Autenticação

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

Requisição

GET /api/analytics

Headers

HeaderObrigatórioDescrição
AuthorizationsimBearer pk_... (API key) ou cookie de sessão

Exemplo

curl "https://api.placaflow.com.br/api/analytics" \
  -H "Authorization: Bearer pk_a1b2c3d4e5f6g7h8i9j0..."

Resposta 200

{
  "stats": {
    "total30d": 1250,
    "activeCameras": 3,
    "activeApiKeys": 2,
    "successRate": 96.5
  },
  "dailyChart": [
    { "date": "2026-02-20", "count": 42 },
    { "date": "2026-02-21", "count": 38 },
    { "date": "2026-02-22", "count": 55 },
    { "date": "2026-02-23", "count": 29 },
    { "date": "2026-02-24", "count": 61 },
    { "date": "2026-02-25", "count": 47 },
    { "date": "2026-02-26", "count": 33 },
    { "date": "2026-02-27", "count": 50 },
    { "date": "2026-02-28", "count": 44 },
    { "date": "2026-03-01", "count": 39 },
    { "date": "2026-03-02", "count": 52 },
    { "date": "2026-03-03", "count": 48 },
    { "date": "2026-03-04", "count": 36 },
    { "date": "2026-03-05", "count": 41 },
    { "date": "2026-03-06", "count": 57 },
    { "date": "2026-03-07", "count": 63 },
    { "date": "2026-03-08", "count": 28 },
    { "date": "2026-03-09", "count": 45 },
    { "date": "2026-03-10", "count": 51 },
    { "date": "2026-03-11", "count": 40 },
    { "date": "2026-03-12", "count": 37 },
    { "date": "2026-03-13", "count": 46 },
    { "date": "2026-03-14", "count": 32 },
    { "date": "2026-03-15", "count": 58 },
    { "date": "2026-03-16", "count": 43 },
    { "date": "2026-03-17", "count": 49 },
    { "date": "2026-03-18", "count": 35 },
    { "date": "2026-03-19", "count": 54 },
    { "date": "2026-03-20", "count": 60 },
    { "date": "2026-03-21", "count": 41 }
  ],
  "hourlyChart": [
    { "hour": "00:00", "count": 5 },
    { "hour": "01:00", "count": 2 },
    { "hour": "02:00", "count": 1 },
    { "hour": "03:00", "count": 0 },
    { "hour": "04:00", "count": 1 },
    { "hour": "05:00", "count": 4 },
    { "hour": "06:00", "count": 18 },
    { "hour": "07:00", "count": 45 },
    { "hour": "08:00", "count": 82 },
    { "hour": "09:00", "count": 71 },
    { "hour": "10:00", "count": 56 },
    { "hour": "11:00", "count": 63 },
    { "hour": "12:00", "count": 88 },
    { "hour": "13:00", "count": 74 },
    { "hour": "14:00", "count": 59 },
    { "hour": "15:00", "count": 52 },
    { "hour": "16:00", "count": 67 },
    { "hour": "17:00", "count": 91 },
    { "hour": "18:00", "count": 85 },
    { "hour": "19:00", "count": 48 },
    { "hour": "20:00", "count": 31 },
    { "hour": "21:00", "count": 19 },
    { "hour": "22:00", "count": 12 },
    { "hour": "23:00", "count": 8 }
  ],
  "topPlates": [
    { "plate": "ABC1D23", "count": 47 },
    { "plate": "XYZ9K87", "count": 31 },
    { "plate": "DEF4G56", "count": 28 },
    { "plate": "GHI7J89", "count": 24 },
    { "plate": "JKL2M34", "count": 21 },
    { "plate": "NOP5Q67", "count": 18 },
    { "plate": "RST8U90", "count": 15 },
    { "plate": "VWX1Y23", "count": 13 },
    { "plate": "ZAB4C56", "count": 11 },
    { "plate": "DEF7G89", "count": 9 }
  ],
  "cameraChart": [
    { "name": "Entrada principal", "count": 850 },
    { "name": "Saída veículos", "count": 400 },
    { "name": "Estacionamento B", "count": 215 }
  ],
  "recent": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "plate": "ABC1D23",
      "cameraName": "Entrada principal",
      "confidence": 0.96,
      "timestamp": "2026-03-22T14:30:00.000Z"
    },
    {
      "id": "661f9511-f30c-52e5-b827-557766551111",
      "plate": "XYZ9K87",
      "cameraName": "Saída veículos",
      "confidence": 0.91,
      "timestamp": "2026-03-22T14:28:00.000Z"
    },
    {
      "id": "772a0622-a41d-63f6-c938-668877662222",
      "plate": "DEF4G56",
      "cameraName": "Entrada principal",
      "confidence": 0.88,
      "timestamp": "2026-03-22T14:25:00.000Z"
    },
    {
      "id": "883b1733-b52e-74a7-da49-779988773333",
      "plate": "GHI7J89",
      "cameraName": "Estacionamento B",
      "confidence": 0.94,
      "timestamp": "2026-03-22T14:20:00.000Z"
    },
    {
      "id": "994c2844-c63f-85b8-eb50-880099884444",
      "plate": "JKL2M34",
      "cameraName": "Entrada principal",
      "confidence": 0.92,
      "timestamp": "2026-03-22T14:15:00.000Z"
    }
  ]
}

Campos da resposta

stats

CampoTipoDescrição
total30dnumberTotal de reconhecimentos nos últimos 30 dias
activeCamerasnumberNúmero de câmeras com enabled: true
activeApiKeysnumberNúmero de chaves de API com enabled: true
successRatenumberPorcentagem de reconhecimentos com confiança acima de 95%

dailyChart

Array com 30 entradas (uma por dia dos últimos 30 dias).

CampoTipoDescrição
datestringData no formato YYYY-MM-DD
countnumberTotal de reconhecimentos no dia

hourlyChart

Array com 24 entradas (uma por hora). Dados agregados dos últimos 7 dias.

CampoTipoDescrição
hourstringHora no formato HH:00
countnumberTotal de reconhecimentos naquela hora (soma dos últimos 7 dias)

topPlates

Array com as 10 placas mais frequentes nos últimos 30 dias, ordenadas por frequência.

CampoTipoDescrição
platestringTexto da placa (uppercase)
countnumberTotal de detecções nos últimos 30 dias

cameraChart

Array com reconhecimentos por câmera nos últimos 30 dias, ordenados por volume.

CampoTipoDescrição
namestringNome da câmera
countnumberTotal de reconhecimentos pela câmera

recent

Array com os últimos 5 reconhecimentos.

CampoTipoDescrição
idstringUUID do reconhecimento
platestringTexto da placa (uppercase)
cameraNamestringNome da câmera
confidencenumberConfiança (0-1)
timestampstringData/hora ISO 8601

Erros

CódigoDescrição
401Não autenticado ou API key inválida
Esta página foi útil?