// documentation
Пагинация и фильтрация
Предварительные правила выборки больших коллекций и фильтрации ресурсов.
API Preview: публичный контракт ещё не опубликован
Большие коллекции
Списки товаров, задач и событий могут быть большими, поэтому будущий API не будет возвращать всю коллекцию одним ответом.
Курсорная пагинация
Предпочтительный вариант — непрозрачный курсор следующей страницы. Клиент передаёт его без изменения и завершает обход, когда следующего курсора нет.
Фильтры
Фильтрация должна использовать стабильные поля ресурса: проект, статус, дата изменения и связанные идентификаторы. Набор фильтров будет описан отдельно для каждого метода.
Сортировка
Если метод поддерживает сортировку, документация укажет поле, направление и порядок по умолчанию. Не полагайтесь на случайный порядок элементов между запросами.
GET
/v1/productsconst 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
}
}