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 RStudio 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.
 - 
Repeat steps 1 through 3 until there are no more results.
Note
The
paging.nextproperty in the response is the URL of the next page. 
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 RStudio 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.
 - 
Repeat steps 1 through 3 until there is no more
nextPage(next page).Note
The query parameter
page_numberdetermines the page to return. 
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)
}