Pular para o conteúdo principal

GET /iwatch/devices/trackers/snapshot

Retorna a foto atual da frota: um único registro por dispositivo, escolhendo sempre o mais recente para uma data de ping fixa.

  • Não é histórico. Cada dispositivo aparece exatamente uma vez.
  • Quando filter é omitido, a data alvo é resolvida dinamicamente como MAX(data_de_ping) disponível na view — na operação normal isso equivale a D-1 (ontem).
  • O desempate entre múltiplos registros do mesmo dispositivo no mesmo dia segue a ordem: data_de_ping DESC NULLS LAST, hora_de_ping DESC NULLS LAST, dt_carga DESC NULLS LAST, id DESC.

Use este endpoint para alimentar dashboards de "estado atual", ETLs incrementais e qualquer integração que precise sincronizar estado (e não histórico).

Autenticação

Requer header ifw-public-hub-key. Ver Visão Geral para detalhes.

Request

Headers

HeaderValor
ifw-public-hub-key<api-key-do-cliente>

Query Parameters

ParâmetroTipoObrigatórioPadrãoDescrição
filterstringMAX(data_de_ping) da view (D-1)Filtro de data no formato date:eq:YYYY-MM-DD. Aplicado em data_de_ping.
pageint1Página (≥ 1).
pageSizeint20Itens por página (1–100).
# Snapshot D-1 dinâmico (sem filter — usa MAX(data_de_ping))
curl -s "https://servicos.ifollowtech.com.br/iwatch/devices/trackers/snapshot?page=1&pageSize=20" \
-H "ifw-public-hub-key: <api-key>"

# Snapshot de uma data específica
curl -s "https://servicos.ifollowtech.com.br/iwatch/devices/trackers/snapshot?filter=date:eq:2026-05-12" \
-H "ifw-public-hub-key: <api-key>"

Response

200 OK

Mesmo envelope e formato de item do endpoint GET /iwatch/devices/trackers. A diferença essencial é semântica:

  • total representa a quantidade de dispositivos distintos presentes no snapshot.
  • Cada dispositivo aparece uma única vez na lista combinada de todas as páginas.
{
"page": 1,
"pageSize": 20,
"total": 320,
"data": [
{
"dispositivo": "iWatch-001",
"material": "MAT-12345",
"identificador": 123456,
"data_de_ping": "2026-05-12",
"hora_de_ping": "23:58:41",
"ligado": true,
"sem_sinal": false,
"desligado": false,
"perc_bateria": 78,
"latitude_rastreada": "-23.55052",
"longitude_rastreada": "-46.633308"
}
]
}

400 Bad Request

Retornado quando page, pageSize ou filter são inválidos.

403 Forbidden

API Key ausente/inválida ou cliente sem nenhuma view permitida.

No views available for this client

Observações de implementação

  • Internamente o snapshot é construído com uma CTE ranked aplicando ROW_NUMBER() OVER (PARTITION BY dispositivo ORDER BY ...) sobre a view do cliente, filtrada na data_de_ping alvo. A página final é montada por um INNER JOIN na CTE filtrando rn = 1, garantindo deduplicação determinística.
  • Se a view do cliente não contiver registros, MAX(data_de_ping) retorna NULL, o filtro não casa nada e a resposta é simplesmente total = 0, data = [] (sem erro).