Naar de inhoud

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

  1. Vraag de lijst op, eventueel met limit (standaard 25, hoogstens 100).
  2. Lees meta.next_cursor. Is die null, dan ben je klaar.
  3. Anders vraag je dezelfde lijst opnieuw, met dezelfde filters en cursor erbij, tot next_cursor null is.

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

NaamTypeStandaardUitleg
request_id verplichtstring-Id of this request.
count verplichtinteger-Number of items in data.
limit verplichtinteger-The page size that was applied.
next_cursor verplichtstring | null-Pass as ?cursor= for the next page. Null on the last page.
attribution optioneelAttribution-

Alles ophalen

javascript
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