Pagination
Pagination
Section titled “Pagination”Übersicht
Section titled “Übersicht”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.
Anfragebeispiel
Section titled “Anfragebeispiel”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 }}'Responseformat
Section titled “Responseformat”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 }}Bedeutung der Paging-Parameter
Section titled “Bedeutung der Paging-Parameter”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-Berechnung
Section titled “Offset-Berechnung”offset = (number - 1) * sizeBeispiel: number = 3, size = 10 ergibt offset = 20. Damit werden die Elemente 21 bis 30 zurückgegeben.
Cursor-Pagination
Section titled “Cursor-Pagination”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" }}Beispielseiten
Section titled “Beispielseiten”{ "number": "1", "size": "10", "total": "42", "cursor": null, "has_next": true}{ "number": "2", "size": "10", "total": "42", "cursor": null, "has_next": true}{ "number": "5", "size": "10", "total": "42", "cursor": null, "has_next": false}