> ## Documentation Index
> Fetch the complete documentation index at: https://userepass.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Paginação

> Listagens por cursor: aguarde uma página ou percorra todas automaticamente.

Os métodos `list()` (e listagens aninhadas como `payouts`, `commissions`, `events`, `webhooks.deliveries`) retornam um **`RepassPage<T>`**, que é ao mesmo tempo **aguardável** e **iterável**. Por baixo, segue a [paginação por cursor](/docs/convencoes/paginacao) da API: `limit` (1 a 100, default 25), `starting_after` e `ending_before`.

## Uma página

`await` em `list()` resolve para `{ data, hasMore }`:

```ts theme={null}
const page = await repass.affiliates.list({ status: "approved", limit: 50 });

console.log(page.data);    // Affiliate[]
console.log(page.hasMore); // boolean: há mais além desta página?
```

## Auto-paginação

Itere com `for await` para percorrer **todas** as páginas, o SDK caminha o cursor `starting_after` sozinho:

```ts theme={null}
for await (const affiliate of repass.affiliates.list({ status: "approved" })) {
  console.log(affiliate.email);
}
```

## Coletar até um limite

`autoPagingToArray({ limit })` acumula itens percorrendo as páginas e para ao atingir o limite (obrigatório, para evitar varreduras ilimitadas):

```ts theme={null}
const primeiros100 = await repass.commissions
  .list({ status: "pending" })
  .autoPagingToArray({ limit: 100 });
```

## Paginação manual por cursor

Se preferir controlar o cursor você mesmo, use o `id` do último item como `starting_after`:

```ts theme={null}
let page = await repass.clicks.list({ link_id: "link_...", limit: 100 });
process(page.data);

while (page.hasMore) {
  const cursor = page.data[page.data.length - 1]!.id;
  page = await repass.clicks.list({ link_id: "link_...", limit: 100, starting_after: cursor });
  process(page.data);
}
```

<Note>
  Algumas leituras não são listagens por cursor e retornam o array direto, por exemplo `programs.tiers.list()`, `programs.commissionRules.list()`, `affiliates.timeline()`, `links.list()` e `events.types()`. Nesses casos você recebe um array comum (`T[]`), não um `RepassPage`.
</Note>
