- Improved performance of API response parsing and pagination. Data frames returned by getter functions now include all columns from the server, so new fields added in future Connect releases will appear automatically. Column names and types are now determined by the server response rather than a hardcoded schema, so they may vary across Connect versions.
- Fixed
repo_check_branches()andrepo_check_branches_ref()to handle the updated response format from newer versions of Connect (#524).
- Apps running on Connect Cloud are now supported for OAuth integrations via the
new
on_connect_cloud()helper. ThePOSIT_PRODUCTenvironment variable is now recognized as an alternative toRSTUDIO_PRODUCTfor detecting Connect (#522). - When using integrations, prefer to read from
CONNECT_CONTENT_SESSION_TOKEN_FILEto find the session token. This helps long-running processes ensure that they can maintain fresh credentials (#518).
get_usage()now returns the id column as a character to match other parts of the API (#512).
get_usage()now allows for filtering by content GUID with thecontent_guidargument. This is only available on Connect server versions 2026.01 and later.- The
activateargument toset_schedule_*()functions is deprecated and no longer has any effect, due to changes in the Connect API. It will be removed in a future release. (#500) - Added a single retry to
content_restart()to more robustly clean up temporary environment variables. (#498) - Improved performance of
page_cursor(). (#501)
- Removed
get_image,delete_image,has_image,set_image_path,set_image_url,set_image_websthot, andConnect$server_settings_r, all of which were deprecated since version 0.3.1.
- Removed
prefixargument toconnect()function, which was a convenience utility for testing. (#477)
- Removed
get_job(), which was deprecated in 0.6.0. Instead, useget_jobs()to get a data frame of jobs, useget_job_list()to get a list of job objects, and useget_log()to get the log for a job (#491). - Removed
swap_vanity_url(), which was deprecated in 0.6.0. Useswap_vanity_urls()instead (#493).
- New
set_integrations()function to set the OAuth integration associations for a content item. (#414) - New
get_integration()function to retrieve details of a specific OAuth integration from a Connect server. (#431) get_integrations()can now be passed aContentclass object to retrieve a list of integrations associated with that piece of content. (#432)- New functions allow you to manage the OAuth integrations on your Connect
server:
create_integration(),update_integration()anddelete_integration(). (#434) - New
search_content()function which lets you search and filter content items on the Connect server. (#272, #447) - New
lock_content()andunlock_content()functions for locking and unlocking content items. (#453) - Updated git-backed deployment functions to use v1 APIs (#459)
get_apps()has been removed in favor ofget_content().dashboard_url_chr()has been removed. (#415)
- New
get_usage()function returns content usage data from Connect'sGET v1/instrumentation/content/hitsendpoint on Connect v2025.04.0 and higher. (#390) - The
get_oauth_credentials()andconnect()functions have a newaudienceparameter. On Connect v2025.07.0 and higher, pass the GUID of an integration to this parameter to specify which OAuth integration you wish to use. (#423) - New
get_integrations()function lists all OAuth integrations available on the Connect server from theGET v1/oauth/integrationsendpoint on Connect v2024.12.0 and higher. (#413)
get_groups()now paginates through all results when aprefixis provided, if the Connect server API version supports pagination. (#328)- Timestamps from the Connect server are now displayed in your local time zone, rather than in UTC. (#400)
get_content()now includes vanity URLs in the returned data frame on Connect v2024.06.0 and later. (#398)- Removed unnecessary null check with default from
get_oauth_credentials()andget_oauth_content_credentials()functions forrequested_token_typeparameter that was causing issues with Connect < 2025.03.0. (#407) Connect$content()now respects theincludeargument when aguidis provided. (#411)
- New
get_packages()function to get a data frame of all packages on a Connect server. (#374) - New
get_content_packages()function to get a data frame of all package dependencies for a content item. (#374) - New
get_aws_credentials()andget_aws_content_credentialsfunctions for interacting with Connect's/v1/oauth/integrations/credentialsendpoint. This endpoint allows content running on Posit Connect to obtain temporary AWS credentials for an AWS IAM role specified by the system administrator. (#380).
- New
get_log()function which lets you get the log for a given job. (#341) - New
get_job_list()function returns a list of jobs for a content item. (#341) - New
tokenparameter toconnect()function allows you to create a Connect client with permissions scoped to the content visitor when running on a Connect server. (#362)
swap_vanity_urls()can correctly perform a swap involving a content item with no vanity URL. (#360)swap_vanity_urls()handles permissions errors gracefully, attempting to roll back any changes made. (#360)get_jobs()andget_job_list()return objects containcontent_idandcontent_guidfields. These contain the same values asapp_idandapp_guid, which are deprecated and will be removed in a future update.
get_job()(singular) is now deprecated, its functionality taken care of by other functions, includingget_log().swap_vanity_url(old, new)has been deprecated and renamed toswap_vanity_urls(content_a, content_b).
get_jobs()now uses the publicv1jobs endpoint when available, and as a result, the data returned by this function has changed. In particular, thefinalizedcolumn is no longer present, replaced bystatus.status == 0corresponds toisFALSE(finalized). See?get_jobs()for more details about the new return data format. (#340)
get_users()has new parameters for filtering users byaccount_statusanduser_role. This allows you to find, for example, all licensed users on a Connect server. (#311)- The new
get_group_content()function lets you view the content that groups have permission to access. (#334) - The new
terminate_jobs()function lets you terminate processes associated with a content item. (#332) - The new
get_vanity_urls()function lets you get all vanity URLs on a Connect server (#333) - Added new
get_oauth_content_credentials()function for interacting with Connect's/v1/oauth/integrations/credentialsendpoint. This endpoint allows content running on Posit Connect to obtain an OAuth access token using the client credentials flow. (#344).
- The task returned by
content_render()now has the expectedtask_idparameter and is able to be polled. (#338)
- New functions
set_thumbnail(),get_thumbnail(),delete_thumbnail()andhas_thumbnail()let you interact with content thumbnails, replacing older*_image()functions. (#294, #304) groups_create_remote()now has anexactparameter. Settingexactcauses the function to consider only exact group name matches when searching for remote groups and checking for existing local groups. (#216)- New functions to let you view and delete runtime caches on a Connect server:
get_runtime_caches(),delete_runtime_cache()(#312) - New
get_runtimes()lets you view available runtimes and versions on a Connect server. (#311)
set_image_path(),set_image_url(), andset_image_webshot()have been deprecated and will be removed in a future update. They have been replaced byset_thumbnail(), which works both with local file paths and remote URLs to images. Likewise,has_image()anddelete_image()have been deprecated in favor ofhas_thumbnail()anddelete_thumbnail(). (#294, #304)Connect$server_settings_r()has been deprecated in favor ofget_runtimes(client, "r"). (#311)
- Upgrade
pkgdownto bootstrap 5 to enable search (@fh-mthomson, #275) - The
get_timezones()function now uses thev1/timezonesendpoint if available. (#300) connect$DELETE()now respects theparserargument rather than always usingNULL.get_groups()no longer hangs when a searchprefixis provided. (#319)
GET_URL(),GET_RESULT(), andGET_RESULT_URL()have been eliminated in favor ofGET()(#274).- The
.empty_objectargument has been removed fromPUT/PATCH/POST(#274).
- New
content_render()andcontent_restart()functions.content_render()allows you to programmatically re-render content such as Quarto and R Markdown reports and Jupyter notebooks, optionally passing in avariant_keyto render a specific variant of parameterized content.content_restart()lets you restart interactive content, such as Shiny applications, APIs, or dashboards (#283, #289) - New
get_oauth_credentials()function for interacting with Connect's/v1/oauth/integrations/credentialsendpoint. This endpoint allows content running on Posit Connect to obtain the content viewer's OAuth access token (#297).
- Timestamps with non-zero offsets received from Connect no longer parse as
NA(#290). - Timestamps sent to Connect are now correctly converted to UTC, instead of simply being labeled as GMT (#291).
- Functions to render variants and email reports now contain the request query that Connect expects (#277).
- HTTP verb functions can take any URL, not just one relative to API root, and
can optionally return the
httr_responseobject (#274).
- All previously deprecated functions are now removed.
- The functions
Connect$download_bundle()andConnect$bundle_delete()have been removed. UseContent$bundle_download()andContent$bundle_delete()instead. audit_vanity_urls()has been removed. To check if a vanity URL is in use, usevanity_is_available()instead.- Other
audit_*functions have been modified to accept the result ofget_content()rather thancache_apps()(which is now removed). They are faster as a result. - dplyr is no longer a required dependency. If you use
tbl_connect(), you will need to install dplyr and dbplyr explicitly. (#246)
- The package is now tested against many versions of Connect, back to 1.8.8.2 (May 2021). There are now fewer warnings about version mismatches: you should only see a warning if your Connect server is older than that. (#244)
- Now correctly provides methods for
tbl_connect, rather thantbl_lazy, preventing problems when also using dplyr (#177). progressis now an optional dependency. To show pretty progress bars, install the package explicitly. (#269)Content$tag_delete()removes the tag from the target content item rather than removing the tag entirely. (#194)audit_r_versions()returns a bar chart instead of a histogram (#179)- Fix issue with
NULLorlength 1job outputs (#193) - Timestamp parsing now correctly preserves time components (#259)
- Fix generated documentation HTML for CRAN submission
- Rebrand RStudio to Posit
RStudioConnectdocumentation is now atPositConnect
- Fix
purrrdeprecated changes
- Update docs to illustrate customizing HTTP requests (#168)
- Fix issue with HTML documentation to retain on CRAN (#164)
- Fix typo in
min_data_versionparameter for usage data functions (#166) - Bump Connect tested version to 2022.09.0 (#170)
- BREAKING: the following functions now require RStudio Connect 1.8.6 or later
(because they are no longer experimental, as of that release).
(#128)
set_vanity_url(),get_vanity_url(),swap_vanity_url()get_tags(),get_tag_data(),get_content_tags(),create_tag(),create_tag_tree(),delete_tag(),get_content_tags(),set_content_tags(),set_content_tag_tree(),filter_tag_tree_id(),filter_tag_tree_chr(),set_environment_new(),get_environment(),set_environment_remove(),download_bundle()tag ids are now character strings (of integers) instead of integers
- BREAKING:
Connect$new()now takes aserverargument (instead ofhost)- The same is true of the
connect()function, although we warn about argument deprecation in that case. (#125)
- The same is true of the
- BREAKING:
set_environment_new()andset_environment_remove()no longer take a.versionargument, and output data structure is a bit different (a list of names). They now use the public API, which changes the interface a bit. Also, intricacies of how to set / remove environment variables are changed (i.e. settingVAR=NAwill removeVAR). (#141) - BREAKING:
get_vanity_url()andset_vanity_url()are now no longer experimental functions. (#113) However:get_vanity_url()now returns a character string representing the vanity url in use (or NULL if not defined)set_vanity_url()still returns aVanityR6 object, butvanity$get_vanity()$path_prefixis nowvanity$get_vanity()$path
- BREAKING:
tag_page()andtag_page_iframe()have been removed. Similar functions belong in theconnectwidgetspackage in the future. - BREAKING: Several
content_*and other APIs have moved from experimental to "v1" variants. This means they have stabilized, but with several subtle breaking changes that could impact your scripts. (#115)- i.e.
bundle_idhas becomeidin some response data. In others,urlhas becomecontent_url. - The R6 method
content$get_bundles()no longer takes apage_numberargument, and theget_bundles(limit)argument is now deprecated (#129) Connect$download_bundleis now deprecated in favor ofContent$bundle_download(), anddelete_bundle()now takes aContentitem instead ofConnect. (#153)
- i.e.
- BREAKING:
acl_*()functions are deprecated in favor ofget_content_permissions(),content_add_user(), and friends. - BREAKING:
Connect$PUT(),Connect$POST()andConnect$PATCH()endpoints now presume that an empty list is really a "map"/"object" (like{}instead of[]). This can break some endpoints that expect a list. Set.empty_object=FALSEto avoid this behavior.
users_create_remote()gains anexactargument to simplify complex cases (#135). Long term, we should solicit feedback on whether this function attempts to do too much.- Add helpers for common content modification actions:
content_update(),content_update_access_type()andcontent_update_owner() - Fix an issue with relative paths in
bundle_dir()(@slodge) (#118, #121) - Add
overwrite=parameter todownload_bundle() - Add HTTP request customization options, and related documentation (#101)
- Add git deployment (#112)
- Switch
Taskclass toContentTask- R6 does not support multiple inheritance, so we keep the
Taskinterface up-to-date onContentTaskandVariantTaskmanually
- R6 does not support multiple inheritance, so we keep the
- Improve several print methods (#18, #19)
- Protect against bad bundles (#13)
- Error if an empty API key is defined (#16)
- Add a few
content_list_*helpers (#130):content_list_with_permissionsreturns acontent_listwith a "permission" column that includes who has accesscontent_list_by_tagallows fetching just acontent_listfor a particular tagcontent_list_guid_has_accessfilters a "content list with permission" by whether a user or group GUID has access
- Add a
user_guid_from_username()function to convertsession$useror other usernames to a user GUID (#130)
- Add a
client$PATCHverb - Switch
Content$update()to usePATCH(which depends on RStudio Connect 1.8.6+) - Add error messaging for new API endpoints when using older versions of Connect
- Fail more gracefully if/when protocol
http/httpsis not defined
BREAKING:
- Switch from
RSTUDIO_CONNECT_*variables toCONNECT_*variables - Rename a handful of functions:
connect$activate_bundletoconnect$content_deployconnect$create_apptoconnect$content_createconnect$upload_bundletoconnect$content_uploadconnect$get_userstoconnect$users
- Change some return types to be consistent with the API
connect$content_uploadreturns the response instead ofbundle_idconnect$content_deployreturns the response instead oftask_id
- Switch endpoints from using
app_idtoguid get_task$startrenamed toget_task$firstpromote$app_namerenamed topromote$name- rename the package to
connectapi - change functions to take a
Connectobject instead of server / api keycache_appstag_page
OTHER:
- Add some endpoints:
contentaudit_logsserver_settingsserver_settings_rinst_shiny_usageinst_content_visits
- Add some helper functions:
swap_vanity_url, deployment functionsbrowse_family of functionsusers_create_remoteandgroups_create_remotefor remote users/groups
- Update
ConnectR6 object to be compatible with Connect 1.7.0+ APIs - Added a
NEWS.mdfile to track changes to the package. - Add integration testing to protect against regressions
- Add
tbl_connect()as alazy_tblfor querying Connect API endpoints - Add
get_*functions as alternatives tolazy_tbl
- Initial package version
- Create a
ConnectR6 object