Pular para o conteúdo principal

Paginação

A API do ION Guard utiliza paginação cursor-based para navegar por listas de recursos. Este método é mais eficiente que paginação offset-based para datasets grandes e em constante mudança.

Como funciona​

Em vez de páginas numeradas (1, 2, 3...), a API retorna um cursor — um token opaco que aponta para a posição no dataset. Você usa o cursor para solicitar a próxima ou anterior página de resultados.

Parâmetros de requisição​

ParâmetroPadrãoDescrição
limit20Número de itens por página (máximo: 100)
cursor—Token de paginação (obtido na resposta anterior)

Valores de limit acima de 100 são automaticamente reduzidos ao teto de 100.

Filtros por recurso​

Alguns endpoints de listagem aceitam filtros adicionais que combinam com a paginação. Por exemplo, GET /api/v1/alerts (e GET /api/v1/sites/{site}/alerts) aceitam:

FiltroDescrição
typeFiltra por tipo de alerta
severityFiltra por severidade
statusFiltra por status do alerta

Os filtros são aplicados antes da paginação e mantidos automaticamente nas URLs de links.next / links.prev.

Exemplo de requisição​

GET /api/v1/alerts?limit=10
Authorization: Bearer {token}

Formato da resposta​

A resposta é envelopada em três blocos: data (os recursos), links (URLs de navegação) e meta (metadados da paginação).

{
"data": [
{ "id": "9c1a...", "type": "panic", "status": "active", ... },
{ "id": "9c1b...", "type": "device-offline", "status": "acknowledged", ... }
],
"links": {
"first": null,
"last": null,
"prev": null,
"next": "/api/v1/alerts?cursor=eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0&limit=10"
},
"meta": {
"path": "/api/v1/alerts",
"per_page": 10,
"next_cursor": "eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
"prev_cursor": null
}
}
CampoDescrição
dataArray de recursos da página atual
links.nextURL completa para a próxima página (null se não há mais itens)
links.prevURL completa para a página anterior (null se é a primeira)
links.first / links.lastSempre null na paginação cursor-based (não há primeira/última fixas)
meta.pathCaminho base usado para gerar as URLs
meta.per_pageItens por página solicitados
meta.next_cursorCursor para a próxima página (null se não há mais itens)
meta.prev_cursorCursor para a página anterior (null se é a primeira)
# Primeira página
curl -s "https://ionguard.local/api/v1/alerts?limit=10" \
-H "Authorization: Bearer $TOKEN"

# Próxima página (usando meta.next_cursor da resposta anterior)
curl -s "https://ionguard.local/api/v1/alerts?limit=10&cursor=eyJpZCI6MTAuLi4" \
-H "Authorization: Bearer $TOKEN"

Fim da lista​

Quando meta.next_cursor é null e links.next é null, não há mais itens disponíveis.

Vantagens do cursor-based​

  • Performance — Não precisa contar todos os registros (O(1) vs O(n))
  • Consistência — Inserções e deleções durante a navegação não causam itens duplicados ou pulados
  • Escalabilidade — Funciona bem com milhões de registros