Modelo de paginación
En MVP los listados usan paginación por página + límite (offset-based). Para cada listado paginado la API acepta:
| Query param | Tipo | Default | Máximo |
|---|---|---|---|
page | int | 1 | — |
limit | int | 20 | 100 |
Forma de la respuesta
Los listados paginados devuelven un objeto con data + pagination:
{
"data": [ /* registros */ ],
"pagination": {
"page": 1,
"limit": 20,
"total": 247
}
} Ejemplo
curl "https://api.nuvlyx.com/api/v1/external/orders?page=2&limit=50" \
-H "Authorization: Bearer nvl_live_TU_TOKEN" Recorrer todo el listado
let page = 1;
const all = [];
while (true) {
const r = await fetch(`.../external/orders?page=${page}&limit=100`, {
headers: { Authorization: `Bearer ${TOKEN}` }
});
const { data, pagination } = await r.json();
all.push(...data);
if (page * pagination.limit >= pagination.total) break;
page++;
} ¿Cursor pagination?
En el futuro migraremos los listados de alto volumen (deliveries de webhooks,
transacciones de monedero) a paginación por cursor (?cursor=...)
para evitar inconsistencias con datos que cambian rápido. Esta página se
actualizará con el contrato exacto cuando esté listo. Mientras tanto, ordene
por createdAt DESC y use dateFrom / dateTo
para acotar ventanas en vez de paginar profundo.