From 3567566762b4b353155be9933f1613e67d052f3c Mon Sep 17 00:00:00 2001 From: Jonathan Keane Date: Wed, 25 Feb 2026 10:50:01 -0600 Subject: [PATCH 1/3] Add content_guid to get_usage --- R/get.R | 13 ++++++++++++- man/get_usage.Rd | 9 ++++++++- tests/testthat/test-get.R | 24 ++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/R/get.R b/R/get.R index ba39384e..60526645 100644 --- a/R/get.R +++ b/R/get.R @@ -537,6 +537,9 @@ get_usage_static <- function( #' If no date-times are provided, all usage data will be returned. #' #' @param client A `Connect` R6 client object. +#' @param content_guid Optional. A single content GUID or a character vector of +#' GUIDs to filter results. When multiple GUIDs are provided they are +#' collapsed with `"|"`. #' @param from Optional date-time (`POSIXct` or `POSIXlt`). Only #' records after this time are returned. If not provided, records #' are returned back to the first record available. @@ -594,6 +597,9 @@ get_usage_static <- function( #' from = as.POSIXct("2025-05-02 12:40:00", tz = "UTC") #' ) #' +#' # Fetch usage for a specific content item +#' usage <- get_usage(client, content_guid = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee") +#' #' # Fetch all usage #' usage <- get_usage(client) #' @@ -605,12 +611,17 @@ get_usage_static <- function( #' } #' #' @export -get_usage <- function(client, from = NULL, to = NULL) { +get_usage <- function(client, content_guid = NULL, from = NULL, to = NULL) { error_if_less_than(client$version, "2025.04.0") + if (!is.null(content_guid) && length(content_guid) > 1) { + content_guid <- paste0(content_guid, collapse = "|") + } + usage <- client$GET( v1_url("instrumentation", "content", "hits"), query = list( + content_guid = content_guid, from = make_timestamp(from), to = make_timestamp(to) ) diff --git a/man/get_usage.Rd b/man/get_usage.Rd index 40372129..4021dcae 100644 --- a/man/get_usage.Rd +++ b/man/get_usage.Rd @@ -4,11 +4,15 @@ \alias{get_usage} \title{Get usage information for deployed content} \usage{ -get_usage(client, from = NULL, to = NULL) +get_usage(client, content_guid = NULL, from = NULL, to = NULL) } \arguments{ \item{client}{A \code{Connect} R6 client object.} +\item{content_guid}{Optional. A single content GUID or a character vector of +GUIDs to filter results. When multiple GUIDs are provided they are +collapsed with \code{"|"}.} + \item{from}{Optional date-time (\code{POSIXct} or \code{POSIXlt}). Only records after this time are returned. If not provided, records are returned back to the first record available.} @@ -77,6 +81,9 @@ usage <- get_usage( from = as.POSIXct("2025-05-02 12:40:00", tz = "UTC") ) +# Fetch usage for a specific content item +usage <- get_usage(client, content_guid = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee") + # Fetch all usage usage <- get_usage(client) diff --git a/tests/testthat/test-get.R b/tests/testthat/test-get.R index 3bb7d14a..f766b359 100644 --- a/tests/testthat/test-get.R +++ b/tests/testthat/test-get.R @@ -466,6 +466,30 @@ with_mock_dir("2025.04.0", { "from=2025-04-01T00%3A00%3A01Z&to=2025-04-02T00%3A00%3A01Z" ) ) + expect_GET( + get_usage( + client, + content_guid = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + ), + paste0( + "https://connect.example/__api__/v1/instrumentation/content/hits?", + "content_guid=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + ) + ) + expect_GET( + get_usage( + client, + content_guid = c( + "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", + "ffffffff-1111-2222-3333-444444444444" + ) + ), + paste0( + "https://connect.example/__api__/v1/instrumentation/content/hits?", + "content_guid=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", + "%7Cffffffff-1111-2222-3333-444444444444" + ) + ) }) }) }) From 8de346a016c2fbe5580c115914948bcaad622e87 Mon Sep 17 00:00:00 2001 From: Jonathan Keane Date: Wed, 25 Feb 2026 11:56:36 -0600 Subject: [PATCH 2/3] =?UTF-8?q?version=20guard=20+=20=F0=9F=97=9E=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NEWS.md | 2 ++ R/get.R | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index 0a4bf1bf..af13b908 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # connectapi (development version) +- `get_usage()` now allows for filtering by content GUID with the `content_guid` + argument. This is only available on Connect server versions 2026.01 and later. - The `activate` argument to `set_schedule_*()` functions is deprecated and no longer has any effect, due to changes in the Connect API. It will be removed in a future release. (#500) diff --git a/R/get.R b/R/get.R index 60526645..14ee3d31 100644 --- a/R/get.R +++ b/R/get.R @@ -614,8 +614,11 @@ get_usage_static <- function( get_usage <- function(client, content_guid = NULL, from = NULL, to = NULL) { error_if_less_than(client$version, "2025.04.0") - if (!is.null(content_guid) && length(content_guid) > 1) { - content_guid <- paste0(content_guid, collapse = "|") + if (!is.null(content_guid)) { + error_if_less_than(client$version, "2026.01.0") + if (length(content_guid) > 1) { + content_guid <- paste0(content_guid, collapse = "|") + } } usage <- client$GET( From 56fbc8cebf829a66d1acfcbbf1a5a7a53868f27b Mon Sep 17 00:00:00 2001 From: Kara Woo Date: Wed, 25 Feb 2026 11:27:48 -0800 Subject: [PATCH 3/3] correct server version for content guid filtering --- tests/testthat/2026.01.0/__api__/server_settings.json | 3 +++ tests/testthat/2026.01.0/__ping__.json | 3 +++ tests/testthat/test-get.R | 11 +++++++++++ 3 files changed, 17 insertions(+) create mode 100644 tests/testthat/2026.01.0/__api__/server_settings.json create mode 100644 tests/testthat/2026.01.0/__ping__.json diff --git a/tests/testthat/2026.01.0/__api__/server_settings.json b/tests/testthat/2026.01.0/__api__/server_settings.json new file mode 100644 index 00000000..4f309aad --- /dev/null +++ b/tests/testthat/2026.01.0/__api__/server_settings.json @@ -0,0 +1,3 @@ +{ + "version": "2026.01.0" +} diff --git a/tests/testthat/2026.01.0/__ping__.json b/tests/testthat/2026.01.0/__ping__.json new file mode 100644 index 00000000..0db3279e --- /dev/null +++ b/tests/testthat/2026.01.0/__ping__.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/tests/testthat/test-get.R b/tests/testthat/test-get.R index f766b359..b73e82a4 100644 --- a/tests/testthat/test-get.R +++ b/tests/testthat/test-get.R @@ -466,6 +466,17 @@ with_mock_dir("2025.04.0", { "from=2025-04-01T00%3A00%3A01Z&to=2025-04-02T00%3A00%3A01Z" ) ) + }) + }) +}) + +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") + # $version is loaded lazily, we need it before calling get_usage() + client$version + + without_internet({ expect_GET( get_usage( client,