Пагинация
Постраничное чтение списков.
Списки возвращаются объектом:
{
"data": [ ... ],
"has_more": true
}has_more показывает, есть ли объекты за этой страницей. Списки каналов и графиков возвращаются целиком: их число ограничено лимитом, has_more у них всегда false, а параметров страниц они не принимают. Постранично читаются история запусков, заказы и операции.
Параметры
| Параметр | Что задаёт |
|---|---|
limit | Сколько объектов вернуть: от 1 до 100, по умолчанию 20 |
starting_after | Идентификатор последнего объекта предыдущей страницы. Ответ начнётся со следующего за ним |
Объекты идут от новых к старым. Чтобы прочитать список целиком, запрашивайте страницы, пока has_more не станет false:
async function listAll(path) {
const items = [];
let after;
while (true) {
const url = new URL(`https://api.skystream.su/app/v1${path}`);
url.searchParams.set("limit", "100");
if (after) url.searchParams.set("starting_after", after);
const response = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
const page = await response.json();
items.push(...page.data);
if (!page.has_more) return items;
after = page.data[page.data.length - 1].id;
}
}
const orders = await listAll("/orders");Страницы строятся по курсору, а не по смещению: объекты, добавленные во время чтения, не сдвигают страницы, и ни один объект не попадает в две страницы сразу. Новые объекты появляются в начале списка — чтобы их увидеть, начните чтение заново.
В списках заказов и событий starting_after должен быть объектом этого аккаунта; иначе запрос отклоняется с ошибкой 404 resource_missing и param: "starting_after". Событие, удалённое по сроку хранения, тоже не найдётся.