> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Пагинация

> Постраничный обход результатов DAS API в OrbitFlare с помощью номеров страниц, курсоров или диапазонов before/after, а также выбор порядка сортировки и лимитов.

## Обзор

Каждый метод-список DAS (`getAssetsByOwner`, `getAssetsByGroup`, `getAssetsByCreator`, `getAssetsByAuthority`, `searchAssets`, `getTokenAccounts`, `getNftEditions` и `getSignaturesForAsset`) возвращает результаты страницами. Пагинацию можно выполнять тремя способами:

| Способ | Параметры | Лучше всего для |
| - | - | - |
| Номера страниц | `page` | Небольших наборов результатов и интерфейсов с нумерованными страницами |
| Курсор | `cursor` | Последовательного обхода большого набора результатов от начала до конца |
| Диапазон | `before`, `after` | Получения среза между двумя ID активов |

Используйте один способ на запрос. Сочетание `page` с `cursor`, `before` или `after`, а также `cursor` с `before` или `after` возвращает `-32602`.

## Лимиты

* `limit` задаёт размер страницы. Максимальное значение и значение по умолчанию равны 1 000.
* `page` начинается с 1. `page: 0` отклоняется.
* Пакетные методы (`getAssetBatch`, `getAssetProofBatch`) принимают не более 1 000 ID.

## Номера страниц

Передайте `page` и `limit`. Ответ возвращает `page`:

```bash theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getAssetsByGroup",
  "params": {
    "groupKey": "collection",
    "groupValue": "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w",
    "page": 2,
    "limit": 100
  }
}'
```

Остановитесь, когда страница вернёт меньше элементов, чем `limit`.

<Tip>
  Номера страниц просты в использовании, но базе данных всё равно приходится пропускать все предыдущие строки, поэтому глубокие страницы загружаются медленнее. Для больших коллекций или кошельков используйте курсоры.
</Tip>

## Курсоры

Если вы не передаёте `page`, `before` или `after`, API выполняет пагинацию по курсору и возвращает значение `cursor` с каждой страницей. Передайте его обратно, чтобы получить следующую страницу:

```typescript theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
const RPC_URL = 'https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY';

async function getAllAssetsInCollection(collection: string) {
  const assets = [];
  let cursor: string | undefined;

  while (true) {
    const response = await fetch(RPC_URL, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        jsonrpc: '2.0',
        id: 1,
        method: 'getAssetsByGroup',
        params: {
          groupKey: 'collection',
          groupValue: collection,
          limit: 1000,
          cursor,
        },
      }),
    });
    const { result } = await response.json();

    assets.push(...result.items);
    if (result.items.length < 1000) break;
    cursor = result.cursor;
  }

  return assets;
}
```

Курсоры работают только при сортировке результатов по `id`, которая используется по умолчанию.

## Диапазоны

`before` и `after` принимают ID активов и возвращают активы между ними. Например, один только `after` продолжает выборку с известного ID актива:

```json theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "searchAssets",
  "params": {
    "ownerAddress": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
    "after": "JEGruwYE13mhX2wi2MGrPmeLiVyZtbBptmVy9vG3pXRC",
    "limit": 500
  }
}
```

Диапазоны также требуют сортировки по `id`.

## Сортировка

Методы, возвращающие списки активов, принимают `sortBy`:

```json theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
"sortBy": {
  "sortBy": "created",
  "sortDirection": "desc"
}
```

<ResponseField name="sortBy.sortBy" type="string">
  `id` (по умолчанию), `created`, `updated`, `recent_action` или `none`.
</ResponseField>

<ResponseField name="sortBy.sortDirection" type="string">
  `asc` (по умолчанию) или `desc`.
</ResponseField>

Сортировка по любому полю, кроме `id`, работает только с номерами страниц. Её сочетание с `cursor`, `before` или `after` возвращает `-32602`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.