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 ist1.
- Name
itemsPerPage- Typ
- integer
- Beschreibung
Wie viele Datensätze eine Seite enthält. Der Standard ist
30. Größere Werte als200werden auf200begrenzt.
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 /offer-categories- die Kommentare eines Datensatzes, etwa
GET /offers/{uuid}/comments
GET /search liefert stattdessen höchstens limit Treffer je Art von Datensatz.