# Paginación

> Recorre el historial de versiones de una zona y la auditoría con limit y before; la mayoría de las demás listas llegan enteras.

La mayoría de los métodos de listas responden la lista entera en `items`. Los dos que crecen sin límite se paginan con `limit` y `before`, de lo más reciente a lo más antiguo:

| Método (TypeScript / Python) | `limit` | `before` |
|---|---|---|
| `listZoneVersions` / `list_zone_versions` | 50 por defecto, máximo 500. | Un número de versión: solo las anteriores. |
| `listAudit` / `list_audit` | 100 por defecto, máximo 500. | Un `id` de entrada: solo las anteriores. |

Pasa en `before` la `version` o el `id` del último elemento para obtener la página siguiente. Un `items` vacío significa que has llegado al final.

**TypeScript**

```ts
let before: number | undefined;
for (;;) {
  const { items = [] } = await owf.listAudit({ limit: 500, before });
  if (items.length === 0) break;
  for (const e of items) console.log(e.at, e.actor, e.action);
  before = items[items.length - 1].id;
}
```
**Python**

```py
before = None
while True:
    items = owf.list_audit(limit=500, before=before)["items"]
    if not items:
        break
    for e in items:
        print(e["at"], e["actor"], e["action"])
    before = items[-1]["id"]
```


El mismo bucle sirve para el historial de una zona con `listZoneVersions({ zone, limit, before })` y la `version` del último elemento.

`listCachePurges` / `list_cache_purges` recibe `limit` (20 por defecto, máximo 100) pero no `before`: cubre los últimos 7 días.
