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
dispositivoaparece exatamente uma vez. - Quando
filteré omitido, a data alvo é resolvida dinamicamente comoMAX(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
| Header | Valor |
|---|---|
ifw-public-hub-key | <api-key-do-cliente> |
Query Parameters
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
filter | string | — | MAX(data_de_ping) da view (D-1) | Filtro de data no formato date:eq:YYYY-MM-DD. Aplicado em data_de_ping. |
page | int | — | 1 | Página (≥ 1). |
pageSize | int | — | 20 | Itens 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:
totalrepresenta a quantidade de dispositivos distintos presentes no snapshot.- Cada
dispositivoaparece 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
rankedaplicandoROW_NUMBER() OVER (PARTITION BY dispositivo ORDER BY ...)sobre a view do cliente, filtrada nadata_de_pingalvo. A página final é montada por umINNER JOINna CTE filtrandorn = 1, garantindo deduplicação determinística. - Se a view do cliente não contiver registros,
MAX(data_de_ping)retornaNULL, o filtro não casa nada e a resposta é simplesmentetotal = 0,data = [](sem erro).