Paginação
Paginação por cursor opaco em todas as listagens da API.
Toda listagem retorna { "data": [...], "pagination": { "limit", "hasMore", "nextCursor" } }. Não existem page, pageSize, offset nem total.
Como paginar
- Primeira chamada:
GET /v1/companies?limit=50.limitaceita inteiros de 1 a 1000 (padrão50); valores inválidos retornam400comERROR_INVALID_LIMIT, sem truncamento automático. - Próximas páginas: envie
cursor=<nextCursor>mantendo exatamente os mesmos filtros. Você pode mudar olimitentre páginas. - No fim,
hasMoreéfalseenextCursorénull. Uma lista vazia retornadata: []. - O cursor é opaco e versionado: não o edite, construa ou reaproveite em outra coleção, tenant ou filtro (
400comERROR_INVALID_CURSOR). - A leitura usa dados atuais, sem snapshot entre requisições: itens inseridos depois não aparecem na continuação de uma listagem descendente, e o cursor continua válido se o registro dele for excluído.
javascript
async function listarTodasAsEmpresas() {
const todas = [];
let cursor;
do {
const url = new URL(`${BASE_URL}/companies`);
url.searchParams.set("limit", "100");
if (cursor) url.searchParams.set("cursor", cursor);
const res = await fetch(url, {
headers: { "X-API-Key": process.env.CORVO_API_KEY },
});
const { data, pagination } = await res.json();
todas.push(...data);
cursor = pagination.hasMore ? pagination.nextCursor : undefined;
} while (cursor);
return todas;
}