yuno.chat

Pagination

Les points de terminaison de liste renvoient les résultats page par page, du plus récent au plus ancien, à l’aide de curseurs.

Paramètres

ParamètreDescription
limitNombre d’objets par page, entre 1 et 100. Valeur par défaut : 20.
cursorLe next_cursor de la page précédente. Omettez-le pour la première page.

L’objet liste

json
{
  "object": "list",
  "data": [ { "id": "tkt_7Hc1vQ", "object": "ticket", "...": "..." } ],
  "has_more": true,
  "next_cursor": "eyJpZCI6InRrdF83SGMxdlEifQ"
}

Lorsque has_more vaut false, vous avez atteint la fin et next_cursor vaut null. Les curseurs sont opaques ; ne les construisez pas et ne les modifiez pas. Les filtres doivent rester identiques d’une page à l’autre.

Récupérer toutes les pages

async function* allTickets(filters = {}) {
  let cursor
  do {
    const params = new URLSearchParams({ ...filters, limit: "100" })
    if (cursor) params.set("cursor", cursor)

    const res = await fetch(`https://api.yuno.chat/v1/tickets?${params}`, {
      headers: { Authorization: `Bearer ${process.env.YUNO_SECRET_KEY}` },
    })
    const page = await res.json()
    yield* page.data
    cursor = page.next_cursor
  } while (cursor)
}

for await (const ticket of allTickets({ status: "open" })) {
  console.log(ticket.number, ticket.subject)
}