Breaking changes

  • GET_URL(), GET_RESULT(), and GET_RESULT_URL() have been eliminated in favor of GET() (#274).
  • The .empty_object argument has been removed from PUT/PATCH/POST (#274).

New features

  • New content_render() and content_restart() functions. content_render() allows you to programmatically re-render content such as Quarto and R Markdown reports and Jupyter notebooks, optionally passing in a variant_key to 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/credentials endpoint. This endpoint allows content running on Posit Connect to obtain the content viewer’s OAuth access token (#297).

Minor improvements and fixes

  • 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_response object (#274).

Breaking changes

  • All previously deprecated functions are now removed.
  • The functions Connect$download_bundle() and Connect$bundle_delete() have been removed. Use Content$bundle_download() and Content$bundle_delete() instead.
  • audit_vanity_urls() has been removed. To check if a vanity URL is in use, use vanity_is_available() instead.
  • Other audit_* functions have been modified to accept the result of get_content() rather than cache_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)

Enhancements and fixes

  • 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 than tbl_lazy, preventing problems when also using dplyr (#177).
  • progress is 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 NULL or length 1 job outputs (#193)
  • Timestamp parsing now correctly preserves time components (#259)
  • Fix generated documentation HTML for CRAN submission
  • Rebrand RStudio to Posit
    • RStudioConnect documentation is now at PositConnect
  • Fix purrr deprecated changes
  • Update docs to illustrate customizing HTTP requests (#168)
  • Fix issue with HTML documentation to retain on CRAN (#164)
  • Fix typo in min_data_version parameter for usage data functions (#166)
  • Bump Connect tested version to 2022.09.0 (#170)

BREAKING

Other Changes

  • users_create_remote() gains an exact argument 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() and content_update_owner()
  • Fix an issue with relative paths in bundle_dir() (@slodge) (#118, #121)
  • Add overwrite= parameter to download_bundle()
  • Add HTTP request customization options, and related documentation (#101)
  • Add git deployment (#112)
  • Switch Task class to ContentTask
    • R6 does not support multiple inheritance, so we keep the Task interface up-to-date on ContentTask and VariantTask manually
  • 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_permissions returns a content_list with a “permission” column that includes who has access
    • content_list_by_tag allows fetching just a content_list for a particular tag
    • content_list_guid_has_access filters a “content list with permission” by whether a user or group GUID has access
  • Add a user_guid_from_username() function to convert session$user or other usernames to a user GUID (#130)
  • Add a client$PATCH verb
  • Switch Content$update() to use PATCH (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/https is not defined

BREAKING: * Switch from RSTUDIO_CONNECT_* variables to CONNECT_* variables * Rename a handful of functions: - connect$activate_bundle to connect$content_deploy - connect$create_app to connect$content_create - connect$upload_bundle to connect$content_upload - connect$get_users to connect$users * Change some return types to be consistent with the API - connect$content_upload returns the response instead of bundle_id - connect$content_deploy returns the response instead of task_id * Switch endpoints from using app_id to guid * get_task$start renamed to get_task$first * promote$app_name renamed to promote$name * rename the package to connectapi * change functions to take a Connect object instead of server / api key - cache_apps - tag_page

OTHER: * Add some endpoints: - content - audit_logs - server_settings - server_settings_r - inst_shiny_usage - inst_content_visits * Add some helper functions: - swap_vanity_url, deployment functions - browse_ family of functions - users_create_remote and groups_create_remote for remote users/groups * Update Connect R6 object to be compatible with Connect 1.7.0+ APIs * Added a NEWS.md file to track changes to the package. * Add integration testing to protect against regressions * Add tbl_connect() as a lazy_tbl for querying Connect API endpoints * Add get_* functions as alternatives to lazy_tbl

  • Initial package version
  • Create a Connect R6 object