@@ -110,9 +110,10 @@ For example:
110110 first 50 results were returned on the first page) and a ` skip ` value of ` 30 `
111111 returns a single page of results starting with the 81st result.
112112
113- If a ` skip ` value is provided that causes the cursor to move past the end of
114- the collection of results, the response ** must** be ` 200 OK ` with an empty
115- result set, and not provide a ` next_page_token ` .
113+ If a ` skip ` value is provided that cannot be fulfilled e.g. due to latency of
114+ querying a massive data set, the response ** must** be ` 200 OK ` with an empty
115+ result set. If it is _ known_ to put the cursor beyond the total size of the
116+ collection, the response ** must not** include a ` next_page_token ` .
116117
117118### Opacity
118119
@@ -176,8 +177,23 @@ paginate) is reasonable for initially-small collections.
176177
177178[ list ] : ./0132.md
178179
180+ ## Rationale
181+
182+ ### Degraded ` skip ` response
183+
184+ Large collections, complex queries, and globally distributed data can all
185+ contribute to a paginated method being unable to quickly or confidently fulfill
186+ a given ` skip ` request. Backend queries can timeout, data collation can take
187+ time, and the end user experience need not suffer as a result. In such cases,
188+ the pagination interface can be leveraged to keep the client engaged by
189+ providing a ` next_page_token ` , while the service collects an appropriate result.
190+ When the service has definitively determined that the requested ` skip ` exceeds
191+ the available results, the pagination interface is again applied and
192+ ` next_page_token ` is omitted to signal the end of results.
193+
179194## Changelog
180195
196+ - ** 2025-07-08** : Clarify degraded skip response guidance
181197- ** 2020-05-24** : Clarified that adding pagination breaks client
182198 libraries.
183199- ** 2020-05-13** : Added guidance for skipping results.
0 commit comments