Observed behavior:
- Fetching
/v1/work_orderswithlimit=100 - Using
cursorfromnext_cursorin response - Page 1 returns records A–J (IDs: 1001–1100)
- Page 2 returns records B–K (IDs: 1101–1200), but record A from page 1 never appears on page 2
- After ~10 pages, total count is 40 short of expected
Reproduction:
GET /v1/work_orders?limit=100&cursor=eyJpZCI6MTEwMH0=
# response
{
"data": [...],
"next_cursor": "eyJpZCI6MTIwMH0=",
"has_more": true
}
Timestamp ordering in DB appears stable. No concurrent deletes during fetch. Same behavior observed with customers endpoint.
Documentation states cursor is "opaque" — need to know if implementation is timestamp-based vs ID-based. Gap suggests records with identical sort values are being dropped at boundary.