get_usage()now returns the id column as a character to match other parts of the API.
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