> ## 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.

# getAssetsByOwner

> Список всех NFT, сжатых NFT, активов MPL Core и токенов, которыми владеет кошелёк Solana, с балансом SOL и ценами в USD, с помощью DAS getAssetsByOwner в OrbitFlare.

## Обзор

`getAssetsByOwner` возвращает список активов, хранящихся в кошельке. По умолчанию метод возвращает NFT, сжатые NFT и активы MPL Core. Добавьте `showFungible`, чтобы включить взаимозаменяемые токены с балансами и ценами в USD, и `showNativeBalance`, чтобы добавить баланс SOL кошелька. Вместе они дают полный портфель за один вызов.

## Параметры

<ResponseField name="ownerAddress" type="string" required>
  Адрес кошелька (base-58).
</ResponseField>

<ResponseField name="page" type="number">
  Номер страницы, начиная с 1. См. [Пагинация](/ru/das-api/pagination).
</ResponseField>

<ResponseField name="limit" type="number">
  Количество результатов на странице. Максимум и значение по умолчанию: 1 000.
</ResponseField>

<ResponseField name="cursor" type="string">
  Курсор из предыдущего ответа.
</ResponseField>

<ResponseField name="before" type="string">
  Вернуть активы с ID до указанного.
</ResponseField>

<ResponseField name="after" type="string">
  Вернуть активы с ID после указанного.
</ResponseField>

<ResponseField name="sortBy" type="object">
  `{ "sortBy": "id" | "created" | "updated" | "recent_action" | "none", "sortDirection": "asc" | "desc" }`
</ResponseField>

<ResponseField name="options" type="object">
  [Параметры отображения](/ru/das-api/display-options): `showFungible`, `showNativeBalance`, `showUnverifiedCollections`, `showCollectionMetadata`, `showInscription`. Также принимается как `displayOptions`.
</ResponseField>

## Ответ

<ResponseField name="result" type="object">
  <Expandable title="поля result">
    <ResponseField name="last_indexed_slot" type="number">
      Последний слот, обработанный индексом.
    </ResponseField>

    <ResponseField name="total" type="number">
      Количество элементов на этой странице.
    </ResponseField>

    <ResponseField name="limit" type="number">
      Использованный размер страницы.
    </ResponseField>

    <ResponseField name="page" type="number">
      Номер страницы при пагинации по страницам.
    </ResponseField>

    <ResponseField name="cursor" type="string">
      Курсор для следующей страницы при пагинации по курсору.
    </ResponseField>

    <ResponseField name="items" type="array">
      [Объекты активов](/ru/das-api/asset-object).
    </ResponseField>

    <ResponseField name="nativeBalance" type="object">
      С `showNativeBalance`: `lamports`, `price_per_sol` и `total_price` (USD).
    </ResponseField>
  </Expandable>
</ResponseField>

## Примеры кода

### Запрос

```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": "getAssetsByOwner",
  "params": {
    "ownerAddress": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
    "page": 1,
    "limit": 100,
    "options": {
      "showFungible": true,
      "showNativeBalance": true
    }
  }
}'
```

### Ответ

```json theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
{
  "jsonrpc": "2.0",
  "result": {
    "last_indexed_slot": 457714577,
    "total": 100,
    "limit": 100,
    "page": 1,
    "nativeBalance": {
      "lamports": 1328527472954,
      "price_per_sol": 101.5,
      "total_price": 134845.54
    },
    "items": [
      {
        "interface": "FungibleToken",
        "id": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        "token_info": {
          "symbol": "USDC",
          "balance": 2500000,
          "decimals": 6,
          "token_program": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
          "price_info": {
            "price_per_token": 1.0,
            "total_price": 2.5,
            "currency": "USDC"
          }
        }
      }
    ]
  },
  "id": 1
}
```

Значения приведены для иллюстрации, объект актива сокращён. Все поля см. в разделе [Объект актива](/ru/das-api/asset-object).

### TypeScript

```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 getPortfolio(owner: string) {
  const response = await fetch(RPC_URL, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: 1,
      method: 'getAssetsByOwner',
      params: {
        ownerAddress: owner,
        page: 1,
        limit: 1000,
        options: { showFungible: true, showNativeBalance: true },
      },
    }),
  });
  const { result, error } = await response.json();
  if (error) throw new Error(error.message);

  const nfts = result.items.filter((a: any) => a.ownership.ownership_model === 'single');
  const tokens = result.items.filter((a: any) => a.ownership.ownership_model === 'token');
  const tokenUsd = tokens.reduce(
    (sum: number, t: any) => sum + (t.token_info?.price_info?.total_price ?? 0),
    0,
  );

  return {
    nfts,
    tokens,
    solUsd: result.nativeBalance?.total_price ?? 0,
    tokenUsd,
  };
}
```

## Распространённые ошибки

| Код | Сообщение | Решение |
| - | - | - |
| -32602 | Pubkey Validation Err: ... is invalid | Передайте действительный адрес кошелька в base-58 |
| -32602 | Pagination Error. Limit should not be greater than 1000. | Используйте `limit` не более 1 000 |
| -32602 | Pagination Error. Only one pagination parameter supported per query. | Используйте только один из вариантов: `page`, `cursor` или `before`/`after` |
| -32602 | Pagination Sorting Error | Курсорам и диапазонам требуется `sortBy: "id"`; для других видов сортировки используйте `page` |


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