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_logsendpoint. - Parse the response using 
httr::content. - Print the current page.
 - The 
paging.nextresponse field indicates the URL for the next page. Load, parse, and print each additional page untilpaging.nextisNULL. 
Here is an example of the workflow:
library(httr)
# The connectServer URL must have a trailing slash.
connectServer <- Sys.getenv("CONNECT_SERVER")
connectAPIKey <- Sys.getenv("CONNECT_API_KEY")
# Request a page of up to 25 audit log records.
resp <- GET(
  paste0(connectServer, "__api__/v1/audit_logs?ascOrder=false&limit=25"),
  add_headers(Authorization = paste("Key", connectAPIKey))
)
payload <- content(resp)
# 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"]])) {
  resp <- GET(
    payload$paging[["next"]],
    add_headers(Authorization = paste("Key", connectAPIKey))
  )
  payload <- content(resp)
  # 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/usersendpoint. - Parse the response using 
httr::content. - Print the current page.
 - Increment the requested 
page_numberto 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.
connectServer <- Sys.getenv("CONNECT_SERVER")
connectAPIKey <- Sys.getenv("CONNECT_API_KEY")
# Request a page of up to 25 users.
resp <- GET(
  paste0(connectServer, "__api__/v1/users?page_size=25"),
  add_headers(Authorization = paste("Key", connectAPIKey))
)
payload <- content(resp)
# 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
  nextPage <- payload$current_page + 1
  resp <- GET(
    paste0(connectServer, "__api__/v1/users?page_size=25&page_number=", nextPage),
    add_headers(Authorization = paste("Key", connectAPIKey))
  )
  payload <- content(resp)
}