Afspraken
Paginering
Een lijst komt per pagina. Je bladert met een cursor, niet met een offset, zodat een nacht die halverwege wordt toegevoegd geen rij laat verspringen.
Zo blader je
- Vraag de lijst op, eventueel met
limit(standaard 25, hoogstens 100). - Lees
meta.next_cursor. Is dienull, dan ben je klaar. - Anders vraag je dezelfde lijst opnieuw, met dezelfde filters en
cursorerbij, totnext_cursornullis.
Bouw nooit zelf een cursor en verander hem niet: hij is ondoorzichtig, en een cursor die niet van ons komt geeft 400 invalid_request.
De meta van een lijst
| Naam | Type | Standaard | Uitleg |
|---|---|---|---|
request_id verplicht | string | - | Id of this request. |
count verplicht | integer | - | Number of items in data. |
limit verplicht | integer | - | The page size that was applied. |
next_cursor verplicht | string | null | - | Pass as ?cursor= for the next page. Null on the last page. |
attribution optioneel | Attribution | - |
Alles ophalen
async function all(path, params = {}) {
const out = [];
let cursor = null;
do {
const qs = new URLSearchParams({ ...params, limit: "100", ...(cursor ? { cursor } : {}) });
const res = await fetch(`https://api.partyppl.nl/v1${path}?${qs}`, {
headers: { Authorization: `Bearer ${process.env.PPL_TOKEN}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const { data, meta } = await res.json();
out.push(...data);
cursor = meta.next_cursor;
} while (cursor);
return out;
}
const amsterdam = await all("/events", { city: "Amsterdam" });Haal niet de hele agenda op om hem elders opnieuw te publiceren; dat staat in de voorwaarden. Filter op wat je toont en bewaar wat je ophaalt.
Bijgewerkt