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_cursores el cursor de la página siguiente.- En la última página,
next_cursoresnull. - 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 campocursorendetails.
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.