InventoryPro

Contents

api

Pagination

Pagination

All list endpoints return paginated results. The API uses offset-based pagination with consistent query parameters and response shape across every resource.

Query Parameters

ParameterTypeDefaultRangeDescription
pageinteger11+Page number (1-based)
pageSizeinteger251–250Items per page
sortstringvariesColumn to sort by (validated per endpoint)
directionstringASCASC, DESCSort direction
modifiedSincedatetimeOnly return records modified on or after this timestamp

Order-specific endpoints (Purchase Orders, Shipping Orders, Work Orders) accept additional parameters:

ParameterTypeDescription
startDatedatetimeFilter orders created on or after this date
endDatedatetimeFilter orders created on or before this date

Order endpoints have a smaller maximum page size of 50 instead of 250.

Response Shape

Every paginated response wraps results in a consistent object:

{
  "value": [
    { "partNo": 1, "shortID": "WIDGET-001", "description": "Standard Widget" },
    { "partNo": 2, "shortID": "GADGET-002", "description": "Premium Gadget" }
  ],
  "totalCount": 847,
  "page": 1,
  "pageSize": 25,
  "pageCount": 34,
  "hasMore": true
}
FieldTypeDescription
valuearrayItems in the current page
totalCountintegerTotal records matching your query (before paging)
pageintegerCurrent page number
pageSizeintegerItems per page (what you requested, capped at max)
pageCountintegerTotal pages available
hasMorebooleantrue if more pages exist after this one

Response Headers

Paged responses also include these headers for clients that prefer header-based pagination:

HeaderValue
X-Total-CountTotal matching records
X-Page-SizeItems per page
X-PageCurrent page number
X-API-VersionAPI version (v1)

Iterating All Pages

To retrieve all records, increment page until hasMore is false:

$page = 1
$allItems = @()

do {
    $response = Invoke-RestMethod -Uri "$baseUrl/Item?page=$page&pageSize=100" `
        -Headers @{ Authorization = "Bearer $token" }
    $allItems += $response.value
    $page++
} while ($response.hasMore)

Write-Host "Retrieved $($allItems.Count) items"
page=1
while true; do
  response=$(curl -s "$BASE_URL/Item?page=$page&pageSize=100" \
    -H "Authorization: Bearer $TOKEN")

  # Process items in .value
  echo "$response" | jq '.value[]'

  has_more=$(echo "$response" | jq '.hasMore')
  if [ "$has_more" = "false" ]; then break; fi
  page=$((page + 1))
done

Sorting

Pass sort with a column name and optionally direction:

GET /Item?sort=shortID&direction=DESC&page=1&pageSize=50

Available sort columns vary by endpoint. Invalid sort values are ignored (the endpoint uses its default ordering). Check the Swagger documentation on your instance for the sort options each endpoint supports.

Modified Since

Use modifiedSince for incremental sync. Only records with a Modified timestamp on or after your value are returned:

GET /Item?modifiedSince=2026-05-01T00:00:00Z&page=1&pageSize=250

The timestamp should be in ISO 8601 format (UTC recommended). Store the latest Modified value from each sync run and use it as modifiedSince on the next run.

Not all endpoints support modifiedSince — see individual endpoint documentation for availability.

Page Size Limits

Endpoint TypeMax Page Size
Standard resources (Items, Inventory, etc.)250
Order resources (POs, SOs, Work Orders)50
Reports1000

Requesting a pageSize above the maximum silently caps it at the limit.

On this page