Saltar al contenido

Desarrolladores

Paginación

Paginación por cursor: limit, cursor y meta.next_cursor, con un ejemplo de bucle completo.

Los listados (GET /spaces y GET /bookings) usan paginación por cursor. A diferencia de la paginación por páginas, un cursor sigue siendo estable aunque se creen o cancelen reservas mientras recorres la lista.

Parámetros

Parámetro Descripción
limit Elementos por página, de 1 a 200. Por defecto 50.
cursor Cursor opaco que devolvió la página anterior. Omítelo para la primera página.

Respuesta

{
  "data": [ { "id": 1, "...": "..." } ],
  "meta": { "next_cursor": "WzE3OTI2OTIwMDAsNTBd" }
}
  • meta.next_cursor es el cursor de la página siguiente.
  • En la última página, next_cursor es null.
  • Un cursor es un valor opaco (el de la respuesta de arriba es solo ilustrativo: nunca escribas uno a mano ni lo reutilices entre listados): no lo interpretes ni lo construyas. Solo es válido con los mismos filtros con los que se obtuvo.
  • Un cursor mal formado o alterado devuelve 422 validation_failed, con el campo cursor en details.

Ejemplo con curl

# Primera página
curl -s "$PRANARP_URL/api/v1/bookings?limit=100&from=2026-10-01T00:00:00%2B02:00" \
  -H "Authorization: Bearer $PCK_TOKEN"

# Siguiente página: pasa el next_cursor recibido
curl -s "$PRANARP_URL/api/v1/bookings?limit=100&from=2026-10-01T00:00:00%2B02:00&cursor=<next_cursor>" \
  -H "Authorization: Bearer $PCK_TOKEN"

Recorrer todas las páginas

Un bucle completo en shell (requiere jq):

cursor=""
while :; do
  url="$PRANARP_URL/api/v1/bookings?limit=200"
  [ -n "$cursor" ] && url="$url&cursor=$cursor"

  page=$(curl -s "$url" -H "Authorization: Bearer $PCK_TOKEN")
  echo "$page" | jq -c '.data[]'

  cursor=$(echo "$page" | jq -r '.meta.next_cursor // empty')
  [ -z "$cursor" ] && break
done

Respeta los límites de ritmo: cada página cuenta como una petición. Si necesitas mantener tu sistema al día, es más eficiente suscribirte a los webhooks que recorrer todo el listado de forma periódica.