Pagination
Keyset (Cursor) Pagination
The following snippet pages through the audit logs, which uses keyset pagination, starting from the most recent entries, 25 entries at a time.
Workflow
- Obtain the Posit Connect server URL and API Key from environment variables.
- Retrieve the first page of the audit logs via the
GET /v1/audit_logs
endpoint. - Parse the response using
httr::content
. - Print the current page.
- The
paging.next
response field indicates the URL for the next page. Load, parse, and print each additional page untilpaging.next
isNULL
.
Here is an example of the workflow:
library(httr)
# The connectServer URL must have a trailing slash.
<- Sys.getenv("CONNECT_SERVER")
connectServer <- Sys.getenv("CONNECT_API_KEY")
connectAPIKey
# Request a page of up to 25 audit log records.
<- GET(
resp paste0(connectServer, "__api__/v1/audit_logs?ascOrder=false&limit=25"),
add_headers(Authorization = paste("Key", connectAPIKey))
)<- content(resp)
payload # print the current page results
print(payload$results)
# Continue to page through additional records
# while we have a "next" reference
while(!is.null(payload$paging[["next"]])) {
<- GET(
resp $paging[["next"]],
payloadadd_headers(Authorization = paste("Key", connectAPIKey))
)<- content(resp)
payload # print the results on this page
print(payload$results)
}
Offset Pagination
The following snippet pages through the user’s list, which uses offset pagination, 25 entries at a time.
Workflow
- Obtain the Posit Connect server URL and API Key from environment variables.
- To retrieve the first page of the user’s list, call the
GET /v1/users
endpoint. - Parse the response using
httr::content
. - Print the current page.
- Increment the requested
page_number
to load, parse, and print each additional page until no results are returned.
Here is an example of the workflow:
library(httr)
# The connectServer URL must have a trailing slash.
<- Sys.getenv("CONNECT_SERVER")
connectServer <- Sys.getenv("CONNECT_API_KEY")
connectAPIKey
# Request a page of up to 25 users.
<- GET(
resp paste0(connectServer, "__api__/v1/users?page_size=25"),
add_headers(Authorization = paste("Key", connectAPIKey))
)<- content(resp)
payload
# While the current page has results, print its contents
# then advance to the next page.
while(length(payload$result) > 0) {
# print the current page results
print(payload$results)
# get the next page
<- payload$current_page + 1
nextPage <- GET(
resp paste0(connectServer, "__api__/v1/users?page_size=25&page_number=", nextPage),
add_headers(Authorization = paste("Key", connectAPIKey))
)<- content(resp)
payload }