// documentation

Пагинация и фильтрация

Предварительные правила выборки больших коллекций и фильтрации ресурсов.

API Preview: публичный контракт ещё не опубликован

Большие коллекции

Списки товаров, задач и событий могут быть большими, поэтому будущий API не будет возвращать всю коллекцию одним ответом.

Курсорная пагинация

Предпочтительный вариант — непрозрачный курсор следующей страницы. Клиент передаёт его без изменения и завершает обход, когда следующего курсора нет.

Фильтры

Фильтрация должна использовать стабильные поля ресурса: проект, статус, дата изменения и связанные идентификаторы. Набор фильтров будет описан отдельно для каждого метода.

Сортировка

Если метод поддерживает сортировку, документация укажет поле, направление и порядок по умолчанию. Не полагайтесь на случайный порядок элементов между запросами.

GET/v1/products
const products = [];
let cursor;

do {
  const params = new URLSearchParams({
    project_id: 'project_demo',
    limit: '100',
  });

  if (cursor) params.set('cursor', cursor);

  const response = await fetch(
    process.env.MARKETHOUSE_API_URL + '/v1/products?' + params,
    {
      headers: {
        Authorization: 'Bearer ' + process.env.MARKETHOUSE_API_KEY,
      },
    },
  );
  const page = await response.json();

  products.push(...page.data);
  cursor = page.pagination.next_cursor ?? undefined;
} while (cursor);
200 OKПример ответа
{
  "data": [
    {
      "id": "product_01",
      "name": "Футболка базовая"
    }
  ],
  "pagination": {
    "next_cursor": "cursor_example_next",
    "has_more": true
  }
}