Pagination
List endpoints return one page of results at a time. The results live in content, and
page tells you where that page sits in the full set.
200 OK
{
"content": [],
"page": {
"size": 20,
"number": 0,
"totalElements": 161,
"totalPages": 9
}
}Query parameters
Every list endpoint accepts the same two paging parameters.
| Param | Type | Description |
|---|---|---|
page | number | The page to return. Zero based, so the first page is 0. Defaults to 0. |
size | number | How many results to return per page. Defaults to 20, maximum 100. |
Every list endpoint uses the same limits. A size above 100 is capped at 100.
The page object
| Field | Type | Description |
|---|---|---|
content | object[] | The results on this page, newest first. |
page.number | number | The page that was returned, zero based. |
page.size | number | The page size used. content can hold fewer results than this on the last page. |
page.totalElements | number | Total number of results across every page. |
page.totalPages | number | Total number of pages available. |
Walking every page
Keep requesting the next page until page.number reaches the last page. An empty result
set has totalPages of 0, so the loop below stops after the first request.
fetch-all-reviews.js
async function fetchAllReviews(token) {
const reviews = []
let pageNumber = 0
let totalPages = 0
do {
const response = await fetch(
`https://www.reviewsolicitors.co.uk/api/v2/reviews?page=${pageNumber}`,
{ headers: { Authorization: `Bearer ${token}` } }
)
const { content, page } = await response.json()
reviews.push(...content)
totalPages = page.totalPages
pageNumber = page.number + 1
} while (pageNumber < totalPages)
return reviews
}Results are sorted newest first, so an item that arrives mid-walk can shift results onto the
next page. If you are syncing rather than exporting, store each item’s id and skip ones you
have already seen.
Last updated on