These would be things that are irrelevant for an API user. One example is an item’s rank, which determines how it’s ordered in a given list or board. We consider ranks to be an implementation detail.
An items rank could change when someone drags a task, or a different task is added that causes ranks to be re-shuffled. While the object was not directly edited, it was still modified by internal processes.
To close the loop on this thread, I think Joe’s suggestion of sorting by created_at and filtering on modified_at is the right approach here. Here’s some pseudo code that hopefully gives the right impression:
last_modified_at = global.previous_sync;
global.previous_sync = Date.now(); // Reset sync before waiting on requests
pagination_created_at = Date.now(); // Start paging from now
// Paginate over created_at (using the last item's created_at)
while(pagination_created_at != null) {
modified_items = request("/search?modified_at.after="+last_modified_at+"&created_at.before="+pagination_created_at+"&sort_by=created_at");
for(items in modified_items) {
...
}
// If there no items left, we're done paging
if (modified_items.length == 0) {
pagination_created_at = null;
} else {
pagination_created_at = modified_items[modified_items.length - 1].created_at;
}
}
// To get unmodified items, use the same above logic but with:
// "modified_at.before="+last_modified_at
Hope this is helpful to anyone who wasn’t sure how to page on created_at!