library(rCAX)
#> Access and use of data in the CAX databases requires acceptance of the terms of use: rcax_termsofuse().The main behind the scenes function is
rcax_GET(path, key = NULL, query=NULL, ...) which appears
in functions rcax_table_query() and
rcax_datasets().
rcax_GET arguments
path is whatever comes after
https://api.streamnet.org/api/v1 in an API call.
For HLI tables the url is
https://api.streamnet.org/api/v1/ca
so path="ca". I don’t think you need
ca.json since JSON is the default. But maybe would be good
to add that to make code more robust.
The API key. rCAX includes a read-only API key but if you need to use your own, see section below.
This has to be a LIST of your query parameters (stuff that appears
after ? in the url for an API call). So like this:
list(table_id="whatevertableidis")
The basic format of a query to the CAX API will look like this
https://api.streamnet.org/api/v1/ca.json?table_id=4EF09E86-2AA8-4C98-A983-A272C2C2C7E3&XApiKey=<your stored key>&filter=[{"field":"popid","value":"7","type":"string"}]
Here we are filtering on popid equal to 7 using the filter specified
with JSON. See rcax_filter() for a function to create the
JSON from a list of colnames and values.
The rcax_GET() call would look like
qlist <- list(
table_id=4EF09E86-2AA8-4C98-A983-A272C2C2C7E3,
filter=rcax_filter(list(popid=7))
)
rcax_GET("ca", query=qlist)
This will make the API URL
https://api.streamnet.org/api/v1/ca
We don’t need to pass in a key. rcax_GET() will look
this up from the .REnviron file using
check_key().
The table_id are stored in rCAX:::caxtabs
as internal data using a call to rcax_datasets(). The
function returns the name and id for the tables in the CAX API.
caxtabs will need to be updated or checked
periodically.
In rcax_table_query(), the table_id is
looked up using a table name. The table names for the HLI short code
names are hard coded in rcax_table_name(). If the names
change, they should be updated here.
{rCAX} includes a “read-only” API key. Thus for normal read-only use,
you do not need an API key. If you need to use your own key, contact
StreamNet. You can pass in your own key into calls via
GETargs$key.
Alternatively you can set it as as an environment variable called
CAX_KEY in your .Renviron file by pasting this
text into that file: CAX_KEY='youractualkeynotthisstring'.
To do this, install the {usethis} package.
install.packages("usethis")Then run this code to find or create your .Renviron
file. It will tell you where the .Renviron file is.
usethis::edit_r_environ()Open that file and paste in
CAX_KEY = "whateveryourkeyis" into the file and save. After
you edit the file, you will need to restart R. If you are in RStudio use
Session > Restart R. Now your API will be visible to {rCAX}. Note, if
for some reason, you need to access to this key in your code, use
Sys.getenv("CAX_KEY", ""). This retrieves variables defined
in the .Renviron file, which are loaded into the system
environment when you start up R.