From 15e8c7ab6c26bb0a9e7f0183646d72fe8b7812d6 Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Tue, 24 Feb 2026 10:11:22 -0800 Subject: [PATCH 01/11] improve performance of parse_connectapi_typed --- R/parse.R | 78 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 27 deletions(-) diff --git a/R/parse.R b/R/parse.R index a0b90541..8bb34b06 100644 --- a/R/parse.R +++ b/R/parse.R @@ -47,13 +47,12 @@ ensure_columns <- function(.data, ptype, strict = FALSE) { ensure_column <- function(data, default, name) { stopifnot(length(default) == 1) col <- data[[name]] - scoped_experimental_silence() if (rlang::is_null(col)) { col <- vctrs::vec_rep(default, nrow(data)) col <- vctrs::vec_cast(col, default) } else { if ( - vctrs::vec_is(default, NA_datetime_) && !vctrs::vec_is(col, NA_datetime_) + inherits(default, "POSIXct") && !inherits(col, "POSIXct") ) { # manual fix because vctrs::vec_cast cannot cast double -> datetime or char -> datetime col <- coerce_datetime(col, default, name = name) @@ -97,19 +96,31 @@ parse_connectapi_typed <- function(data, ptype, strict = FALSE) { parse_connectapi <- function(data) { if (length(data) == 0) return(tibble::tibble()) - all_names <- unique(unlist(lapply(data, names))) - cols <- stats::setNames(lapply(all_names, function(nm) { - # NULL / missing fields become NA; unlist() will coerce to the right type - values <- lapply(data, function(row) row[[nm]] %||% NA) - if (any(vapply(values, function(v) is.list(v) || length(v) > 1, logical(1)))) { - # List column: wrap scalars so every element is a list + all_names <- unique(unlist(lapply(data, names), use.names = FALSE)) + n <- length(data) + + cols <- lapply(all_names, function(nm) { + # .subset2 is the internal no-dispatch version of `[[` + values <- lapply(data, .subset2, nm) + nulls <- vapply(values, is.null, logical(1)) + + # Determine column type from first non-NULL value + is_list_col <- FALSE + if (!all(nulls)) { + first_val <- values[[which.min(nulls)]] + is_list_col <- is.list(first_val) || length(first_val) > 1L + } + + values[nulls] <- list(NA) + + if (is_list_col) { lapply(values, function(v) if (is.list(v)) v else list(v)) } else { - # Scalar column: simplify to a vector - unlist(values) + unlist(values, use.names = FALSE) } - }), all_names) - tibble::as_tibble(cols) + }) + names(cols) <- all_names + tibble::new_tibble(cols, nrow = n) } coerce_fsbytes <- function(x, to, ...) { @@ -165,21 +176,34 @@ coerce_datetime <- function(x, to, ...) { # - "2020-01-01T00:02:03-01:00" # nolint end parse_connect_rfc3339 <- function(x) { - # Convert timestamps with offsets to a format recognized by `strptime`. - x <- gsub("([+-]\\d\\d):(\\d\\d)$", "\\1\\2", x) - x <- gsub("Z$", "+0000", x) - - # Parse with an inner call to `strptime()`, which returns a POSIXlt object, - # and convert that to `POSIXct`. - # - # We must specify `tz` in the inner call to correctly compute date math. - # Specifying `tz` when in the outer call just changes the time zone without - # doing any date math! - # - # > xlt [1] "2024-08-29 16:36:33 EDT" tzone(xlt) [1] "America/New_York" - # as.POSIXct(xlt, tz = "UTC") [1] "2024-08-29 16:36:33 UTC" - format_string <- "%Y-%m-%dT%H:%M:%OS%z" - as.POSIXct(x, format = format_string, tz = Sys.timezone()) + if (length(x) == 0) return(.POSIXct(double(), tz = Sys.timezone())) + + # The date portion is always at fixed positions: YYYY-MM-DDTHH:MM:SS + dates <- as.Date(substr(x, 1, 10)) + hour <- as.integer(substr(x, 12, 13)) + min <- as.integer(substr(x, 15, 16)) + + # Seconds (with optional fractional part) run from position 18 to just before + # the timezone suffix. The suffix is either "Z" (1 char) or "+HH:MM" (6 chars). + nc <- nchar(x) + is_utc <- endsWith(x, "Z") + tz_len <- ifelse(is_utc, 1L, 6L) + sec <- as.double(substr(x, 18, nc - tz_len)) + + # Compute timezone offset in seconds for non-UTC timestamps + tz_offset <- rep(0, length(x)) + non_utc <- which(!is_utc) + if (length(non_utc) > 0) { + tz_str <- substr(x[non_utc], nc[non_utc] - 5, nc[non_utc]) + tz_sign <- ifelse(substr(tz_str, 1, 1) == "+", 1, -1) + tz_h <- as.integer(substr(tz_str, 2, 3)) + tz_m <- as.integer(substr(tz_str, 5, 6)) + tz_offset[non_utc] <- tz_sign * (tz_h * 3600L + tz_m * 60L) + } + + # Build epoch seconds directly: date days * 86400 + time of day - tz offset + epoch <- as.double(dates) * 86400 + hour * 3600 + min * 60 + sec - tz_offset + .POSIXct(epoch, tz = Sys.timezone()) } vec_cast.POSIXct.double <- # nolint: object_name_linter From f84a5442594ce270df8f57a70b232dd8b59d65eb Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Tue, 24 Feb 2026 12:04:47 -0800 Subject: [PATCH 02/11] remove ptype and simplify parsing --- DESCRIPTION | 1 - R/connect.R | 28 +++- R/connectapi.R | 2 - R/content.R | 47 ++++-- R/get.R | 34 +++-- R/groups.R | 9 +- R/integrations.R | 5 +- R/lazy.R | 70 ++++++--- R/parse.R | 200 ++++++++++--------------- R/ptype.R | 269 ---------------------------------- R/remote.R | 2 +- R/user.R | 1 + R/variant.R | 9 +- man/PositConnect.Rd | 18 ++- tests/integrated/helper.R | 25 +++- tests/integrated/test-get.R | 48 +++--- tests/integrated/test-lazy.R | 35 +++-- tests/testthat/setup.R | 12 +- tests/testthat/test-content.R | 55 +------ tests/testthat/test-get.R | 29 +--- tests/testthat/test-parse.R | 256 +++++++++++++++----------------- 21 files changed, 433 insertions(+), 722 deletions(-) delete mode 100644 R/ptype.R diff --git a/DESCRIPTION b/DESCRIPTION index 5612c05c..f7e8f3a3 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -87,7 +87,6 @@ Collate: 'page.R' 'parse.R' 'promote.R' - 'ptype.R' 'remote.R' 'runtime-caches.R' 'schedule.R' diff --git a/R/connect.R b/R/connect.R index bb7671f9..ac6199f0 100644 --- a/R/connect.R +++ b/R/connect.R @@ -138,8 +138,11 @@ Connect <- R6::R6Class( #' @param parser How the response is parsed. If `NULL`, the `httr_response` #' will be returned. Otherwise, the argument is forwarded to #' `httr::content(res, as = parser)`. + #' @param simplify Logical; if `TRUE`, JSON arrays of objects are + #' simplified to data frames by jsonlite. Default `FALSE` preserves + #' list-of-lists for compatibility with pagination helpers. #' @param ... Additional arguments passed to the request function - request = function(method, url, ..., parser = "parsed") { + request = function(method, url, ..., parser = "parsed", simplify = FALSE) { old_opt <- options(scipen = 999) on.exit(options(old_opt), add = TRUE) @@ -161,7 +164,21 @@ Connect <- R6::R6Class( res } else { self$raise_error(res) - httr::content(res, as = parser) + if (parser != "parsed") { + return(httr::content(res, as = parser)) + } + if (is.null(res$content) || length(res$content) == 0) { + return(NULL) + } + content_text <- httr::content(res, as = "text", encoding = "UTF-8") + if (is.null(content_text) || nchar(content_text) == 0) { + return(NULL) + } + jsonlite::fromJSON( + content_text, + simplifyVector = simplify, + simplifyDataFrame = simplify + ) } }, @@ -173,8 +190,11 @@ Connect <- R6::R6Class( #' @param parser How the response is parsed. If `NULL`, the `httr_response` #' will be returned. Otherwise, the argument is forwarded to #' `httr::content(res, as = parser)`. - GET = function(path, ..., url = self$api_url(path), parser = "parsed") { - self$request("GET", url, parser = parser, ...) + #' @param simplify Logical; if `TRUE`, JSON arrays of objects are + #' simplified to data frames by jsonlite. Default `FALSE` preserves + #' list-of-lists for compatibility with pagination helpers. + GET = function(path, ..., url = self$api_url(path), parser = "parsed", simplify = FALSE) { + self$request("GET", url, parser = parser, simplify = simplify, ...) }, #' @description Perform an HTTP PUT request of the named API path. diff --git a/R/connectapi.R b/R/connectapi.R index 5b625696..bc430527 100644 --- a/R/connectapi.R +++ b/R/connectapi.R @@ -10,7 +10,6 @@ utils::globalVariables( c( ".", "access_type", - "connectapi_ptypes", "guid", "last_deployed_time", "owner_guid", @@ -27,6 +26,5 @@ current_connect_version <- "2024.03.0" .onLoad <- function(...) { vctrs::s3_register("dplyr::collect", "tbl_connect") - vctrs::s3_register("vctrs::vec_cast", "character.integer") invisible() } diff --git a/R/content.R b/R/content.R index 486c7e39..df7d23c8 100644 --- a/R/content.R +++ b/R/content.R @@ -788,7 +788,23 @@ get_jobs <- function(content) { validate_R6_class(content, "Content") jobs <- content$jobs() - parse_connectapi_typed(jobs, connectapi_ptypes$jobs, strict = TRUE) + out <- parse_connectapi_typed( + jobs, + datetime_cols = c("start_time", "end_time", "last_heartbeat_time", "queued_time") + ) + + # The older /applications/ endpoint returns timestamps as Unix epoch integers + # and ID fields as integers. Normalize to match the v1 endpoint's types. + # For the v1 endpoint these are already character/POSIXct, so the coercions + # are no-ops. + out <- coerce_epoch_to_posixct( + out, + c("start_time", "end_time", "last_heartbeat_time", "queued_time") + ) + coerce_to_character( + out, + c("id", "ppid", "pid", "app_id", "content_id", "variant_id", "bundle_id") + ) } #' Terminate Jobs @@ -832,22 +848,19 @@ terminate_jobs <- function(content, keys = NULL) { keys <- all_jobs[all_jobs$status == 0, ]$key if (length(keys) == 0) { message("No active jobs found.") - return(vctrs::vec_ptype(connectapi_ptypes$job_termination)) + return(tibble::tibble()) } } res <- purrr::map(keys, content$register_job_kill_order) res_content <- purrr::map(res, httr::content) - res_df <- tibble::tibble( - parse_connectapi_typed( - res_content, - connectapi_ptypes$job_termination, - strict = TRUE - ) - ) + res_df <- parse_connectapi_typed(res_content) # Errors will not have the job_key. res_df$job_key <- keys - res_df + # Keep only the columns relevant to job termination; the API response + # includes extra fields (e.g. payload, guid) on error that vary by outcome. + keep <- c("app_id", "app_guid", "job_key", "job_id", "result", "code", "error") + res_df[, intersect(keep, names(res_df)), drop = FALSE] } #' @rdname get_jobs @@ -896,7 +909,7 @@ get_log <- function(job, max_log_lines = NULL) { v1_url("content", job$app_guid, "jobs", job$key, "log"), query = query ) - parse_connectapi_typed(res$entries, connectapi_ptypes$job_log) + parse_connectapi_typed(res$entries, datetime_cols = "timestamp") } #' Set RunAs User @@ -1141,7 +1154,8 @@ get_bundles <- function(content) { validate_R6_class(content, "Content") bundles <- content$get_bundles() - parse_connectapi_typed(bundles, connectapi_ptypes$bundles) + out <- parse_connectapi_typed(bundles, datetime_cols = "created_time") + coerce_fs_bytes(out, "size") } #' @rdname get_bundles @@ -1347,7 +1361,7 @@ get_group_permission <- function(content, guid) { get_content_permissions <- function(content, add_owner = TRUE) { validate_R6_class(content, "Content") res <- content$permissions(add_owner = add_owner) - parse_connectapi_typed(res, connectapi_ptypes$permissions) + parse_connectapi_typed(res) } #' Render a content item. @@ -1495,7 +1509,7 @@ content_restart <- function(content) { get_content_packages <- function(content) { error_if_less_than(content$connect$version, "2025.01.0") res <- content$packages() - parse_connectapi_typed(res, connectapi_ptypes$content_packages) + parse_connectapi_typed(res) } #' Search for content on the Connect server @@ -1627,5 +1641,8 @@ as.data.frame.connect_content_list <- function( #' @export as_tibble.connect_content_list <- function(x, ...) { content_data <- purrr::map(x, "content") - parse_connectapi_typed(content_data, connectapi_ptypes$content) + parse_connectapi_typed( + content_data, + datetime_cols = c("created_time", "last_deployed_time") + ) } diff --git a/R/get.R b/R/get.R index 7cf4affa..7579cd93 100644 --- a/R/get.R +++ b/R/get.R @@ -73,7 +73,10 @@ get_users <- function( limit = limit ) - out <- parse_connectapi_typed(res, connectapi_ptypes$users) + out <- parse_connectapi_typed( + res, + datetime_cols = c("created_time", "updated_time", "active_time") + ) return(out) } @@ -229,12 +232,8 @@ get_content <- function( # v2024.06.0. if (compare_connect_version(src$version, "2024.06.0") < 0) { include <- "tags,owner" - content_ptype <- connectapi_ptypes$content[, - names(connectapi_ptypes$content) != "vanity_url" - ] } else { include <- "tags,owner,vanity_url" - content_ptype <- connectapi_ptypes$content } res <- src$content( @@ -253,7 +252,10 @@ get_content <- function( res <- res %>% purrr::keep(.p = .p) } - out <- parse_connectapi_typed(res, content_ptype) + out <- parse_connectapi_typed( + res, + datetime_cols = c("created_time", "last_deployed_time") + ) return(out) } @@ -327,7 +329,10 @@ content_list_by_tag <- function(src, tag) { res <- src$GET(v1_url("tags", tag_id, "content")) - out <- parse_connectapi_typed(res, connectapi_ptypes$content) + out <- parse_connectapi_typed( + res, + datetime_cols = c("created_time", "last_deployed_time") + ) return(out) } @@ -425,7 +430,7 @@ get_usage_shiny <- function( res <- page_cursor(src, res, limit = limit) - out <- parse_connectapi_typed(res, connectapi_ptypes$usage_shiny) + out <- parse_connectapi_typed(res, datetime_cols = c("started", "ended")) return(out) } @@ -521,7 +526,7 @@ get_usage_static <- function( res <- page_cursor(src, res, limit = limit) - out <- parse_connectapi_typed(res, connectapi_ptypes$usage_static) + out <- parse_connectapi_typed(res, datetime_cols = "time") return(out) } @@ -658,7 +663,7 @@ as.data.frame.connect_list_hits <- function( ..., unnest = TRUE ) { - usage_df <- parse_connectapi_typed(x, connectapi_ptypes$usage) + usage_df <- parse_connectapi_typed(x, datetime_cols = "timestamp") if (unnest) { if (!requireNamespace("tidyr", quietly = TRUE)) { stop( @@ -750,7 +755,7 @@ get_audit_logs <- function( res <- page_cursor(src, res, limit = limit) - out <- parse_connectapi_typed(res, connectapi_ptypes$audit_logs) + out <- parse_connectapi_typed(res, datetime_cols = "time") return(out) } @@ -792,7 +797,8 @@ get_procs <- function(src) { c(list(pid = y), x) } ) - tbl_data <- parse_connectapi_typed(proc_prep, connectapi_ptypes$procs) + tbl_data <- parse_connectapi_typed(proc_prep) + tbl_data <- coerce_fs_bytes(tbl_data, "ram") return(tbl_data) } @@ -1217,7 +1223,7 @@ get_packages <- function(src, name = NULL, page_size = 100000, limit = Inf) { page_size = page_size ) ) - out <- parse_connectapi_typed(res, connectapi_ptypes$packages) + out <- parse_connectapi_typed(res) # Connect is standardizing on using `content_id` and `content_guid`. # Handle that name change now in a forward-compatible way. @@ -1253,5 +1259,5 @@ get_packages <- function(src, name = NULL, page_size = 100000, limit = Inf) { #' @export get_vanity_urls <- function(client) { res <- client$vanities() - parse_connectapi_typed(res, connectapi_ptypes$vanities) + parse_connectapi_typed(res, datetime_cols = "created_time") } diff --git a/R/groups.R b/R/groups.R index 79d98edb..1652edb3 100644 --- a/R/groups.R +++ b/R/groups.R @@ -53,7 +53,7 @@ get_groups <- function(src, page_size = 500, prefix = NULL, limit = Inf) { limit = limit ) - parse_connectapi_typed(res, connectapi_ptypes$groups) + parse_connectapi_typed(res) } #' Get users within a specific group @@ -106,7 +106,10 @@ get_group_members <- function(src, guid) { res <- src$group_members(guid) - parse_connectapi(res$results) + parse_connectapi_typed( + res$results, + datetime_cols = c("created_time", "updated_time", "active_time") + ) } #' Get content access permissions for a group or groups @@ -172,7 +175,7 @@ get_one_groups_content <- function(src, guid) { role = NA_character_ )) } - parsed <- parse_connectapi_typed(res, connectapi_ptypes$group_content) + parsed <- parse_connectapi_typed(res) permissions_df <- purrr::list_rbind( purrr::map( diff --git a/R/integrations.R b/R/integrations.R index ad833bbc..d421871d 100644 --- a/R/integrations.R +++ b/R/integrations.R @@ -136,7 +136,10 @@ as.data.frame.connect_integration_list <- function( #' @return A tibble with one row per integration. #' @export as_tibble.connect_integration_list <- function(x, ...) { - parse_connectapi_typed(x, connectapi_ptypes$integrations) + parse_connectapi_typed( + x, + datetime_cols = c("created_time", "updated_time") + ) } # Integration class ---- diff --git a/R/lazy.R b/R/lazy.R index cbb03887..1ca2136d 100644 --- a/R/lazy.R +++ b/R/lazy.R @@ -37,9 +37,12 @@ tbl_connect <- function( from <- arg_match(from) - # TODO: go get the vars we should expect... - vars <- connectapi_ptypes[[from]] - if (is.null(vars)) vars <- character() + # Discover column names from a small API request rather than maintaining a + # hardcoded dictionary that must be updated every time the server changes. + vars <- tryCatch( + names(tbl_lazy_fetch(src, from, limit = 1)), + error = function(e) character() + ) # TODO: figure out number of rows... ops <- op_base_connect(from, vars) @@ -47,6 +50,44 @@ tbl_connect <- function( dplyr::make_tbl(c("connect", "lazy"), src = src, ops = ops) } +# Datetime columns for each lazy table type. These must match the +# datetime_cols passed in the corresponding getter functions: +# get_users(), get_groups(), get_content(), get_usage_shiny(), +# get_usage_static(), get_audit_logs(). +lazy_datetime_cols <- list( + users = c("created_time", "updated_time", "active_time"), + groups = character(), + content = c("created_time", "last_deployed_time"), + usage_shiny = c("started", "ended"), + usage_static = "time", + audit_logs = "time" +) + +# Fetch data for a lazy table endpoint. Shared by tbl_connect (for column +# discovery) and api_build.op_base_connect (for full collection). +tbl_lazy_fetch <- function(src, from, limit = Inf) { + if (from == "users") { + res <- page_offset(src, src$users(), limit = limit) + } else if (from == "groups") { + res <- page_offset(src, src$groups(), limit = limit) + } else if (from == "content") { + # TODO: no limit notion here... we just pull all of them... + res <- src$content() + } else if (from == "usage_shiny") { + res <- src$inst_shiny_usage(limit = limit) %>% + page_cursor(src, ., limit = limit) + } else if (from == "usage_static") { + res <- src$inst_content_visits(limit = limit) %>% + page_cursor(src, ., limit = limit) + } else if (from == "audit_logs") { + res <- src$audit_logs(limit = limit) %>% + page_cursor(src, ., limit = limit) + } else { + stop(glue::glue("'{from}' is not recognized")) + } + parse_connectapi_typed(res, datetime_cols = lazy_datetime_cols[[from]]) +} + # This will be registered in .onLoad if dplyr is available collect.tbl_connect <- # nolint function(x, ..., n = Inf) { @@ -65,23 +106,7 @@ api_build.op_head <- function(op, con, ..., n) { #' @export api_build.op_base_connect <- function(op, con, ..., n) { - if (op$x == "users") { - res <- page_offset(con, con$users(), limit = n) - } else if (op$x == "groups") { - res <- page_offset(con, con$groups(), limit = n) - } else if (op$x == "content") { - # TODO: no limit notion here... we just pull all of them... - res <- con$content() - } else if (op$x == "usage_shiny") { - res <- con$inst_shiny_usage(limit = n) %>% page_cursor(con, ., limit = n) - } else if (op$x == "usage_static") { - res <- con$inst_content_visits(limit = n) %>% page_cursor(con, ., limit = n) - } else if (op$x == "audit_logs") { - res <- con$audit_logs(limit = n) %>% page_cursor(con, ., limit = n) - } else { - stop(glue::glue("'{op$x}' is not recognized")) - } - parse_connectapi_typed(res, op$ptype) + tbl_lazy_fetch(con, op$x, limit = n) } cat_line <- function(...) { @@ -124,13 +149,12 @@ op_base_connect <- function(x, vars) { } op_base <- function(x, vars, class = character()) { - stopifnot(is.character(vars) || is.character(names(vars))) + stopifnot(is.character(vars)) structure( list( x = x, - vars = names(vars), - ptype = vars + vars = vars ), class = c(paste0("op_base_", class), "op_base", "op") ) diff --git a/R/parse.R b/R/parse.R index 8bb34b06..ae3cc59a 100644 --- a/R/parse.R +++ b/R/parse.R @@ -27,72 +27,80 @@ make_timestamp <- function(input) { safe_format(input, "%Y-%m-%dT%H:%M:%SZ", tz = "UTC", usetz = FALSE) } -ensure_columns <- function(.data, ptype, strict = FALSE) { - # Given a prototype, ensure that all columns are present and cast to the correct type. - # If a column is missing in .data, it will be created with all missing values of the correct type. - # If a column is present in both, it will be cast to the correct type. - # If a column is present in .data but not in ptype, it will be left as is. - # If `strict == TRUE`, include only columns present in the ptype, in the order they occur. - for (i in names(ptype)) { - .data <- ensure_column(.data, ptype[[i]], i) - } +# Post-parse helpers for special column types. These are used by individual +# getter functions to coerce columns that jsonlite cannot infer automatically +# (e.g. byte sizes, 64-bit integers, epoch timestamps). - if (strict) { - .data <- .data[, names(ptype), drop = FALSE] +coerce_fs_bytes <- function(df, col) { + if (col %in% names(df)) { + df[[col]] <- fs::as_fs_bytes(df[[col]]) } - - .data + df } -ensure_column <- function(data, default, name) { - stopifnot(length(default) == 1) - col <- data[[name]] - if (rlang::is_null(col)) { - col <- vctrs::vec_rep(default, nrow(data)) - col <- vctrs::vec_cast(col, default) - } else { - if ( - inherits(default, "POSIXct") && !inherits(col, "POSIXct") - ) { - # manual fix because vctrs::vec_cast cannot cast double -> datetime or char -> datetime - col <- coerce_datetime(col, default, name = name) - } - - if (inherits(default, "fs_bytes") && !inherits(col, "fs_bytes")) { - col <- coerce_fsbytes(col, default) - } - - if (inherits(default, "integer64") && !inherits(col, "integer64")) { - col <- bit64::as.integer64(col) - } +coerce_integer64 <- function(df, col) { + if (col %in% names(df)) { + df[[col]] <- bit64::as.integer64(df[[col]]) + } + df +} - if (is.character(default) && (is.integer(col) || is.double(col))) { - if (is.double(col)) { - col <- format(col, scientific = FALSE, trim = TRUE) - } else { - col <- as.character(col) - } +coerce_epoch_to_posixct <- function(df, cols) { + for (col in intersect(cols, names(df))) { + if (is.numeric(df[[col]])) { + df[[col]] <- .POSIXct(as.double(df[[col]]), tz = Sys.timezone()) } + } + df +} - if (inherits(default, "list") && !inherits(col, "list")) { - col <- list(col) +coerce_to_character <- function(df, cols) { + for (col in intersect(cols, names(df))) { + if (is.numeric(df[[col]])) { + df[[col]] <- as.character(df[[col]]) } + } + df +} - col <- vctrs::vec_cast(col, default, x_arg = name) +parse_connectapi_typed <- function(data, datetime_cols = character()) { + if (inherits(data, "data.frame")) { + # Strip custom S3 classes to avoid dispatch loops (e.g., connect_list_hits + # defines as_tibble which calls parse_connectapi_typed, causing recursion) + class(data) <- "data.frame" + df <- tibble::as_tibble(data) + } else { + # Fallback for list-of-lists (backward compat, non-simplified responses) + df <- parse_connectapi(data) + } + for (col in intersect(datetime_cols, names(df))) { + df[[col]] <- coerce_datetime(df[[col]]) } - data[[name]] <- col - data + df } -parse_connectapi_typed <- function(data, ptype, strict = FALSE) { - ensure_columns(parse_connectapi(data), ptype, strict) +# Coerce a column to POSIXct. Handles character (RFC 3339), numeric (epoch +# seconds), POSIXct (pass-through), and all-NA logical vectors. +coerce_datetime <- function(x) { + if (is.null(x)) { + .POSIXct(double(), tz = Sys.timezone()) + } else if (is.character(x)) { + parse_connect_rfc3339(x) + } else if (is.numeric(x)) { + .POSIXct(as.double(x), tz = Sys.timezone()) + } else if (inherits(x, "POSIXct")) { + x + } else if (is.logical(x) && all(is.na(x))) { + .POSIXct(rep(NA_real_, length(x)), tz = Sys.timezone()) + } else { + stop("Cannot coerce ", class(x)[[1]], " to POSIXct", call. = FALSE) + } } # Build a tibble column-by-column instead of row-by-row (via list_rbind). # This avoids type conflicts when the same field is NULL in some rows and # non-NULL in others: NULL -> NA, and unlist() coerces that NA to match the -# type of the non-null values in the same column. ensure_columns() handles -# any further type coercion (e.g. character -> POSIXct) after this step. +# type of the non-null values in the same column. parse_connectapi <- function(data) { if (length(data) == 0) return(tibble::tibble()) @@ -123,43 +131,6 @@ parse_connectapi <- function(data) { tibble::new_tibble(cols, nrow = n) } -coerce_fsbytes <- function(x, to, ...) { - if (is.numeric(x)) { - fs::as_fs_bytes(x) - } else { - vctrs::stop_incompatible_cast(x = x, to = to, x_arg = "x", to_arg = "to") - } -} - -# name - optional. Must be named, the name of the variable / column being converted -coerce_datetime <- function(x, to, ...) { - tmp_name <- rlang::dots_list(...)[["name"]] - if (is.null(tmp_name) || is.na(tmp_name) || !is.character(tmp_name)) { - tmp_name <- "x" - } - - if (is.null(x)) { - as.POSIXct(character(), tz = tzone(to)) - } else if (is.numeric(x)) { - vctrs::new_datetime(as.double(x), tzone = tzone(to)) - } else if (is.character(x)) { - parse_connect_rfc3339(x) - } else if (inherits(x, "POSIXct")) { - x - } else if ( - all(is.logical(x) & is.na(x)) && length(is.logical(x) & is.na(x)) > 0 - ) { - NA_datetime_ - } else { - vctrs::stop_incompatible_cast( - x = x, - to = to, - x_arg = tmp_name, - to_arg = "to" - ) - } -} - # nolint start: commented_code_linter # Parses a character vector of dates received from Connect, using use RFC 3339, # returning a vector of POSIXct datetimes. @@ -178,23 +149,31 @@ coerce_datetime <- function(x, to, ...) { parse_connect_rfc3339 <- function(x) { if (length(x) == 0) return(.POSIXct(double(), tz = Sys.timezone())) + na_mask <- is.na(x) + if (all(na_mask)) { + return(.POSIXct(rep(NA_real_, length(x)), tz = Sys.timezone())) + } + + result <- rep(NA_real_, length(x)) + xn <- x[!na_mask] + # The date portion is always at fixed positions: YYYY-MM-DDTHH:MM:SS - dates <- as.Date(substr(x, 1, 10)) - hour <- as.integer(substr(x, 12, 13)) - min <- as.integer(substr(x, 15, 16)) + dates <- as.Date(substr(xn, 1, 10)) + hour <- as.integer(substr(xn, 12, 13)) + min <- as.integer(substr(xn, 15, 16)) # Seconds (with optional fractional part) run from position 18 to just before # the timezone suffix. The suffix is either "Z" (1 char) or "+HH:MM" (6 chars). - nc <- nchar(x) - is_utc <- endsWith(x, "Z") + nc <- nchar(xn) + is_utc <- endsWith(xn, "Z") tz_len <- ifelse(is_utc, 1L, 6L) - sec <- as.double(substr(x, 18, nc - tz_len)) + sec <- as.double(substr(xn, 18, nc - tz_len)) # Compute timezone offset in seconds for non-UTC timestamps - tz_offset <- rep(0, length(x)) + tz_offset <- rep(0, length(xn)) non_utc <- which(!is_utc) if (length(non_utc) > 0) { - tz_str <- substr(x[non_utc], nc[non_utc] - 5, nc[non_utc]) + tz_str <- substr(xn[non_utc], nc[non_utc] - 5, nc[non_utc]) tz_sign <- ifelse(substr(tz_str, 1, 1) == "+", 1, -1) tz_h <- as.integer(substr(tz_str, 2, 3)) tz_m <- as.integer(substr(tz_str, 5, 6)) @@ -203,35 +182,6 @@ parse_connect_rfc3339 <- function(x) { # Build epoch seconds directly: date days * 86400 + time of day - tz offset epoch <- as.double(dates) * 86400 + hour * 3600 + min * 60 + sec - tz_offset - .POSIXct(epoch, tz = Sys.timezone()) -} - -vec_cast.POSIXct.double <- # nolint: object_name_linter - function(x, to, ...) { - warn_experimental("vec_cast.POSIXct.double") - vctrs::new_datetime(x, tzone = tzone(to)) - } - -vec_cast.POSIXct.character <- # nolint: object_name_linter - function(x, to, ...) { - as.POSIXct(x, tz = tzone(to)) - } - -tzone <- function(x) { - attr(x, "tzone")[[1]] %||% "" -} - -vec_cast.character.integer <- # nolint: object_name_linter - function(x, to, ...) { - as.character(x) - } - -new_datetime <- function(x = double(), tzone = "") { - tzone <- tzone %||% "" - if (is.integer(x)) { - x <- as.double(x) - } - stopifnot(is.double(x)) - stopifnot(is.character(tzone)) - structure(x, tzone = tzone, class = c("POSIXct", "POSIXt")) + result[!na_mask] <- epoch + .POSIXct(result, tz = Sys.timezone()) } diff --git a/R/ptype.R b/R/ptype.R deleted file mode 100644 index ccc8f91a..00000000 --- a/R/ptype.R +++ /dev/null @@ -1,269 +0,0 @@ -NA_datetime_ <- # nolint: object_name_linter - vctrs::new_datetime(NA_real_, tzone = Sys.timezone()) -NA_list_ <- # nolint: object_name_linter - list(list()) - -connectapi_ptypes <- list( - users = tibble::tibble( - "email" = NA_character_, - "username" = NA_character_, - "first_name" = NA_character_, - "last_name" = NA_character_, - "user_role" = NA_character_, - "created_time" = NA_datetime_, - "updated_time" = NA_datetime_, - "active_time" = NA_datetime_, - "confirmed" = FALSE, - "locked" = FALSE, - "external_id" = NA_character_, - "guid" = NA_character_ - ), - groups = tibble::tibble( - "guid" = NA_character_, - "name" = NA_character_, - "owner_guid" = NA_character_, - "gid" = NA_character_ - ), - usage_shiny = tibble::tibble( - "content_guid" = NA_character_, - "user_guid" = NA_character_, - "started" = NA_datetime_, - "ended" = NA_datetime_, - "data_version" = NA_integer_ - ), - usage_static = tibble::tibble( - "content_guid" = NA_character_, - "user_guid" = NA_character_, - "variant_key" = NA_character_, - "time" = NA_datetime_, - "rendering_id" = NA_character_, - "bundle_id" = NA_character_, - "data_version" = NA_integer_ - ), - usage = tibble::tibble( - "id" = NA_character_, - "user_guid" = NA_character_, - "content_guid" = NA_character_, - "timestamp" = NA_datetime_, - "data" = NA_list_ - ), - content = tibble::tibble( - "guid" = NA_character_, - "name" = NA_character_, - "title" = NA_character_, - "description" = NA_character_, - "access_type" = NA_character_, - "connection_timeout" = NA_integer_, - "read_timeout" = NA_integer_, - "init_timeout" = NA_integer_, - "idle_timeout" = NA_integer_, - "max_processes" = NA_integer_, - "min_processes" = NA_integer_, - "max_conns_per_process" = NA_integer_, - "load_factor" = NA_real_, - "created_time" = NA_datetime_, - "last_deployed_time" = NA_datetime_, - "bundle_id" = NA_character_, - "app_mode" = NA_character_, - "content_category" = NA_character_, - "parameterized" = FALSE, - "cluster_name" = NA_character_, - "image_name" = NA_character_, - "r_version" = NA_character_, - "py_version" = NA_character_, - "quarto_version" = NA_character_, - "run_as" = NA_character_, - "run_as_current_user" = FALSE, - "owner_guid" = NA_character_, - "content_url" = NA_character_, - "dashboard_url" = NA_character_, - "app_role" = NA_character_, - "vanity_url" = NA_character_, - "id" = NA_character_, - "owner" = NA_list_, - "tags" = NA_list_, - ), - content_old = tibble::tibble( - "id" = NA_integer_, - "guid" = NA_character_, - "access_type" = NA_character_, - "connection_timeout" = NA_real_, - "read_timeout" = NA_real_, - "init_timeout" = NA_real_, - "idle_timeout" = NA_real_, - "max_processes" = NA_integer_, - "min_processes" = NA_integer_, - "max_conns_per_process" = NA_integer_, - "load_factor" = NA_real_, - "url" = NA_character_, - "vanity_url" = NA, - "name" = NA_character_, - "title" = NA_character_, - "bundle_id" = NA_integer_, - # (1=shiny, 2=shiny Rmd, 3=source Rmd, 4=static, 5=api, 6=tensorflow, 7=python, 8=flask, 9=dash, 10=streamlit) - "app_mode" = NA_integer_, - "content_category" = NA_character_, - "has_parameters" = NA, - "created_time" = NA_datetime_, - "last_deployed_time" = NA_datetime_, - "r_version" = NA_character_, - "py_version" = NA_character_, - "build_status" = NA_integer_, - "run_as" = NA_character_, - "run_as_current_user" = NA, - "description" = NA_character_, - "app_role" = NA_character_, - "owner_first_name" = NA_character_, - "owner_last_name" = NA_character_, - "owner_username" = NA_character_, - "owner_guid" = NA_character_, - "owner_email" = NA_character_, - "owner_locked" = NA, - "is_scheduled" = NA, - "git" = NA_list_ - ), - audit_logs = tibble::tibble( - "id" = NA_character_, - "time" = NA_datetime_, - "user_id" = NA_character_, - "user_guid" = NA_character_, - "user_description" = NA_character_, - "action" = NA_character_, - "event_description" = NA_character_ - ), - procs = tibble::tibble( - pid = NA_character_, - appId = NA_integer_, - appGuid = NA_character_, - appName = NA_character_, - appUrl = NA_character_, - appRunAs = NA_character_, - type = NA_character_, - cpuCurrent = NA_real_, - cpuTotal = NA_integer_, - ram = fs::as_fs_bytes(NA_integer_) - ), - variant = tibble::tibble( - id = NA_integer_, - app_id = NA_integer_, - key = NA_character_, - bundle_id = NA_integer_, - is_default = NA, - name = NA_character_, - email_collaborators = NA, - email_viewers = NA, - created_time = NA_datetime_, - rendering_id = NA_integer_, - render_time = NA_datetime_, - render_duration = bit64::NA_integer64_, - visibility = NA_character_, - owner_id = NA_integer_ - ), - rendering = tibble::tibble( - id = NA_integer_, - app_id = NA_integer_, - variant_id = NA_integer_, - bundle_id = NA_integer_, - job_key = NA_character_, - render_time = NA_datetime_, - render_duration = bit64::as.integer64(NA_integer_), - active = NA, - app_guid = NA_character_, - variant_key = NA_character_, - ), - jobs = tibble::tibble( - id = NA_character_, - ppid = NA_character_, - pid = NA_character_, - key = NA_character_, - remote_id = NA_character_, - content_id = NA_character_, - content_guid = NA_character_, - app_id = NA_character_, - app_guid = NA_character_, - variant_id = NA_character_, - bundle_id = NA_character_, - start_time = NA_datetime_, - end_time = NA_datetime_, - last_heartbeat_time = NA_datetime_, - queued_time = NA_datetime_, - queue_name = NA_character_, - tag = NA_character_, - exit_code = NA_integer_, - status = NA_integer_, - hostname = NA_character_, - cluster = NA_character_, - image = NA_character_, - run_as = NA_character_, - ), - bundles = tibble::tibble( - id = NA_character_, - content_guid = NA_character_, - created_time = NA_datetime_, - r_version = NA_character_, - py_version = NA_character_, - active = NA, - size = fs::as_fs_bytes(NA_integer_), - metadata = NA_list_, - ), - permissions = tibble::tibble( - id = NA_character_, - content_guid = NA_character_, - principal_guid = NA_character_, - principal_type = NA_character_, - role = NA_character_ - ), - group_content = tibble::tibble( - content_guid = NA_character_, - content_name = NA_character_, - content_title = NA_character_, - access_type = NA_character_, - permissions = NA_list_ - ), - job_termination = tibble::tibble( - app_id = NA_integer_, - app_guid = NA_character_, - job_key = NA_character_, - job_id = NA_character_, - result = NA_character_, - code = NA_integer_, - error = NA_character_ - ), - vanities = tibble::tibble( - content_guid = NA_character_, - path = NA_character_, - created_time = NA_datetime_ - ), - job_log = tibble::tibble( - source = NA_character_, - timestamp = NA_datetime_, - data = NA_character_ - ), - packages = tibble::tibble( - language = NA_character_, - language_version = NA_character_, - name = NA_character_, - version = NA_character_, - hash = NA_character_, - bundle_id = NA_character_, - app_id = NA_character_, - app_guid = NA_character_, - ), - content_packages = tibble::tibble( - language = NA_character_, - name = NA_character_, - version = NA_character_, - hash = NA_character_ - ), - integrations = tibble::tibble( - id = NA_character_, - guid = NA_character_, - created_time = NA_datetime_, - updated_time = NA_datetime_, - name = NA_character_, - description = NA_character_, - template = NA_character_, - auth_type = NA_character_, - config = NA_list_ - ) -) diff --git a/R/remote.R b/R/remote.R index c57b71d8..f1141bce 100644 --- a/R/remote.R +++ b/R/remote.R @@ -98,7 +98,7 @@ groups_create_remote <- function( expect <- as.integer(expect) if (check) { local_groups <- get_groups(connect, prefix = prefix) - if (exact) { + if (exact && nrow(local_groups) > 0) { local_groups <- local_groups[local_groups["name"] == prefix, ] } if (nrow(local_groups) > 0) { diff --git a/R/user.R b/R/user.R index 90b2122b..938dc5b7 100644 --- a/R/user.R +++ b/R/user.R @@ -16,6 +16,7 @@ user_guid_from_username <- function(client, username) { user <- client$users(prefix = username) res <- user$results + if (length(res) == 0) { stop("ERROR: user not found") } else if (length(res) > 1) { diff --git a/R/variant.R b/R/variant.R index 4aa55be0..f7287890 100644 --- a/R/variant.R +++ b/R/variant.R @@ -257,7 +257,11 @@ get_variants <- function(content) { variants <- content$variants() - parse_connectapi_typed(variants, connectapi_ptypes$variant) + out <- parse_connectapi_typed( + variants, + datetime_cols = c("created_time", "render_time") + ) + coerce_integer64(out, "render_duration") } #' @rdname variant @@ -300,7 +304,8 @@ get_variant_renderings <- function(variant) { validate_R6_class(variant, "Variant") renders <- variant$renderings() - parse_connectapi_typed(renders, connectapi_ptypes$rendering) + out <- parse_connectapi_typed(renders, datetime_cols = "render_time") + coerce_integer64(out, "render_duration") } #' @rdname variant_render diff --git a/man/PositConnect.Rd b/man/PositConnect.Rd index f6730e4b..27deb076 100644 --- a/man/PositConnect.Rd +++ b/man/PositConnect.Rd @@ -251,7 +251,7 @@ Build a URL relative to the server root \subsection{Method \code{request()}}{ General wrapper around \code{httr} verbs \subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$request(method, url, ..., parser = "parsed")}\if{html}{\out{
}} +\if{html}{\out{
}}\preformatted{Connect$request(method, url, ..., parser = "parsed", simplify = FALSE)}\if{html}{\out{
}} } \subsection{Arguments}{ @@ -266,6 +266,10 @@ General wrapper around \code{httr} verbs \item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} will be returned. Otherwise, the argument is forwarded to \code{httr::content(res, as = parser)}.} + +\item{\code{simplify}}{Logical; if \code{TRUE}, JSON arrays of objects are +simplified to data frames by jsonlite. Default \code{FALSE} preserves +list-of-lists for compatibility with pagination helpers.} } \if{html}{\out{}} } @@ -276,7 +280,13 @@ will be returned. Otherwise, the argument is forwarded to \subsection{Method \code{GET()}}{ Perform an HTTP GET request of the named API path. \subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$GET(path, ..., url = self$api_url(path), parser = "parsed")}\if{html}{\out{
}} +\if{html}{\out{
}}\preformatted{Connect$GET( + path, + ..., + url = self$api_url(path), + parser = "parsed", + simplify = FALSE +)}\if{html}{\out{
}} } \subsection{Arguments}{ @@ -292,6 +302,10 @@ a server resource that is not under \verb{/__api__}} \item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} will be returned. Otherwise, the argument is forwarded to \code{httr::content(res, as = parser)}.} + +\item{\code{simplify}}{Logical; if \code{TRUE}, JSON arrays of objects are +simplified to data frames by jsonlite. Default \code{FALSE} preserves +list-of-lists for compatibility with pagination helpers.} } \if{html}{\out{}} } diff --git a/tests/integrated/helper.R b/tests/integrated/helper.R index 78dae128..a1b9c62c 100644 --- a/tests/integrated/helper.R +++ b/tests/integrated/helper.R @@ -1,11 +1,24 @@ -expect_ptype_equal <- function(actual, expected, exact = TRUE) { +expect_column_types <- function(actual, expected_types, exact = TRUE) { + # expected_types is a named list: list(col_name = "type_string", ...) if (!exact) { - # Keep only the columns from each that are in the other - shared_names <- intersect(names(actual), names(expected)) - actual <- actual[, shared_names] - expected <- expected[, shared_names] + shared_names <- intersect(names(actual), names(expected_types)) + expected_types <- expected_types[shared_names] + } + for (nm in names(expected_types)) { + expect_true( + nm %in% names(actual), + info = paste("Expected column", nm, "not found") + ) + if (nm %in% names(actual)) { + expect_true( + inherits(actual[[nm]], expected_types[[nm]]), + info = paste0( + "Column '", nm, "': expected ", expected_types[[nm]], + ", got ", paste(class(actual[[nm]]), collapse = "/") + ) + ) + } } - expect_equal(vctrs::vec_ptype(actual), vctrs::vec_ptype(expected)) } skip_if_connect_older_than <- function(client, version) { diff --git a/tests/integrated/test-get.R b/tests/integrated/test-get.R index 30e347f5..27b4d847 100644 --- a/tests/integrated/test-get.R +++ b/tests/integrated/test-get.R @@ -10,7 +10,11 @@ test_that("get_users works", { users <- get_users(client) expect_s3_class(users, c("tbl_df", "tbl", "data.frame")) - expect_ptype_equal(users, connectapi_ptypes$users, exact = FALSE) + + expect_true("guid" %in% names(users)) + expect_true("email" %in% names(users)) + expect_true("username" %in% names(users)) + expect_s3_class(users$created_time, "POSIXct") # Other tests create users, so specifying the exact number here is conditional # on the contents of other tests and the order that tests run in. @@ -22,39 +26,41 @@ test_that("get_users works", { }) test_that("get_groups works", { + # Create a group so we have data to assert against (test-get.R runs before + # test-groups.R alphabetically). + client$groups_create(name = paste0("test-get-groups-", uuid::UUIDgenerate())) + groups_list <- get_groups(client) expect_s3_class(groups_list, c("tbl_df", "tbl", "data.frame")) - - expect_ptype_equal(groups_list, connectapi_ptypes$groups) + expect_true(nrow(groups_list) > 0) + expect_true("guid" %in% names(groups_list)) + expect_true("name" %in% names(groups_list)) }) test_that("get_content works", { scoped_experimental_silence() content_list <- get_content(client) expect_s3_class(content_list, c("tbl_df", "tbl", "data.frame")) - - # various attributes have been added over the years, so exact match - # doesn't work against all versions of Connect - expect_ptype_equal(content_list, connectapi_ptypes$content, exact = FALSE) + expect_true("guid" %in% names(content_list)) + expect_true("name" %in% names(content_list)) + expect_s3_class(content_list$created_time, "POSIXct") }) test_that("get_usage_shiny works", { shiny_usage <- get_usage_shiny(client) expect_s3_class(shiny_usage, c("tbl_df", "tbl", "data.frame")) - - expect_ptype_equal(shiny_usage, connectapi_ptypes$usage_shiny) + # No shiny apps are deployed in integration tests, so this may be empty. + if (nrow(shiny_usage) > 0) { + expect_true("content_guid" %in% names(shiny_usage)) + expect_s3_class(shiny_usage$started, "POSIXct") + } }) test_that("get_usage_static works", { content_visits <- get_usage_static(client) expect_s3_class(content_visits, c("tbl_df", "tbl", "data.frame")) - - # path was added to usage_static in 2024 - expect_ptype_equal( - content_visits, - connectapi_ptypes$usage_static, - exact = FALSE - ) + expect_true("content_guid" %in% names(content_visits)) + expect_s3_class(content_visits$time, "POSIXct") }) test_that("get_audit_logs works", { @@ -63,17 +69,19 @@ test_that("get_audit_logs works", { # This is different on older versions, not sure it's worth worrying about how skip_if_connect_older_than(client, "2022.09.0") - expect_ptype_equal(audit_list, connectapi_ptypes$audit_logs) + expect_true("id" %in% names(audit_list)) + expect_s3_class(audit_list$time, "POSIXct") }) test_that("get_procs works", { scoped_experimental_silence() proc_data <- get_procs(client) - # TODO: This is not a great test, since no processes are running - # we could always start a content restoration... + # No long-running processes on a fresh test server, so this is usually empty. expect_s3_class(proc_data, "tbl_df") - expect_ptype_equal(proc_data, connectapi_ptypes$procs) + if (nrow(proc_data) > 0) { + expect_true(all(c("pid", "appId", "appGuid") %in% names(proc_data))) + } }) # experimental -------------------------------------------- diff --git a/tests/integrated/test-lazy.R b/tests/integrated/test-lazy.R index 36ee6627..26eb2947 100644 --- a/tests/integrated/test-lazy.R +++ b/tests/integrated/test-lazy.R @@ -35,7 +35,9 @@ test_that("users works", { expect_type(colnames(users), "character") expect_gt(length(colnames(users)), 1) - expect_ptype_equal(users_local, connectapi_ptypes$users, exact = FALSE) + expect_true("guid" %in% names(users_local)) + expect_true("email" %in% names(users_local)) + expect_s3_class(users_local$created_time, "POSIXct") }) test_that("usage_static works", { @@ -49,12 +51,8 @@ test_that("usage_static works", { expect_type(colnames(content_visits), "character") expect_gt(length(colnames(content_visits)), 1) - # path was added in 2024 - expect_ptype_equal( - content_visits_local, - connectapi_ptypes$usage_static, - exact = FALSE - ) + expect_true("content_guid" %in% names(content_visits_local)) + expect_s3_class(content_visits_local$time, "POSIXct") }) test_that("usage_shiny works", { @@ -66,9 +64,13 @@ test_that("usage_shiny works", { expect_true(is.na(nrow(shiny_usage))) expect_type(colnames(shiny_usage), "character") - expect_gt(length(colnames(shiny_usage)), 1) - expect_ptype_equal(shiny_usage_local, connectapi_ptypes$usage_shiny) + # No shiny apps are deployed in integration tests, so this may be empty. + if (nrow(shiny_usage_local) > 0) { + expect_gt(length(colnames(shiny_usage)), 1) + expect_true("content_guid" %in% names(shiny_usage_local)) + expect_s3_class(shiny_usage_local$started, "POSIXct") + } }) test_that("content works", { @@ -83,13 +85,8 @@ test_that("content works", { expect_type(colnames(content_list), "character") expect_gt(length(colnames(content_list)), 1) - # various attributes have been added over the years, so exact match - # doesn't work against all versions of Connect - expect_ptype_equal( - content_list_local, - connectapi_ptypes$content, - exact = FALSE - ) + expect_true("guid" %in% names(content_list_local)) + expect_s3_class(content_list_local$created_time, "POSIXct") }) test_that("groups works", { @@ -104,7 +101,8 @@ test_that("groups works", { expect_type(colnames(groups_list), "character") expect_gt(length(colnames(groups_list)), 1) - expect_ptype_equal(groups_list_local, connectapi_ptypes$groups, exact = FALSE) + expect_true("guid" %in% names(groups_list_local)) + expect_true("name" %in% names(groups_list_local)) }) test_that("audit_logs works", { @@ -121,5 +119,6 @@ test_that("audit_logs works", { # This is different on older versions, not sure it's worth worrying about how skip_if_connect_older_than(client, "2022.09.0") - expect_ptype_equal(audit_list_local, connectapi_ptypes$audit_logs) + expect_true("id" %in% names(audit_list_local)) + expect_s3_class(audit_list_local$time, "POSIXct") }) diff --git a/tests/testthat/setup.R b/tests/testthat/setup.R index dd8191e2..e3f21d78 100644 --- a/tests/testthat/setup.R +++ b/tests/testthat/setup.R @@ -49,7 +49,7 @@ MockConnect <- R6Class( # The request function matches the route against the routes in the names of # the response list. When a response is selected, it is removed from the # list. - request = function(method, url, ..., parser = "parsed") { + request = function(method, url, ..., parser = "parsed", simplify = FALSE) { route <- paste(method, url) # Record call @@ -67,7 +67,15 @@ MockConnect <- R6Class( res } else { self$raise_error(res) - httr::content(res, as = parser) + content_text <- httr::content(res, as = "text", encoding = "UTF-8") + if (is.null(content_text) || nchar(content_text) == 0) { + return(NULL) + } + jsonlite::fromJSON( + content_text, + simplifyVector = simplify, + simplifyDataFrame = simplify + ) } }, responses = list(), diff --git a/tests/testthat/test-content.R b/tests/testthat/test-content.R index 164e4706..e15d9d5c 100644 --- a/tests/testthat/test-content.R +++ b/tests/testthat/test-content.R @@ -352,7 +352,7 @@ with_mock_api({ app_id = c(NA, 52389L), app_guid = c(NA, "8f37d6e0"), job_key = c("waaTO7v75I84S1hQ", "k3sHkEoWJNwQim7g"), - job_id = c(NA, "40669829"), + job_id = c(NA_integer_, 40669829L), result = c(NA, "Order to kill job registered"), code = c(163L, NA), error = c( @@ -366,18 +366,7 @@ with_mock_api({ test_that("terminate_jobs() functions as expected with no active jobs", { item <- content_item(client, "01234567") expect_message( - expect_equal( - terminate_jobs(item), - tibble::tibble( - app_id = integer(), - app_guid = character(), - job_key = character(), - job_id = character(), - result = character(), - code = integer(), - error = character() - ) - ), + expect_equal(terminate_jobs(item), tibble::tibble()), "No active jobs found." ) }) @@ -508,45 +497,7 @@ with_mock_dir("2025.09.0", { test_that("search_content() can be converted to a data frame correctly", { content_df <- search_content(client, q = "sea bream") |> as_tibble() - expect_named( - content_df, - c( - "guid", - "name", - "title", - "description", - "access_type", - "connection_timeout", - "read_timeout", - "init_timeout", - "idle_timeout", - "max_processes", - "min_processes", - "max_conns_per_process", - "load_factor", - "created_time", - "last_deployed_time", - "bundle_id", - "app_mode", - "content_category", - "parameterized", - "cluster_name", - "image_name", - "r_version", - "py_version", - "quarto_version", - "run_as", - "run_as_current_user", - "owner_guid", - "content_url", - "dashboard_url", - "app_role", - "vanity_url", - "id", - "owner", - "tags" - ) - ) + expect_true(all(c("guid", "name", "title") %in% names(content_df))) expect_equal( content_df$title, c("sea bream report", "sea bream dashboard") diff --git a/tests/testthat/test-get.R b/tests/testthat/test-get.R index bbb5c6d1..35a65d9d 100644 --- a/tests/testthat/test-get.R +++ b/tests/testthat/test-get.R @@ -249,7 +249,7 @@ test_that("get_packages() works as expected with current return value", { language_version = c("3.7.6", "3.7.7"), name = c("absl-py", "absl-py"), version = c("0.12.0", "0.8.1"), - hash = c(NA_character_, NA_character_), + hash = c(NA, NA), bundle_id = c("9375", "6623"), content_id = c("4906", "3652"), content_guid = c("9bf33774", "1935b6cb") @@ -320,7 +320,7 @@ test_that("get_packages() works as expected with `content_guid` names in API res language_version = c("3.7.6", "3.7.7"), name = c("absl-py", "absl-py"), version = c("0.12.0", "0.8.1"), - hash = c(NA_character_, NA_character_), + hash = c(NA, NA), bundle_id = c("9375", "6623"), content_id = c("4906", "3652"), content_guid = c("9bf33774", "1935b6cb") @@ -384,27 +384,12 @@ with_mock_dir("2025.04.0", { ) expect_s3_class(usage, "connect_list_hits") - expect_s3_class(usage, "list") + expect_true(is.list(usage)) + expect_equal(length(usage), 5) + expect_equal(usage[[1]]$id, 8966707L) + expect_equal(usage[[1]]$content_guid, "475618c9") - expect_length(usage, 5) - - # Check first element (raw list, before conversion to data.frame). - # The id is numeric in the JSON, so it stays numeric in the raw list. - expect_equal( - usage[[1]], - list( - id = 8966707L, - user_guid = NULL, - content_guid = "475618c9", - timestamp = "2025-04-30T12:49:16.269904Z", - data = list( - path = "/hello", - user_agent = "Datadog/Synthetics" - ) - ) - ) - - # Check conversion to data.frame + # Check conversion to data.frame (with unnesting) usage_df <- as.data.frame(usage) expect_equal( usage_df, diff --git a/tests/testthat/test-parse.R b/tests/testthat/test-parse.R index ec444200..5298da49 100644 --- a/tests/testthat/test-parse.R +++ b/tests/testthat/test-parse.R @@ -1,51 +1,3 @@ -test_that("coerce_fsbytes fills the void", { - expect_s3_class(coerce_fsbytes(1L, fs::as_fs_bytes(NA_integer_)), "fs_bytes") - expect_s3_class(coerce_fsbytes(1, fs::as_fs_bytes(NA_integer_)), "fs_bytes") - expect_error( - coerce_fsbytes(data.frame(), fs::as_fs_bytes(NA_integer_)), - class = "vctrs_error_incompatible_type" - ) -}) - -test_that("coerce_datetime fills the void", { - chardate <- "2023-10-25T17:04:08Z" - numdate <- as.double(Sys.time()) - expect_s3_class(coerce_datetime(chardate, NA_datetime_), "POSIXct") - expect_s3_class( - coerce_datetime(c(chardate, chardate), NA_datetime_), - "POSIXct" - ) - expect_s3_class(coerce_datetime(numdate, NA_datetime_), "POSIXct") - expect_s3_class(coerce_datetime(c(numdate, numdate), NA_datetime_), "POSIXct") - expect_s3_class(coerce_datetime(NA_datetime_, NA_datetime_), "POSIXct") - expect_s3_class( - coerce_datetime(c(NA_datetime_, NA_datetime_), NA_datetime_), - "POSIXct" - ) - expect_s3_class(coerce_datetime(NA_integer_, NA_datetime_), "POSIXct") - expect_s3_class( - coerce_datetime(c(NA_integer_, NA_integer_), NA_datetime_), - "POSIXct" - ) - expect_s3_class(coerce_datetime(NA, NA_datetime_), "POSIXct") - expect_s3_class(coerce_datetime(c(NA, NA), NA), "POSIXct") - expect_s3_class(coerce_datetime(NULL, NA), "POSIXct") - - expect_error( - coerce_datetime(data.frame(), NA_datetime_), - class = "vctrs_error_incompatible_type" - ) - expect_error( - coerce_datetime(list(), NA_datetime_, name = "list"), - class = "vctrs_error_incompatible_type" - ) - - expect_error( - coerce_datetime(NA_complex_, NA_datetime_, name = "complexity"), - class = "vctrs_error_incompatible_type" - ) -}) - test_that("parse_connect_rfc3339() parses timestamps with offsets as expected", { x_mixed <- c( "2023-08-22T14:13:14Z", @@ -139,6 +91,20 @@ test_that("parse_connect_rfc3339() handles fractional seconds", { expect_identical(parse_connect_rfc3339(x), expected) }) +test_that("parse_connect_rfc3339() handles NA values", { + withr::local_envvar(TZ = "UTC") + result <- parse_connect_rfc3339(c("2023-08-22T14:13:14Z", NA)) + expect_s3_class(result, "POSIXct") + expect_equal(length(result), 2) + expect_false(is.na(result[1])) + expect_true(is.na(result[2])) + + # All NA + result <- parse_connect_rfc3339(c(NA_character_, NA_character_)) + expect_s3_class(result, "POSIXct") + expect_true(all(is.na(result))) +}) + test_that("make_timestamp produces expected output", { x_mixed <- c( "2023-08-22T14:13:14Z", @@ -173,81 +139,81 @@ test_that("make_timestamp produces expected output", { withr::local_envvar(TZ = "America/New_York") expect_equal( - make_timestamp(coerce_datetime(x_mixed, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_mixed)), rep(outcome, 2) ) expect_equal( - make_timestamp(coerce_datetime(x_zero_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_zero_offset)), outcome ) expect_equal( - make_timestamp(coerce_datetime(x_plus_one, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_plus_one)), outcome ) expect_equal( - make_timestamp(coerce_datetime(x_minus_one, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_minus_one)), outcome ) expect_equal( - make_timestamp(coerce_datetime(single_zero_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(single_zero_offset)), outcome[1] ) expect_equal( - make_timestamp(coerce_datetime(single_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(single_offset)), outcome[1] ) expect_equal(make_timestamp(outcome), outcome) withr::local_envvar(TZ = "UTC") expect_equal( - make_timestamp(coerce_datetime(x_mixed, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_mixed)), rep(outcome, 2) ) expect_equal( - make_timestamp(coerce_datetime(x_zero_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_zero_offset)), outcome ) expect_equal( - make_timestamp(coerce_datetime(x_plus_one, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_plus_one)), outcome ) expect_equal( - make_timestamp(coerce_datetime(x_minus_one, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_minus_one)), outcome ) expect_equal( - make_timestamp(coerce_datetime(single_zero_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(single_zero_offset)), outcome[1] ) expect_equal( - make_timestamp(coerce_datetime(single_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(single_offset)), outcome[1] ) expect_equal(make_timestamp(outcome), outcome) withr::local_envvar(TZ = "Asia/Tokyo") expect_equal( - make_timestamp(coerce_datetime(x_mixed, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_mixed)), rep(outcome, 2) ) expect_equal( - make_timestamp(coerce_datetime(x_zero_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_zero_offset)), outcome ) expect_equal( - make_timestamp(coerce_datetime(x_plus_one, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_plus_one)), outcome ) expect_equal( - make_timestamp(coerce_datetime(x_minus_one, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(x_minus_one)), outcome ) expect_equal( - make_timestamp(coerce_datetime(single_zero_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(single_zero_offset)), outcome[1] ) expect_equal( - make_timestamp(coerce_datetime(single_offset, NA_datetime_)), + make_timestamp(parse_connect_rfc3339(single_offset)), outcome[1] ) expect_equal(make_timestamp(outcome), outcome) @@ -261,49 +227,8 @@ test_that("make_timestamp is safe for strings", { }) test_that("make_timestamp converts to character", { - expect_type(make_timestamp(NA_datetime_), "character") -}) - -test_that("ensure_column works with lists", { - list_chk_null <- ensure_column(tibble::tibble(), NA_list_, "hello") - expect_s3_class(list_chk_null, "tbl_df") - expect_type(list_chk_null$hello, "list") - - list_chk_same <- ensure_column( - tibble::tibble(hello = list(list(1, 2, 3), list(1, 2, 3, 4))), - NA_list_, - "hello" - ) - expect_s3_class(list_chk_same, "tbl_df") - expect_type(list_chk_same$hello, "list") -}) - -test_that("ensure_column works with POSIXct", { - time_chk_null <- ensure_column(tibble::tibble(), NA_datetime_, "hello") - expect_s3_class(time_chk_null, "tbl_df") - expect_s3_class(time_chk_null$hello, "POSIXct") - - time_chk_some <- ensure_column( - tibble::tibble(one = c(1, 2, 3)), - NA_datetime_, - "hello" - ) - expect_s3_class(time_chk_some, "tbl_df") - expect_s3_class(time_chk_some$hello, "POSIXct") - - skip("Ahh! this fails presently. Are double -> POSIXct conversions allowed?") - time_chk_convert <- ensure_column( - tibble::tibble(hello = c(1, 2, 3)), - NA_datetime_, - "hello" - ) - expect_s3_class(time_chk_convert, "tbl_df") - expect_s3_class(time_chk_convert$hello, "POSIXct") -}) - -test_that("converts length one list", { - hm <- ensure_column(tibble::tibble(one = "hi"), NA_list_, "one") - expect_type(hm$one, "list") + ts <- .POSIXct(NA_real_, tz = Sys.timezone()) + expect_type(make_timestamp(ts), "character") }) test_that("parse_connectapi handles mixed null/non-null character values", { @@ -345,45 +270,96 @@ test_that("parse_connectapi handles mixed null/non-null integer timestamps", { expect_identical(result$end_time, c(NA_real_, 1732556770)) }) -test_that("ensure_column coerces integer to character when ptype expects character", { - # Old Connect returns integer IDs - int_data <- tibble::tibble(id = c(100L, 200L, 300L)) - result <- ensure_column(int_data, NA_character_, "id") - expect_type(result$id, "character") - expect_identical(result$id, c("100", "200", "300")) +test_that("coerce_datetime handles character (RFC 3339)", { + withr::local_envvar(TZ = "UTC") + result <- coerce_datetime(c("2023-08-22T14:13:14Z", "2020-01-01T01:02:03Z")) + expect_s3_class(result, "POSIXct") + expect_equal(length(result), 2) +}) + +test_that("coerce_datetime handles numeric (epoch seconds)", { + result <- coerce_datetime(1692713594) + expect_s3_class(result, "POSIXct") + expect_equal(as.double(result), 1692713594, tolerance = 1) +}) + +test_that("coerce_datetime handles POSIXct pass-through", { + ts <- as.POSIXct("2023-08-22 14:13:14", tz = "UTC") + result <- coerce_datetime(ts) + expect_identical(result, ts) +}) + +test_that("coerce_datetime handles NULL", { + result <- coerce_datetime(NULL) + expect_s3_class(result, "POSIXct") + expect_equal(length(result), 0) +}) + +test_that("coerce_datetime handles all-NA logical", { + result <- coerce_datetime(c(NA, NA)) + expect_s3_class(result, "POSIXct") + expect_true(all(is.na(result))) + expect_equal(length(result), 2) +}) + +test_that("coerce_datetime rejects unsupported types", { + expect_error(coerce_datetime(data.frame()), "Cannot coerce") + expect_error(coerce_datetime(NA_complex_), "Cannot coerce") +}) + +test_that("parse_connectapi_typed converts specified datetime columns", { + data <- list( + list(guid = "aaa", created_time = "2023-08-22T14:13:14Z"), + list(guid = "bbb", created_time = "2020-01-01T01:02:03Z") + ) - # New Connect returns character IDs + result <- parse_connectapi_typed(data, datetime_cols = "created_time") + expect_s3_class(result, "tbl_df") + expect_s3_class(result$created_time, "POSIXct") + expect_type(result$guid, "character") +}) - char_data <- tibble::tibble(id = c("100", "200", "300")) - result <- ensure_column(char_data, NA_character_, "id") - expect_type(result$id, "character") - expect_identical(result$id, c("100", "200", "300")) +test_that("parse_connectapi_typed leaves columns alone without datetime_cols", { + data <- list( + list(guid = "aaa", created_time = "2023-08-22T14:13:14Z"), + list(guid = "bbb", created_time = "2020-01-01T01:02:03Z") + ) + + result <- parse_connectapi_typed(data) + expect_s3_class(result, "tbl_df") + # Without datetime_cols, timestamps stay as character + expect_type(result$created_time, "character") }) -test_that("parse_connectapi_typed produces character id for usage with integer input", { - # Simulates old Connect returning integer IDs - int_hits <- list( - list(id = 123L, user_guid = "abc", content_guid = "def", - timestamp = "2025-04-30T12:00:00Z", data = list(path = "/test")), - list(id = 456L, user_guid = "ghi", content_guid = "jkl", - timestamp = "2025-04-30T13:00:00Z", data = list(path = "/other")) +test_that("parse_connectapi_typed handles data frame input (fast path)", { + df <- data.frame( + guid = c("aaa", "bbb"), + created_time = c("2023-08-22T14:13:14Z", "2020-01-01T01:02:03Z"), + stringsAsFactors = FALSE ) - result <- parse_connectapi_typed(int_hits, connectapi_ptypes$usage) - expect_type(result$id, "character") - expect_identical(result$id, c("123", "456")) + result <- parse_connectapi_typed(df, datetime_cols = "created_time") + expect_s3_class(result, "tbl_df") + expect_s3_class(result$created_time, "POSIXct") +}) + +test_that("parse_connectapi_typed handles empty input", { + result <- parse_connectapi_typed(list()) + expect_s3_class(result, "tbl_df") + expect_equal(nrow(result), 0) + + result <- parse_connectapi_typed(tibble::tibble()) + expect_s3_class(result, "tbl_df") + expect_equal(nrow(result), 0) }) -test_that("parse_connectapi_typed produces character id for usage with character input", { - # Simulates new Connect returning character IDs - char_hits <- list( - list(id = "123", user_guid = "abc", content_guid = "def", - timestamp = "2025-04-30T12:00:00Z", data = list(path = "/test")), - list(id = "456", user_guid = "ghi", content_guid = "jkl", - timestamp = "2025-04-30T13:00:00Z", data = list(path = "/other")) +test_that("parse_connectapi_typed handles all-NA datetime column", { + data <- list( + list(guid = "aaa", active_time = NULL), + list(guid = "bbb", active_time = NULL) ) - result <- parse_connectapi_typed(char_hits, connectapi_ptypes$usage) - expect_type(result$id, "character") - expect_identical(result$id, c("123", "456")) + result <- parse_connectapi_typed(data, datetime_cols = "active_time") + expect_s3_class(result$active_time, "POSIXct") + expect_true(all(is.na(result$active_time))) }) From 16753cc56161240268ed83134cbeda4a796ec00b Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Thu, 5 Mar 2026 11:59:50 -0800 Subject: [PATCH 03/11] improve performance for page_cursor --- R/page.R | 26 +++++++++++---- tests/testthat/test-page.R | 67 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 6 deletions(-) diff --git a/R/page.R b/R/page.R index 8808c25b..9aa5cf28 100644 --- a/R/page.R +++ b/R/page.R @@ -24,20 +24,34 @@ page_cursor <- function(client, req, limit = Inf) { prg$tick() response <- req - # collect whole pages, then flatten once at the end - pages <- list(response$results) - n_items <- length(response$results) + # Convert the first page (list-of-lists from simplify=FALSE) to a data frame. + # Subsequent pages use simplify=TRUE so jsonlite builds data frames in C, + # which is significantly faster for high-volume endpoints. + first_results <- response$results + if (length(first_results) > 0 && !is.data.frame(first_results)) { + first_results <- parse_connectapi(first_results) + } + + pages <- list(first_results) + n_items <- if (is.data.frame(first_results)) nrow(first_results) else length(first_results) + while (!is.null(response$paging$`next`) && n_items < limit) { prg$tick() next_url <- response$paging$`next` - response <- client$GET(url = next_url) + response <- client$GET(url = next_url, simplify = TRUE) pages[[length(pages) + 1L]] <- response$results - n_items <- n_items + length(response$results) + n_items <- n_items + nrow(response$results) + } + + if (length(pages) == 1L && !is.data.frame(pages[[1L]])) { + # Single empty page — return as-is for downstream handling + return(pages[[1L]]) } - head(do.call(c, pages), n = limit) + out <- vctrs::vec_rbind(!!!pages) + head(out, n = limit) } # TODO: Decide if this `limit = Inf` is helpful or a hack... # it is essentially a "row limit" on paging diff --git a/tests/testthat/test-page.R b/tests/testthat/test-page.R index 1638dbb0..5e002831 100644 --- a/tests/testthat/test-page.R +++ b/tests/testthat/test-page.R @@ -14,3 +14,70 @@ with_mock_dir("2025.09.0", { ) }) }) + +test_that("page_cursor accumulates data frames from multiple pages", { + # Simulate a two-page cursor-paginated response. The first page comes from + # the caller with simplify=FALSE (list-of-lists), while page_cursor fetches + # subsequent pages with simplify=TRUE (data frames). + mock_client <- list( + GET = function(url, ..., simplify = FALSE) { + list( + results = data.frame(id = 3:4, name = c("c", "d")), + paging = list(`next` = NULL) + ) + } + ) + + initial_response <- list( + results = list( + list(id = 1L, name = "a"), + list(id = 2L, name = "b") + ), + paging = list(`next` = "https://connect.example/__api__/v1/things?next=abc") + ) + + res <- page_cursor(mock_client, initial_response) + expect_s3_class(res, "data.frame") + expect_equal(nrow(res), 4) + expect_equal(res$id, 1:4) + expect_equal(res$name, c("a", "b", "c", "d")) +}) + +test_that("page_cursor returns empty list for empty single page", { + mock_client <- list(GET = function(...) stop("should not be called")) + + initial_response <- list( + results = list(), + paging = list(`next` = NULL) + ) + + res <- page_cursor(mock_client, initial_response) + expect_equal(length(res), 0) +}) + +test_that("page_cursor respects limit", { + call_count <- 0L + mock_client <- list( + GET = function(url, ..., simplify = FALSE) { + call_count <<- call_count + 1L + list( + results = data.frame(id = 3:4, name = c("c", "d")), + paging = list(`next` = "https://connect.example/__api__/v1/things?next=more") + ) + } + ) + + initial_response <- list( + results = list( + list(id = 1L, name = "a"), + list(id = 2L, name = "b") + ), + paging = list(`next` = "https://connect.example/__api__/v1/things?next=abc") + ) + + res <- page_cursor(mock_client, initial_response, limit = 3) + expect_s3_class(res, "data.frame") + expect_equal(nrow(res), 3) + # Only fetched one additional page since we hit the limit + expect_equal(call_count, 1L) +}) From b6f1ca0469258e4468002f8c20f442c580831124 Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Thu, 5 Mar 2026 14:47:19 -0800 Subject: [PATCH 04/11] keep columns even if missing from all responses --- R/content.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/content.R b/R/content.R index df7d23c8..be2ada0a 100644 --- a/R/content.R +++ b/R/content.R @@ -860,7 +860,7 @@ terminate_jobs <- function(content, keys = NULL) { # Keep only the columns relevant to job termination; the API response # includes extra fields (e.g. payload, guid) on error that vary by outcome. keep <- c("app_id", "app_guid", "job_key", "job_id", "result", "code", "error") - res_df[, intersect(keep, names(res_df)), drop = FALSE] + res_df[, keep, drop = FALSE] } #' @rdname get_jobs From 5d71f15e2e0ef66cd1c48bd8a5f53f526ba3f061 Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Wed, 1 Apr 2026 10:17:49 -0700 Subject: [PATCH 05/11] add some tests for page_cursor behavior with mismatched types --- tests/testthat/test-page.R | 85 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/tests/testthat/test-page.R b/tests/testthat/test-page.R index 5e002831..4510e0ad 100644 --- a/tests/testthat/test-page.R +++ b/tests/testthat/test-page.R @@ -55,6 +55,91 @@ test_that("page_cursor returns empty list for empty single page", { expect_equal(length(res), 0) }) +test_that("page_cursor binds pages when a field is null on page 1 but populated on page 2", { + # First page: "note" is NULL in every row → parse_connectapi produces logical + # NA column. Second page: "note" has character values → jsonlite produces a + # character column. vctrs::vec_rbind must coerce logical NA → character. + mock_client <- list( + GET = function(url, ..., simplify = FALSE) { + list( + results = data.frame( + id = 3:4, + note = c("hello", "world"), + stringsAsFactors = FALSE + ), + paging = list(`next` = NULL) + ) + } + ) + + initial_response <- list( + results = list( + list(id = 1L, note = NULL), + list(id = 2L, note = NULL) + ), + paging = list(`next` = "https://connect.example/__api__/v1/things?next=abc") + ) + + res <- page_cursor(mock_client, initial_response) + expect_s3_class(res, "data.frame") + expect_equal(nrow(res), 4) + expect_type(res$note, "character") + expect_equal(res$note, c(NA, NA, "hello", "world")) +}) + +test_that("page_cursor binds pages with integer vs. double coercion", { + # parse_connectapi sees integers on page 1; jsonlite may produce doubles on + # page 2 (e.g. from a JSON number with a decimal). vctrs should widen + # integer → double. + mock_client <- list( + GET = function(url, ..., simplify = FALSE) { + list( + results = data.frame(id = 3L, value = 3.14), + paging = list(`next` = NULL) + ) + } + ) + + initial_response <- list( + results = list( + list(id = 1L, value = 100L), + list(id = 2L, value = 200L) + ), + paging = list(`next` = "https://connect.example/__api__/v1/things?next=abc") + ) + + res <- page_cursor(mock_client, initial_response) + expect_s3_class(res, "data.frame") + expect_equal(nrow(res), 3) + expect_equal(res$value, c(100, 200, 3.14)) +}) + +test_that("page_cursor binds pages when a column is missing from page 2", { + # Page 1 has an "extra" column; page 2 does not. vctrs::vec_rbind should fill + # the missing column with NA. + mock_client <- list( + GET = function(url, ..., simplify = FALSE) { + list( + results = data.frame(id = 3:4, stringsAsFactors = FALSE), + paging = list(`next` = NULL) + ) + } + ) + + initial_response <- list( + results = list( + list(id = 1L, extra = "yes"), + list(id = 2L, extra = "no") + ), + paging = list(`next` = "https://connect.example/__api__/v1/things?next=abc") + ) + + res <- page_cursor(mock_client, initial_response) + expect_s3_class(res, "data.frame") + expect_equal(nrow(res), 4) + expect_equal(res$extra, c("yes", "no", NA, NA)) +}) + test_that("page_cursor respects limit", { call_count <- 0L mock_client <- list( From 9f03d48dc9a3474a904b8b9fe245b9dc99ee8f77 Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Wed, 1 Apr 2026 14:47:25 -0700 Subject: [PATCH 06/11] dry up datetimes --- R/content.R | 2 +- R/get.R | 12 ++++++------ R/groups.R | 2 +- R/lazy.R | 14 +------------- R/parse.R | 11 +++++++++++ 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/R/content.R b/R/content.R index be2ada0a..0a9796a0 100644 --- a/R/content.R +++ b/R/content.R @@ -1643,6 +1643,6 @@ as_tibble.connect_content_list <- function(x, ...) { content_data <- purrr::map(x, "content") parse_connectapi_typed( content_data, - datetime_cols = c("created_time", "last_deployed_time") + datetime_cols = datetime_columns$content ) } diff --git a/R/get.R b/R/get.R index 7579cd93..30e92d01 100644 --- a/R/get.R +++ b/R/get.R @@ -75,7 +75,7 @@ get_users <- function( out <- parse_connectapi_typed( res, - datetime_cols = c("created_time", "updated_time", "active_time") + datetime_cols = datetime_columns$users ) return(out) @@ -254,7 +254,7 @@ get_content <- function( out <- parse_connectapi_typed( res, - datetime_cols = c("created_time", "last_deployed_time") + datetime_cols = datetime_columns$content ) return(out) @@ -331,7 +331,7 @@ content_list_by_tag <- function(src, tag) { out <- parse_connectapi_typed( res, - datetime_cols = c("created_time", "last_deployed_time") + datetime_cols = datetime_columns$content ) return(out) } @@ -430,7 +430,7 @@ get_usage_shiny <- function( res <- page_cursor(src, res, limit = limit) - out <- parse_connectapi_typed(res, datetime_cols = c("started", "ended")) + out <- parse_connectapi_typed(res, datetime_cols = datetime_columns$usage_shiny) return(out) } @@ -526,7 +526,7 @@ get_usage_static <- function( res <- page_cursor(src, res, limit = limit) - out <- parse_connectapi_typed(res, datetime_cols = "time") + out <- parse_connectapi_typed(res, datetime_cols = datetime_columns$usage_static) return(out) } @@ -755,7 +755,7 @@ get_audit_logs <- function( res <- page_cursor(src, res, limit = limit) - out <- parse_connectapi_typed(res, datetime_cols = "time") + out <- parse_connectapi_typed(res, datetime_cols = datetime_columns$audit_logs) return(out) } diff --git a/R/groups.R b/R/groups.R index 1652edb3..66d965b1 100644 --- a/R/groups.R +++ b/R/groups.R @@ -53,7 +53,7 @@ get_groups <- function(src, page_size = 500, prefix = NULL, limit = Inf) { limit = limit ) - parse_connectapi_typed(res) + parse_connectapi_typed(res, datetime_cols = datetime_columns$groups) } #' Get users within a specific group diff --git a/R/lazy.R b/R/lazy.R index 1ca2136d..48a266d0 100644 --- a/R/lazy.R +++ b/R/lazy.R @@ -50,18 +50,6 @@ tbl_connect <- function( dplyr::make_tbl(c("connect", "lazy"), src = src, ops = ops) } -# Datetime columns for each lazy table type. These must match the -# datetime_cols passed in the corresponding getter functions: -# get_users(), get_groups(), get_content(), get_usage_shiny(), -# get_usage_static(), get_audit_logs(). -lazy_datetime_cols <- list( - users = c("created_time", "updated_time", "active_time"), - groups = character(), - content = c("created_time", "last_deployed_time"), - usage_shiny = c("started", "ended"), - usage_static = "time", - audit_logs = "time" -) # Fetch data for a lazy table endpoint. Shared by tbl_connect (for column # discovery) and api_build.op_base_connect (for full collection). @@ -85,7 +73,7 @@ tbl_lazy_fetch <- function(src, from, limit = Inf) { } else { stop(glue::glue("'{from}' is not recognized")) } - parse_connectapi_typed(res, datetime_cols = lazy_datetime_cols[[from]]) + parse_connectapi_typed(res, datetime_cols = datetime_columns[[from]]) } # This will be registered in .onLoad if dplyr is available diff --git a/R/parse.R b/R/parse.R index ae3cc59a..dd428fb4 100644 --- a/R/parse.R +++ b/R/parse.R @@ -63,6 +63,17 @@ coerce_to_character <- function(df, cols) { df } +# Datetime columns by endpoint, shared by getter functions (get_users, etc.) +# and tbl_lazy_fetch(). Define once here so the two stay in sync. +datetime_columns <- list( + users = c("created_time", "updated_time", "active_time"), + groups = character(), + content = c("created_time", "last_deployed_time"), + usage_shiny = c("started", "ended"), + usage_static = "time", + audit_logs = "time" +) + parse_connectapi_typed <- function(data, datetime_cols = character()) { if (inherits(data, "data.frame")) { # Strip custom S3 classes to avoid dispatch loops (e.g., connect_list_hits From d6fa96b4a8dc7533c3a2c3c600cb36cf04336cf6 Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Wed, 1 Apr 2026 14:47:37 -0700 Subject: [PATCH 07/11] update test to use character IDs from newer connect version --- .../2026.03.0/__api__/server_settings.json | 3 ++ .../instrumentation/content/hits-c331ad.json | 52 +++++++++++++++++++ tests/testthat/2026.03.0/__ping__.json | 3 ++ tests/testthat/test-get.R | 21 +++++++- 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 tests/testthat/2026.03.0/__api__/server_settings.json create mode 100644 tests/testthat/2026.03.0/__api__/v1/instrumentation/content/hits-c331ad.json create mode 100644 tests/testthat/2026.03.0/__ping__.json diff --git a/tests/testthat/2026.03.0/__api__/server_settings.json b/tests/testthat/2026.03.0/__api__/server_settings.json new file mode 100644 index 00000000..6115de7f --- /dev/null +++ b/tests/testthat/2026.03.0/__api__/server_settings.json @@ -0,0 +1,3 @@ +{ + "version": "2026.03.0" +} diff --git a/tests/testthat/2026.03.0/__api__/v1/instrumentation/content/hits-c331ad.json b/tests/testthat/2026.03.0/__api__/v1/instrumentation/content/hits-c331ad.json new file mode 100644 index 00000000..333f970d --- /dev/null +++ b/tests/testthat/2026.03.0/__api__/v1/instrumentation/content/hits-c331ad.json @@ -0,0 +1,52 @@ +[ + { + "id": "8966707", + "user_guid": null, + "content_guid": "475618c9", + "timestamp": "2025-04-30T12:49:16.269904Z", + "data": { + "path": "/hello", + "user_agent": "Datadog/Synthetics" + } + }, + { + "id": "8966708", + "user_guid": null, + "content_guid": "475618c9", + "timestamp": "2025-04-30T12:49:17.002848Z", + "data": { + "path": "/world", + "user_agent": null + } + }, + { + "id": "8967206", + "user_guid": null, + "content_guid": "475618c9", + "timestamp": "2025-04-30T13:01:47.40738Z", + "data": { + "path": "/chinchilla", + "user_agent": "Datadog/Synthetics" + } + }, + { + "id": "8967210", + "user_guid": null, + "content_guid": "475618c9", + "timestamp": "2025-04-30T13:04:13.176791Z", + "data": { + "path": "/lava-lamp", + "user_agent": "Datadog/Synthetics" + } + }, + { + "id": "8966214", + "user_guid": "fecbd383", + "content_guid": "b0eaf295", + "timestamp": "2025-04-30T12:36:13.818466Z", + "data": { + "path": null, + "user_agent": null + } + } +] diff --git a/tests/testthat/2026.03.0/__ping__.json b/tests/testthat/2026.03.0/__ping__.json new file mode 100644 index 00000000..0db3279e --- /dev/null +++ b/tests/testthat/2026.03.0/__ping__.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/tests/testthat/test-get.R b/tests/testthat/test-get.R index 35a65d9d..5fdb1c18 100644 --- a/tests/testthat/test-get.R +++ b/tests/testthat/test-get.R @@ -375,7 +375,7 @@ test_that("get_content only requests vanity URLs for Connect 2024.06.0 and up", }) }) -with_mock_dir("2025.04.0", { +with_mock_dir("2026.03.0", { test_that("get_usage() returns usage data in the expected shape", { client <- connect(server = "https://connect.example", api_key = "fake") usage <- get_usage( @@ -386,9 +386,26 @@ with_mock_dir("2025.04.0", { expect_s3_class(usage, "connect_list_hits") expect_true(is.list(usage)) expect_equal(length(usage), 5) - expect_equal(usage[[1]]$id, 8966707L) + expect_equal(usage[[1]]$id, "8966707") expect_equal(usage[[1]]$content_guid, "475618c9") + expect_length(usage, 5) + + # Check first element (raw list, before conversion to data.frame). + expect_equal( + usage[[1]], + list( + id = "8966707", + user_guid = NULL, + content_guid = "475618c9", + timestamp = "2025-04-30T12:49:16.269904Z", + data = list( + path = "/hello", + user_agent = "Datadog/Synthetics" + ) + ) + ) + # Check conversion to data.frame (with unnesting) usage_df <- as.data.frame(usage) expect_equal( From 92f532330ac93dabf7ca2ad47753aa46d8c09569 Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Wed, 1 Apr 2026 16:28:59 -0700 Subject: [PATCH 08/11] add test that confirms we support both integer and character IDs returned from the connect server --- tests/testthat/test-get.R | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/testthat/test-get.R b/tests/testthat/test-get.R index 5fdb1c18..9e1529d7 100644 --- a/tests/testthat/test-get.R +++ b/tests/testthat/test-get.R @@ -473,6 +473,35 @@ with_mock_dir("2026.03.0", { }) }) +# The hits `id` field is transitioning from integer to string across Connect +# versions. The fixture in 2025.04.0/ uses integer IDs (older API); the +# fixture in 2026.03.0/ uses string IDs (newer API). +test_that("get_usage() handles both integer and string ids", { + with_mock_dir("2025.04.0", { + client <- connect(server = "https://connect.example", api_key = "fake") + usage <- get_usage( + client, + from = as.POSIXct("2025-04-01 00:00:01", tz = "UTC") + ) + usage_df <- as.data.frame(usage) + expect_type(usage_df$id, "integer") + expect_equal(usage_df$id, c(8966707L, 8966708L, 8967206L, 8967210L, 8966214L)) + expect_s3_class(usage_df$timestamp, "POSIXct") + }) + + with_mock_dir("2026.03.0", { + client <- connect(server = "https://connect.example", api_key = "fake") + usage <- get_usage( + client, + from = as.POSIXct("2025-04-01 00:00:01", tz = "UTC") + ) + usage_df <- as.data.frame(usage) + expect_type(usage_df$id, "character") + expect_equal(usage_df$id, c("8966707", "8966708", "8967206", "8967210", "8966214")) + expect_s3_class(usage_df$timestamp, "POSIXct") + }) +}) + with_mock_dir("2026.01.0", { test_that("content_guid is passed to the hits endpoint", { client <- Connect$new(server = "https://connect.example", api_key = "fake") From bcc8ee0b6c7c79f13e652289585ed7c6b38bc344 Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Wed, 1 Apr 2026 17:45:03 -0700 Subject: [PATCH 09/11] add news --- NEWS.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/NEWS.md b/NEWS.md index 3c8ce570..40f489e8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,11 @@ # connectapi (development version) +- 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. + # connectapi 0.12.1 - Fixed `repo_check_branches()` and `repo_check_branches_ref()` to handle the From ff234c3b4e39335b6fc2f23d4f588d91d60dceed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 4 May 2026 19:46:59 +0000 Subject: [PATCH 10/11] Update documentation --- man/Bundle.Rd | 111 +- man/Content.Rd | 761 +++++++------- man/ContentTask.Rd | 235 ++--- man/EnvironmentR6.Rd | 254 ++--- man/PositConnect.Rd | 1908 ++++++++++++++++++----------------- man/Task.Rd | 172 ++-- man/Vanity.Rd | 191 ++-- man/VariantR6.Rd | 455 +++++---- man/VariantSchedule.Rd | 369 +++---- man/VariantTask.Rd | 260 ++--- man/audit_access_open.Rd | 8 +- man/audit_r_versions.Rd | 8 +- man/audit_runas.Rd | 8 +- man/bundle_dir.Rd | 12 +- man/bundle_path.Rd | 12 +- man/bundle_static.Rd | 12 +- man/connectapi-package.Rd | 13 +- man/content_delete.Rd | 52 +- man/content_item.Rd | 52 +- man/content_title.Rd | 52 +- man/content_update.Rd | 52 +- man/create_integration.Rd | 14 +- man/create_random_name.Rd | 52 +- man/dashboard_url.Rd | 52 +- man/delete_integration.Rd | 14 +- man/delete_runtime_cache.Rd | 4 +- man/delete_thumbnail.Rd | 60 +- man/delete_vanity_url.Rd | 52 +- man/deploy.Rd | 12 +- man/deploy_repo.Rd | 52 +- man/download_bundle.Rd | 12 +- man/environment.Rd | 52 +- man/get_associations.Rd | 66 +- man/get_bundles.Rd | 81 +- man/get_content_packages.Rd | 4 +- man/get_group_content.Rd | 6 +- man/get_group_members.Rd | 6 +- man/get_groups.Rd | 6 +- man/get_integration.Rd | 14 +- man/get_integrations.Rd | 14 +- man/get_jobs.Rd | 58 +- man/get_log.Rd | 58 +- man/get_packages.Rd | 4 +- man/get_runtime_caches.Rd | 4 +- man/get_thumbnail.Rd | 60 +- man/get_timezones.Rd | 6 +- man/get_vanity_url.Rd | 52 +- man/get_variant_schedule.Rd | 6 +- man/git.Rd | 54 +- man/has_thumbnail.Rd | 60 +- man/lock_content.Rd | 52 +- man/permissions.Rd | 54 +- man/poll_task.Rd | 12 +- man/search_content.Rd | 52 +- man/set_integrations.Rd | 66 +- man/set_run_as.Rd | 52 +- man/set_schedule.Rd | 6 +- man/set_thumbnail.Rd | 60 +- man/set_vanity_url.Rd | 52 +- man/swap_vanity_urls.Rd | 52 +- man/terminate_jobs.Rd | 58 +- man/update_integration.Rd | 14 +- man/vanity_is_available.Rd | 8 +- man/variant.Rd | 10 +- man/variant_render.Rd | 4 +- man/verify_content_name.Rd | 52 +- 66 files changed, 3312 insertions(+), 3224 deletions(-) diff --git a/man/Bundle.Rd b/man/Bundle.Rd index c6c06044..b807b39a 100644 --- a/man/Bundle.Rd +++ b/man/Bundle.Rd @@ -4,15 +4,10 @@ \alias{Bundle} \title{Bundle} \description{ -Bundle - -Bundle -} -\details{ An R6 class that represents a bundle } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Content}}, \code{\link{ContentTask}}, \code{\link{Environment}}, @@ -25,71 +20,77 @@ Other R6 classes: } \concept{R6 classes} \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{The bundle path on disk.} + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{The bundle path on disk.} -\item{\code{size}}{The size of the bundle.} -} -\if{html}{\out{
}} + \item{\code{size}}{The size of the bundle.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-Bundle-new}{\code{Bundle$new()}} -\item \href{#method-Bundle-print}{\code{Bundle$print()}} -\item \href{#method-Bundle-clone}{\code{Bundle$clone()}} -} + \itemize{ + \item \href{#method-Bundle-initialize}{\code{Bundle$new()}} + \item \href{#method-Bundle-print}{\code{Bundle$print()}} + \item \href{#method-Bundle-clone}{\code{Bundle$clone()}} + } } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Bundle-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this content bundle. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Bundle$new(path)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Bundle-initialize}{}}} +\subsection{\code{Bundle$new()}}{ + Initialize this content bundle. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Bundle$new(path)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{The bundle path on disk.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{The bundle path on disk.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Bundle-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Bundle$print(...)}\if{html}{\out{
}} +\subsection{\code{Bundle$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Bundle$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Bundle-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Bundle$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{Bundle$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Bundle$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/Content.Rd b/man/Content.Rd index 12b08bd4..8d564492 100644 --- a/man/Content.Rd +++ b/man/Content.Rd @@ -4,15 +4,10 @@ \alias{Content} \title{Content} \description{ -Content - -Content -} -\details{ An R6 class that represents content. } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{ContentTask}}, \code{\link{Environment}}, @@ -25,428 +20,466 @@ Other R6 classes: } \concept{R6 classes} \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{An R6 Connect object.} + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{An R6 Connect object.} -\item{\code{content}}{The content details from Posit Connect. Properties are described in \code{\link[=get_content]{get_content()}}.} -} -\if{html}{\out{
}} + \item{\code{content}}{The content details from Posit Connect. Properties are described in \code{\link[=get_content]{get_content()}}.} + } + \if{html}{\out{
}} } \section{Active bindings}{ -\if{html}{\out{
}} -\describe{ -\item{\code{default_variant}}{The default variant for this object.} + \if{html}{\out{
}} + \describe{ + \item{\code{default_variant}}{The default variant for this object.} -\item{\code{is_rendered}}{TRUE if this is a rendered content type, otherwise FALSE.} + \item{\code{is_rendered}}{TRUE if this is a rendered content type, otherwise FALSE.} -\item{\code{is_interactive}}{TRUE if this is a rendered content type, otherwise FALSE.} -} -\if{html}{\out{
}} + \item{\code{is_interactive}}{TRUE if this is a rendered content type, otherwise FALSE.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-Content-new}{\code{Content$new()}} -\item \href{#method-Content-get_content_remote}{\code{Content$get_content_remote()}} -\item \href{#method-Content-get_bundles}{\code{Content$get_bundles()}} -\item \href{#method-Content-bundle_download}{\code{Content$bundle_download()}} -\item \href{#method-Content-bundle_delete}{\code{Content$bundle_delete()}} -\item \href{#method-Content-update}{\code{Content$update()}} -\item \href{#method-Content-danger_delete}{\code{Content$danger_delete()}} -\item \href{#method-Content-get_url}{\code{Content$get_url()}} -\item \href{#method-Content-get_dashboard_url}{\code{Content$get_dashboard_url()}} -\item \href{#method-Content-jobs}{\code{Content$jobs()}} -\item \href{#method-Content-register_job_kill_order}{\code{Content$register_job_kill_order()}} -\item \href{#method-Content-variants}{\code{Content$variants()}} -\item \href{#method-Content-tag_set}{\code{Content$tag_set()}} -\item \href{#method-Content-tag_delete}{\code{Content$tag_delete()}} -\item \href{#method-Content-tags}{\code{Content$tags()}} -\item \href{#method-Content-permissions_add}{\code{Content$permissions_add()}} -\item \href{#method-Content-permissions_update}{\code{Content$permissions_update()}} -\item \href{#method-Content-permissions_delete}{\code{Content$permissions_delete()}} -\item \href{#method-Content-permissions}{\code{Content$permissions()}} -\item \href{#method-Content-environment}{\code{Content$environment()}} -\item \href{#method-Content-environment_set}{\code{Content$environment_set()}} -\item \href{#method-Content-environment_all}{\code{Content$environment_all()}} -\item \href{#method-Content-deploy}{\code{Content$deploy()}} -\item \href{#method-Content-repository}{\code{Content$repository()}} -\item \href{#method-Content-repo_enable}{\code{Content$repo_enable()}} -\item \href{#method-Content-repo_set}{\code{Content$repo_set()}} -\item \href{#method-Content-packages}{\code{Content$packages()}} -\item \href{#method-Content-print}{\code{Content$print()}} -\item \href{#method-Content-clone}{\code{Content$clone()}} -} + \itemize{ + \item \href{#method-Content-initialize}{\code{Content$new()}} + \item \href{#method-Content-get_content_remote}{\code{Content$get_content_remote()}} + \item \href{#method-Content-get_bundles}{\code{Content$get_bundles()}} + \item \href{#method-Content-bundle_download}{\code{Content$bundle_download()}} + \item \href{#method-Content-bundle_delete}{\code{Content$bundle_delete()}} + \item \href{#method-Content-update}{\code{Content$update()}} + \item \href{#method-Content-danger_delete}{\code{Content$danger_delete()}} + \item \href{#method-Content-get_url}{\code{Content$get_url()}} + \item \href{#method-Content-get_dashboard_url}{\code{Content$get_dashboard_url()}} + \item \href{#method-Content-jobs}{\code{Content$jobs()}} + \item \href{#method-Content-register_job_kill_order}{\code{Content$register_job_kill_order()}} + \item \href{#method-Content-variants}{\code{Content$variants()}} + \item \href{#method-Content-tag_set}{\code{Content$tag_set()}} + \item \href{#method-Content-tag_delete}{\code{Content$tag_delete()}} + \item \href{#method-Content-tags}{\code{Content$tags()}} + \item \href{#method-Content-permissions_add}{\code{Content$permissions_add()}} + \item \href{#method-Content-permissions_update}{\code{Content$permissions_update()}} + \item \href{#method-Content-permissions_delete}{\code{Content$permissions_delete()}} + \item \href{#method-Content-permissions}{\code{Content$permissions()}} + \item \href{#method-Content-environment}{\code{Content$environment()}} + \item \href{#method-Content-environment_set}{\code{Content$environment_set()}} + \item \href{#method-Content-environment_all}{\code{Content$environment_all()}} + \item \href{#method-Content-deploy}{\code{Content$deploy()}} + \item \href{#method-Content-repository}{\code{Content$repository()}} + \item \href{#method-Content-repo_enable}{\code{Content$repo_enable()}} + \item \href{#method-Content-repo_set}{\code{Content$repo_set()}} + \item \href{#method-Content-packages}{\code{Content$packages()}} + \item \href{#method-Content-print}{\code{Content$print()}} + \item \href{#method-Content-clone}{\code{Content$clone()}} + } } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Content-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$new(connect, content)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Content-initialize}{}}} +\subsection{\code{Content$new()}}{ + Initialize this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$new(connect, content)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The \code{Connect} instance.} + \item{\code{content}}{The content data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The \code{Connect} instance.} - -\item{\code{content}}{The content data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-get_content_remote}{}}} -\subsection{Method \code{get_content_remote()}}{ -Obtain the content data from the Connect server. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$get_content_remote()}\if{html}{\out{
}} +\subsection{\code{Content$get_content_remote()}}{ + Obtain the content data from the Connect server. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$get_content_remote()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-get_bundles}{}}} -\subsection{Method \code{get_bundles()}}{ -Return the set of content bundles. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$get_bundles()}\if{html}{\out{
}} +\subsection{\code{Content$get_bundles()}}{ + Return the set of content bundles. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$get_bundles()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-bundle_download}{}}} -\subsection{Method \code{bundle_download()}}{ -Download the source archive for a content bundle. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$bundle_download( +\subsection{\code{Content$bundle_download()}}{ + Download the source archive for a content bundle. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$bundle_download( bundle_id, filename = tempfile(pattern = "bundle", fileext = ".tar.gz"), overwrite = FALSE -)}\if{html}{\out{
}} +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{bundle_id}}{The bundle identifer.} + \item{\code{filename}}{Where to write the result.} + \item{\code{overwrite}}{Overwrite an existing filename.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{bundle_id}}{The bundle identifer.} - -\item{\code{filename}}{Where to write the result.} - -\item{\code{overwrite}}{Overwrite an existing filename.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-bundle_delete}{}}} -\subsection{Method \code{bundle_delete()}}{ -Delete a content bundle. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$bundle_delete(bundle_id)}\if{html}{\out{
}} +\subsection{\code{Content$bundle_delete()}}{ + Delete a content bundle. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$bundle_delete(bundle_id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{bundle_id}}{The bundle identifer.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{bundle_id}}{The bundle identifer.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-update}{}}} -\subsection{Method \code{update()}}{ -Update this content item. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$update(...)}\if{html}{\out{
}} +\subsection{\code{Content$update()}}{ + Update this content item. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$update(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Content fields.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Content fields.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-danger_delete}{}}} -\subsection{Method \code{danger_delete()}}{ -Delete this content item. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$danger_delete()}\if{html}{\out{
}} +\subsection{\code{Content$danger_delete()}}{ + Delete this content item. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$danger_delete()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-get_url}{}}} -\subsection{Method \code{get_url()}}{ -Return the URL for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$get_url()}\if{html}{\out{
}} +\subsection{\code{Content$get_url()}}{ + Return the URL for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$get_url()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-get_dashboard_url}{}}} -\subsection{Method \code{get_dashboard_url()}}{ -Return the URL for this content in the Posit Connect dashboard. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$get_dashboard_url(pane = "")}\if{html}{\out{
}} +\subsection{\code{Content$get_dashboard_url()}}{ + Return the URL for this content in the Posit Connect dashboard. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$get_dashboard_url(pane = "")} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{pane}}{The pane in the dashboard to link to.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{pane}}{The pane in the dashboard to link to.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-jobs}{}}} -\subsection{Method \code{jobs()}}{ -Return the jobs for this content -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$jobs()}\if{html}{\out{
}} +\subsection{\code{Content$jobs()}}{ + Return the jobs for this content + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$jobs()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-register_job_kill_order}{}}} -\subsection{Method \code{register_job_kill_order()}}{ -Terminate a single job for this content item. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$register_job_kill_order(key)}\if{html}{\out{
}} +\subsection{\code{Content$register_job_kill_order()}}{ + Terminate a single job for this content item. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$register_job_kill_order(key)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{key}}{The job key.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{key}}{The job key.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-variants}{}}} -\subsection{Method \code{variants()}}{ -Return the variants for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$variants()}\if{html}{\out{
}} +\subsection{\code{Content$variants()}}{ + Return the variants for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$variants()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-tag_set}{}}} -\subsection{Method \code{tag_set()}}{ -Set a tag for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$tag_set(tag_id)}\if{html}{\out{
}} +\subsection{\code{Content$tag_set()}}{ + Set a tag for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$tag_set(tag_id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{tag_id}}{The tag identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{tag_id}}{The tag identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-tag_delete}{}}} -\subsection{Method \code{tag_delete()}}{ -Remove a tag for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$tag_delete(tag_id)}\if{html}{\out{
}} +\subsection{\code{Content$tag_delete()}}{ + Remove a tag for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$tag_delete(tag_id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{tag_id}}{The tag identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{tag_id}}{The tag identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-tags}{}}} -\subsection{Method \code{tags()}}{ -The tags for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$tags()}\if{html}{\out{
}} +\subsection{\code{Content$tags()}}{ + The tags for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$tags()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-permissions_add}{}}} -\subsection{Method \code{permissions_add()}}{ -Add a principal to the ACL for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$permissions_add(principal_guid, principal_type, role)}\if{html}{\out{
}} +\subsection{\code{Content$permissions_add()}}{ + Add a principal to the ACL for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$permissions_add(principal_guid, principal_type, role)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{principal_guid}}{GUID for the target user or group.} + \item{\code{principal_type}}{Acting on user or group.} + \item{\code{role}}{The kind of content access.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{principal_guid}}{GUID for the target user or group.} - -\item{\code{principal_type}}{Acting on user or group.} - -\item{\code{role}}{The kind of content access.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-permissions_update}{}}} -\subsection{Method \code{permissions_update()}}{ -Alter a principal in the ACL for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$permissions_update(id, principal_guid, principal_type, role)}\if{html}{\out{
}} +\subsection{\code{Content$permissions_update()}}{ + Alter a principal in the ACL for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$permissions_update(id, principal_guid, principal_type, role)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{id}}{The target identifier.} + \item{\code{principal_guid}}{GUID for the target user or group.} + \item{\code{principal_type}}{Acting on user or group.} + \item{\code{role}}{The kind of content access.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{id}}{The target identifier.} - -\item{\code{principal_guid}}{GUID for the target user or group.} - -\item{\code{principal_type}}{Acting on user or group.} - -\item{\code{role}}{The kind of content access.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-permissions_delete}{}}} -\subsection{Method \code{permissions_delete()}}{ -Remove an entry from the ACL for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$permissions_delete(id)}\if{html}{\out{
}} +\subsection{\code{Content$permissions_delete()}}{ + Remove an entry from the ACL for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$permissions_delete(id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{id}}{The target identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{id}}{The target identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-permissions}{}}} -\subsection{Method \code{permissions()}}{ -Obtain some or all of the ACL for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$permissions(id = NULL, add_owner = FALSE)}\if{html}{\out{
}} +\subsection{\code{Content$permissions()}}{ + Obtain some or all of the ACL for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$permissions(id = NULL, add_owner = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{id}}{The target identifier.} + \item{\code{add_owner}}{Include the content owner in the result set.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{id}}{The target identifier.} - -\item{\code{add_owner}}{Include the content owner in the result set.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-environment}{}}} -\subsection{Method \code{environment()}}{ -Return the environment variables set for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$environment()}\if{html}{\out{
}} +\subsection{\code{Content$environment()}}{ + Return the environment variables set for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$environment()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-environment_set}{}}} -\subsection{Method \code{environment_set()}}{ -Adjust the environment variables set for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$environment_set(...)}\if{html}{\out{
}} -} - -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Environment variable names and values. Use \code{NA} as the value +\subsection{\code{Content$environment_set()}}{ + Adjust the environment variables set for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$environment_set(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Environment variable names and values. Use \code{NA} as the value to unset variables.} + } + \if{html}{\out{
}} + } } -\if{html}{\out{
}} -} -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-environment_all}{}}} -\subsection{Method \code{environment_all()}}{ -Overwrite the environment variables set for this content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$environment_all(...)}\if{html}{\out{
}} +\subsection{\code{Content$environment_all()}}{ + Overwrite the environment variables set for this content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$environment_all(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Environment variable names and values.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Environment variable names and values.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-deploy}{}}} -\subsection{Method \code{deploy()}}{ -Deploy this content -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$deploy(bundle_id = NULL)}\if{html}{\out{
}} +\subsection{\code{Content$deploy()}}{ + Deploy this content + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$deploy(bundle_id = NULL)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{bundle_id}}{Target bundle identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{bundle_id}}{Target bundle identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-repository}{}}} -\subsection{Method \code{repository()}}{ -Get Git repository details -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$repository()}\if{html}{\out{
}} -} - -\subsection{Returns}{ -NULL if no repo is set, otherwise a list with fields: +\subsection{\code{Content$repository()}}{ + Get Git repository details + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$repository()} + \if{html}{\out{
}} + } + \subsection{Returns}{ + NULL if no repo is set, otherwise a list with fields: \itemize{ \item repository \item branch @@ -455,90 +488,98 @@ NULL if no repo is set, otherwise a list with fields: \item last_error \item last_known_commit } + } } -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-repo_enable}{}}} -\subsection{Method \code{repo_enable()}}{ -Adjust Git polling. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$repo_enable(polling = TRUE)}\if{html}{\out{
}} +\subsection{\code{Content$repo_enable()}}{ + Adjust Git polling. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$repo_enable(polling = TRUE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{polling}}{Polling enabled.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{polling}}{Polling enabled.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-repo_set}{}}} -\subsection{Method \code{repo_set()}}{ -Adjust Git repository -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$repo_set(repository, branch = "main", directory = ".", polling = FALSE)}\if{html}{\out{
}} +\subsection{\code{Content$repo_set()}}{ + Adjust Git repository + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$repo_set(repository, branch = "main", directory = ".", polling = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{repository}}{Git repository URL} + \item{\code{branch}}{Git repository branch} + \item{\code{directory}}{Git repository directory} + \item{\code{polling}}{Whether to check for updates} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{repository}}{Git repository URL} - -\item{\code{branch}}{Git repository branch} - -\item{\code{directory}}{Git repository directory} - -\item{\code{polling}}{Whether to check for updates} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-packages}{}}} -\subsection{Method \code{packages()}}{ -Get package dependencies -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$packages()}\if{html}{\out{
}} +\subsection{\code{Content$packages()}}{ + Get package dependencies + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$packages()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$print(...)}\if{html}{\out{
}} +\subsection{\code{Content$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Content-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Content$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{Content$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Content$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/ContentTask.Rd b/man/ContentTask.Rd index c94e5a9d..8bac69c3 100644 --- a/man/ContentTask.Rd +++ b/man/ContentTask.Rd @@ -4,15 +4,10 @@ \alias{ContentTask} \title{ContentTask} \description{ -ContentTask - -ContentTask -} -\details{ An R6 class that represents a Task for a piece of Content } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{Content}}, \code{\link{Environment}}, @@ -25,150 +20,158 @@ Other R6 classes: } \concept{R6 classes} \section{Super class}{ -\code{\link[connectapi:Content]{connectapi::Content}} -> \code{ContentTask} +\code{\link[connectapi:Content]{Content}} -> \code{ContentTask} } \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{task}}{The task.} + \if{html}{\out{
}} + \describe{ + \item{\code{task}}{The task.} -\item{\code{data}}{The task data.} -} -\if{html}{\out{
}} + \item{\code{data}}{The task data.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-ContentTask-new}{\code{ContentTask$new()}} -\item \href{#method-ContentTask-get_task}{\code{ContentTask$get_task()}} -\item \href{#method-ContentTask-add_data}{\code{ContentTask$add_data()}} -\item \href{#method-ContentTask-get_data}{\code{ContentTask$get_data()}} -\item \href{#method-ContentTask-print}{\code{ContentTask$print()}} -\item \href{#method-ContentTask-clone}{\code{ContentTask$clone()}} -} -} -\if{html}{\out{ -
Inherited methods + \itemize{ + \item \href{#method-ContentTask-initialize}{\code{ContentTask$new()}} + \item \href{#method-ContentTask-get_task}{\code{ContentTask$get_task()}} + \item \href{#method-ContentTask-add_data}{\code{ContentTask$add_data()}} + \item \href{#method-ContentTask-get_data}{\code{ContentTask$get_data()}} + \item \href{#method-ContentTask-print}{\code{ContentTask$print()}} + \item \href{#method-ContentTask-clone}{\code{ContentTask$clone()}} + } +} +\if{html}{\out{
Inherited methods -
-}} +
}} \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-ContentTask-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this task. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{ContentTask$new(connect, content, task)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-ContentTask-initialize}{}}} +\subsection{\code{ContentTask$new()}}{ + Initialize this task. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{ContentTask$new(connect, content, task)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The \code{Connect} instance.} + \item{\code{content}}{The \code{Content} instance.} + \item{\code{task}}{The task data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The \code{Connect} instance.} - -\item{\code{content}}{The \code{Content} instance.} - -\item{\code{task}}{The task data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-ContentTask-get_task}{}}} -\subsection{Method \code{get_task()}}{ -Return the underlying task. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{ContentTask$get_task()}\if{html}{\out{
}} +\subsection{\code{ContentTask$get_task()}}{ + Return the underlying task. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{ContentTask$get_task()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-ContentTask-add_data}{}}} -\subsection{Method \code{add_data()}}{ -Set the data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{ContentTask$add_data(data)}\if{html}{\out{
}} +\subsection{\code{ContentTask$add_data()}}{ + Set the data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{ContentTask$add_data(data)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{data}}{The data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{data}}{The data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-ContentTask-get_data}{}}} -\subsection{Method \code{get_data()}}{ -Get the data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{ContentTask$get_data()}\if{html}{\out{
}} +\subsection{\code{ContentTask$get_data()}}{ + Get the data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{ContentTask$get_data()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-ContentTask-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{ContentTask$print(...)}\if{html}{\out{
}} +\subsection{\code{ContentTask$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{ContentTask$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-ContentTask-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{ContentTask$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{ContentTask$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{ContentTask$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/EnvironmentR6.Rd b/man/EnvironmentR6.Rd index 91bdc9c1..64189eed 100644 --- a/man/EnvironmentR6.Rd +++ b/man/EnvironmentR6.Rd @@ -4,15 +4,10 @@ \alias{Environment} \title{Environment} \description{ -Environment - -Environment -} -\details{ An R6 class that represents a Content's Environment Variables } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{Content}}, \code{\link{ContentTask}}, @@ -25,163 +20,174 @@ Other R6 classes: } \concept{R6 classes} \section{Super class}{ -\code{\link[connectapi:Content]{connectapi::Content}} -> \code{Environment} +\code{\link[connectapi:Content]{Content}} -> \code{Environment} } \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{env_raw}}{The (raw) set of environment variables.} + \if{html}{\out{
}} + \describe{ + \item{\code{env_raw}}{The (raw) set of environment variables.} -\item{\code{env_vars}}{The set of environment variables.} -} -\if{html}{\out{
}} + \item{\code{env_vars}}{The set of environment variables.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-Environment-new}{\code{Environment$new()}} -\item \href{#method-Environment-environment}{\code{Environment$environment()}} -\item \href{#method-Environment-environment_set}{\code{Environment$environment_set()}} -\item \href{#method-Environment-environment_all}{\code{Environment$environment_all()}} -\item \href{#method-Environment-env_refresh}{\code{Environment$env_refresh()}} -\item \href{#method-Environment-print}{\code{Environment$print()}} -\item \href{#method-Environment-clone}{\code{Environment$clone()}} -} -} -\if{html}{\out{ -
Inherited methods + \itemize{ + \item \href{#method-Environment-initialize}{\code{Environment$new()}} + \item \href{#method-Environment-environment}{\code{Environment$environment()}} + \item \href{#method-Environment-environment_set}{\code{Environment$environment_set()}} + \item \href{#method-Environment-environment_all}{\code{Environment$environment_all()}} + \item \href{#method-Environment-env_refresh}{\code{Environment$env_refresh()}} + \item \href{#method-Environment-print}{\code{Environment$print()}} + \item \href{#method-Environment-clone}{\code{Environment$clone()}} + } +} +\if{html}{\out{
Inherited methods -
-}} +
}} \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Environment-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this set of environment variables. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Environment$new(connect, content)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Environment-initialize}{}}} +\subsection{\code{Environment$new()}}{ + Initialize this set of environment variables. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Environment$new(connect, content)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The \code{Connect} instance.} + \item{\code{content}}{The \code{Content} instance.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The \code{Connect} instance.} - -\item{\code{content}}{The \code{Content} instance.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Environment-environment}{}}} -\subsection{Method \code{environment()}}{ -Fetch the set of environment variables. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Environment$environment()}\if{html}{\out{
}} +\subsection{\code{Environment$environment()}}{ + Fetch the set of environment variables. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Environment$environment()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Environment-environment_set}{}}} -\subsection{Method \code{environment_set()}}{ -Update the set of environment variables. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Environment$environment_set(...)}\if{html}{\out{
}} +\subsection{\code{Environment$environment_set()}}{ + Update the set of environment variables. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Environment$environment_set(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Environment variable names and values.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Environment variable names and values.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Environment-environment_all}{}}} -\subsection{Method \code{environment_all()}}{ -Overwrite the set of environment variables. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Environment$environment_all(...)}\if{html}{\out{
}} +\subsection{\code{Environment$environment_all()}}{ + Overwrite the set of environment variables. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Environment$environment_all(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Environment variable names and values.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Environment variable names and values.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Environment-env_refresh}{}}} -\subsection{Method \code{env_refresh()}}{ -Fetch the set o environment variables. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Environment$env_refresh()}\if{html}{\out{
}} +\subsection{\code{Environment$env_refresh()}}{ + Fetch the set o environment variables. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Environment$env_refresh()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Environment-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Environment$print(...)}\if{html}{\out{
}} +\subsection{\code{Environment$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Environment$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Environment-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Environment$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{Environment$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Environment$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/PositConnect.Rd b/man/PositConnect.Rd index 27deb076..9e7cf89b 100644 --- a/man/PositConnect.Rd +++ b/man/PositConnect.Rd @@ -5,8 +5,6 @@ \alias{Connect} \title{Class representing a Connect API client} \description{ -Class representing a Connect API client - Class representing a Connect API client } \section{Usage}{ @@ -28,7 +26,7 @@ API. Authentication is done by providing an API key. } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{Content}}, \code{\link{ContentTask}}, @@ -41,806 +39,829 @@ Other R6 classes: } \concept{R6 classes} \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{server}}{The base URL of your Posit Connect server.} + \if{html}{\out{
}} + \describe{ + \item{\code{server}}{The base URL of your Posit Connect server.} -\item{\code{api_key}}{Your Posit Connect API key.} + \item{\code{api_key}}{Your Posit Connect API key.} -\item{\code{tags}}{The initial set of tags.} + \item{\code{tags}}{The initial set of tags.} -\item{\code{tag_map}}{The initial tag map.} + \item{\code{tag_map}}{The initial tag map.} -\item{\code{httr_additions}}{An initial set of \code{httr} configuration added to each HTTP call.} + \item{\code{httr_additions}}{An initial set of \code{httr} configuration added to each HTTP call.} -\item{\code{using_auth}}{Indicates that the API key is added to each HTTP call.} -} -\if{html}{\out{
}} + \item{\code{using_auth}}{Indicates that the API key is added to each HTTP call.} + } + \if{html}{\out{
}} } \section{Active bindings}{ -\if{html}{\out{
}} -\describe{ -\item{\code{version}}{The server version.} + \if{html}{\out{
}} + \describe{ + \item{\code{version}}{The server version.} -\item{\code{timezones}}{The server timezones.} -} -\if{html}{\out{
}} + \item{\code{timezones}}{The server timezones.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-Connect-new}{\code{Connect$new()}} -\item \href{#method-Connect-httr_config}{\code{Connect$httr_config()}} -\item \href{#method-Connect-print}{\code{Connect$print()}} -\item \href{#method-Connect-raise_error}{\code{Connect$raise_error()}} -\item \href{#method-Connect-add_auth}{\code{Connect$add_auth()}} -\item \href{#method-Connect-api_url}{\code{Connect$api_url()}} -\item \href{#method-Connect-server_url}{\code{Connect$server_url()}} -\item \href{#method-Connect-request}{\code{Connect$request()}} -\item \href{#method-Connect-GET}{\code{Connect$GET()}} -\item \href{#method-Connect-PUT}{\code{Connect$PUT()}} -\item \href{#method-Connect-HEAD}{\code{Connect$HEAD()}} -\item \href{#method-Connect-DELETE}{\code{Connect$DELETE()}} -\item \href{#method-Connect-PATCH}{\code{Connect$PATCH()}} -\item \href{#method-Connect-POST}{\code{Connect$POST()}} -\item \href{#method-Connect-me}{\code{Connect$me()}} -\item \href{#method-Connect-get_dashboard_url}{\code{Connect$get_dashboard_url()}} -\item \href{#method-Connect-get_tags}{\code{Connect$get_tags()}} -\item \href{#method-Connect-get_tag_id}{\code{Connect$get_tag_id()}} -\item \href{#method-Connect-get_tag_tree}{\code{Connect$get_tag_tree()}} -\item \href{#method-Connect-tag_create_safe}{\code{Connect$tag_create_safe()}} -\item \href{#method-Connect-tag_create}{\code{Connect$tag_create()}} -\item \href{#method-Connect-tag}{\code{Connect$tag()}} -\item \href{#method-Connect-tag_delete}{\code{Connect$tag_delete()}} -\item \href{#method-Connect-get_schedule}{\code{Connect$get_schedule()}} -\item \href{#method-Connect-content_create}{\code{Connect$content_create()}} -\item \href{#method-Connect-content_upload}{\code{Connect$content_upload()}} -\item \href{#method-Connect-content_deploy}{\code{Connect$content_deploy()}} -\item \href{#method-Connect-content}{\code{Connect$content()}} -\item \href{#method-Connect-task}{\code{Connect$task()}} -\item \href{#method-Connect-set_content_tag}{\code{Connect$set_content_tag()}} -\item \href{#method-Connect-remove_content_tag}{\code{Connect$remove_content_tag()}} -\item \href{#method-Connect-user}{\code{Connect$user()}} -\item \href{#method-Connect-users}{\code{Connect$users()}} -\item \href{#method-Connect-users_remote}{\code{Connect$users_remote()}} -\item \href{#method-Connect-users_create}{\code{Connect$users_create()}} -\item \href{#method-Connect-users_create_remote}{\code{Connect$users_create_remote()}} -\item \href{#method-Connect-users_lock}{\code{Connect$users_lock()}} -\item \href{#method-Connect-users_unlock}{\code{Connect$users_unlock()}} -\item \href{#method-Connect-users_update}{\code{Connect$users_update()}} -\item \href{#method-Connect-groups}{\code{Connect$groups()}} -\item \href{#method-Connect-group_members}{\code{Connect$group_members()}} -\item \href{#method-Connect-group_member_add}{\code{Connect$group_member_add()}} -\item \href{#method-Connect-group_member_remove}{\code{Connect$group_member_remove()}} -\item \href{#method-Connect-groups_create}{\code{Connect$groups_create()}} -\item \href{#method-Connect-groups_create_remote}{\code{Connect$groups_create_remote()}} -\item \href{#method-Connect-groups_remote}{\code{Connect$groups_remote()}} -\item \href{#method-Connect-group_content}{\code{Connect$group_content()}} -\item \href{#method-Connect-inst_content_visits}{\code{Connect$inst_content_visits()}} -\item \href{#method-Connect-inst_shiny_usage}{\code{Connect$inst_shiny_usage()}} -\item \href{#method-Connect-procs}{\code{Connect$procs()}} -\item \href{#method-Connect-repo_account}{\code{Connect$repo_account()}} -\item \href{#method-Connect-repo_branches}{\code{Connect$repo_branches()}} -\item \href{#method-Connect-repo_manifest_dirs}{\code{Connect$repo_manifest_dirs()}} -\item \href{#method-Connect-schedules}{\code{Connect$schedules()}} -\item \href{#method-Connect-packages}{\code{Connect$packages()}} -\item \href{#method-Connect-docs}{\code{Connect$docs()}} -\item \href{#method-Connect-audit_logs}{\code{Connect$audit_logs()}} -\item \href{#method-Connect-vanities}{\code{Connect$vanities()}} -\item \href{#method-Connect-server_settings}{\code{Connect$server_settings()}} -\item \href{#method-Connect-clone}{\code{Connect$clone()}} -} + \itemize{ + \item \href{#method-Connect-initialize}{\code{Connect$new()}} + \item \href{#method-Connect-httr_config}{\code{Connect$httr_config()}} + \item \href{#method-Connect-print}{\code{Connect$print()}} + \item \href{#method-Connect-raise_error}{\code{Connect$raise_error()}} + \item \href{#method-Connect-add_auth}{\code{Connect$add_auth()}} + \item \href{#method-Connect-api_url}{\code{Connect$api_url()}} + \item \href{#method-Connect-server_url}{\code{Connect$server_url()}} + \item \href{#method-Connect-request}{\code{Connect$request()}} + \item \href{#method-Connect-GET}{\code{Connect$GET()}} + \item \href{#method-Connect-PUT}{\code{Connect$PUT()}} + \item \href{#method-Connect-HEAD}{\code{Connect$HEAD()}} + \item \href{#method-Connect-DELETE}{\code{Connect$DELETE()}} + \item \href{#method-Connect-PATCH}{\code{Connect$PATCH()}} + \item \href{#method-Connect-POST}{\code{Connect$POST()}} + \item \href{#method-Connect-me}{\code{Connect$me()}} + \item \href{#method-Connect-get_dashboard_url}{\code{Connect$get_dashboard_url()}} + \item \href{#method-Connect-get_tags}{\code{Connect$get_tags()}} + \item \href{#method-Connect-get_tag_id}{\code{Connect$get_tag_id()}} + \item \href{#method-Connect-get_tag_tree}{\code{Connect$get_tag_tree()}} + \item \href{#method-Connect-tag_create_safe}{\code{Connect$tag_create_safe()}} + \item \href{#method-Connect-tag_create}{\code{Connect$tag_create()}} + \item \href{#method-Connect-tag}{\code{Connect$tag()}} + \item \href{#method-Connect-tag_delete}{\code{Connect$tag_delete()}} + \item \href{#method-Connect-get_schedule}{\code{Connect$get_schedule()}} + \item \href{#method-Connect-content_create}{\code{Connect$content_create()}} + \item \href{#method-Connect-content_upload}{\code{Connect$content_upload()}} + \item \href{#method-Connect-content_deploy}{\code{Connect$content_deploy()}} + \item \href{#method-Connect-content}{\code{Connect$content()}} + \item \href{#method-Connect-task}{\code{Connect$task()}} + \item \href{#method-Connect-set_content_tag}{\code{Connect$set_content_tag()}} + \item \href{#method-Connect-remove_content_tag}{\code{Connect$remove_content_tag()}} + \item \href{#method-Connect-user}{\code{Connect$user()}} + \item \href{#method-Connect-users}{\code{Connect$users()}} + \item \href{#method-Connect-users_remote}{\code{Connect$users_remote()}} + \item \href{#method-Connect-users_create}{\code{Connect$users_create()}} + \item \href{#method-Connect-users_create_remote}{\code{Connect$users_create_remote()}} + \item \href{#method-Connect-users_lock}{\code{Connect$users_lock()}} + \item \href{#method-Connect-users_unlock}{\code{Connect$users_unlock()}} + \item \href{#method-Connect-users_update}{\code{Connect$users_update()}} + \item \href{#method-Connect-groups}{\code{Connect$groups()}} + \item \href{#method-Connect-group_members}{\code{Connect$group_members()}} + \item \href{#method-Connect-group_member_add}{\code{Connect$group_member_add()}} + \item \href{#method-Connect-group_member_remove}{\code{Connect$group_member_remove()}} + \item \href{#method-Connect-groups_create}{\code{Connect$groups_create()}} + \item \href{#method-Connect-groups_create_remote}{\code{Connect$groups_create_remote()}} + \item \href{#method-Connect-groups_remote}{\code{Connect$groups_remote()}} + \item \href{#method-Connect-group_content}{\code{Connect$group_content()}} + \item \href{#method-Connect-inst_content_visits}{\code{Connect$inst_content_visits()}} + \item \href{#method-Connect-inst_shiny_usage}{\code{Connect$inst_shiny_usage()}} + \item \href{#method-Connect-procs}{\code{Connect$procs()}} + \item \href{#method-Connect-repo_account}{\code{Connect$repo_account()}} + \item \href{#method-Connect-repo_branches}{\code{Connect$repo_branches()}} + \item \href{#method-Connect-repo_manifest_dirs}{\code{Connect$repo_manifest_dirs()}} + \item \href{#method-Connect-schedules}{\code{Connect$schedules()}} + \item \href{#method-Connect-packages}{\code{Connect$packages()}} + \item \href{#method-Connect-docs}{\code{Connect$docs()}} + \item \href{#method-Connect-audit_logs}{\code{Connect$audit_logs()}} + \item \href{#method-Connect-vanities}{\code{Connect$vanities()}} + \item \href{#method-Connect-server_settings}{\code{Connect$server_settings()}} + \item \href{#method-Connect-clone}{\code{Connect$clone()}} + } } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Connect-new}{}}} -\subsection{Method \code{new()}}{ -Initialize a new connect. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$new(server, api_key)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Connect-initialize}{}}} +\subsection{\code{Connect$new()}}{ + Initialize a new connect. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$new(server, api_key)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{server}}{The base URL of your Posit Connect server.} + \item{\code{api_key}}{Your Posit Connect API key.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{server}}{The base URL of your Posit Connect server.} - -\item{\code{api_key}}{Your Posit Connect API key.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-httr_config}{}}} -\subsection{Method \code{httr_config()}}{ -Set additional \code{httr} configuration that is added to each HTTP call. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$httr_config(...)}\if{html}{\out{
}} +\subsection{\code{Connect$httr_config()}}{ + Set additional \code{httr} configuration that is added to each HTTP call. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$httr_config(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Set of httr configurations.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Set of httr configurations.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-print}{}}} -\subsection{Method \code{print()}}{ -Print details about this instance. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$print(...)}\if{html}{\out{
}} +\subsection{\code{Connect$print()}}{ + Print details about this instance. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Ignored.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Ignored.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-raise_error}{}}} -\subsection{Method \code{raise_error()}}{ -Raise an error when the HTTP result is an HTTP error. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$raise_error(res)}\if{html}{\out{
}} +\subsection{\code{Connect$raise_error()}}{ + Raise an error when the HTTP result is an HTTP error. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$raise_error(res)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{res}}{HTTP result.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{res}}{HTTP result.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-add_auth}{}}} -\subsection{Method \code{add_auth()}}{ -Returns HTTP authorization headers, or NULL when none are used. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$add_auth()}\if{html}{\out{
}} +\subsection{\code{Connect$add_auth()}}{ + Returns HTTP authorization headers, or NULL when none are used. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$add_auth()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-api_url}{}}} -\subsection{Method \code{api_url()}}{ -Build a URL relative to the API root -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$api_url(...)}\if{html}{\out{
}} +\subsection{\code{Connect$api_url()}}{ + Build a URL relative to the API root + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$api_url(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{path segments} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{path segments} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-server_url}{}}} -\subsection{Method \code{server_url()}}{ -Build a URL relative to the server root -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$server_url(...)}\if{html}{\out{
}} +\subsection{\code{Connect$server_url()}}{ + Build a URL relative to the server root + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$server_url(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{path segments} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{path segments} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-request}{}}} -\subsection{Method \code{request()}}{ -General wrapper around \code{httr} verbs -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$request(method, url, ..., parser = "parsed", simplify = FALSE)}\if{html}{\out{
}} -} - -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{method}}{HTTP request method} - -\item{\code{url}}{URL to request} - -\item{\code{...}}{Additional arguments passed to the request function} - -\item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} +\subsection{\code{Connect$request()}}{ + General wrapper around \code{httr} verbs + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$request(method, url, ..., parser = "parsed", simplify = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{method}}{HTTP request method} + \item{\code{url}}{URL to request} + \item{\code{...}}{Additional arguments passed to the request function} + \item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} will be returned. Otherwise, the argument is forwarded to \code{httr::content(res, as = parser)}.} - -\item{\code{simplify}}{Logical; if \code{TRUE}, JSON arrays of objects are + \item{\code{simplify}}{Logical; if \code{TRUE}, JSON arrays of objects are simplified to data frames by jsonlite. Default \code{FALSE} preserves list-of-lists for compatibility with pagination helpers.} + } + \if{html}{\out{
}} + } } -\if{html}{\out{
}} -} -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-GET}{}}} -\subsection{Method \code{GET()}}{ -Perform an HTTP GET request of the named API path. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$GET( +\subsection{\code{Connect$GET()}}{ + Perform an HTTP GET request of the named API path. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$GET( path, ..., url = self$api_url(path), parser = "parsed", simplify = FALSE -)}\if{html}{\out{
}} -} - -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path relative to the server's \verb{/__api__} root.} - -\item{\code{...}}{Arguments to \code{httr::GET()}} - -\item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path relative to the server's \verb{/__api__} root.} + \item{\code{...}}{Arguments to \code{httr::GET()}} + \item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request a server resource that is not under \verb{/__api__}} - -\item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} + \item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} will be returned. Otherwise, the argument is forwarded to \code{httr::content(res, as = parser)}.} - -\item{\code{simplify}}{Logical; if \code{TRUE}, JSON arrays of objects are + \item{\code{simplify}}{Logical; if \code{TRUE}, JSON arrays of objects are simplified to data frames by jsonlite. Default \code{FALSE} preserves list-of-lists for compatibility with pagination helpers.} + } + \if{html}{\out{
}} + } } -\if{html}{\out{
}} -} -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-PUT}{}}} -\subsection{Method \code{PUT()}}{ -Perform an HTTP PUT request of the named API path. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$PUT( +\subsection{\code{Connect$PUT()}}{ + Perform an HTTP PUT request of the named API path. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$PUT( path, body = "{}", ..., url = self$api_url(path), encode = "json", parser = "parsed" -)}\if{html}{\out{
}} -} - -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path relative to the server's \verb{/__api__} root.} - -\item{\code{body}}{The HTTP payload.} - -\item{\code{...}}{Arguments to \code{httr::PUT()}} - -\item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path relative to the server's \verb{/__api__} root.} + \item{\code{body}}{The HTTP payload.} + \item{\code{...}}{Arguments to \code{httr::PUT()}} + \item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request a server resource that is not under \verb{/__api__}} - -\item{\code{encode}}{How the payload is encoded.} - -\item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} + \item{\code{encode}}{How the payload is encoded.} + \item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} will be returned. Otherwise, the argument is forwarded to \code{httr::content(res, as = parser)}.} + } + \if{html}{\out{
}} + } } -\if{html}{\out{
}} -} -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-HEAD}{}}} -\subsection{Method \code{HEAD()}}{ -Perform an HTTP HEAD request of the named API path. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$HEAD(path, ..., url = self$api_url(path))}\if{html}{\out{
}} -} - -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path relative to the server's \verb{/__api__} root.} - -\item{\code{...}}{Arguments to \code{httr::HEAD()}} - -\item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request +\subsection{\code{Connect$HEAD()}}{ + Perform an HTTP HEAD request of the named API path. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$HEAD(path, ..., url = self$api_url(path))} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path relative to the server's \verb{/__api__} root.} + \item{\code{...}}{Arguments to \code{httr::HEAD()}} + \item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request a server resource that is not under \verb{/__api__} \code{httr::content(res, as = parser)}.} + } + \if{html}{\out{
}} + } } -\if{html}{\out{
}} -} -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-DELETE}{}}} -\subsection{Method \code{DELETE()}}{ -Perform an HTTP DELETE request of the named API path. Returns the HTTP response object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$DELETE(path, ..., url = self$api_url(path), parser = NULL)}\if{html}{\out{
}} -} - -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path relative to the server's \verb{/__api__} root.} - -\item{\code{...}}{Arguments to \code{httr::DELETE()}} - -\item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request +\subsection{\code{Connect$DELETE()}}{ + Perform an HTTP DELETE request of the named API path. Returns the HTTP response object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$DELETE(path, ..., url = self$api_url(path), parser = NULL)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path relative to the server's \verb{/__api__} root.} + \item{\code{...}}{Arguments to \code{httr::DELETE()}} + \item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request a server resource that is not under \verb{/__api__}} - -\item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} + \item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} will be returned. Otherwise, the argument is forwarded to \code{httr::content(res, as = parser)}.} + } + \if{html}{\out{
}} + } } -\if{html}{\out{
}} -} -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-PATCH}{}}} -\subsection{Method \code{PATCH()}}{ -Perform an HTTP PATCH request of the named API path. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$PATCH( +\subsection{\code{Connect$PATCH()}}{ + Perform an HTTP PATCH request of the named API path. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$PATCH( path, body = "{}", ..., url = self$api_url(path), encode = "json", parser = "parsed" -)}\if{html}{\out{
}} -} - -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path relative to the server's \verb{/__api__} root.} - -\item{\code{body}}{The HTTP payload.} - -\item{\code{...}}{Arguments to \code{httr::PATCH()}} - -\item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path relative to the server's \verb{/__api__} root.} + \item{\code{body}}{The HTTP payload.} + \item{\code{...}}{Arguments to \code{httr::PATCH()}} + \item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request a server resource that is not under \verb{/__api__}} - -\item{\code{encode}}{How the payload is encoded.} - -\item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} + \item{\code{encode}}{How the payload is encoded.} + \item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} will be returned. Otherwise, the argument is forwarded to \code{httr::content(res, as = parser)}.} + } + \if{html}{\out{
}} + } } -\if{html}{\out{
}} -} -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-POST}{}}} -\subsection{Method \code{POST()}}{ -Perform an HTTP POST request of the named API path. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$POST( +\subsection{\code{Connect$POST()}}{ + Perform an HTTP POST request of the named API path. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$POST( path, body = "{}", ..., url = self$api_url(path), encode = "json", parser = "parsed" -)}\if{html}{\out{
}} -} - -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path relative to the server's \verb{/__api__} root.} - -\item{\code{body}}{The HTTP payload.} - -\item{\code{...}}{Arguments to \code{httr::POST()}} - -\item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path relative to the server's \verb{/__api__} root.} + \item{\code{body}}{The HTTP payload.} + \item{\code{...}}{Arguments to \code{httr::POST()}} + \item{\code{url}}{Target URL. Default uses \code{path}, but provide \code{url} to request a server resource that is not under \verb{/__api__}} - -\item{\code{encode}}{How the payload is encoded.} - -\item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} + \item{\code{encode}}{How the payload is encoded.} + \item{\code{parser}}{How the response is parsed. If \code{NULL}, the \code{httr_response} will be returned. Otherwise, the argument is forwarded to \code{httr::content(res, as = parser)}.} + } + \if{html}{\out{
}} + } } -\if{html}{\out{
}} -} -} + \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-me}{}}} -\subsection{Method \code{me()}}{ -Perform an HTTP GET request of the "me" server endpoint. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$me()}\if{html}{\out{
}} +\subsection{\code{Connect$me()}}{ + Perform an HTTP GET request of the "me" server endpoint. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$me()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-get_dashboard_url}{}}} -\subsection{Method \code{get_dashboard_url()}}{ -Return the base URL of the Connect server. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$get_dashboard_url()}\if{html}{\out{
}} +\subsection{\code{Connect$get_dashboard_url()}}{ + Return the base URL of the Connect server. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$get_dashboard_url()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-get_tags}{}}} -\subsection{Method \code{get_tags()}}{ -Return all tags. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$get_tags(use_cache = FALSE)}\if{html}{\out{
}} +\subsection{\code{Connect$get_tags()}}{ + Return all tags. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$get_tags(use_cache = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{use_cache}}{Indicates that a cached set of tags is used.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{use_cache}}{Indicates that a cached set of tags is used.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-get_tag_id}{}}} -\subsection{Method \code{get_tag_id()}}{ -Get the identifier for the named tag. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$get_tag_id(tagname)}\if{html}{\out{
}} +\subsection{\code{Connect$get_tag_id()}}{ + Get the identifier for the named tag. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$get_tag_id(tagname)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{tagname}}{The name of the tag.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{tagname}}{The name of the tag.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-get_tag_tree}{}}} -\subsection{Method \code{get_tag_tree()}}{ -Get the tag tree. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$get_tag_tree()}\if{html}{\out{
}} +\subsection{\code{Connect$get_tag_tree()}}{ + Get the tag tree. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$get_tag_tree()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-tag_create_safe}{}}} -\subsection{Method \code{tag_create_safe()}}{ -Create a tag. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$tag_create_safe(name, parent_id = NULL)}\if{html}{\out{
}} +\subsection{\code{Connect$tag_create_safe()}}{ + Create a tag. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$tag_create_safe(name, parent_id = NULL)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{name}}{The tag name.} + \item{\code{parent_id}}{The parent identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{name}}{The tag name.} - -\item{\code{parent_id}}{The parent identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-tag_create}{}}} -\subsection{Method \code{tag_create()}}{ -Create a tag. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$tag_create(name, parent_id = NULL)}\if{html}{\out{
}} +\subsection{\code{Connect$tag_create()}}{ + Create a tag. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$tag_create(name, parent_id = NULL)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{name}}{The tag name.} + \item{\code{parent_id}}{The parent identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{name}}{The tag name.} - -\item{\code{parent_id}}{The parent identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-tag}{}}} -\subsection{Method \code{tag()}}{ -Get a tag. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$tag(id = NULL)}\if{html}{\out{
}} +\subsection{\code{Connect$tag()}}{ + Get a tag. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$tag(id = NULL)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{id}}{The tag identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{id}}{The tag identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-tag_delete}{}}} -\subsection{Method \code{tag_delete()}}{ -Delete a tag. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$tag_delete(id)}\if{html}{\out{
}} +\subsection{\code{Connect$tag_delete()}}{ + Delete a tag. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$tag_delete(id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{id}}{The tag identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{id}}{The tag identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-get_schedule}{}}} -\subsection{Method \code{get_schedule()}}{ -Get a schedule. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$get_schedule(schedule_id)}\if{html}{\out{
}} +\subsection{\code{Connect$get_schedule()}}{ + Get a schedule. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$get_schedule(schedule_id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{schedule_id}}{The schedule identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{schedule_id}}{The schedule identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-content_create}{}}} -\subsection{Method \code{content_create()}}{ -Create content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$content_create(name, title = name, ...)}\if{html}{\out{
}} +\subsection{\code{Connect$content_create()}}{ + Create content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$content_create(name, title = name, ...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{name}}{The content name.} + \item{\code{title}}{The content title.} + \item{\code{...}}{Other content fields.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{name}}{The content name.} - -\item{\code{title}}{The content title.} - -\item{\code{...}}{Other content fields.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-content_upload}{}}} -\subsection{Method \code{content_upload()}}{ -Upload a content bundle. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$content_upload(bundle_path, guid)}\if{html}{\out{
}} +\subsection{\code{Connect$content_upload()}}{ + Upload a content bundle. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$content_upload(bundle_path, guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{bundle_path}}{The path to the bundle archive.} + \item{\code{guid}}{The content GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{bundle_path}}{The path to the bundle archive.} - -\item{\code{guid}}{The content GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-content_deploy}{}}} -\subsection{Method \code{content_deploy()}}{ -Deploy a content bundle. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$content_deploy(guid, bundle_id)}\if{html}{\out{
}} +\subsection{\code{Connect$content_deploy()}}{ + Deploy a content bundle. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$content_deploy(guid, bundle_id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{guid}}{The content GUID.} + \item{\code{bundle_id}}{The bundle identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{guid}}{The content GUID.} - -\item{\code{bundle_id}}{The bundle identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-content}{}}} -\subsection{Method \code{content()}}{ -Get a content item. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$content( +\subsection{\code{Connect$content()}}{ + Get a content item. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$content( guid = NULL, owner_guid = NULL, name = NULL, include = "tags,owner" -)}\if{html}{\out{
}} +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{guid}}{The content GUID.} + \item{\code{owner_guid}}{The target content owner.} + \item{\code{name}}{The target name.} + \item{\code{include}}{Additional response fields.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{guid}}{The content GUID.} - -\item{\code{owner_guid}}{The target content owner.} - -\item{\code{name}}{The target name.} - -\item{\code{include}}{Additional response fields.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-task}{}}} -\subsection{Method \code{task()}}{ -Get a task. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$task(task_id, first = 0, wait = 5)}\if{html}{\out{
}} +\subsection{\code{Connect$task()}}{ + Get a task. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$task(task_id, first = 0, wait = 5)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{task_id}}{The task identifier.} + \item{\code{first}}{The initial status position.} + \item{\code{wait}}{Maximum time to wait for update.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{task_id}}{The task identifier.} - -\item{\code{first}}{The initial status position.} - -\item{\code{wait}}{Maximum time to wait for update.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-set_content_tag}{}}} -\subsection{Method \code{set_content_tag()}}{ -Set a tag for a content item. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$set_content_tag(content_id, tag_id)}\if{html}{\out{
}} +\subsection{\code{Connect$set_content_tag()}}{ + Set a tag for a content item. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$set_content_tag(content_id, tag_id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{content_id}}{The content identifier.} + \item{\code{tag_id}}{The tag identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{content_id}}{The content identifier.} - -\item{\code{tag_id}}{The tag identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-remove_content_tag}{}}} -\subsection{Method \code{remove_content_tag()}}{ -Remove a tag from a content item. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$remove_content_tag(content_id, tag_id)}\if{html}{\out{
}} +\subsection{\code{Connect$remove_content_tag()}}{ + Remove a tag from a content item. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$remove_content_tag(content_id, tag_id)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{content_id}}{The content identifier.} + \item{\code{tag_id}}{The tag identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{content_id}}{The content identifier.} - -\item{\code{tag_id}}{The tag identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-user}{}}} -\subsection{Method \code{user()}}{ -Get user details. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$user(guid)}\if{html}{\out{
}} +\subsection{\code{Connect$user()}}{ + Get user details. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$user(guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{guid}}{The user GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{guid}}{The user GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-users}{}}} -\subsection{Method \code{users()}}{ -Get users. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$users( +\subsection{\code{Connect$users()}}{ + Get users. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$users( page_number = 1, prefix = NULL, page_size = 500, user_role = NULL, account_status = NULL -)}\if{html}{\out{
}} +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{page_number}}{The page number.} + \item{\code{prefix}}{The search term.} + \item{\code{page_size}}{The page size.} + \item{\code{user_role}}{Filter by user role.} + \item{\code{account_status}}{Filter by account status.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{page_number}}{The page number.} - -\item{\code{prefix}}{The search term.} - -\item{\code{page_size}}{The page size.} - -\item{\code{user_role}}{Filter by user role.} - -\item{\code{account_status}}{Filter by account status.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-users_remote}{}}} -\subsection{Method \code{users_remote()}}{ -Get remote users. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$users_remote(prefix)}\if{html}{\out{
}} +\subsection{\code{Connect$users_remote()}}{ + Get remote users. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$users_remote(prefix)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{prefix}}{The search term.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{prefix}}{The search term.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-users_create}{}}} -\subsection{Method \code{users_create()}}{ -Create a user. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$users_create( +\subsection{\code{Connect$users_create()}}{ + Create a user. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$users_create( username, email, first_name = NULL, @@ -849,254 +870,267 @@ Create a user. user_must_set_password = NULL, user_role = NULL, unique_id = NULL -)}\if{html}{\out{
}} +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{username}}{The username.} + \item{\code{email}}{Email address.} + \item{\code{first_name}}{First name.} + \item{\code{last_name}}{Last name.} + \item{\code{password}}{The password.} + \item{\code{user_must_set_password}}{Indicates that user sets password on first login.} + \item{\code{user_role}}{Role for user.} + \item{\code{unique_id}}{Identifier for user.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{username}}{The username.} - -\item{\code{email}}{Email address.} - -\item{\code{first_name}}{First name.} - -\item{\code{last_name}}{Last name.} - -\item{\code{password}}{The password.} - -\item{\code{user_must_set_password}}{Indicates that user sets password on first login.} - -\item{\code{user_role}}{Role for user.} - -\item{\code{unique_id}}{Identifier for user.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-users_create_remote}{}}} -\subsection{Method \code{users_create_remote()}}{ -Create a remote user. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$users_create_remote(temp_ticket)}\if{html}{\out{
}} +\subsection{\code{Connect$users_create_remote()}}{ + Create a remote user. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$users_create_remote(temp_ticket)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{temp_ticket}}{Ticket identifying target remote user.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{temp_ticket}}{Ticket identifying target remote user.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-users_lock}{}}} -\subsection{Method \code{users_lock()}}{ -Lock a user. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$users_lock(user_guid)}\if{html}{\out{
}} +\subsection{\code{Connect$users_lock()}}{ + Lock a user. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$users_lock(user_guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{user_guid}}{User GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{user_guid}}{User GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-users_unlock}{}}} -\subsection{Method \code{users_unlock()}}{ -Unlock a user. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$users_unlock(user_guid)}\if{html}{\out{
}} +\subsection{\code{Connect$users_unlock()}}{ + Unlock a user. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$users_unlock(user_guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{user_guid}}{User GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{user_guid}}{User GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-users_update}{}}} -\subsection{Method \code{users_update()}}{ -Update a user. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$users_update(user_guid, ...)}\if{html}{\out{
}} +\subsection{\code{Connect$users_update()}}{ + Update a user. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$users_update(user_guid, ...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{user_guid}}{User GUID.} + \item{\code{...}}{User fields.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{user_guid}}{User GUID.} - -\item{\code{...}}{User fields.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-groups}{}}} -\subsection{Method \code{groups()}}{ -Get groups. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$groups(page_number = 1, prefix = NULL, page_size = 500)}\if{html}{\out{
}} +\subsection{\code{Connect$groups()}}{ + Get groups. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$groups(page_number = 1, prefix = NULL, page_size = 500)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{page_number}}{The page number.} + \item{\code{prefix}}{The search term.} + \item{\code{page_size}}{The page size.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{page_number}}{The page number.} - -\item{\code{prefix}}{The search term.} - -\item{\code{page_size}}{The page size.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-group_members}{}}} -\subsection{Method \code{group_members()}}{ -Get group members. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$group_members(guid)}\if{html}{\out{
}} +\subsection{\code{Connect$group_members()}}{ + Get group members. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$group_members(guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{guid}}{The group GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{guid}}{The group GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-group_member_add}{}}} -\subsection{Method \code{group_member_add()}}{ -Add a group member. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$group_member_add(group_guid, user_guid)}\if{html}{\out{
}} +\subsection{\code{Connect$group_member_add()}}{ + Add a group member. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$group_member_add(group_guid, user_guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{group_guid}}{The group GUID.} + \item{\code{user_guid}}{The user GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{group_guid}}{The group GUID.} - -\item{\code{user_guid}}{The user GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-group_member_remove}{}}} -\subsection{Method \code{group_member_remove()}}{ -Remove a group member. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$group_member_remove(group_guid, user_guid)}\if{html}{\out{
}} +\subsection{\code{Connect$group_member_remove()}}{ + Remove a group member. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$group_member_remove(group_guid, user_guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{group_guid}}{The group GUID.} + \item{\code{user_guid}}{The user GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{group_guid}}{The group GUID.} - -\item{\code{user_guid}}{The user GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-groups_create}{}}} -\subsection{Method \code{groups_create()}}{ -Create a group. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$groups_create(name)}\if{html}{\out{
}} +\subsection{\code{Connect$groups_create()}}{ + Create a group. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$groups_create(name)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{name}}{The group name.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{name}}{The group name.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-groups_create_remote}{}}} -\subsection{Method \code{groups_create_remote()}}{ -Create a remote group. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$groups_create_remote(temp_ticket)}\if{html}{\out{
}} +\subsection{\code{Connect$groups_create_remote()}}{ + Create a remote group. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$groups_create_remote(temp_ticket)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{temp_ticket}}{Ticket identifying target remote group.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{temp_ticket}}{Ticket identifying target remote group.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-groups_remote}{}}} -\subsection{Method \code{groups_remote()}}{ -Get remote groups. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$groups_remote(prefix = NULL, limit = 500)}\if{html}{\out{
}} +\subsection{\code{Connect$groups_remote()}}{ + Get remote groups. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$groups_remote(prefix = NULL, limit = 500)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{prefix}}{The search term.} + \item{\code{limit}}{The maximal result set size.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{prefix}}{The search term.} - -\item{\code{limit}}{The maximal result set size.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-group_content}{}}} -\subsection{Method \code{group_content()}}{ -Get content to which a group has access -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$group_content(guid)}\if{html}{\out{
}} +\subsection{\code{Connect$group_content()}}{ + Get content to which a group has access + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$group_content(guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{guid}}{The group GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{guid}}{The group GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-inst_content_visits}{}}} -\subsection{Method \code{inst_content_visits()}}{ -Get (non-interactive) content visits. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$inst_content_visits( +\subsection{\code{Connect$inst_content_visits()}}{ + Get (non-interactive) content visits. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$inst_content_visits( content_guid = NULL, min_data_version = NULL, from = NULL, @@ -1105,41 +1139,36 @@ Get (non-interactive) content visits. previous = NULL, nxt = NULL, asc_order = TRUE -)}\if{html}{\out{
}} +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{content_guid}}{Content GUID.} + \item{\code{min_data_version}}{Data version for request.} + \item{\code{from}}{Start of range.} + \item{\code{to}}{End of range.} + \item{\code{limit}}{Result set size.} + \item{\code{previous}}{Previous item.} + \item{\code{nxt}}{Next item.} + \item{\code{asc_order}}{Indicates ascending result order.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{content_guid}}{Content GUID.} - -\item{\code{min_data_version}}{Data version for request.} - -\item{\code{from}}{Start of range.} - -\item{\code{to}}{End of range.} - -\item{\code{limit}}{Result set size.} - -\item{\code{previous}}{Previous item.} - -\item{\code{nxt}}{Next item.} - -\item{\code{asc_order}}{Indicates ascending result order.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-inst_shiny_usage}{}}} -\subsection{Method \code{inst_shiny_usage()}}{ -Get interactive content visits. +\subsection{\code{Connect$inst_shiny_usage()}}{ + Get interactive content visits. -Get (non-interactive) content visits. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$inst_shiny_usage( + Get (non-interactive) content visits. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$inst_shiny_usage( content_guid = NULL, min_data_version = NULL, from = NULL, @@ -1148,217 +1177,224 @@ Get (non-interactive) content visits. previous = NULL, nxt = NULL, asc_order = TRUE -)}\if{html}{\out{
}} +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{content_guid}}{Content GUID.} + \item{\code{min_data_version}}{Data version for request.} + \item{\code{from}}{Start of range.} + \item{\code{to}}{End of range.} + \item{\code{limit}}{Result set size.} + \item{\code{previous}}{Previous item.} + \item{\code{nxt}}{Next item.} + \item{\code{asc_order}}{Indicates ascending result order.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{content_guid}}{Content GUID.} - -\item{\code{min_data_version}}{Data version for request.} - -\item{\code{from}}{Start of range.} - -\item{\code{to}}{End of range.} - -\item{\code{limit}}{Result set size.} - -\item{\code{previous}}{Previous item.} - -\item{\code{nxt}}{Next item.} - -\item{\code{asc_order}}{Indicates ascending result order.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-procs}{}}} -\subsection{Method \code{procs()}}{ -Get running processes. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$procs()}\if{html}{\out{
}} +\subsection{\code{Connect$procs()}}{ + Get running processes. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$procs()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-repo_account}{}}} -\subsection{Method \code{repo_account()}}{ -Determine if Git repository is associated with authorization. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$repo_account(host)}\if{html}{\out{
}} +\subsection{\code{Connect$repo_account()}}{ + Determine if Git repository is associated with authorization. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$repo_account(host)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{host}}{Repository URL.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{host}}{Repository URL.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-repo_branches}{}}} -\subsection{Method \code{repo_branches()}}{ -Get Git repository branches. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$repo_branches(repo)}\if{html}{\out{
}} +\subsection{\code{Connect$repo_branches()}}{ + Get Git repository branches. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$repo_branches(repo)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{repo}}{Repository URL.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{repo}}{Repository URL.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-repo_manifest_dirs}{}}} -\subsection{Method \code{repo_manifest_dirs()}}{ -Get Git repository directories. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$repo_manifest_dirs(repo, branch)}\if{html}{\out{
}} +\subsection{\code{Connect$repo_manifest_dirs()}}{ + Get Git repository directories. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$repo_manifest_dirs(repo, branch)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{repo}}{Repository URL.} + \item{\code{branch}}{Repository branch.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{repo}}{Repository URL.} - -\item{\code{branch}}{Repository branch.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-schedules}{}}} -\subsection{Method \code{schedules()}}{ -Get schedules. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$schedules( +\subsection{\code{Connect$schedules()}}{ + Get schedules. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$schedules( start = Sys.time(), end = Sys.time() + 60 * 60 * 24 * 7, detailed = FALSE -)}\if{html}{\out{
}} +)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{start}}{Starting time.} + \item{\code{end}}{Ending time.} + \item{\code{detailed}}{Indicates detailed schedule information.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{start}}{Starting time.} - -\item{\code{end}}{Ending time.} - -\item{\code{detailed}}{Indicates detailed schedule information.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-packages}{}}} -\subsection{Method \code{packages()}}{ -Get packages. This endpoint is paginated. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$packages(name = NULL, page_number = 1, page_size = 1e+05)}\if{html}{\out{
}} +\subsection{\code{Connect$packages()}}{ + Get packages. This endpoint is paginated. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$packages(name = NULL, page_number = 1, page_size = 1e+05)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{name}}{The package name to filter by.} + \item{\code{page_number}}{Page number.} + \item{\code{page_size}}{Page size, default 100000.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{name}}{The package name to filter by.} - -\item{\code{page_number}}{Page number.} - -\item{\code{page_size}}{Page size, default 100000.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-docs}{}}} -\subsection{Method \code{docs()}}{ -Get documentation. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$docs(docs = "api", browse = TRUE)}\if{html}{\out{
}} +\subsection{\code{Connect$docs()}}{ + Get documentation. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$docs(docs = "api", browse = TRUE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{docs}}{Named document.} + \item{\code{browse}}{Open a browser.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{docs}}{Named document.} - -\item{\code{browse}}{Open a browser.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-audit_logs}{}}} -\subsection{Method \code{audit_logs()}}{ -Get auditing. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$audit_logs(limit = 500, previous = NULL, nxt = NULL, asc_order = TRUE)}\if{html}{\out{
}} +\subsection{\code{Connect$audit_logs()}}{ + Get auditing. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$audit_logs(limit = 500, previous = NULL, nxt = NULL, asc_order = TRUE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{limit}}{Result set size.} + \item{\code{previous}}{Previous item.} + \item{\code{nxt}}{Next item.} + \item{\code{asc_order}}{Indicates ascending result order.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{limit}}{Result set size.} - -\item{\code{previous}}{Previous item.} - -\item{\code{nxt}}{Next item.} - -\item{\code{asc_order}}{Indicates ascending result order.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-vanities}{}}} -\subsection{Method \code{vanities()}}{ -Get all vanity URLs -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$vanities()}\if{html}{\out{
}} +\subsection{\code{Connect$vanities()}}{ + Get all vanity URLs + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$vanities()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-server_settings}{}}} -\subsection{Method \code{server_settings()}}{ -Get server settings. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$server_settings()}\if{html}{\out{
}} +\subsection{\code{Connect$server_settings()}}{ + Get server settings. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$server_settings()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Connect-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Connect$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{Connect$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Connect$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/Task.Rd b/man/Task.Rd index df76f9ab..234daa7f 100644 --- a/man/Task.Rd +++ b/man/Task.Rd @@ -4,15 +4,10 @@ \alias{Task} \title{Task} \description{ -Task - -Task -} -\details{ An R6 class that represents a Task } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{Content}}, \code{\link{ContentTask}}, @@ -25,115 +20,126 @@ Other R6 classes: } \concept{R6 classes} \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The Connect instance.} + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The Connect instance.} -\item{\code{task}}{The task.} + \item{\code{task}}{The task.} -\item{\code{data}}{The task data.} -} -\if{html}{\out{
}} + \item{\code{data}}{The task data.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-Task-new}{\code{Task$new()}} -\item \href{#method-Task-get_task}{\code{Task$get_task()}} -\item \href{#method-Task-add_data}{\code{Task$add_data()}} -\item \href{#method-Task-get_data}{\code{Task$get_data()}} -\item \href{#method-Task-print}{\code{Task$print()}} -\item \href{#method-Task-clone}{\code{Task$clone()}} -} + \itemize{ + \item \href{#method-Task-initialize}{\code{Task$new()}} + \item \href{#method-Task-get_task}{\code{Task$get_task()}} + \item \href{#method-Task-add_data}{\code{Task$add_data()}} + \item \href{#method-Task-get_data}{\code{Task$get_data()}} + \item \href{#method-Task-print}{\code{Task$print()}} + \item \href{#method-Task-clone}{\code{Task$clone()}} + } } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Task-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this task. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Task$new(connect, task)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Task-initialize}{}}} +\subsection{\code{Task$new()}}{ + Initialize this task. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Task$new(connect, task)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The \code{Connect} instance.} + \item{\code{task}}{The task data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The \code{Connect} instance.} - -\item{\code{task}}{The task data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Task-get_task}{}}} -\subsection{Method \code{get_task()}}{ -Return the underlying task. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Task$get_task()}\if{html}{\out{
}} +\subsection{\code{Task$get_task()}}{ + Return the underlying task. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Task$get_task()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Task-add_data}{}}} -\subsection{Method \code{add_data()}}{ -Set the data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Task$add_data(data)}\if{html}{\out{
}} +\subsection{\code{Task$add_data()}}{ + Set the data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Task$add_data(data)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{data}}{The data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{data}}{The data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Task-get_data}{}}} -\subsection{Method \code{get_data()}}{ -Get the data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Task$get_data()}\if{html}{\out{
}} +\subsection{\code{Task$get_data()}}{ + Get the data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Task$get_data()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Task-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Task$print(...)}\if{html}{\out{
}} +\subsection{\code{Task$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Task$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Task-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Task$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{Task$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Task$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/Vanity.Rd b/man/Vanity.Rd index 9782f493..005b11d5 100644 --- a/man/Vanity.Rd +++ b/man/Vanity.Rd @@ -4,15 +4,10 @@ \alias{Vanity} \title{Vanity} \description{ -Vanity - -Vanity -} -\details{ An R6 class that represents a Vanity URL } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{Content}}, \code{\link{ContentTask}}, @@ -25,119 +20,123 @@ Other R6 classes: } \concept{R6 classes} \section{Super class}{ -\code{\link[connectapi:Content]{connectapi::Content}} -> \code{Vanity} +\code{\link[connectapi:Content]{Content}} -> \code{Vanity} } \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{vanity}}{The vanity.} -} -\if{html}{\out{
}} + \if{html}{\out{
}} + \describe{ + \item{\code{vanity}}{The vanity.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-Vanity-new}{\code{Vanity$new()}} -\item \href{#method-Vanity-get_vanity}{\code{Vanity$get_vanity()}} -\item \href{#method-Vanity-print}{\code{Vanity$print()}} -\item \href{#method-Vanity-clone}{\code{Vanity$clone()}} -} -} -\if{html}{\out{ -
Inherited methods + \itemize{ + \item \href{#method-Vanity-initialize}{\code{Vanity$new()}} + \item \href{#method-Vanity-get_vanity}{\code{Vanity$get_vanity()}} + \item \href{#method-Vanity-print}{\code{Vanity$print()}} + \item \href{#method-Vanity-clone}{\code{Vanity$clone()}} + } +} +\if{html}{\out{
Inherited methods -
-}} +
}} \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Vanity-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this vanity. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Vanity$new(connect, content, vanity)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Vanity-initialize}{}}} +\subsection{\code{Vanity$new()}}{ + Initialize this vanity. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Vanity$new(connect, content, vanity)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The \code{Connect} instance.} + \item{\code{content}}{The \code{Content} instance.} + \item{\code{vanity}}{The vanity data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The \code{Connect} instance.} - -\item{\code{content}}{The \code{Content} instance.} - -\item{\code{vanity}}{The vanity data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Vanity-get_vanity}{}}} -\subsection{Method \code{get_vanity()}}{ -Return the underlying vanity. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Vanity$get_vanity()}\if{html}{\out{
}} +\subsection{\code{Vanity$get_vanity()}}{ + Return the underlying vanity. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Vanity$get_vanity()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Vanity-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Vanity$print(...)}\if{html}{\out{
}} +\subsection{\code{Vanity$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Vanity$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Vanity-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Vanity$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{Vanity$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Vanity$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/VariantR6.Rd b/man/VariantR6.Rd index 67bd82d0..d21ea2c5 100644 --- a/man/VariantR6.Rd +++ b/man/VariantR6.Rd @@ -4,15 +4,10 @@ \alias{Variant} \title{Variant} \description{ -Variant - -Variant -} -\details{ An R6 class that represents a Variant } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{Content}}, \code{\link{ContentTask}}, @@ -25,306 +20,336 @@ Other R6 classes: } \concept{R6 classes} \section{Super class}{ -\code{\link[connectapi:Content]{connectapi::Content}} -> \code{Variant} +\code{\link[connectapi:Content]{Content}} -> \code{Variant} } \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{key}}{The variant key.} + \if{html}{\out{
}} + \describe{ + \item{\code{key}}{The variant key.} -\item{\code{variant}}{The variant.} -} -\if{html}{\out{
}} + \item{\code{variant}}{The variant.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-Variant-get_variant_remote}{\code{Variant$get_variant_remote()}} -\item \href{#method-Variant-new}{\code{Variant$new()}} -\item \href{#method-Variant-send_mail}{\code{Variant$send_mail()}} -\item \href{#method-Variant-get_schedule}{\code{Variant$get_schedule()}} -\item \href{#method-Variant-get_schedule_remote}{\code{Variant$get_schedule_remote()}} -\item \href{#method-Variant-get_subscribers}{\code{Variant$get_subscribers()}} -\item \href{#method-Variant-remove_subscriber}{\code{Variant$remove_subscriber()}} -\item \href{#method-Variant-add_subscribers}{\code{Variant$add_subscribers()}} -\item \href{#method-Variant-render}{\code{Variant$render()}} -\item \href{#method-Variant-renderings}{\code{Variant$renderings()}} -\item \href{#method-Variant-update_variant}{\code{Variant$update_variant()}} -\item \href{#method-Variant-jobs}{\code{Variant$jobs()}} -\item \href{#method-Variant-get_url}{\code{Variant$get_url()}} -\item \href{#method-Variant-get_url_rev}{\code{Variant$get_url_rev()}} -\item \href{#method-Variant-get_dashboard_url}{\code{Variant$get_dashboard_url()}} -\item \href{#method-Variant-print}{\code{Variant$print()}} -\item \href{#method-Variant-clone}{\code{Variant$clone()}} -} -} -\if{html}{\out{ -
Inherited methods + \itemize{ + \item \href{#method-Variant-get_variant_remote}{\code{Variant$get_variant_remote()}} + \item \href{#method-Variant-initialize}{\code{Variant$new()}} + \item \href{#method-Variant-send_mail}{\code{Variant$send_mail()}} + \item \href{#method-Variant-get_schedule}{\code{Variant$get_schedule()}} + \item \href{#method-Variant-get_schedule_remote}{\code{Variant$get_schedule_remote()}} + \item \href{#method-Variant-get_subscribers}{\code{Variant$get_subscribers()}} + \item \href{#method-Variant-remove_subscriber}{\code{Variant$remove_subscriber()}} + \item \href{#method-Variant-add_subscribers}{\code{Variant$add_subscribers()}} + \item \href{#method-Variant-render}{\code{Variant$render()}} + \item \href{#method-Variant-renderings}{\code{Variant$renderings()}} + \item \href{#method-Variant-update_variant}{\code{Variant$update_variant()}} + \item \href{#method-Variant-jobs}{\code{Variant$jobs()}} + \item \href{#method-Variant-get_url}{\code{Variant$get_url()}} + \item \href{#method-Variant-get_url_rev}{\code{Variant$get_url_rev()}} + \item \href{#method-Variant-get_dashboard_url}{\code{Variant$get_dashboard_url()}} + \item \href{#method-Variant-print}{\code{Variant$print()}} + \item \href{#method-Variant-clone}{\code{Variant$clone()}} + } +} +\if{html}{\out{
Inherited methods -
-}} +
}} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-get_variant_remote}{}}} -\subsection{Method \code{get_variant_remote()}}{ -Get the underlying variant data. +\subsection{\code{Variant$get_variant_remote()}}{ + Get the underlying variant data. -Get and store the (remote) variant data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$get_variant_remote()}\if{html}{\out{
}} + Get and store the (remote) variant data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$get_variant_remote()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Variant-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this variant. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$new(connect, content, key)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Variant-initialize}{}}} +\subsection{\code{Variant$new()}}{ + Initialize this variant. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$new(connect, content, key)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The \code{Connect} instance.} + \item{\code{content}}{The \code{Content} instance.} + \item{\code{key}}{The variant key.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The \code{Connect} instance.} - -\item{\code{content}}{The \code{Content} instance.} - -\item{\code{key}}{The variant key.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-send_mail}{}}} -\subsection{Method \code{send_mail()}}{ -Mail previously rendered content. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$send_mail(to = c("me", "collaborators", "collaborators_viewers"))}\if{html}{\out{
}} +\subsection{\code{Variant$send_mail()}}{ + Mail previously rendered content. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$send_mail(to = c("me", "collaborators", "collaborators_viewers"))} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{to}}{Targeting.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{to}}{Targeting.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-get_schedule}{}}} -\subsection{Method \code{get_schedule()}}{ -Get the (remote) schedule data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$get_schedule()}\if{html}{\out{
}} +\subsection{\code{Variant$get_schedule()}}{ + Get the (remote) schedule data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$get_schedule()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-get_schedule_remote}{}}} -\subsection{Method \code{get_schedule_remote()}}{ -Get the (remote) schedule data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$get_schedule_remote()}\if{html}{\out{
}} +\subsection{\code{Variant$get_schedule_remote()}}{ + Get the (remote) schedule data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$get_schedule_remote()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-get_subscribers}{}}} -\subsection{Method \code{get_subscribers()}}{ -Get the subscribers. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$get_subscribers()}\if{html}{\out{
}} +\subsection{\code{Variant$get_subscribers()}}{ + Get the subscribers. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$get_subscribers()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-remove_subscriber}{}}} -\subsection{Method \code{remove_subscriber()}}{ -Remove a named subscriber. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$remove_subscriber(guid)}\if{html}{\out{
}} +\subsection{\code{Variant$remove_subscriber()}}{ + Remove a named subscriber. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$remove_subscriber(guid)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{guid}}{User GUID.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{guid}}{User GUID.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-add_subscribers}{}}} -\subsection{Method \code{add_subscribers()}}{ -Add named subscribers. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$add_subscribers(guids)}\if{html}{\out{
}} +\subsection{\code{Variant$add_subscribers()}}{ + Add named subscribers. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$add_subscribers(guids)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{guids}}{User GUIDs.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{guids}}{User GUIDs.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-render}{}}} -\subsection{Method \code{render()}}{ -Render this variant. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$render()}\if{html}{\out{
}} +\subsection{\code{Variant$render()}}{ + Render this variant. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$render()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-renderings}{}}} -\subsection{Method \code{renderings()}}{ -List the renderings of this variant. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$renderings()}\if{html}{\out{
}} +\subsection{\code{Variant$renderings()}}{ + List the renderings of this variant. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$renderings()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-update_variant}{}}} -\subsection{Method \code{update_variant()}}{ -Update this variant. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$update_variant(...)}\if{html}{\out{
}} +\subsection{\code{Variant$update_variant()}}{ + Update this variant. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$update_variant(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Target fields and values.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Target fields and values.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-jobs}{}}} -\subsection{Method \code{jobs()}}{ -Jobs for this variant. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$jobs()}\if{html}{\out{
}} +\subsection{\code{Variant$jobs()}}{ + Jobs for this variant. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$jobs()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-get_url}{}}} -\subsection{Method \code{get_url()}}{ -Return the URL for this variant. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$get_url()}\if{html}{\out{
}} +\subsection{\code{Variant$get_url()}}{ + Return the URL for this variant. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$get_url()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-get_url_rev}{}}} -\subsection{Method \code{get_url_rev()}}{ -Return the URL associated with one rendering for this variant. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$get_url_rev(rev)}\if{html}{\out{
}} +\subsection{\code{Variant$get_url_rev()}}{ + Return the URL associated with one rendering for this variant. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$get_url_rev(rev)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{rev}}{Rendering identifier.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{rev}}{Rendering identifier.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-get_dashboard_url}{}}} -\subsection{Method \code{get_dashboard_url()}}{ -Return the URL for this variant in the Posit Connect dashboard. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$get_dashboard_url(pane = "access")}\if{html}{\out{
}} +\subsection{\code{Variant$get_dashboard_url()}}{ + Return the URL for this variant in the Posit Connect dashboard. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$get_dashboard_url(pane = "access")} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{pane}}{The pane in the dashboard to link to.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{pane}}{The pane in the dashboard to link to.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$print(...)}\if{html}{\out{
}} +\subsection{\code{Variant$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Variant-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Variant$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{Variant$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{Variant$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/VariantSchedule.Rd b/man/VariantSchedule.Rd index 252bd7ff..c90e4e76 100644 --- a/man/VariantSchedule.Rd +++ b/man/VariantSchedule.Rd @@ -4,15 +4,10 @@ \alias{VariantSchedule} \title{VariantSchedule} \description{ -VariantSchedule - -VariantSchedule -} -\details{ An R6 class that represents a Schedule } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{Content}}, \code{\link{ContentTask}}, @@ -25,237 +20,253 @@ Other R6 classes: } \concept{R6 classes} \section{Super classes}{ -\code{\link[connectapi:Content]{connectapi::Content}} -> \code{\link[connectapi:Variant]{connectapi::Variant}} -> \code{VariantSchedule} +\code{\link[connectapi:Content]{Content}} -> \code{\link[connectapi:Variant]{Variant}} -> \code{VariantSchedule} } \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{schedule_data}}{The schedule data.} -} -\if{html}{\out{
}} + \if{html}{\out{
}} + \describe{ + \item{\code{schedule_data}}{The schedule data.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-VariantSchedule-new}{\code{VariantSchedule$new()}} -\item \href{#method-VariantSchedule-GET}{\code{VariantSchedule$GET()}} -\item \href{#method-VariantSchedule-POST}{\code{VariantSchedule$POST()}} -\item \href{#method-VariantSchedule-DELETE}{\code{VariantSchedule$DELETE()}} -\item \href{#method-VariantSchedule-set_schedule}{\code{VariantSchedule$set_schedule()}} -\item \href{#method-VariantSchedule-is_empty}{\code{VariantSchedule$is_empty()}} -\item \href{#method-VariantSchedule-print}{\code{VariantSchedule$print()}} -\item \href{#method-VariantSchedule-get_schedule}{\code{VariantSchedule$get_schedule()}} -\item \href{#method-VariantSchedule-get_schedule_remote}{\code{VariantSchedule$get_schedule_remote()}} -\item \href{#method-VariantSchedule-describe_schedule}{\code{VariantSchedule$describe_schedule()}} -\item \href{#method-VariantSchedule-clone}{\code{VariantSchedule$clone()}} -} -} -\if{html}{\out{ -
Inherited methods + \itemize{ + \item \href{#method-VariantSchedule-initialize}{\code{VariantSchedule$new()}} + \item \href{#method-VariantSchedule-GET}{\code{VariantSchedule$GET()}} + \item \href{#method-VariantSchedule-POST}{\code{VariantSchedule$POST()}} + \item \href{#method-VariantSchedule-DELETE}{\code{VariantSchedule$DELETE()}} + \item \href{#method-VariantSchedule-set_schedule}{\code{VariantSchedule$set_schedule()}} + \item \href{#method-VariantSchedule-is_empty}{\code{VariantSchedule$is_empty()}} + \item \href{#method-VariantSchedule-print}{\code{VariantSchedule$print()}} + \item \href{#method-VariantSchedule-get_schedule}{\code{VariantSchedule$get_schedule()}} + \item \href{#method-VariantSchedule-get_schedule_remote}{\code{VariantSchedule$get_schedule_remote()}} + \item \href{#method-VariantSchedule-describe_schedule}{\code{VariantSchedule$describe_schedule()}} + \item \href{#method-VariantSchedule-clone}{\code{VariantSchedule$clone()}} + } +} +\if{html}{\out{
Inherited methods -
-}} +
}} \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-VariantSchedule-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this schedule. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$new(connect, content, key, schedule)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-VariantSchedule-initialize}{}}} +\subsection{\code{VariantSchedule$new()}}{ + Initialize this schedule. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$new(connect, content, key, schedule)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The \code{Connect} instance.} + \item{\code{content}}{The \code{Content} instance.} + \item{\code{key}}{The variant key.} + \item{\code{schedule}}{The schedule data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The \code{Connect} instance.} - -\item{\code{content}}{The \code{Content} instance.} - -\item{\code{key}}{The variant key.} - -\item{\code{schedule}}{The schedule data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-GET}{}}} -\subsection{Method \code{GET()}}{ -Perform an HTTP GET request of the named API path. Returns an object parsed from the HTTP response. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$GET(path)}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$GET()}}{ + Perform an HTTP GET request of the named API path. Returns an object parsed from the HTTP response. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$GET(path)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-POST}{}}} -\subsection{Method \code{POST()}}{ -Perform an HTTP POST request of the named API path. Returns an object parsed from the HTTP response. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$POST(path, body)}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$POST()}}{ + Perform an HTTP POST request of the named API path. Returns an object parsed from the HTTP response. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$POST(path, body)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path.} + \item{\code{body}}{The HTTP payload.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path.} - -\item{\code{body}}{The HTTP payload.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-DELETE}{}}} -\subsection{Method \code{DELETE()}}{ -Perform an HTTP DELETE request of the named API path. Returns the HTTP response object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$DELETE(path)}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$DELETE()}}{ + Perform an HTTP DELETE request of the named API path. Returns the HTTP response object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$DELETE(path)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{path}}{API path.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{path}}{API path.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-set_schedule}{}}} -\subsection{Method \code{set_schedule()}}{ -Set the schedule for this variant -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$set_schedule(...)}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$set_schedule()}}{ + Set the schedule for this variant + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$set_schedule(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Schedule fields.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Schedule fields.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-is_empty}{}}} -\subsection{Method \code{is_empty()}}{ -Return if this variant has a schedule. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$is_empty()}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$is_empty()}}{ + Return if this variant has a schedule. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$is_empty()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$print(...)}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-get_schedule}{}}} -\subsection{Method \code{get_schedule()}}{ -Get the schedule data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$get_schedule()}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$get_schedule()}}{ + Get the schedule data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$get_schedule()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-get_schedule_remote}{}}} -\subsection{Method \code{get_schedule_remote()}}{ -Get and store the (remote) schedule data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$get_schedule_remote()}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$get_schedule_remote()}}{ + Get and store the (remote) schedule data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$get_schedule_remote()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-describe_schedule}{}}} -\subsection{Method \code{describe_schedule()}}{ -Description of the associated schedule. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$describe_schedule()}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$describe_schedule()}}{ + Description of the associated schedule. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$describe_schedule()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantSchedule-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantSchedule$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{VariantSchedule$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantSchedule$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/VariantTask.Rd b/man/VariantTask.Rd index 6bb76580..5c244dda 100644 --- a/man/VariantTask.Rd +++ b/man/VariantTask.Rd @@ -4,15 +4,10 @@ \alias{VariantTask} \title{VariantTask} \description{ -VariantTask - -VariantTask -} -\details{ An R6 class that represents a Variant Task } \seealso{ -Other R6 classes: +Other R6 classes: \code{\link{Bundle}}, \code{\link{Content}}, \code{\link{ContentTask}}, @@ -25,163 +20,170 @@ Other R6 classes: } \concept{R6 classes} \section{Super classes}{ -\code{\link[connectapi:Content]{connectapi::Content}} -> \code{\link[connectapi:Variant]{connectapi::Variant}} -> \code{VariantTask} +\code{\link[connectapi:Content]{Content}} -> \code{\link[connectapi:Variant]{Variant}} -> \code{VariantTask} } \section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{task}}{The task.} + \if{html}{\out{
}} + \describe{ + \item{\code{task}}{The task.} -\item{\code{data}}{The variant data.} -} -\if{html}{\out{
}} + \item{\code{data}}{The variant data.} + } + \if{html}{\out{
}} } \section{Methods}{ \subsection{Public methods}{ -\itemize{ -\item \href{#method-VariantTask-new}{\code{VariantTask$new()}} -\item \href{#method-VariantTask-get_task}{\code{VariantTask$get_task()}} -\item \href{#method-VariantTask-add_data}{\code{VariantTask$add_data()}} -\item \href{#method-VariantTask-get_data}{\code{VariantTask$get_data()}} -\item \href{#method-VariantTask-print}{\code{VariantTask$print()}} -\item \href{#method-VariantTask-clone}{\code{VariantTask$clone()}} -} -} -\if{html}{\out{ -
Inherited methods + \itemize{ + \item \href{#method-VariantTask-initialize}{\code{VariantTask$new()}} + \item \href{#method-VariantTask-get_task}{\code{VariantTask$get_task()}} + \item \href{#method-VariantTask-add_data}{\code{VariantTask$add_data()}} + \item \href{#method-VariantTask-get_data}{\code{VariantTask$get_data()}} + \item \href{#method-VariantTask-print}{\code{VariantTask$print()}} + \item \href{#method-VariantTask-clone}{\code{VariantTask$clone()}} + } +} +\if{html}{\out{
Inherited methods -
-}} +
}} \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-VariantTask-new}{}}} -\subsection{Method \code{new()}}{ -Initialize this variant task. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantTask$new(connect, content, key, task)}\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-VariantTask-initialize}{}}} +\subsection{\code{VariantTask$new()}}{ + Initialize this variant task. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantTask$new(connect, content, key, task)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{connect}}{The \code{Connect} instance.} + \item{\code{content}}{The \code{Content} instance.} + \item{\code{key}}{The variant key.} + \item{\code{task}}{The task data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{connect}}{The \code{Connect} instance.} - -\item{\code{content}}{The \code{Content} instance.} - -\item{\code{key}}{The variant key.} - -\item{\code{task}}{The task data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantTask-get_task}{}}} -\subsection{Method \code{get_task()}}{ -Return the underlying task. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantTask$get_task()}\if{html}{\out{
}} +\subsection{\code{VariantTask$get_task()}}{ + Return the underlying task. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantTask$get_task()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantTask-add_data}{}}} -\subsection{Method \code{add_data()}}{ -Set the data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantTask$add_data(data)}\if{html}{\out{
}} +\subsection{\code{VariantTask$add_data()}}{ + Set the data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantTask$add_data(data)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{data}}{The data.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{data}}{The data.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantTask-get_data}{}}} -\subsection{Method \code{get_data()}}{ -Get the data. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantTask$get_data()}\if{html}{\out{
}} +\subsection{\code{VariantTask$get_data()}}{ + Get the data. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantTask$get_data()} + \if{html}{\out{
}} + } } -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantTask-print}{}}} -\subsection{Method \code{print()}}{ -Print this object. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantTask$print(...)}\if{html}{\out{
}} +\subsection{\code{VariantTask$print()}}{ + Print this object. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantTask$print(...)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{...}}{Unused.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{Unused.} -} -\if{html}{\out{
}} -} -} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-VariantTask-clone}{}}} -\subsection{Method \code{clone()}}{ -The objects of this class are cloneable with this method. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{VariantTask$clone(deep = FALSE)}\if{html}{\out{
}} +\subsection{\code{VariantTask$clone()}}{ + The objects of this class are cloneable with this method. + \subsection{Usage}{ + \if{html}{\out{
}} + \preformatted{VariantTask$clone(deep = FALSE)} + \if{html}{\out{
}} + } + \subsection{Arguments}{ + \if{html}{\out{
}} + \describe{ + \item{\code{deep}}{Whether to make a deep clone.} + } + \if{html}{\out{
}} + } } -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{deep}}{Whether to make a deep clone.} -} -\if{html}{\out{
}} -} -} } diff --git a/man/audit_access_open.Rd b/man/audit_access_open.Rd index 42485675..513a66b0 100644 --- a/man/audit_access_open.Rd +++ b/man/audit_access_open.Rd @@ -17,9 +17,9 @@ apps whose access control is set to "All logged in users"} \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} } \seealso{ -Other audit functions: -\code{\link{audit_r_versions}()}, -\code{\link{audit_runas}()}, -\code{\link{vanity_is_available}()} +Other audit functions: +\code{\link[=audit_r_versions]{audit_r_versions()}}, +\code{\link[=audit_runas]{audit_runas()}}, +\code{\link[=vanity_is_available]{vanity_is_available()}} } \concept{audit functions} diff --git a/man/audit_r_versions.Rd b/man/audit_r_versions.Rd index 71c2f5fc..1143b4ea 100644 --- a/man/audit_r_versions.Rd +++ b/man/audit_r_versions.Rd @@ -17,9 +17,9 @@ aggregate. \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} } \seealso{ -Other audit functions: -\code{\link{audit_access_open}()}, -\code{\link{audit_runas}()}, -\code{\link{vanity_is_available}()} +Other audit functions: +\code{\link[=audit_access_open]{audit_access_open()}}, +\code{\link[=audit_runas]{audit_runas()}}, +\code{\link[=vanity_is_available]{vanity_is_available()}} } \concept{audit functions} diff --git a/man/audit_runas.Rd b/man/audit_runas.Rd index dd686229..b81d27b7 100644 --- a/man/audit_runas.Rd +++ b/man/audit_runas.Rd @@ -17,9 +17,9 @@ is not the default \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} } \seealso{ -Other audit functions: -\code{\link{audit_access_open}()}, -\code{\link{audit_r_versions}()}, -\code{\link{vanity_is_available}()} +Other audit functions: +\code{\link[=audit_access_open]{audit_access_open()}}, +\code{\link[=audit_r_versions]{audit_r_versions()}}, +\code{\link[=vanity_is_available]{vanity_is_available()}} } \concept{audit functions} diff --git a/man/bundle_dir.Rd b/man/bundle_dir.Rd index 47d7c865..6ade1f74 100644 --- a/man/bundle_dir.Rd +++ b/man/bundle_dir.Rd @@ -27,11 +27,11 @@ bundle_dir(system.file("tests/testthat/examples/shiny/", package = "connectapi") \dontshow{\}) # examplesIf} } \seealso{ -Other deployment functions: -\code{\link{bundle_path}()}, -\code{\link{bundle_static}()}, -\code{\link{deploy}()}, -\code{\link{download_bundle}()}, -\code{\link{poll_task}()} +Other deployment functions: +\code{\link[=bundle_path]{bundle_path()}}, +\code{\link[=bundle_static]{bundle_static()}}, +\code{\link[=deploy]{deploy()}}, +\code{\link[=download_bundle]{download_bundle()}}, +\code{\link[=poll_task]{poll_task()}} } \concept{deployment functions} diff --git a/man/bundle_path.Rd b/man/bundle_path.Rd index 586e0d11..bffe7b96 100644 --- a/man/bundle_path.Rd +++ b/man/bundle_path.Rd @@ -22,11 +22,11 @@ bundle_path(system.file("tests/testthat/examples/static.tar.gz", package = "conn \dontshow{\}) # examplesIf} } \seealso{ -Other deployment functions: -\code{\link{bundle_dir}()}, -\code{\link{bundle_static}()}, -\code{\link{deploy}()}, -\code{\link{download_bundle}()}, -\code{\link{poll_task}()} +Other deployment functions: +\code{\link[=bundle_dir]{bundle_dir()}}, +\code{\link[=bundle_static]{bundle_static()}}, +\code{\link[=deploy]{deploy()}}, +\code{\link[=download_bundle]{download_bundle()}}, +\code{\link[=poll_task]{poll_task()}} } \concept{deployment functions} diff --git a/man/bundle_static.Rd b/man/bundle_static.Rd index 0a755959..0ca9a521 100644 --- a/man/bundle_static.Rd +++ b/man/bundle_static.Rd @@ -32,11 +32,11 @@ bundle_static(system.file("logo.png", package = "connectapi")) \dontshow{\}) # examplesIf} } \seealso{ -Other deployment functions: -\code{\link{bundle_dir}()}, -\code{\link{bundle_path}()}, -\code{\link{deploy}()}, -\code{\link{download_bundle}()}, -\code{\link{poll_task}()} +Other deployment functions: +\code{\link[=bundle_dir]{bundle_dir()}}, +\code{\link[=bundle_path]{bundle_path()}}, +\code{\link[=deploy]{deploy()}}, +\code{\link[=download_bundle]{download_bundle()}}, +\code{\link[=poll_task]{poll_task()}} } \concept{deployment functions} diff --git a/man/connectapi-package.Rd b/man/connectapi-package.Rd index ea685ca8..8e8dce51 100644 --- a/man/connectapi-package.Rd +++ b/man/connectapi-package.Rd @@ -5,11 +5,11 @@ \alias{connectapi-package} \title{connectapi: Utilities for Interacting with the 'Posit Connect' Server API} \description{ -\if{html}{\figure{logo.png}{options: style='float: right' alt='logo' width='120'}} +\if{html}{\figure{logo.svg}{options: style='float: right' alt='logo' width='120'}} Provides a helpful 'R6' class and methods for interacting with the 'Posit Connect' Server API along with some meaningful utility functions for regular tasks. API documentation varies by 'Posit Connect' installation and version, but the latest documentation is also hosted publicly at \url{https://docs.posit.co/connect/api/}. -\if{html}{\figure{logo.png}{options: style='float: right' alt='logo' width='120'}} +\if{html}{\figure{logo.svg}{options: style='float: right' alt='logo' width='120'}} Provides a helpful 'R6' class and methods for interacting with the 'Posit Connect' Server API along with some meaningful utility functions for regular tasks. API documentation varies by 'Posit Connect' installation and version, but the latest documentation is also hosted publicly at \url{https://docs.posit.co/connect/api/}. } @@ -21,20 +21,13 @@ Useful links: \item Report bugs at \url{https://github.com/posit-dev/connectapi/issues} } - -Useful links: -\itemize{ - \item \url{https://posit-dev.github.io/connectapi/} - \item \url{https://github.com/posit-dev/connectapi} - \item Report bugs at \url{https://github.com/posit-dev/connectapi/issues} -} - } \author{ \strong{Maintainer}: Kara Woo \email{kara.woo@posit.co} Authors: \itemize{ + \item Kara Woo \email{kara.woo@posit.co} \item Toph Allen \email{toph@posit.co} \item Neal Richardson \item Sean Lopp diff --git a/man/content_delete.Rd b/man/content_delete.Rd index 93b03f72..3aeee6e8 100644 --- a/man/content_delete.Rd +++ b/man/content_delete.Rd @@ -19,33 +19,33 @@ Delete a content item. WARNING: This action deletes all history, configuration, logs, and resources about a content item. It \emph{cannot} be undone. } \seealso{ -Other content functions: -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/content_item.Rd b/man/content_item.Rd index f4f8e3fe..9060ff0c 100644 --- a/man/content_item.Rd +++ b/man/content_item.Rd @@ -25,33 +25,33 @@ connect() \%>\% } } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/content_title.Rd b/man/content_title.Rd index 7d7b6d68..543018d2 100644 --- a/man/content_title.Rd +++ b/man/content_title.Rd @@ -21,33 +21,33 @@ Return content title for a piece of content. If the content is missing (deleted) or not visible, then returns the \code{default} } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/content_update.Rd b/man/content_update.Rd index 243d3cdf..c3111a65 100644 --- a/man/content_update.Rd +++ b/man/content_update.Rd @@ -41,33 +41,33 @@ etc. } } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/create_integration.Rd b/man/create_integration.Rd index f7f72a07..52b30dca 100644 --- a/man/create_integration.Rd +++ b/man/create_integration.Rd @@ -71,12 +71,12 @@ custom_integration <- create_integration( \code{\link[=get_integrations]{get_integrations()}}, \code{\link[=get_integration]{get_integration()}}, \code{\link[=update_integration]{update_integration()}}, \code{\link[=delete_integration]{delete_integration()}} -Other oauth integration functions: -\code{\link{delete_integration}()}, -\code{\link{get_associations}()}, -\code{\link{get_integration}()}, -\code{\link{get_integrations}()}, -\code{\link{set_integrations}()}, -\code{\link{update_integration}()} +Other oauth integration functions: +\code{\link[=delete_integration]{delete_integration()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_integration]{get_integration()}}, +\code{\link[=get_integrations]{get_integrations()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=update_integration]{update_integration()}} } \concept{oauth integration functions} diff --git a/man/create_random_name.Rd b/man/create_random_name.Rd index ff92e787..924444fa 100644 --- a/man/create_random_name.Rd +++ b/man/create_random_name.Rd @@ -18,33 +18,33 @@ Creates a random name from the LETTERS dataset \seealso{ connectapi::verify_content_name -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/dashboard_url.Rd b/man/dashboard_url.Rd index bc876a78..9cb0efda 100644 --- a/man/dashboard_url.Rd +++ b/man/dashboard_url.Rd @@ -18,33 +18,33 @@ character The dashboard URL for the content provided Returns the URL for the content dashboard (opened to the selected pane). } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/delete_integration.Rd b/man/delete_integration.Rd index 416e6384..a4cd6a43 100644 --- a/man/delete_integration.Rd +++ b/man/delete_integration.Rd @@ -39,12 +39,12 @@ delete_integration(integration) \code{\link[=get_integrations]{get_integrations()}}, \code{\link[=get_integration]{get_integration()}}, \code{\link[=create_integration]{create_integration()}}, \code{\link[=update_integration]{update_integration()}} -Other oauth integration functions: -\code{\link{create_integration}()}, -\code{\link{get_associations}()}, -\code{\link{get_integration}()}, -\code{\link{get_integrations}()}, -\code{\link{set_integrations}()}, -\code{\link{update_integration}()} +Other oauth integration functions: +\code{\link[=create_integration]{create_integration()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_integration]{get_integration()}}, +\code{\link[=get_integrations]{get_integrations()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=update_integration]{update_integration()}} } \concept{oauth integration functions} diff --git a/man/delete_runtime_cache.Rd b/man/delete_runtime_cache.Rd index 8c658d07..6baf919d 100644 --- a/man/delete_runtime_cache.Rd +++ b/man/delete_runtime_cache.Rd @@ -44,7 +44,7 @@ poll_task(task) \seealso{ \code{\link[=get_runtime_caches]{get_runtime_caches()}} -Other server management functions: -\code{\link{get_runtime_caches}()} +Other server management functions: +\code{\link[=get_runtime_caches]{get_runtime_caches()}} } \concept{server management functions} diff --git a/man/delete_thumbnail.Rd b/man/delete_thumbnail.Rd index 5e58a628..32be1f3f 100644 --- a/man/delete_thumbnail.Rd +++ b/man/delete_thumbnail.Rd @@ -24,39 +24,39 @@ thumbnail <- get_thumbnail(item) } \seealso{ -Other thumbnail functions: -\code{\link{get_thumbnail}()}, -\code{\link{has_thumbnail}()}, -\code{\link{set_thumbnail}()} +Other thumbnail functions: +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{thumbnail functions} diff --git a/man/delete_vanity_url.Rd b/man/delete_vanity_url.Rd index 6d7d8b23..064e60ca 100644 --- a/man/delete_vanity_url.Rd +++ b/man/delete_vanity_url.Rd @@ -13,33 +13,33 @@ delete_vanity_url(content) Delete the vanity URL for a piece of content. } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/deploy.Rd b/man/deploy.Rd index 977e992e..96830087 100644 --- a/man/deploy.Rd +++ b/man/deploy.Rd @@ -70,11 +70,11 @@ deploy(client, bnd) \seealso{ connectapi::content_update -Other deployment functions: -\code{\link{bundle_dir}()}, -\code{\link{bundle_path}()}, -\code{\link{bundle_static}()}, -\code{\link{download_bundle}()}, -\code{\link{poll_task}()} +Other deployment functions: +\code{\link[=bundle_dir]{bundle_dir()}}, +\code{\link[=bundle_path]{bundle_path()}}, +\code{\link[=bundle_static]{bundle_static()}}, +\code{\link[=download_bundle]{download_bundle()}}, +\code{\link[=poll_task]{poll_task()}} } \concept{deployment functions} diff --git a/man/deploy_repo.Rd b/man/deploy_repo.Rd index 741c6e7f..c4e06cd2 100644 --- a/man/deploy_repo.Rd +++ b/man/deploy_repo.Rd @@ -56,33 +56,33 @@ repository, if any are present \seealso{ connectapi::poll_task, connectapi::repo_check_branches, connectapi::repo_check_manifest_dirs -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/download_bundle.Rd b/man/download_bundle.Rd index e6a747b4..a043540f 100644 --- a/man/download_bundle.Rd +++ b/man/download_bundle.Rd @@ -28,11 +28,11 @@ Bundle A bundle object Downloads a Content item's active bundle, or (optionally) one of its other bundles. } \seealso{ -Other deployment functions: -\code{\link{bundle_dir}()}, -\code{\link{bundle_path}()}, -\code{\link{bundle_static}()}, -\code{\link{deploy}()}, -\code{\link{poll_task}()} +Other deployment functions: +\code{\link[=bundle_dir]{bundle_dir()}}, +\code{\link[=bundle_path]{bundle_path()}}, +\code{\link[=bundle_static]{bundle_static()}}, +\code{\link[=deploy]{deploy()}}, +\code{\link[=poll_task]{poll_task()}} } \concept{deployment functions} diff --git a/man/environment.Rd b/man/environment.Rd index 5b3ae240..eb2f392e 100644 --- a/man/environment.Rd +++ b/man/environment.Rd @@ -38,33 +38,33 @@ allows removing named / listed variables quickly variables not specified) } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/get_associations.Rd b/man/get_associations.Rd index f3c905e2..df10727b 100644 --- a/man/get_associations.Rd +++ b/man/get_associations.Rd @@ -47,42 +47,42 @@ my_app_integrations <- purrr::map( \seealso{ \code{\link[=set_integrations]{set_integrations()}}, \code{\link[=get_integrations]{get_integrations()}}, \code{\link[=get_integration]{get_integration()}} -Other oauth integration functions: -\code{\link{create_integration}()}, -\code{\link{delete_integration}()}, -\code{\link{get_integration}()}, -\code{\link{get_integrations}()}, -\code{\link{set_integrations}()}, -\code{\link{update_integration}()} +Other oauth integration functions: +\code{\link[=create_integration]{create_integration()}}, +\code{\link[=delete_integration]{delete_integration()}}, +\code{\link[=get_integration]{get_integration()}}, +\code{\link[=get_integrations]{get_integrations()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=update_integration]{update_integration()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{oauth integration functions} diff --git a/man/get_bundles.Rd b/man/get_bundles.Rd index 6ac39d74..fdb952ab 100644 --- a/man/get_bundles.Rd +++ b/man/get_bundles.Rd @@ -18,62 +18,33 @@ delete_bundle(content, bundle_id) Lists bundles for a content item } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} - -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, -\code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, -\code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/get_content_packages.Rd b/man/get_content_packages.Rd index 389582d7..2f7988dc 100644 --- a/man/get_content_packages.Rd +++ b/man/get_content_packages.Rd @@ -30,7 +30,7 @@ packages <- get_content_packages(item) } \seealso{ -Other packages functions: -\code{\link{get_packages}()} +Other packages functions: +\code{\link[=get_packages]{get_packages()}} } \concept{packages functions} diff --git a/man/get_group_content.Rd b/man/get_group_content.Rd index dd2d7b33..9baed9cb 100644 --- a/man/get_group_content.Rd +++ b/man/get_group_content.Rd @@ -47,8 +47,8 @@ get_group_content(client, groups$guid) } \seealso{ -Other groups functions: -\code{\link{get_group_members}()}, -\code{\link{get_groups}()} +Other groups functions: +\code{\link[=get_group_members]{get_group_members()}}, +\code{\link[=get_groups]{get_groups()}} } \concept{groups functions} diff --git a/man/get_group_members.Rd b/man/get_group_members.Rd index 8b8e8586..9442cee6 100644 --- a/man/get_group_members.Rd +++ b/man/get_group_members.Rd @@ -55,8 +55,8 @@ get_group_members(client, guid = group_guid) } \seealso{ -Other groups functions: -\code{\link{get_group_content}()}, -\code{\link{get_groups}()} +Other groups functions: +\code{\link[=get_group_content]{get_group_content()}}, +\code{\link[=get_groups]{get_groups()}} } \concept{groups functions} diff --git a/man/get_groups.Rd b/man/get_groups.Rd index f5ec64f4..07e135fd 100644 --- a/man/get_groups.Rd +++ b/man/get_groups.Rd @@ -45,8 +45,8 @@ get_groups(client, limit = Inf) } \seealso{ -Other groups functions: -\code{\link{get_group_content}()}, -\code{\link{get_group_members}()} +Other groups functions: +\code{\link[=get_group_content]{get_group_content()}}, +\code{\link[=get_group_members]{get_group_members()}} } \concept{groups functions} diff --git a/man/get_integration.Rd b/man/get_integration.Rd index b7a8055b..e47af365 100644 --- a/man/get_integration.Rd +++ b/man/get_integration.Rd @@ -45,12 +45,12 @@ x <- get_integration(client, guid) \seealso{ \code{\link[=get_integrations]{get_integrations()}}, \code{\link[=get_associations]{get_associations()}}, \code{\link[=set_integrations]{set_integrations()}} -Other oauth integration functions: -\code{\link{create_integration}()}, -\code{\link{delete_integration}()}, -\code{\link{get_associations}()}, -\code{\link{get_integrations}()}, -\code{\link{set_integrations}()}, -\code{\link{update_integration}()} +Other oauth integration functions: +\code{\link[=create_integration]{create_integration()}}, +\code{\link[=delete_integration]{delete_integration()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_integrations]{get_integrations()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=update_integration]{update_integration()}} } \concept{oauth integration functions} diff --git a/man/get_integrations.Rd b/man/get_integrations.Rd index 25b354a0..37089a56 100644 --- a/man/get_integrations.Rd +++ b/man/get_integrations.Rd @@ -65,12 +65,12 @@ snowflake_integrations <- purrr::keep(content_integrations, ~ .x$template == "sn \seealso{ \code{\link[=get_integration]{get_integration()}}, \code{\link[=set_integrations]{set_integrations()}}, \code{\link[=get_associations]{get_associations()}} -Other oauth integration functions: -\code{\link{create_integration}()}, -\code{\link{delete_integration}()}, -\code{\link{get_associations}()}, -\code{\link{get_integration}()}, -\code{\link{set_integrations}()}, -\code{\link{update_integration}()} +Other oauth integration functions: +\code{\link[=create_integration]{create_integration()}}, +\code{\link[=delete_integration]{delete_integration()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_integration]{get_integration()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=update_integration]{update_integration()}} } \concept{oauth integration functions} diff --git a/man/get_jobs.Rd b/man/get_jobs.Rd index 3d8279c4..fce72f8e 100644 --- a/man/get_jobs.Rd +++ b/man/get_jobs.Rd @@ -92,38 +92,38 @@ job_list <- get_job_list(item) } \seealso{ -Other job functions: -\code{\link{get_log}()}, -\code{\link{terminate_jobs}()} +Other job functions: +\code{\link[=get_log]{get_log()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{job functions} diff --git a/man/get_log.Rd b/man/get_log.Rd index 7a1cc584..398ae0b5 100644 --- a/man/get_log.Rd +++ b/man/get_log.Rd @@ -39,38 +39,38 @@ log <- get_log(jobs[[1]]) } \seealso{ -Other job functions: -\code{\link{get_jobs}()}, -\code{\link{terminate_jobs}()} +Other job functions: +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{job functions} diff --git a/man/get_packages.Rd b/man/get_packages.Rd index a7435c8a..66f3bcba 100644 --- a/man/get_packages.Rd +++ b/man/get_packages.Rd @@ -45,7 +45,7 @@ packages <- get_packages(client) } \seealso{ -Other packages functions: -\code{\link{get_content_packages}()} +Other packages functions: +\code{\link[=get_content_packages]{get_content_packages()}} } \concept{packages functions} diff --git a/man/get_runtime_caches.Rd b/man/get_runtime_caches.Rd index 91a46ab3..86b42a95 100644 --- a/man/get_runtime_caches.Rd +++ b/man/get_runtime_caches.Rd @@ -28,7 +28,7 @@ get_runtime_caches(client) \seealso{ \code{\link[=delete_runtime_cache]{delete_runtime_cache()}} -Other server management functions: -\code{\link{delete_runtime_cache}()} +Other server management functions: +\code{\link[=delete_runtime_cache]{delete_runtime_cache()}} } \concept{server management functions} diff --git a/man/get_thumbnail.Rd b/man/get_thumbnail.Rd index fdd952ca..e9f232e9 100644 --- a/man/get_thumbnail.Rd +++ b/man/get_thumbnail.Rd @@ -29,39 +29,39 @@ thumbnail <- get_thumbnail(item) } \seealso{ -Other thumbnail functions: -\code{\link{delete_thumbnail}()}, -\code{\link{has_thumbnail}()}, -\code{\link{set_thumbnail}()} +Other thumbnail functions: +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{thumbnail functions} diff --git a/man/get_timezones.Rd b/man/get_timezones.Rd index bf2cc59a..03be2122 100644 --- a/man/get_timezones.Rd +++ b/man/get_timezones.Rd @@ -16,8 +16,8 @@ A TimeZone vector to be used for setting time zones Get the available timezones from the server. } \seealso{ -Other schedule functions: -\code{\link{get_variant_schedule}()}, -\code{\link{set_schedule}()} +Other schedule functions: +\code{\link[=get_variant_schedule]{get_variant_schedule()}}, +\code{\link[=set_schedule]{set_schedule()}} } \concept{schedule functions} diff --git a/man/get_vanity_url.Rd b/man/get_vanity_url.Rd index 48f55be5..df6d2e6e 100644 --- a/man/get_vanity_url.Rd +++ b/man/get_vanity_url.Rd @@ -16,33 +16,33 @@ A character string (or NULL if not defined) Get the vanity URL for a piece of content. } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/get_variant_schedule.Rd b/man/get_variant_schedule.Rd index eb6ec3cd..9bb4f7e2 100644 --- a/man/get_variant_schedule.Rd +++ b/man/get_variant_schedule.Rd @@ -16,8 +16,8 @@ A VariantSchedule object \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} Gets the schedule associated with a Variant. } \seealso{ -Other schedule functions: -\code{\link{get_timezones}()}, -\code{\link{set_schedule}()} +Other schedule functions: +\code{\link[=get_timezones]{get_timezones()}}, +\code{\link[=set_schedule]{set_schedule()}} } \concept{schedule functions} diff --git a/man/git.Rd b/man/git.Rd index 749f4f18..3fe97af8 100644 --- a/man/git.Rd +++ b/man/git.Rd @@ -41,33 +41,33 @@ deployment using \code{deploy_repo()} \seealso{ connectapi::deploy_repo -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/has_thumbnail.Rd b/man/has_thumbnail.Rd index 7e706d2b..e9c36f19 100644 --- a/man/has_thumbnail.Rd +++ b/man/has_thumbnail.Rd @@ -25,39 +25,39 @@ has_thumbnail(item) } \seealso{ -Other thumbnail functions: -\code{\link{delete_thumbnail}()}, -\code{\link{get_thumbnail}()}, -\code{\link{set_thumbnail}()} +Other thumbnail functions: +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{lock_content}()}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{thumbnail functions} diff --git a/man/lock_content.Rd b/man/lock_content.Rd index 51fd6479..43c6cfae 100644 --- a/man/lock_content.Rd +++ b/man/lock_content.Rd @@ -43,33 +43,33 @@ content <- unlock_content(content) } } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/permissions.Rd b/man/permissions.Rd index 46a5f161..9f8a2873 100644 --- a/man/permissions.Rd +++ b/man/permissions.Rd @@ -63,33 +63,33 @@ NOTE: by default, the owner is injected with an "NA_character_" permission id. This makes it easier to find / isolate this record. } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/poll_task.Rd b/man/poll_task.Rd index 2e19fe11..9fd153ab 100644 --- a/man/poll_task.Rd +++ b/man/poll_task.Rd @@ -25,11 +25,11 @@ available to retrieve the results. For a simple way to silence messages, set \code{callback = NULL} } \seealso{ -Other deployment functions: -\code{\link{bundle_dir}()}, -\code{\link{bundle_path}()}, -\code{\link{bundle_static}()}, -\code{\link{deploy}()}, -\code{\link{download_bundle}()} +Other deployment functions: +\code{\link[=bundle_dir]{bundle_dir()}}, +\code{\link[=bundle_path]{bundle_path()}}, +\code{\link[=bundle_static]{bundle_static()}}, +\code{\link[=deploy]{deploy()}}, +\code{\link[=download_bundle]{download_bundle()}} } \concept{deployment functions} diff --git a/man/search_content.Rd b/man/search_content.Rd index 4f056571..01837bb3 100644 --- a/man/search_content.Rd +++ b/man/search_content.Rd @@ -58,33 +58,33 @@ purrr::map(shiny_content, lock_content) } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/set_integrations.Rd b/man/set_integrations.Rd index 13246651..04dbc833 100644 --- a/man/set_integrations.Rd +++ b/man/set_integrations.Rd @@ -47,42 +47,42 @@ set_integrations(content, NULL) \seealso{ \code{\link[=get_integrations]{get_integrations()}}, \code{\link[=get_integration]{get_integration()}}, \code{\link[=get_associations]{get_associations()}}, \code{\link[=content_item]{content_item()}} -Other oauth integration functions: -\code{\link{create_integration}()}, -\code{\link{delete_integration}()}, -\code{\link{get_associations}()}, -\code{\link{get_integration}()}, -\code{\link{get_integrations}()}, -\code{\link{update_integration}()} +Other oauth integration functions: +\code{\link[=create_integration]{create_integration()}}, +\code{\link[=delete_integration]{delete_integration()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_integration]{get_integration()}}, +\code{\link[=get_integrations]{get_integrations()}}, +\code{\link[=update_integration]{update_integration()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{oauth integration functions} diff --git a/man/set_run_as.Rd b/man/set_run_as.Rd index c1f2cca9..b8ce1837 100644 --- a/man/set_run_as.Rd +++ b/man/set_run_as.Rd @@ -36,33 +36,33 @@ To "read" the current RunAs user, use the \code{Content} object or \code{get_con \seealso{ connectapi::content_update -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/set_schedule.Rd b/man/set_schedule.Rd index 6a68fc75..9dd40c45 100644 --- a/man/set_schedule.Rd +++ b/man/set_schedule.Rd @@ -160,8 +160,8 @@ directly, and so can be a little clunky. Using the \verb{set_schedule_*()} is ge recommended. } \seealso{ -Other schedule functions: -\code{\link{get_timezones}()}, -\code{\link{get_variant_schedule}()} +Other schedule functions: +\code{\link[=get_timezones]{get_timezones()}}, +\code{\link[=get_variant_schedule]{get_variant_schedule()}} } \concept{schedule functions} diff --git a/man/set_thumbnail.Rd b/man/set_thumbnail.Rd index 7f149525..0b776de3 100644 --- a/man/set_thumbnail.Rd +++ b/man/set_thumbnail.Rd @@ -28,39 +28,39 @@ set_thumbnail(item, "resources/image.png") } \seealso{ -Other thumbnail functions: -\code{\link{delete_thumbnail}()}, -\code{\link{get_thumbnail}()}, -\code{\link{has_thumbnail}()} +Other thumbnail functions: +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=has_thumbnail]{has_thumbnail()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{thumbnail functions} diff --git a/man/set_vanity_url.Rd b/man/set_vanity_url.Rd index 3192ccc7..32f8bdfd 100644 --- a/man/set_vanity_url.Rd +++ b/man/set_vanity_url.Rd @@ -29,33 +29,33 @@ connect() \%>\% } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/swap_vanity_urls.Rd b/man/swap_vanity_urls.Rd index a2bdbc04..ad2b2888 100644 --- a/man/swap_vanity_urls.Rd +++ b/man/swap_vanity_urls.Rd @@ -18,33 +18,33 @@ A list of the new vanity URLs for \code{content_a} and \code{content_b} Swap the vanity URLs of two pieces of content. } \seealso{ -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{terminate_jobs}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} diff --git a/man/terminate_jobs.Rd b/man/terminate_jobs.Rd index 1a185623..1095f425 100644 --- a/man/terminate_jobs.Rd +++ b/man/terminate_jobs.Rd @@ -41,38 +41,38 @@ result <- terminate_jobs(item) } \seealso{ -Other job functions: -\code{\link{get_jobs}()}, -\code{\link{get_log}()} +Other job functions: +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}} -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{verify_content_name}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=verify_content_name]{verify_content_name()}} } \concept{content functions} \concept{job functions} diff --git a/man/update_integration.Rd b/man/update_integration.Rd index a4ca7aaa..c7072bf2 100644 --- a/man/update_integration.Rd +++ b/man/update_integration.Rd @@ -68,12 +68,12 @@ updated_integration <- update_integration( \code{\link[=get_integrations]{get_integrations()}}, \code{\link[=get_integration]{get_integration()}}, \code{\link[=create_integration]{create_integration()}}, \code{\link[=delete_integration]{delete_integration()}} -Other oauth integration functions: -\code{\link{create_integration}()}, -\code{\link{delete_integration}()}, -\code{\link{get_associations}()}, -\code{\link{get_integration}()}, -\code{\link{get_integrations}()}, -\code{\link{set_integrations}()} +Other oauth integration functions: +\code{\link[=create_integration]{create_integration()}}, +\code{\link[=delete_integration]{delete_integration()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_integration]{get_integration()}}, +\code{\link[=get_integrations]{get_integrations()}}, +\code{\link[=set_integrations]{set_integrations()}} } \concept{oauth integration functions} diff --git a/man/vanity_is_available.Rd b/man/vanity_is_available.Rd index 3120e0c8..86c1ed87 100644 --- a/man/vanity_is_available.Rd +++ b/man/vanity_is_available.Rd @@ -18,9 +18,9 @@ logical indicating if the vanity URL is available. \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} } \seealso{ -Other audit functions: -\code{\link{audit_access_open}()}, -\code{\link{audit_r_versions}()}, -\code{\link{audit_runas}()} +Other audit functions: +\code{\link[=audit_access_open]{audit_access_open()}}, +\code{\link[=audit_r_versions]{audit_r_versions()}}, +\code{\link[=audit_runas]{audit_runas()}} } \concept{audit functions} diff --git a/man/variant.Rd b/man/variant.Rd index 9eb15427..0b62cb5f 100644 --- a/man/variant.Rd +++ b/man/variant.Rd @@ -28,13 +28,7 @@ get_variant_default(content) } } \seealso{ -Other variant functions: -\code{\link{get_variant_renderings}()} - -Other variant functions: -\code{\link{get_variant_renderings}()} - -Other variant functions: -\code{\link{get_variant_renderings}()} +Other variant functions: +\code{\link[=get_variant_renderings]{get_variant_renderings()}} } \concept{variant functions} diff --git a/man/variant_render.Rd b/man/variant_render.Rd index d9e6d1a2..19ee2d42 100644 --- a/man/variant_render.Rd +++ b/man/variant_render.Rd @@ -23,7 +23,7 @@ or execute a variant on demand } } \seealso{ -Other variant functions: -\code{\link{get_variants}()} +Other variant functions: +\code{\link[=get_variants]{get_variants()}} } \concept{variant functions} diff --git a/man/verify_content_name.Rd b/man/verify_content_name.Rd index 530f9276..5e96d151 100644 --- a/man/verify_content_name.Rd +++ b/man/verify_content_name.Rd @@ -21,33 +21,33 @@ and underscores \seealso{ connectapi::create_random_name -Other content functions: -\code{\link{content_delete}()}, -\code{\link{content_item}()}, -\code{\link{content_title}()}, -\code{\link{content_update}()}, -\code{\link{create_random_name}()}, -\code{\link{dashboard_url}()}, -\code{\link{delete_thumbnail}()}, -\code{\link{delete_vanity_url}()}, -\code{\link{deploy_repo}()}, -\code{\link{get_associations}()}, -\code{\link{get_bundles}()}, -\code{\link{get_environment}()}, -\code{\link{get_jobs}()}, -\code{\link{get_log}()}, -\code{\link{get_thumbnail}()}, -\code{\link{get_vanity_url}()}, +Other content functions: +\code{\link[=content_delete]{content_delete()}}, +\code{\link[=content_item]{content_item()}}, +\code{\link[=content_title]{content_title()}}, +\code{\link[=content_update]{content_update()}}, +\code{\link[=create_random_name]{create_random_name()}}, +\code{\link[=dashboard_url]{dashboard_url()}}, +\code{\link[=delete_thumbnail]{delete_thumbnail()}}, +\code{\link[=delete_vanity_url]{delete_vanity_url()}}, +\code{\link[=deploy_repo]{deploy_repo()}}, +\code{\link[=get_associations]{get_associations()}}, +\code{\link[=get_bundles]{get_bundles()}}, +\code{\link[=get_environment]{get_environment()}}, +\code{\link[=get_jobs]{get_jobs()}}, +\code{\link[=get_log]{get_log()}}, +\code{\link[=get_thumbnail]{get_thumbnail()}}, +\code{\link[=get_vanity_url]{get_vanity_url()}}, \code{\link{git}}, -\code{\link{has_thumbnail}()}, -\code{\link{lock_content}()}, +\code{\link[=has_thumbnail]{has_thumbnail()}}, +\code{\link[=lock_content]{lock_content()}}, \code{\link{permissions}}, -\code{\link{search_content}()}, -\code{\link{set_integrations}()}, -\code{\link{set_run_as}()}, -\code{\link{set_thumbnail}()}, -\code{\link{set_vanity_url}()}, -\code{\link{swap_vanity_urls}()}, -\code{\link{terminate_jobs}()} +\code{\link[=search_content]{search_content()}}, +\code{\link[=set_integrations]{set_integrations()}}, +\code{\link[=set_run_as]{set_run_as()}}, +\code{\link[=set_thumbnail]{set_thumbnail()}}, +\code{\link[=set_vanity_url]{set_vanity_url()}}, +\code{\link[=swap_vanity_urls]{swap_vanity_urls()}}, +\code{\link[=terminate_jobs]{terminate_jobs()}} } \concept{content functions} From aa13f7ba9c181a658fccf5348bc5529e4d858a5e Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Tue, 5 May 2026 10:14:42 -0700 Subject: [PATCH 11/11] simplify datetime parsing --- R/parse.R | 42 +++++------------------------------------- 1 file changed, 5 insertions(+), 37 deletions(-) diff --git a/R/parse.R b/R/parse.R index dd428fb4..20380d23 100644 --- a/R/parse.R +++ b/R/parse.R @@ -158,41 +158,9 @@ parse_connectapi <- function(data) { # - "2020-01-01T00:02:03-01:00" # nolint end parse_connect_rfc3339 <- function(x) { - if (length(x) == 0) return(.POSIXct(double(), tz = Sys.timezone())) - - na_mask <- is.na(x) - if (all(na_mask)) { - return(.POSIXct(rep(NA_real_, length(x)), tz = Sys.timezone())) - } - - result <- rep(NA_real_, length(x)) - xn <- x[!na_mask] - - # The date portion is always at fixed positions: YYYY-MM-DDTHH:MM:SS - dates <- as.Date(substr(xn, 1, 10)) - hour <- as.integer(substr(xn, 12, 13)) - min <- as.integer(substr(xn, 15, 16)) - - # Seconds (with optional fractional part) run from position 18 to just before - # the timezone suffix. The suffix is either "Z" (1 char) or "+HH:MM" (6 chars). - nc <- nchar(xn) - is_utc <- endsWith(xn, "Z") - tz_len <- ifelse(is_utc, 1L, 6L) - sec <- as.double(substr(xn, 18, nc - tz_len)) - - # Compute timezone offset in seconds for non-UTC timestamps - tz_offset <- rep(0, length(xn)) - non_utc <- which(!is_utc) - if (length(non_utc) > 0) { - tz_str <- substr(xn[non_utc], nc[non_utc] - 5, nc[non_utc]) - tz_sign <- ifelse(substr(tz_str, 1, 1) == "+", 1, -1) - tz_h <- as.integer(substr(tz_str, 2, 3)) - tz_m <- as.integer(substr(tz_str, 5, 6)) - tz_offset[non_utc] <- tz_sign * (tz_h * 3600L + tz_m * 60L) - } - - # Build epoch seconds directly: date days * 86400 + time of day - tz offset - epoch <- as.double(dates) * 86400 + hour * 3600 + min * 60 + sec - tz_offset - result[!na_mask] <- epoch - .POSIXct(result, tz = Sys.timezone()) + # Convert offsets from RFC 3339 "+HH:MM" to strptime's "+HHMM", and "Z" to + # "+0000", so %z can parse them. + x <- gsub("([+-]\\d\\d):(\\d\\d)$", "\\1\\2", x) + x <- gsub("Z$", "+0000", x) + as.POSIXct(x, format = "%Y-%m-%dT%H:%M:%OS%z", tz = Sys.timezone()) }