> For the complete documentation index, see [llms.txt](https://docs.enlyze.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enlyze.com/enlyze-api/pagination.md).

# Pagination

List-Endpunkte der ENLYZE API geben Ergebnisse seitenweise zurück. Statt alle Datensätze auf einmal zu liefern, liefert die API eine Seite und einen Cursor, mit dem du die nächste Seite abrufst.

## So funktioniert die Pagination

Die ENLYZE API nutzt cursorbasierte Pagination. Der Ablauf ist immer gleich:

1. Rufe einen Listen-Endpunkt ohne `cursor` auf, um die erste Seite zu erhalten.
2. Lies den Wert `metadata.next_cursor` aus der Antwort.
3. Rufe denselben Endpunkt erneut auf und übergib diesen Wert als `cursor`-Parameter, um die nächste Seite zu erhalten.
4. Wiederhole Schritt 2 und 3, bis `metadata.next_cursor` den Wert `null` hat. Dann sind keine weiteren Daten mehr vorhanden.

Behalte bei Folgeanfragen alle übrigen Parameter (zum Beispiel Filter) unverändert bei. Andernfalls ist der Cursor nicht mehr gültig.

## Antwortstruktur

Jede seitenweise Antwort hat dieselbe Struktur:

| Feld                   | Typ                | Beschreibung                                                                               |
| ---------------------- | ------------------ | ------------------------------------------------------------------------------------------ |
| `data`                 | Array              | Die Datensätze der aktuellen Seite.                                                        |
| `metadata.next_cursor` | String oder `null` | Fortsetzungspunkt für die nächste Seite. `null`, wenn keine weiteren Daten vorhanden sind. |

Für die Anfrage steuerst du die Pagination über einen einzigen Parameter:

| Parameter | Ort   | Beschreibung                                                                                                                                      |
| --------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `cursor`  | Query | Startpunkt der abzurufenden Seite. Übergib den Wert aus `metadata.next_cursor` der vorherigen Antwort. Ohne `cursor` erhältst du die erste Seite. |

{% hint style="info" %}
Beim Endpunkt `POST /v2/timeseries` wird der `cursor` im Anfrage-Body übergeben, nicht als Query-Parameter. Die Antwortstruktur mit `data` und `metadata.next_cursor` bleibt identisch.
{% endhint %}

## Beispiel

Erste Seite abrufen:

```http
GET https://app.enlyze.com/api/v2/production-runs
```

Antwort:

```json
{
  "data": [
    { "uuid": "3f2a…" },
    { "uuid": "8b1c…" }
  ],
  "metadata": {
    "next_cursor": "eyJpZCI6MTQ4fQ"
  }
}
```

Nächste Seite abrufen, indem du `next_cursor` als `cursor` übergibst:

```http
GET https://app.enlyze.com/api/v2/production-runs?cursor=eyJpZCI6MTQ4fQ
```

Auf der letzten Seite ist `next_cursor` gleich `null`:

```json
{
  "data": [
    { "uuid": "d90e…" }
  ],
  "metadata": {
    "next_cursor": null
  }
}
```

{% hint style="warning" %}
Der Cursor ist ein undurchsichtiges Token. Verändere seinen Inhalt nicht und baue ihn nicht selbst zusammen. Verwende ausschließlich den Wert aus `metadata.next_cursor`.
{% endhint %}
