SkyStream API

Пагинация

Постраничное чтение списков.

Списки возвращаются объектом:

{
  "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". Событие, удалённое по сроку хранения, тоже не найдётся.

На этой странице