fepli
EntwicklerREST API

Paginierung

Listen kommen seitenweise: standardmäßig 30 Datensätze je Seite, auf Wunsch bis zu 200.

Query-Parameter

Jede paginierte Liste akzeptiert zwei Parameter:

  • Name
    page
    Typ
    integer
    Beschreibung

    Die Seite, die zurückkommt, beginnend bei 1. Der Standard ist 1.

  • Name
    itemsPerPage
    Typ
    integer
    Beschreibung

    Wie viele Datensätze eine Seite enthält. Der Standard ist 30. Größere Werte als 200 werden auf 200 begrenzt.

Sie funktionieren zusammen mit den Filtern des jeweiligen Endpunkts:

Der Body der Antwort ist ein JSON-Array mit den Datensätzen der angeforderten Seite und sonst nichts. Eine Seite hinter dem Ende ist ein leeres Array.

Es gibt weder eine Gesamtzahl noch einen Link-Header. Um eine ganze Liste zu lesen, fordern Sie Seite für Seite an, bis eine Seite weniger Datensätze enthält als itemsPerPage.

Anfrage

curl "https://example.fepli.eu/api/offers?edition=herbstferien-2026&page=2&itemsPerPage=50"

Antwort

[
  {
    "uuid": "0192a4f1-6e3b-7c85-b1d2-8f4e6a9c3b03",
    "name": "Fahrradtour durch den Stadtpark",
    "…": "…"
  },
  {
    "uuid": "0192a4f3-9d2c-7a1e-8b4f-5c6d7e8f9a11",
    "name": "Töpfern für Anfänger",
    "…": "…"
  }
]

Eine ganze Liste lesen

Alle Seiten abrufen

async function fetchAll(path, params = {}) {
  const itemsPerPage = 200
  const records = []

  for (let page = 1; ; page++) {
    const query = new URLSearchParams({ ...params, page, itemsPerPage })
    const response = await fetch(
      `https://example.fepli.eu/api${path}?${query}`,
      { headers: { Authorization: `Bearer ${process.env.FEPLI_TOKEN}` } },
    )
    if (!response.ok) throw new Error(`${response.status} ${await response.text()}`)

    const batch = await response.json()
    records.push(...batch)
    if (batch.length < itemsPerPage) return records
  }
}

const attendances = await fetchAll('/attendances', { edition: 'herbstferien-2026' })

Reihenfolge

Jede Liste hat eine feste Reihenfolge, die beim jeweiligen Endpunkt steht. Angebote lassen sich mit sort und order sortieren. Die übrigen Listen sind so geordnet, wie das Admin-Panel sie zeigt, zum Beispiel Anmeldungen mit den neuesten zuerst oder Konten nach Nachname.

Bei Listen, die sich während des Lesens ändern, verwenden Sie den Filter modifiedSince (oder createdSince), sofern der Endpunkt ihn anbietet. Laden Sie dann nur, was sich seit Ihrem letzten Durchlauf geändert hat.

Listen ohne Seiten

Einige Listen kommen immer vollständig und ignorieren page und itemsPerPage:

GET /search liefert stattdessen höchstens limit Treffer je Art von Datensatz.

War diese Seite hilfreich?