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

# マーカーベースのページネーション

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

export const MultiRelatedLinks = ({sections = []}) => {
  if (!sections || sections.length === 0) {
    return null;
  }
  return <div className="space-y-8">
      {sections.map((section, index) => <RelatedLinks key={index} title={section.title} items={section.items} />)}
    </div>;
};

export const RelatedLinks = ({title, items = []}) => {
  const getBadgeClass = badge => {
    if (!badge) return "badge-default";
    const badgeType = badge.toLowerCase().replace(/\s+/g, "-");
    return `badge-${badge === "ガイド" ? "guide" : badgeType}`;
  };
  if (!items || items.length === 0) {
    return null;
  }
  return <div className="my-8">
      {}
      <h3 className="text-sm font-bold uppercase tracking-wider mb-4">{title}</h3>

      {}
      <div className="flex flex-col gap-3">
        {items.map((item, index) => <a key={index} href={item.href} className="py-2 px-3 rounded related_link hover:bg-[#f2f2f2] dark:hover:bg-[#111827] flex items-center gap-3 group no-underline hover:no-underline border-b-0">
            {}
            <span className={`px-2 py-1 rounded-full text-xs font-semibold uppercase tracking-wide flex-shrink-0 ${getBadgeClass(item.badge)}`}>
              {item.badge}
            </span>

            {}
            <span className="text-base">{item.label}</span>
          </a>)}
      </div>
    </div>;
};

マーカーベースのページングを使用するAPIは、`marker`および`limit`クエリパラメータを使用してコレクション内の項目のページ割りを行います。

マーカーベースのページネーションがよく使用されるのは、項目の全セットの長さが頻繁に変更される場合や全体の長さが事前にわからない可能性がある場合です。

## ページング

コレクション内のエントリの最初のページを取得するには、APIを`marker`パラメータを指定せずに呼び出すか、`marker`を`0`に設定して呼び出す必要があります。`limit`パラメータは省略可能です。

```sh theme={null}
curl https://api.box.com/2.0/folders/0/items?limit=100&usemarker=true&marker= \
    -H "authorization: Bearer ACCESS_TOKEN"
```

<Note>
  オフセットベースのページネーションとマーカーベースのページネーションの両方をサポートするAPIでは、マーカーベースのページネーションが使用されるように`usemarker`クエリパラメータを`true`に設定する必要があります。
</Note>

エントリの次のページを取得するには、APIレスポンスで受け取った`next_marker`値の値に等しい`marker`パラメータを指定して、APIを呼び出す必要があります。

```sh theme={null}
curl https://api.box.com/2.0/folders/0/items?marker=34332423&limit=100&usemarker=true \
    -H "authorization: Bearer ACCESS_TOKEN"
```

次の`next_marker`値がレスポンスオブジェクト内で`null`になっている場合、項目の最終ページはリクエスト済みです。この時点では、これ以上取得する項目がありません。

<Note>
  マーカーベースのページングを使用する場合、コレクション内のエントリの合計数を確認するには、エントリをすべて取得するしかありません。マーカーの内部実装は今後変更される可能性があるため、アプリケーションでは`next_marker`値を長期にわたって保持しないでください。
</Note>

## マーカーと制限

以下のクエリパラメータは、コレクションのページネーションに使用されます。

| クエリパラメータ    | 型       | デフォルト      |                                                                                                               |
| ----------- | ------- | ---------- | ------------------------------------------------------------------------------------------------------------- |
| `marker`    | String  |            | コレクション内で最初に結果を返す位置。これは前のリクエストで返された値です。                                                                        |
| `limit`     | Integer | APIによって異なる | 返される最大エントリ数。値が最大値を超える場合は、最大値が使用されます。                                                                          |
| `usemarker` | Boolean |            | ページネーションのタイプを選択するために、両タイプのページネーションをサポートするAPIエンドポイントで使用可能なクエリパラメータ (省略可)。`true`に設定すると、マーカーベースのページネーションが適用されます。 |

## コレクション

コレクションのページネーションを行うと、APIによって、結果のセットを配列として含むオブジェクトのほか、結果の現在のページに関する情報が返されます。

| フィールド         | 型       |                                                                                 |
| ------------- | ------- | ------------------------------------------------------------------------------- |
| `entries`     | Array   | このページの項目を含むページ。結果がない場合は空の配列になります。                                               |
| `next_marker` | String  | 結果の次のページを取得するために`marker`値として使用できる値。この値が`null`または空の文字列の場合は、これ以上取得する結果がありません。     |
| `limit`       | Integer | 結果の現在のページに使用される制限。この制限は、このAPIエンドポイントに許可されている最大値を超えない限り、`limit`クエリパラメータと同じになります。 |

## エンドポイントの例

以下は、マーカーベースのページネーションをサポートするエンドポイントの例です。

* <Link href="/reference/get-folders-id-items">フォルダ内の項目を取得</Link>
* <Link href="/reference/get-files-id-collaborations">ファイルのコラボレーションのリストを取得</Link>
* <Link href="/reference/get-webhooks">ユーザーのすべてのWebhookのリストを取得</Link>
* <Link href="/reference/get-users">社内のすべてのユーザーのリストを取得</Link>
* <Link href="/reference/get-folders-trash-items">ごみ箱にあるすべての項目のリストを取得</Link>

<RelatedLinks
  title="関連するAPI"
  items={[
{ label: translate("List items in folder"), href: "/reference/get-folders-id-items", badge: "GET" },
{ label: translate("List file collaborations"), href: "/reference/get-files-id-collaborations", badge: "GET" },
{ label: translate("List folder collaborations"), href: "/reference/get-folders-id-collaborations", badge: "GET" },
{ label: translate("List all webhooks"), href: "/reference/get-webhooks", badge: "GET" },
{ label: translate("List all metadata templates for enterprise"), href: "/reference/get-metadata-templates-enterprise", badge: "GET" },
{ label: translate("List recently accessed items"), href: "/reference/get-recent-items", badge: "GET" },
{ label: translate("List all legal hold policies"), href: "/reference/get-legal-hold-policies", badge: "GET" },
{ label: translate("List enterprise device pins"), href: "/reference/get-enterprises-id-device-pinners", badge: "GET" },
{ label: translate("List enterprise users"), href: "/reference/get-users", badge: "GET" },
{ label: translate("List trashed items"), href: "/reference/get-folders-trash-items", badge: "GET" },
{ label: translate("List enterprise users"), href: "/reference/get-users", badge: "GET" }
]}
/>

<RelatedLinks
  title="関連するガイド"
  items={[
{ label: translate("Sorting responses"), href: "/guides/api-calls/sorting", badge: "GUIDE" },
{ label: translate("Offset-based Pagination"), href: "/guides/api-calls/pagination/offset-based", badge: "GUIDE" }
]}
/>
