Aller au contenu principal

Pagination

Les endpoints de liste utilisent l'un des trois styles de pagination selon le domaine. Consultez la Référence de l'API pour les paramètres exacts d'un endpoint donné ; cette page explique les motifs que vous rencontrerez et quels endpoints utilisent chacun.

En un coup d'œil

StyleParamètresUtilisé par
Curseurs d'ID (after / before)after, beforeNotifications, commentaires de ligne
Curseur keyset (cursor / nextCursor)limit, cursorBookings
Offset (limit / offset)limit, offsetChannels, membres du workspace, équipes du workspace
Limit uniquement (pas de continuation)limitSearch, docs search, drive search
Non paginéListe des lignes de board, list-boards, types de booking

Curseurs d'ID — after / before

Certains endpoints paginent en utilisant le _id d'un élément comme curseur. Vous repassez l'ID du dernier (ou premier) élément vu comme after (ou before) pour récupérer la page adjacente.

Notifications

GET /public/v1/notifications

  • after — renvoyer les notifications après cet ID de notification.
  • before — renvoyer les notifications avant cet ID de notification.

La réponse est { notifications, unreadCount, count }. Il n'y a pas de champ curseur séparé — le curseur est le _id d'une notification. Pour avancer d'une page, prenez le _id de la dernière notification et passez-le comme after sur la requête suivante :

# First page
curl "https://api.copera.ai/public/v1/notifications" \
-H "Authorization: Bearer cp_pat_your_token_here"

# Next page — use the last notification's _id from the previous response
curl "https://api.copera.ai/public/v1/notifications?after=665f0a1b2c3d4e5f60718293" \
-H "Authorization: Bearer cp_pat_your_token_here"

Commentaires de ligne

GET /public/v1/board/{boardId}/table/{tableId}/row/{rowId}/comments

Mêmes paramètres de curseur after / before (IDs de commentaires), plus un filtre visibility (all | internal | external, défaut all). Contrairement aux notifications, cet endpoint renvoie un pageInfo de style relay :

{
"items": [ /* ...comments... */ ],
"pageInfo": {
"endCursor": "665f0a1b2c3d4e5f60718293",
"startCursor": "665f0a1b2c3d4e5f60718210",
"hasNextPage": true,
"hasPreviousPage": false
}
}

Pour avancer d'une page, passez endCursor comme after tant que hasNextPage est true.

Curseur keyset — cursor / nextCursor

Bookings

GET /public/v1/bookings

  • limit — taille de page, 1–100 (défaut 25).
  • cursor — curseur keyset opaque de la réponse précédente.

La réponse inclut nextCursor et hasMore :

{
"bookings": [ /* ... */ ],
"nextCursor": "eyJpZCI6Ii4uLiJ9",
"hasMore": true
}

Bouclez tant que hasMore est true, en repassant nextCursor comme cursor :

curl "https://api.copera.ai/public/v1/bookings?limit=50&cursor=eyJpZCI6Ii4uLiJ9" \
-H "Authorization: Bearer cp_pat_your_token_here"

Offset — limit / offset

Pagination classique avec un offset numérique.

Endpointlimit (défaut / max)offset
GET /chat/channels100 / 200depuis 0
GET /workspace/members100 / 500depuis 0
GET /workspace/teams100 / 200depuis 0
# Second page of 50 members
curl "https://api.copera.ai/public/v1/workspace/members?limit=50&offset=50" \
-H "Authorization: Bearer cp_pat_your_token_here"

Limit uniquement

Les endpoints de type search plafonnent le nombre de résultats avec limit mais n'offrent pas de curseur de continuation — demandez un limit plus grand (jusqu'au max de l'endpoint) ou affinez votre requête.

Endpointlimit (défaut / max)
GET /search50 / 100
GET /docs/search20 / 50
GET /drive/search20 / 50

Les endpoints d'arbre docs et drive (/docs/tree, /drive/tree) sont bornés par un paramètre depth (défaut 3, max 10) et un parentId, pas par limit/cursor.

Non paginé

Quelques endpoints de liste renvoient l'ensemble complet en une seule réponse :

  • GET /board/list-boards
  • GET /board/{boardId}/table/{tableId}/rows — prend en charge q, filter et sort, mais renvoie toutes les lignes correspondantes.
  • GET /booking-types
astuce

Lorsque vous parcourez de grands ensembles de résultats, ajoutez un court délai entre les requêtes pour rester sous la limite de débit par minute, et arrêtez dès qu'un flag hasMore / hasNextPage est false.