Zum Inhalt springen

Pagination

Die LIVOI API verwendet für Dynamic Query ein page-Objekt. Für normale Seitenpagination werden number und size verwendet. Cursor-Pagination ist möglich, wenn cursor gesetzt wird.

{
"page": {
"number": 1,
"size": 10,
"cursor": null
}
}

number und size sind im Request Integer mit Mindestwert 1. Für Dynamic Query gilt aktuell size <= 1000.

Terminal-Fenster
curl https://api.livoi.de/api/v1/dynamic/query \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"query_model": "users",
"query_attributes": ["id", "email", "created_at"],
"page": {
"number": 1,
"size": 10
}
}'

In der Response werden number, size und total als Strings zurückgegeben.

{
"result": [],
"page": {
"number": "1",
"size": "10",
"total": "42",
"cursor": null,
"has_next": true
}
}

number
Die aktuelle Seite der Ergebnismenge. Die Zählung beginnt bei 1.

size
Maximale Anzahl von Einträgen pro Seite. In Dynamic Query sind aktuell bis zu 1000 Einträge pro Seite erlaubt.

cursor
Optionaler Cursor für Cursor-/Keyset-Pagination. Der Cursor ist Teil von Request und Response.

total
Gesamtzahl der passenden Einträge. Bei Cursor-Pagination berechnet die aktuelle Implementierung kein echtes Total und liefert total: "0".

{ "formula": "total_pages = ceil(total / size)" }

has_next

{ "formula": "number * size < total" }
offset = (number - 1) * size

Beispiel: number = 3, size = 10 ergibt offset = 20. Damit werden die Elemente 21 bis 30 zurückgegeben.

Cursor-Pagination wird aktiviert, wenn page.cursor gesetzt ist. Sie funktioniert nur sinnvoll zusammen mit order_by, weil die Sortierung die stabile Reihenfolge für den nächsten Ausschnitt definiert.

{
"query_model": "users",
"query_attributes": ["id", "email", "created_at"],
"order_by": ["created_at", "id"],
"page": {
"number": 1,
"size": 10,
"cursor": "2026-06-01T10:00:00Z"
}
}
{
"number": "1",
"size": "10",
"total": "42",
"cursor": null,
"has_next": true
}