R Versions

These recipes will help you determine if the version of R you are using locally is available to Posit Connect.

Use the Content Runtimes recipe to enumerate the R and Python versions used by content deployed to your Posit Connect server.

R versions available to Posit Connect

This recipe compares your local R version against the R installations available on your Connect server. It uses the GET /v1/server_settings/r endpoint to obtain the R installations available to Connect.

Workflow

  1. Obtain the Connect server URL and API Key from environment variables.
  2. Obtain your local R version using R.version.
  3. Retrieve the set of known R installations with the GET /v1/server_settings/r endpoint.
  4. Parse the response using httr::content.
  5. Check the response for the local R version. If it is not listed, the Posit Connect server does not contain the local R version.

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")

myRVersion <- paste(R.version$major, R.version$minor, sep = ".")
resp <- GET(
  paste0(connectServer, "__api__/v1/server_settings/r"),
  add_headers(Authorization = paste("Key", connectAPIKey))
)
payload <- content(resp, as = "parsed", simplifyVector = TRUE)
if (myRVersion %in% payload$installations$version) {
  print("The local R version was found on the Posit Connect server")
} else {
  print(paste("Cannot find R version", myRVersion,"on the Posit Connect server"))
}

R Versions available in content execution images

If your Connect installation uses off-host content execution with Kubernetes, Connect will be configured with one or more images which might include different versions of R.

This recipe compares your local R version against the R installations available on your Connect server’s configured images. It uses the GET /v1/server_settings/r endpoint to obtain the R installations available to Connect, and find which images they are available on. You can use the same pattern to search for Python or Quarto installations.

Workflow

  1. Obtain the Connect server URL and API Key from environment variables.
  2. Obtain your local R version using R.version.
  3. Retrieve the set of known R installations with the GET /v1/server_settings/r endpoint.
  4. Parse the response using httr::content.
  5. Check the response for the local R version. If it is not listed, the Connect server’s images do not contain the local R version.

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")

myRVersion <- paste(R.version$major, R.version$minor, sep = ".")
resp <- GET(
  paste0(connectServer, "__api__/v1/server_settings/r"),
  add_headers(Authorization = paste("Key", connectAPIKey))
)
payload <- content(resp, as = "parsed", simplifyVector = TRUE)
installations <- payload$installations
matching <- installations[ installations$version == myRVersion, ]
if (nrow(matching) > 0) {
  print("The local R version was found in the following images:")
  for (image_name in matching$image_name) {
    print(image_name)
  }
} else {
  print(paste("Cannot find R version", myRVersion,"in any available images"))
}