Overview

Pagination

LSA supports pagination to accommodate requests of a large snapshot in multiple page fetches (pulls). Google will pull a given partner endpoint with a param maxresults to limit the maximum amount of serviceProviders returned in the JSON response. Partners will populate a pagination token into the metadata.pagination.nextTokenParam field in the JSON response. The value of this token is partner specific and is used to construct the next page URL. The nextTokenParam field must not be populated for the last page. Please note that the metadata.pagination object should always be populated (as it’s required in the schema), even though the last page will not have a nextTokenParam field. Further, totalCount indicates the total number of service providers (or reviewItems in the case of reviews feed) across all pages.

For example, if a partner has 200 providers in the full snapshot. When Google initiates the feeds transfer with the url http://www.partners.com/feeds/{version}/profile&maxresults=100 the first page should return the first 100 partner providers with the following metaData:

"metaData": {
     "feedCategory":"SNAPSHOT",
     "feedTimestampMicros":1532930955190163,
     "apiVersion": "v1",
     "pagination": {
        "nextTokenParam": "yre7yiesar"
     },
     "totalCount":200
}
"serviceProviders": {....}   // Contains 100 service provider objects.

Google will parse nextTokenParam: "yre7yiesar" and will initiate the second transfer with the url: http:partners.com/feeds/{version}/profile&nextpagetoken=yre7yiesar&maxresults=100

The second page should return the last 100 providers. Given that the second page is also the last page, nextTokenParam will not be populated (metaData example below), indicating the end of pagination.

"metaData": {
     "feedCategory":"SNAPSHOT",
     "feedTimestampMicros":1532930955190164,
     "apiVersion": "v1",
     "pagination": {},
     "totalCount":200
}
"serviceProviders": {....}

Note that after fetching all pages, the total number of serviceProviders objects (across all pages) must be equal to the totalCount indicated on the first page fetch.