I'm integrating with Hikvision access control via:
/AccessControl/AcsEvent?format=json
using AcsEventCond.
I need to fetch events incrementally across multiple requests.
My current approach uses serial bounds:
{
"beginSerialNo": lastSerial,
"endSerialNo": lastSerial + 29,
"maxResults": 30,
"major": 0,
"minor": 0
}
Then I collect returned serialNo values and assume they are sequential, so I detect gaps like this:
$expected = range($startSerial, $maxRetrieved);
$missing = array_diff($expected, $retrieved);
But in practice the API returns non-continuous serials, for example:
1001, 1002, 1004, 1005
So my actual problem is:
What is the correct way to continue pagination / incremental retrieval when returned serialNo values are not continuous?
More specifically:
Should the next request start from
max(returned serialNo) + 1?Or should I avoid serial-based continuation entirely and use
searchResultPositionor time-based queries instead?
what continuation logic is correct in client code when IDs are sparse?