Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ export(add_content_units)
export(add_external_link)
export(add_keywords)
export(add_producing_units)
export(add_reference_owners)
export(add_reference_editors)
export(add_to_project)
export(create_draft_reference)
export(delete_all_keywords)
export(delete_inactive_ref)
export(delete_reference_owner)
export(delete_reference_editor)
export(example_ref_ids)
export(get_bibliography)
export(get_by_for_nps)
Expand All @@ -22,7 +22,7 @@ export(get_file_info)
export(get_keywords)
export(get_lifecycle_info)
export(get_park_units)
export(get_reference_owners)
export(get_reference_editors)
export(get_reference_types)
export(search_references_by_id)
export(search_references_by_id_basic)
Expand Down
40 changes: 25 additions & 15 deletions R/delete.R
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
#' Delete an owner from a DataStore reference
#' Delete an editor from a DataStore reference
#'
#' @param upn A single user's UPN. Must specify either `upn` or `email` but not both.
#' @param email A single user's email. Must specify either `upn` or `email` but not both.
#' @inheritParams upload_file_to_reference
#'
#' @returns A tibble of all reference owners with columns userCode, lastName, firstName, and email
#' @returns A tibble of all reference editors with columns userCode, lastName, firstName, and email
#' @export
#'
#' @examples
#' \dontrun{
#'
#' all_owners <- delete_reference_owner(reference_id = 00000,
#' all_editors <- delete_reference_editor(reference_id = 00000,
#' email = "edward_abbey@nps.gov",
#' dev = TRUE)
#' all_owners <- delete_reference_owner(reference_id = 00000,
#' all_editors <- delete_reference_editor(reference_id = 00000,
#' upn = "gmwright@nps.gov",
#' dev = TRUE)
#' }
#'
delete_reference_owner <- function(reference_id, upn, email, dev = TRUE, interactive = TRUE, verbose = FALSE) {
delete_reference_editor <- function(reference_id, upn, email, dev = TRUE, interactive = TRUE, verbose = FALSE) {

.validate_ref_id(reference_id)

Expand All @@ -30,7 +30,9 @@ delete_reference_owner <- function(reference_id, upn, email, dev = TRUE, interac
}

# Verify email or UPN with the AD verification API
user_info <- active_directory_lookup(upns = upn, emails = email, verbose = verbose)
user_info <- active_directory_lookup(upns = upn,
emails = email,
verbose = verbose)

# Validate user identifier
# list users not found
Expand All @@ -47,22 +49,30 @@ delete_reference_owner <- function(reference_id, upn, email, dev = TRUE, interac
verbose = verbose)
}

# Actually delete the owners
delete_owners <- .datastore_request(is_secure = TRUE, is_dev = dev, verbose = verbose) |>
# Actually delete the editors
delete_editors <- .datastore_request(is_secure = TRUE,
is_dev = dev,
verbose = verbose) |>
httr2::req_url_path_append("Reference", reference_id, "Owners") |>
httr2::req_url_query(userCode = user_info$userPrincipalName) |>
httr2::req_method("DELETE") |>
httr2::req_perform()

.validate_resp(delete_owners, nice_msg_500 = paste0("Could not remove ", user_info$userPrincipalName,
" from reference ", reference_id,
". If they are the only owner of the reference, you must add another owner before you can remove them."))
.validate_resp(delete_editors,
nice_msg_500 = paste0("Could not remove ",
user_info$userPrincipalName,
" from reference ", reference_id,
". If they are the only editor of the ",
"reference, you must add another editor",
" before you can remove them."))

all_owners <- httr2::resp_body_json(delete_owners)
all_owners <- suppressWarnings(data.table::rbindlist(all_owners, use.names = TRUE, fill = TRUE))
all_owners <- tibble::as_tibble(all_owners)
all_editors <- httr2::resp_body_json(delete_editors)
all_editors <- suppressWarnings(data.table::rbindlist(all_editors,
use.names = TRUE,
fill = TRUE))
all_editors <- tibble::as_tibble(all_editors)

return(all_owners)
return(all_editors)
}


Expand Down
20 changes: 10 additions & 10 deletions R/get.R
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ get_date_precision <- function(dev = FALSE, verbose = FALSE) {
return(precisions)
}

#' List the owners of a DataStore reference
#' List the editors of a DataStore reference
#'
#' Only available for NPS users on the internal network.
#'
Expand All @@ -236,25 +236,25 @@ get_date_precision <- function(dev = FALSE, verbose = FALSE) {
#'
#' @examples
#' \dontrun{
#' owners <- get_reference_owners(reference_id = 652358)
#' editors <- get_reference_editors(reference_id = 652358)
#' }
#'
get_reference_owners <- function(reference_id, dev = FALSE, verbose = FALSE) {
get_reference_editors <- function(reference_id, dev = FALSE, verbose = FALSE) {

.validate_ref_id(reference_id)

owners <- .datastore_request(is_secure = TRUE, is_dev = dev, verbose = verbose) |>
editors <- .datastore_request(is_secure = TRUE, is_dev = dev, verbose = verbose) |>
httr2::req_url_path_append("Reference", reference_id, "Owners") |>
httr2::req_perform()

.validate_resp(owners)
.validate_resp(editors)

owners <- httr2::resp_body_json(owners)
editors <- httr2::resp_body_json(editors)

owners <- suppressWarnings(data.table::rbindlist(owners, use.names = TRUE, fill = TRUE))
owners <- tibble::as_tibble(owners)
editors <- suppressWarnings(data.table::rbindlist(editors, use.names = TRUE, fill = TRUE))
editors <- tibble::as_tibble(editors)

return(owners)
return(editors)
}

#' Retrieve the keywords for a DataStore reference
Expand All @@ -266,7 +266,7 @@ get_reference_owners <- function(reference_id, dev = FALSE, verbose = FALSE) {
#' @export
#'
#' @examples
#' owners <- get_keywords(reference_id = 652358)
#' keywords <- get_keywords(reference_id = 652358)
#'
get_keywords <- function(reference_id, nps_internal = FALSE, dev = FALSE, verbose = FALSE) {

Expand Down
38 changes: 24 additions & 14 deletions R/set.R
Original file line number Diff line number Diff line change
Expand Up @@ -302,24 +302,29 @@ set_file_info <- function(reference_id, file_id, description, is_508, dev = TRUE
return(file_info)
}

#' Add owners to a DataStore reference
#' Add editors to a DataStore reference
#'
#' @inheritParams active_directory_lookup
#' @inheritParams upload_file_to_reference
#'
#' @returns A tibble of all reference owners with columns userCode, lastName, firstName, and email
#' @returns A tibble of all reference editors with columns userCode, lastName, firstName, and email
#' @export
#'
#' @examples
#' \dontrun{
#' upns <- c("gmwright@nps.gov", "ymexia@nps.gov")
#' emails <- c("enid_michael@nps.gov", "edward_abbey@nps.gov")
#'
#' all_owners <- add_reference_owners(reference_id = 00000, upns = upns, emails = emails, dev = TRUE)
#' all_editors <- add_reference_editors(reference_id = 00000, upns = upns, emails = emails, dev = TRUE)
#'
#' }
#'
add_reference_owners <- function(reference_id, upns, emails, dev = TRUE, interactive = TRUE, verbose = FALSE) {
add_reference_editors <- function(reference_id,
upns,
emails,
dev = TRUE,
interactive = TRUE,
verbose = FALSE) {

.validate_ref_id(reference_id)

Expand Down Expand Up @@ -358,11 +363,12 @@ add_reference_owners <- function(reference_id, upns, emails, dev = TRUE, interac

if (nrow(valid_users) > 0) {
names(msg) <- rep("!", length(msg))
cli::cli_warn(c("The following users could not be added as owners because... ",
msg)) # If there are some valid users, just throw a warning
cli::cli_warn(c(paste0("The following users could not be added as ",
"editors because... ",
msg))) # If there are some valid users, just throw a warning
} else {
names(msg) <- rep("x", length(msg))
cli::cli_abort(c("No users could be added as owners because... ",
cli::cli_abort(c("No users could be added as editors because... ",
msg)) # If there are no valid users, throw an error
}
}
Expand All @@ -375,7 +381,7 @@ add_reference_owners <- function(reference_id, upns, emails, dev = TRUE, interac
verbose = verbose)
}

# Actually add the owners, finally
# Actually add the editors, finally

# Get userCode (UPN), lastName, firstName, and email
valid_users <- dplyr::select(valid_users,
Expand All @@ -385,18 +391,22 @@ add_reference_owners <- function(reference_id, upns, emails, dev = TRUE, interac
email = mail)
valid_users <- apply(valid_users, MARGIN = 1, FUN = as.list)

added_owners <- .datastore_request(is_secure = TRUE, is_dev = dev, verbose = verbose) |>
added_editors <- .datastore_request(is_secure = TRUE,
is_dev = dev,
verbose = verbose) |>
httr2::req_url_path_append("Reference", reference_id, "Owners") |>
httr2::req_body_json(valid_users) |>
httr2::req_perform()

.validate_resp(added_owners)
.validate_resp(added_editors)

all_owners <- httr2::resp_body_json(added_owners)
all_owners <- suppressWarnings(data.table::rbindlist(all_owners, use.names = TRUE, fill = TRUE))
all_owners <- tibble::as_tibble(all_owners)
all_editors <- httr2::resp_body_json(added_editors)
all_editors <- suppressWarnings(data.table::rbindlist(all_editors,
use.names = TRUE,
fill = TRUE))
all_editors <- tibble::as_tibble(all_editors)

return(all_owners)
return(all_editors)
}


Expand Down
2 changes: 1 addition & 1 deletion docs/404.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/LICENSE.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/articles/index.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions docs/articles/upload-file.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions docs/authors.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions docs/index.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/pkgdown.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ pkgdown: 2.2.1
pkgdown_sha: ~
articles:
upload-file: upload-file.html
last_built: 2026-08-26T19:17Z
last_built: 2026-08-27T20:33Z
urls:
reference: https://doi-nps.github.io/NPSdatastore/reference
article: https://doi-nps.github.io/NPSdatastore/articles
6 changes: 5 additions & 1 deletion docs/reference/active_directory_lookup.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/reference/add_external_link.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading