Pagination

Many Reporting API endpoints can return large result sets. To help you work efficiently and avoid timeouts or memory issues, the API uses pagination. This means results are returned in chunks ("pages"), and you can request the next page using a link provided in the response.

Different endpoints use different pagination approaches. The sections below explain how they work and what to expect when integrating with them.

How Pagination Works

Server-Driven Paging

Some endpoints automatically apply paging on the server. These endpoints have a default page size which is also the maximum page size. Refer table below for exact details. If more data is available, the response includes an @odata.nextLink property. You can call the URL in nextLink to retrieve the next page.

What you need to do: Follow the @odata.nextLink until it is no longer present. It's still possible to use client-driven paging on these endpoints if desired (see below).

Client-Driven Paging (Manual)

All endpoints support client-driven paging. This is done using the OData $top and $skip query parameters. The $top value controls how many items are on each page (the page size) and $skip controls how many items to skip.

Endpoints

The table below outlines which endpoints use which paging style, including any applicable default page size.

RouteServer-Driven PagingClient-Driven PagingDefault Page Size
v0.1/attendeesYesYes25,000
v0.1/bookingsNoYes-
v0.1/bookingZoneLinksNoYes-
v0.1/bookingZonesNoYes-
v0.1/bulletinsNoYes-
v0.1/diaryEntriesNoYes-
v0.1/diaryentrymetricsYesYes10,000
v0.1/employerDiaryEntriesYesYes250,000
v0.1/ employerProfilesYesYes1000
v0.1/employerStatusYesYes5000
v0.1/equipmentInductionsYesYes25,000
v0.1/functionEmployersYesYes10,000
v0.1/functionsNoYes-
v0.1/historicAggregatesYesYes25,000
v0.1/incidentsYesYes100
v0.1/injuriesYesYes1000
v0.1/inspectionsYesYes5000
v0.1/issuesYesYes5000
v0.1/locationMappingsYesYes10,000
v0.1/locationsYesYes25,000
v0.1/meetingsYesYes25,000
v0.1/observationsYesYes100,000
v0.1/permitWorkersYesYes25,000
v0.1/permitZoneLinksYesYes25,000
v0.1/permitZonesYesYes25,000
v0.1/permitsYesYes25,000
v0.1/projectWorkerFlaggingNoYes-
v0.1/projectusersYesYes50,000
v0.1/projectworkersYesYes50,000
v0.1/projectsNoYes-
v0.1/ptpAttendeesNoYes-
v0.1/ptpAttendeesLocationNoYes-
v0.1/ptpControlsNoYes-
v0.1/ptpEquipmentNoYes-
v0.1/ptpHazardsNoYes-
v0.1/ptpLocationHierarchiesNoYes-
v0.1/ptpObservationsNoYes-
v0.1/ptpPermitsNoYes-
v0.1/ptpsYesYes10,000
v0.1/ptpSWMSNoYes-
v0.1/ptpTasksNoYes-
v0.1/reportableQuestionsYesYes50,000
v0.1/ safetyManagementPlanChecklistsNoYes-
v0.1/safetymanagementplansYesYes1,000
v0.1/sdsNoYes-
v0.1/sdsAttachmentsNoYes-
v0.1/sdsHazardClassificationsNoYes-
v0.1/sdsHazardPictogramsNoYes-
v0.1/siteSignInsYesYes50,000
v0.1/swmsNoYes-
v0.1/usersYesNo50,000
v0.1/workerHoursWorkedYesYes100,000
v0.1/workerLocationsYesYes25,000
v0.1/workerProfileFlaggingNoYes-
v0.1/workerProfileReportableAnswersYesYes50,000
v0.1/workerProfilesYesYes50,000
v0.1/workerReportableAnswersYesYes50,000
v0.1/ workersYesYes25,000

FAQ - Parallel Requests

Q: Can I request data from multiple different endpoints in parallel?

A: Yes, you can request data from multiple endpoints in parallel.


Q: Can I request multiple pages from the same endpoint in parallel?

A: No this is not permitted, to protect the service and other customers from misuse. This will result in you being rate limited - you will receive a 429 error code. You must iterate over pages for a given endpoint sequentially.