Paginação
As listagens usam cursor, não offset. O cursor é o id do último item da página anterior.
Parâmetros
Parâmetros
limitinteiro, 1 a 100opcional | Quantos itens trazer. Padrão 20. |
starting_afteruuidopcional | Id do último item da página anterior. A resposta começa no item seguinte a ele. |
Envelope
Toda listagem devolve object, data e has_more. Não há contagem total: contar a tabela inteira a cada página seria caro e o número já estaria velho quando chegasse.
{
"object": "list",
"data": [ { "id": "…", "object": "charge" } ],
"has_more": true
}Percorrendo tudo
Repita enquanto has_more for verdadeiro, passando o id do último item.
let cursor
const todas = []
do {
const url = new URL('https://api.transakto.io/v1/charges')
url.searchParams.set('limit', '100')
if (cursor) url.searchParams.set('starting_after', cursor)
const response = await fetch(url, {
headers: { 'x-api-key': process.env.API_KEY },
})
const page = await response.json()
todas.push(...page.data)
cursor = page.data.at(-1)?.id
var temMais = page.has_more
} while (temMais && cursor)Ordenação
Da mais recente para a mais antiga, por data de criação. Cobranças criadas enquanto você pagina não empurram itens para a página seguinte, que é justamente o problema do offset.