Saltar al contenido

Paginación

Cursor, página y límite en los listados de Admin y Storefront.

Los listados de Admin y los listados de cuenta de Storefront se paginan por cursor. El catálogo de Storefront (GET /v1/products) se pagina por número de página. Cada operación en la referencia muestra cuál usa.

EsquemaParámetrosDónde
Cursorcursor, limitCasi todos los listados de Admin; en Storefront, reseñas, pedidos del cliente y ubicaciones.
Páginapage, pageSizeStorefront GET /v1/products y Admin GET /v1/notifications/templates.
LímitelimitListas cortas sin continuación: productos relacionados, recomendaciones y zonas geográficas.

Por cursor

Pide la primera página sin cursor. Para la siguiente, envía el nextCursor de la respuesta anterior con los mismos filtros y orden.

curl "https://api.ecomiq.pe/api/v1/catalog/brands?limit=50" \
  -H "Authorization: Bearer $ECOMIQ_TOKEN"
Respuesta
{
  "data": [{ "id": "7204558912004324355", "name": "Andes" }],
  "hasNextPage": true,
  "nextCursor": "eyJpZCI6IjcyMDQ1NTg5MTIwMDQzMjUzMDEifQ",
  "totalCount": 132
}
ParámetroValor
limitDe 1 a 200. Si lo omites, la mayoría de listados devuelve 20.
cursorEl nextCursor de la página anterior. Omítelo en la primera.
sortByCampo de orden; los valores aceptados están en cada operación.
sortDirectionasc o desc.
searchTexto libre.
CampoSignificado
dataLos elementos de esta página.
hasNextPagetrue si queda al menos otra página.
nextCursorCursor de la siguiente página; null en la última.
totalCountTotal de coincidencias. Puede ser null.

Algunos listados tienen un tope menor que 200, por ejemplo 100, y devuelven como máximo ese número aunque pidas más. Un limit fuera de 1–200 responde 400. Un cursor que no se puede leer responde 400 con Common.InvalidCursor.

walk-by-cursor.ts
async function* walkByCursor(firstUrl: URL, token: string) {
  let cursor: string | null = null;

  do {
    const url = new URL(firstUrl);
    if (cursor) url.searchParams.set("cursor", cursor);

    const response = await fetch(url, {
      headers: { Authorization: `Bearer ${token}` },
    });
    if (!response.ok) throw new Error(`HTTP ${response.status}`);

    const page = await response.json();
    yield* page.data;
    cursor = page.hasNextPage ? page.nextCursor : null;
  } while (cursor);
}

Por página

page empieza en 1. En GET /v1/products de Storefront, pageSize va de 1 a 100 (por defecto 24) y page llega hasta 100.

curl "https://storefront.ecomiq.pe/v1/products?page=2&pageSize=24" \
  -H "x-Store-Domain: mi-tienda"

La respuesta trae pageIndex, pageSize, totalCount y totalPages, y los productos en products. Avanza page mientras pageIndex sea menor que totalPages.

GET /v1/notifications/templates de Admin devuelve data, pageIndex, totalPages, hasPreviousPage y hasNextPage; ahí pageSize va de 1 a 100.

Solo límite

Estas operaciones devuelven una lista corta y no tienen página siguiente. limit fija cuántos elementos quieres; para recorrer todo el recurso, usa su listado por cursor.

Última actualización:

En esta página