Pull any Connecticut Open Data dataset from a `Socrata` JSON endpoint
Source:R/ct_any_dataset.R
ct_any_dataset.RdDownloads data from any Connecticut Open Data `Socrata` JSON endpoint and returns the result as a tibble. This function is useful for datasets that are not included in the curated catalog returned by [ct_list_datasets()].
Usage
ct_any_dataset(
json_link,
limit = 10000,
timeout_sec = 30,
clean_names = TRUE,
coerce_types = TRUE
)Arguments
- json_link
A single `Socrata` dataset JSON endpoint URL, such as `"https://data.ct.gov/resource/ffju-s5c5.json"`.
- limit
Number of rows to retrieve. Defaults to 10,000.
- timeout_sec
Request timeout in seconds. Defaults to 30.
- clean_names
Logical. If `TRUE`, column names are converted to snake_case using [janitor::clean_names()]. Defaults to `TRUE`.
- coerce_types
Logical. If `TRUE`, the package attempts lightweight, heuristic-based type coercion after downloading the data. Columns are converted only when at least 95 percent of non-missing values can be parsed as the target type. This helps avoid unsafe conversions when source data are inconsistent.
Details
Connecticut Open Data datasets have `Socrata` JSON endpoints that usually follow this pattern:
`https://data.ct.gov/resource/<dataset_uid>.json`
For example, a dataset with the `Socrata` UID `"ffju-s5c5"` would have the JSON endpoint:
`https://data.ct.gov/resource/ffju-s5c5.json`
Users can find a dataset's UID from the Connecticut Open Data Portal URL, the API documentation page for the dataset, or the output of [ct_list_datasets()].
`ct_any_dataset()` bypasses the package catalog and sends a request directly to the supplied JSON endpoint. Unlike [ct_pull_dataset()], it does not look up defaults such as catalog keys, date fields, or default ordering.
This function is intended for direct endpoint access. For catalog-based workflows using readable keys or `Socrata` UIDs, use [ct_pull_dataset()].
Examples
# Examples that hit the live Connecticut Open Data API are guarded so CRAN
# checks do not fail when the network is unavailable or slow.
if (interactive() && curl::has_internet()) {
# Build a JSON endpoint from a `Socrata` UID
uid <- "ffju-s5c5"
endpoint <- paste0("https://data.ct.gov/resource/", uid, ".json")
out <- try(ct_any_dataset(endpoint, limit = 3), silent = TRUE)
if (!inherits(out, "try-error")) {
head(out)
}
}