Paginação
Navegue por listas com offset na biblioteca e com cursor no feed de alterações.
A API tem duas listas, cada uma com o modelo de paginação adequado ao seu uso.
Offset: biblioteca
Listar roteiros usa limit e offset:
| Parâmetro | Padrão | Faixa |
|---|---|---|
limit | 20 | 1 a 100 |
offset | 0 | 0 a 100.000 |
A resposta indica se há mais itens:
{
"scripts": [],
"hasMore": true,
"nextOffset": 40
}Enquanto hasMore for true, chame de novo com offset=nextOffset. Quando não houver mais itens, nextOffset é null.
A biblioteca é ordenada pela última alteração. Se um roteiro mudar enquanto você pagina, ele pode aparecer duas vezes ou ser pulado. Para cópias completas e consistentes, use o feed.
Cursor: feed de alterações
O feed de alterações usa cursor e limit:
| Parâmetro | Padrão | Faixa |
|---|---|---|
cursor | "0" | Inteiro em texto, até 19 dígitos |
limit | 100 | 1 a 200 |
{
"changes": [{ "cursor": "128", "script": {} }],
"nextCursor": "128",
"hasMore": false
}Siga nextCursor enquanto hasMore for true. Guarde o último nextCursor para buscar apenas as novidades na próxima sincronização. Trate o cursor como texto opaco: ele pode passar do limite de inteiros seguros do JavaScript.
let cursor = loadCursor() ?? "0";
let hasMore = true;
while (hasMore) {
const response = await fetch(
`https://livetp.app/api/v1/scripts?cursor=${cursor}&limit=200`,
{ headers: { Authorization: `Bearer ${process.env.LIVETP_API_KEY}` } },
);
const page = await response.json();
for (const { script } of page.changes) upsertLocal(script);
cursor = page.nextCursor;
hasMore = page.hasMore;
}
saveCursor(cursor);