Exclusive > timestamp filters exclude the full second
- Announced
- Tags
- GraphQL-Admin-API
- Severity
- info, set by
reef/rss-rule-v1 - Source
- https://shopify.dev/changelog/exclusive-timestamp-filters
As of API version 2026-10, an exclusive lower bound (>) on a timestamp filter in the GraphQL Admin API search syntax excludes the full second. For example, created_at:>'2026-09-15T12:00:02Z' no longer returns an order created at 12:00:02.500.
What changed
The GraphQL Admin API returns timestamps such as createdAt to the second, but internally some resources store them with fractional seconds.
Before 2026-10, created_at:>'2026-09-15T12:00:02Z' compared against 12:00:02.000000. It returned records from later in that second, and the response showed those records with createdAt: "2026-09-15T12:00:02Z". The same records also matched created_at:<='2026-09-15T12:00:02Z'.
As of 2026-10, when a > value has no fractional seconds, the filter starts after the end of that second (12:00:02.999999). A record matches >T only when the timestamp that the API returns for it is later than T, so >T and <=T no longer overlap.
These filters don't change on any version: >=, <, and <=; date-only values such as created_at:>2026-09-15; and values with fractional seconds such as created_at:>'2026-09-15T12:00:02.250Z'.
Who's affected
Apps that send a > bound without fractional seconds on a timestamp filter in the query argument of a GraphQL Admin API connection, for example created_at on the orders query.
What to do
Apps on 2026-07 or earlier don't need to change anything. Before you move an app to 2026-10, check its > filters:
- Find queries that pass a timestamp from an earlier response as a
>bound, for example to fetch records newer than the last record that the app saw. - If the app must not miss records created later in that same second, use
>=with that timestamp and remove duplicates byid.
query OrdersSinceLastSync {
orders(first: 50, sortKey: CREATED_AT, query: "created_at:>='2026-09-15T12:00:02Z'") {
nodes {
id
createdAt
}
}
}The text above is the source's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.