Saltar al contenido principal

Paginación

Los endpoints de listado usan uno de tres estilos de paginación según el dominio. Lee la Referencia de la API para conocer los parámetros exactos de un endpoint determinado; esta página explica los patrones que encontrarás y qué endpoints usa cada uno.

De un vistazo

EstiloParámetrosUsado por
Cursores de ID (after / before)after, beforeNotifications, comentarios de filas
Cursor keyset (cursor / nextCursor)limit, cursorBookings
Offset (limit / offset)limit, offsetChannels, miembros del workspace, equipos del workspace
Solo límite (sin continuación)limitSearch, búsqueda de docs, búsqueda de drive
Sin paginarListado de filas de board, list-boards, tipos de booking

Cursores de ID — after / before

Algunos endpoints paginan usando el _id de un elemento como cursor. Pasas el ID del último (o primer) elemento que viste como after (o before) para obtener la página adyacente.

Notifications

GET /public/v1/notifications

  • after — devuelve notifications después de este ID de notification.
  • before — devuelve notifications antes de este ID de notification.

La respuesta es { notifications, unreadCount, count }. No hay un campo de cursor separado — el cursor es el _id de una notification. Para avanzar de página, toma el _id de la última notification y pásalo como after en la siguiente solicitud:

# 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"

Comentarios de filas

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

Los mismos parámetros de cursor after / before (IDs de comentario), más un filtro visibility (all | internal | external, predeterminado all). A diferencia de notifications, este endpoint devuelve un pageInfo al estilo relay:

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

Para avanzar de página, pasa endCursor como after mientras hasNextPage sea true.

Cursor keyset — cursor / nextCursor

Bookings

GET /public/v1/bookings

  • limit — tamaño de página, 1–100 (predeterminado 25).
  • cursor — cursor keyset opaco de la respuesta anterior.

La respuesta incluye nextCursor y hasMore:

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

Repite mientras hasMore sea true, pasando nextCursor de vuelta como cursor:

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

Offset — limit / offset

Paginación clásica con un offset numérico.

Endpointlimit (predeterminado / máx)offset
GET /chat/channels100 / 200desde 0
GET /workspace/members100 / 500desde 0
GET /workspace/teams100 / 200desde 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"

Solo límite

Los endpoints de tipo búsqueda limitan el número de resultados con limit pero no ofrecen un cursor de continuación — solicita un limit mayor (hasta el máximo del endpoint) o refina tu consulta.

Endpointlimit (predeterminado / máx)
GET /search50 / 100
GET /docs/search20 / 50
GET /drive/search20 / 50

Los endpoints de árbol de docs y drive (/docs/tree, /drive/tree) están acotados por un parámetro depth (predeterminado 3, máx 10) y un parentId, no por limit/cursor.

Sin paginar

Unos pocos endpoints de listado devuelven el conjunto completo en una sola respuesta:

  • GET /board/list-boards
  • GET /board/{boardId}/table/{tableId}/rows — admite q, filter y sort, pero devuelve todas las filas coincidentes.
  • GET /booking-types
consejo

Al iterar sobre conjuntos de resultados grandes, agrega un breve retraso entre solicitudes para mantenerte por debajo del límite de tasa por minuto, y detente en cuanto un indicador hasMore / hasNextPage sea false.