## New functionality * Managing the API key can now be done via the
BLS_API_KEY environment variable. This can be done using a
.Renviron file or manually by setting the key with the new
bls_set_key function. Functions which previously required
the argument api_key now default to the result of
bls_set_key * get_n_series and all functions
downstream of it now support automatic spanning of lists of
series_ids longer than the API limit by breaking up the
query into multiple API calls.
## Other Changes * Function arguments that previously defaulted to
NA now default to NULL * Major refactor of
documentation
## Bug Fixes * get_latest_observation’s argument was
incorrectly named survey_id instead of
series_id
get_n_series documentation state that
... was passed to query_n_series. This was
both inaccurate and inconsistent with the behavior of the other
get_* functions. get_n_series arguments were
updated to capture all of the query_n_series arguments and
pass ... to bls_requestget_n_series for only 1 series
would fail due to a json encoding issue stemming from a length 1 vector
being coerced to a scalar within httr::POST in
bls_request.data_as_table would return a variable
number of columns based on the shape of the input. This led to
unpredictable output and caused issues when merging multiple requests
for different time spans. Going forward data_as_table will
return a tibble with only 4 columns (year,
period, periodName, and value).
Users that wish to access aspects, footnotes, calculations, or the
‘latest’ flag should use get_n_series.data_as_table,
get_series_table and get_n_series_table no
longer include the latest or footnotes
columns. This fixes a condition where requesting aspects for a series
without aspects would cause the table to have zero rows and a condition
where the latest column could disappear between two
identical calls if the data was updated.get_series_table and
get_series_tables. Pagination behavior has been renamed to
‘spanning’, removed from the previous points of implementation and
implemented as three spanning functions following a map-reduce pattern:
span_series_request - encapsulates all of the spanning
behaviorspan_request_queries - creates multiple conforming
queriesreduce_spanned_responses - merges the results of
multiple queries The spanning behavior is now implemented at
get_series and get_n_series, which removes the
burden of merging multiple requests from the higher level
get_series_table and get_n_series_table
functions and allows users to create their own high-level functions to
alter the presentation without having to be aware of the multiple
requests. Spanning behavior may be turned off by setting the
span argument to FALSE.get_series_table or
get_series_tables were called for a date range and series
combination with no observations available, an error was triggered by
data_as_table failing. Series and period combinations with
no results now return NA.get_series_table and get_series_tables now
notify if the request is broken up into multiple API calls.get_series_tables now merges the results descending order
to match the order of the returned data.get_series and get_n_series now notify if
request returns 0 observationsdata_as_table throws an error if data
argument is empty or not a list.merge_tables was used applied to
tables with different periods, results were dependent on the order in
which tables were arranged-in on the arguments list due to the use of
‘left_join’ logic. The updated implementation will return a row for
every period in any of the tables, making it insensitive to the order of
the tables in the input. As a side-effect of the implementation the
resulting table will return the merged table ordered-by the column(s) in
the join_by argument in ascending order.data_as_table, get_series_table,
get_series_tables, and get_n_series_table all
have new optional parameter “parse_values” which will cast numeric
strings into numeric valuesbls_request has new optional
process_response argument which gives users access to the
raw API responseget series documentation improvedtidy_table_as_zoo for users of zoo and
xtsget_series_table and
get_series_tables to request more than 20 years of data by
making multiple requestsBLS_API_TEST_KEY env variable
is settidy_periods now puts month and quarter column after
yearInitial release