Package 'hakaiApi'

Title: Authenticated HTTP Request Client for the 'Hakai' API
Description: Initializes a class that obtains API credentials and provides a method to use those credentials to make GET requests to the 'Hakai' API server. Usage instructions are documented at <https://hakaiinstitute.github.io/hakai-api/>.
Authors: Sam Albers [aut, cre], Taylor Denouden [aut], Brett Johnson [aut], Nate Rosenstock [ctb], Chris Davis [ctb], Hakai Institute [cph]
Maintainer: Sam Albers <[email protected]>
License: MIT + file LICENSE
Version: 1.0.5.9000
Built: 2026-10-14 21:08:19 UTC
Source: https://github.com/HakaiInstitute/hakai-api-client-r

Help Index


The Hakai API Client Class

Description

Class to use to make authenticated API requests for Hakai data. Credentials can be provided via the HAKAI_API_TOKEN environment variable or through a credentials file.

Public fields

api_root

The api_root you are logged in to

Methods

Public methods


Client$new()

Log into Google to gain credential access to the API

Usage
Client$new(
  api_root = "https://portal.hakai.org/api",
  login_page = NULL,
  credentials_file = NULL
)
Arguments
api_root

Optional API base url to fetch data. Defaults to "https://portal.hakai.org/api"

login_page

Optional API login page url to display to user. When NULL (the default) it is derived from the api_root host, so a custom api_root authenticates against the matching server.

credentials_file

Optional path to the credentials cache file. Defaults to a file in the user's data directory as determined by tools::R_user_dir()

Details

Credentials can be provided in two ways: 1. Via the HAKAI_API_TOKEN environment variable (contains query string: "token_type=Bearer&access_token=...") 2. Via a credentials file (default: in user data directory via tools::R_user_dir()) The environment variable takes precedence if both are available.

Returns

A client instance

Examples
try(
   client <- Client$new()
)
# Using environment variable
Sys.setenv(HAKAI_API_TOKEN = "token_type=Bearer&access_token=TOKEN")
try(
   client <- Client$new()
)
# Using custom credentials file
try(
   client <- Client$new(credentials_file = "/path/to/creds")
)

Client$get()

Send a GET request to the API

Usage
Client$get(endpoint_url, col_types = NULL, verbose = FALSE)
Arguments
endpoint_url

The API endpoint url - can be a full URL or a relative path that will be appended to the api_root

col_types

a readr type specification

verbose

When TRUE, print the request and response details (including the resolved url) to aid debugging

Returns

A dataframe of the requested data

Examples
try(client$get("/aco/views/projects"))
try(client$get("https://portal.hakai.org/api/aco/views/projects"))
try(client$get("/aco/views/projects", verbose = TRUE))

Client$get_stations()

Get recent sensor nodes and their locations as an sf object

Usage
Client$get_stations(verbose = FALSE)
Arguments
verbose

When TRUE, print the request and response details (including the resolved url) to aid debugging

Returns

An sf object of sensor nodes and their locations

Examples
try(client$get_stations())

Client$post()

Send a POST request to the API

Usage
Client$post(endpoint_url, rec_data, verbose = FALSE)
Arguments
endpoint_url

The API endpoint url - can be a full URL or a relative path that will be appended to the api_root

rec_data

dataframe, list, or other R data structure to send as part of the post request payload

verbose

When TRUE, print the request and response details (including the resolved url) to aid debugging

Returns

post request response status code and description


Client$put()

Send a PUT request to the API

Usage
Client$put(endpoint_url, rec_data, verbose = FALSE)
Arguments
endpoint_url

The API endpoint url - can be a full URL or a relative path that will be appended to the api_root

rec_data

dataframe, list, or other R data structure to send as part of the post request payload

verbose

When TRUE, print the request and response details (including the resolved url) to aid debugging

Returns

PUT request response status code and description


Client$patch()

Send a PATCH request to the API

Usage
Client$patch(endpoint_url, rec_data, verbose = FALSE)
Arguments
endpoint_url

The API endpoint url - can be a full URL or a relative path that will be appended to the api_root

rec_data

dataframe, list, or other R data structure to send as part of the post request payload

verbose

When TRUE, print the request and response details (including the resolved url) to aid debugging

Returns

PATCH request response status code and description


Client$remove_credentials()

Remove your cached login credentials to logout of the client

Usage
Client$remove_credentials()
Examples
try(
   client$remove_credentials()
)

Client$clone()

The objects of this class are cloneable with this method.

Usage
Client$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

Examples

## Not run: 
# Initialize a new client
try(
  client <- Client$new()
)

# Or use environment variable for token
Sys.setenv(HAKAI_API_TOKEN = "token_type=Bearer&access_token=TOKEN")
try(
  client <- Client$new()
)

# Follow authorization prompts to log in

# Retrieve some data. See <https://hakaiinstitute.github.io/hakai-api/> for options.
try(
  projects_2020 <- client$get("/aco/views/projects?project_year=2020&fields=project_name")
)

try(
  print(projects_2020)
)
# # A tibble: 20 x 1
#    project_name
#    <chr>
#  1 Fountain FN
#  2 Haig Glacier
#  3 Fraser River - Chimney Creek West William Canyon
#  4 Cruickshank WS
#  ...

## End(Not run)

## ------------------------------------------------
## Method `Client$new()`
## ------------------------------------------------

try(
   client <- Client$new()
)
# Using environment variable
Sys.setenv(HAKAI_API_TOKEN = "token_type=Bearer&access_token=TOKEN")
try(
   client <- Client$new()
)
# Using custom credentials file
try(
   client <- Client$new(credentials_file = "/path/to/creds")
)

## ------------------------------------------------
## Method `Client$get()`
## ------------------------------------------------

try(client$get("/aco/views/projects"))
try(client$get("https://portal.hakai.org/api/aco/views/projects"))
try(client$get("/aco/views/projects", verbose = TRUE))

## ------------------------------------------------
## Method `Client$get_stations()`
## ------------------------------------------------

try(client$get_stations())

## ------------------------------------------------
## Method `Client$remove_credentials()`
## ------------------------------------------------

try(
   client$remove_credentials()
)