> For the complete documentation index, see [llms.txt](https://www.boxhero.io/docs/llms.txt). Every page is available as Markdown by appending `.md` to its URL; this page is [Markdown](https://www.boxhero.io/docs/ko/developers/api/pagination.md).

# 페이지네이션

> 박스히어로 API의 긴 목록은 커서 기반 페이지네이션으로 나누어 조회합니다.

목록 조회 API는 결과를 한 페이지씩 반환하며, 커서 기반 페이지네이션을 사용합니다.

## 쿼리 파라미터

| 파라미터 | 설명 |
| --- | --- |
| `cursor` | 페이지의 시작 위치입니다. 이전 응답의 `cursor` 값을 그대로 넣어 주세요. 첫 요청에서는 생략합니다. |
| `limit` | 한 페이지의 항목 수입니다. 허용 범위와 기본값은 [List items](https://www.boxhero.io/docs/ko/developers/api/reference/items/list-items)처럼 엔드포인트마다 안내되어 있습니다. |

## 응답

각 페이지에는 결과와 함께 다음 페이지를 조회하는 데 필요한 필드가 포함됩니다.

```json
{
  "items": [...],
  "count": 100,
  "limit": 100,
  "cursor": 1234567,
  "has_more": true
}
```

| 필드 | 설명 |
| --- | --- |
| `count` | 이 페이지의 항목 수 |
| `limit` | 이 페이지에 적용된 페이지 크기 |
| `cursor` | 다음 페이지를 조회할 때 `cursor` 쿼리 파라미터로 넣는 값. 더 이상 페이지가 없으면 `null` |
| `has_more` | 이 페이지 이후에도 결과가 있으면 `true` |

## 전체 목록 조회

1. `cursor` 없이 목록 조회 API를 호출합니다.
2. `has_more`가 `true`인 동안, 마지막 응답의 `cursor` 값을 `cursor`에 넣어 다시 호출합니다.
3. `has_more`가 `false`가 되면 멈춥니다.

```bash
curl "https://rest.boxhero-app.com/v1/items?cursor=1234567" \
  -H "Authorization: Bearer $BOXHERO_API_TOKEN"
```

첫 요청에 사용한 필터는 이후 요청에서도 똑같이 유지해 주세요.

## 정렬 순서

정렬 순서는 자원마다 다릅니다. 대부분의 목록 조회 API는 id 오름차순으로 반환합니다. [List transactions](https://www.boxhero.io/docs/ko/developers/api/reference/transactions/list-transactions)는 거래 일시가 최근인 입출고 내역부터 반환합니다(거래 일시가 같으면 id 순).

> **Tip**
>
> **팁**: 입출고 내역을 외부 시스템과 동기화하려면 내역마다 `revision`을 저장해 두세요. 목록을 다시 조회했을 때 `revision`이 커졌다면 마지막으로 확인한 이후 수정된 내역입니다.
