# GEOGloWS.jl API

The `GEOGloWS.jl`

API sends requests to the GEOGloWS ECMWF Streamflow service and formats the returned data into Julia Types. For more in depth documentation on specific methods that this package interfaces with, see the official GEOGloWS Documention.

## Model run data

`GEOGloWS.available_data`

— Function.`available_data()`

returns the regions available and their corresponding available dates. See also `available_regions()`

and `available_dates()`

`GEOGloWS.available_regions`

— Function.`available_regions()`

returns returns the available regions.

`GEOGloWS.available_dates`

— Function.`available_dates(region::AbstractString)`

returns the available forecast dates.

## Forecast data

`GEOGloWS.forecast_stats`

— Function.`forecast_stats(parameters::AbstractDict{Symbol,<:Any})`

returns statistics calculated from 51 forecast ensemble members.

`forecast_stats(reach_id::Int; return_format::Symbol = :csv)`

returns statistics calculated from 51 forecast ensemble members.

`forecast_stats(reach_id::Int,date::AbstractString; return_format::Symbol = :csv)`

returns statistics calculated from 51 forecast ensemble members.

`forecast_stats(reach_id::Int,date::TimeType; return_format::Symbol = :csv)`

returns statistics calculated from 51 forecast ensemble members.

`forecast_stats(lat::Real, lon::Real; return_format::Symbol = :csv)`

returns statistics calculated from 51 forecast ensemble members.

`forecast_stats(lat::Real, lon::Real, date::AbstractString; return_format::Symbol = :csv)`

returns statistics calculated from 51 forecast ensemble members.

`forecast_stats(lat::Real, lon::Real, date::TimeType; return_format::Symbol = :csv)`

returns statistics calculated from 51 forecast ensemble members.

`GEOGloWS.forecast_ensembles`

— Function.`forecast_ensembles(parameters::AbstractDict{Symbol,<:Any})`

returns a timeseries for each of the 51 normal forecast ensemble members and the 52nd higher resolution forecast

`forecast_ensembles(reach_id::Int; return_format::Symbol = :csv)`

returns a timeseries for each of the 51 normal forecast ensemble members and the 52nd higher resolution forecast

`forecast_ensembles(reach_id::Int, date::AbstractString; return_format::Symbol = :csv)`

returns a timeseries for each of the 51 normal forecast ensemble members and the 52nd higher resolution forecast

`forecast_ensembles(reach_id::Int, date::TimeType; return_format::Symbol = :csv)`

`forecast_ensembles(lat::Real, lon::Real; return_format::Symbol = :csv)`

`forecast_ensembles(lat::Real, lon::Real, date::AbstractString; return_format::Symbol = :csv)`

`forecast_ensembles(lat::Real, lon::Real, date::TimeType; return_format::Symbol = :csv)`

`GEOGloWS.forecast_records`

— Function.`forecast_records(parameters::AbstractDict{Symbol,<:Any})`

retrieves the rolling record of the mean of the forecasted streamflow during the first 24 hours of each day's forecast. That is, each day day after the streamflow forecasts are computed, the average of first 8 of the 3-hour timesteps are recorded to a csv.

`forecast_records(reach_id::Int; return_format::Symbol = :csv)`

retrieves the rolling record of the mean of the forecasted streamflow during the first 24 hours of each day's forecast. That is, each day day after the streamflow forecasts are computed, the average of first 8 of the 3-hour timesteps are recorded to a csv.

`forecast_records(lat::Real, lon::Real; return_format::Symbol = :csv)`

retrieves the rolling record of the mean of the forecasted streamflow during the first 24 hours of each day's forecast. That is, each day day after the streamflow forecasts are computed, the average of first 8 of the 3-hour timesteps are recorded to a csv.

`forecast_records(reach_id::Int, start_date::TimeType, end_date::TimeType; return_format::Symbol = :csv,)`

`forecast_records(reach_id::Int, start_date::AbstractString, end_date::AbstractString; return_format::Symbol = :csv,)`

`forecast_records(lat::Real, lon::Real, start_date::TimeType, end_date::TimeType; return_format::Symbol = :csv,)`

`forecast_records(lat::Real, lon::Real, start_date::AbstractString, end_date::AbstractString; return_format::Symbol = :csv,)`

`GEOGloWS.forecast_warnings`

— Function.`forecast_warnings(parameters::AbstractDict{Symbol,<:Any})`

returns a csv created to summarize the potential return period level flow events coming to the reaches in a specified region. The CSV contains a column for the reach_id, lat of the reach, lon of the reach, maximum forecasted flow in the next 15 day forecast, and a column for each of the return periods (2, 10, 20, 25, 50, 100) which will contain the date when the forecast is first expected to pass that threshold

`forecast_warnings(; return_format::Symbol = :csv)`

returns a csv created to summarize the potential return period level flow events coming to the reaches in a specified region. The CSV contains a column for the reach_id, lat of the reach, lon of the reach, maximum forecasted flow in the next 15 day forecast, and a column for each of the return periods (2, 10, 20, 25, 50, 100) which will contain the date when the forecast is first expected to pass that threshold

`forecast_warnings(date::TimeType; return_format::Symbol = :csv)`

returns a csv created to summarize the potential return period level flow events coming to the reaches in a specified region. The CSV contains a column for the reach_id, lat of the reach, lon of the reach, maximum forecasted flow in the next 15 day forecast, and a column for each of the return periods (2, 10, 20, 25, 50, 100) which will contain the date when the forecast is first expected to pass that threshold

`forecast_warnings(region::AbstractString; return_format::Symbol = :csv)`

`forecast_warnings(region::AbstractString, date::TimeType; return_format::Symbol = :csv)`

`forecast_warnings(region::AbstractString, date::AbstractString; return_format::Symbol = :csv)`

## Historic data

`GEOGloWS.historic_simulation`

— Function.`historic_simulation(parameters::AbstractDict{Symbol,<:Any})`

returns simulated streamflow data based on the ERA-5 dataset. A successful response will return a time series with date-value pairs.

`historic_simulation(reach_id::Int; return_format::Symbol = :csv)`

returns simulated streamflow data based on the ERA-5 dataset. A successful response will return a time series with date-value pairs.

`historic_simulation(lat::Real, lon::Real; return_format::Symbol = :csv)`

returns simulated streamflow data based on the ERA-5 dataset. A successful response will return a time series with date-value pairs.

`GEOGloWS.return_periods`

— Function.`return_periods(parameters::AbstractDict{Symbol,<:Any})`

returns the 2, 5, 10, 25, 50, and 100 year return period based on the 40-years simulated streamflow data and using the Gumbel Method. A successful response will return key-value pairs for earch return period along with metadata.

`return_periods(reach_id::Int; return_format::Symbol = :csv, forcing::Symbol = :era_5,)`

returns the 2, 5, 10, 25, 50, and 100 year return period based on the 40-years simulated streamflow data and using the Gumbel Method. A successful response will return key-value pairs for earch return period along with metadata.

`return_periods(lat::Real, lon::Real; return_format::Symbol = :csv, forcing::Symbol = :era_5,)`

returns the 2, 5, 10, 25, 50, and 100 year return period based on the 40-years simulated streamflow data and using the Gumbel Method. A successful response will return key-value pairs for earch return period along with metadata.

`GEOGloWS.daily_averages`

— Function.`daily_averages(parameters::AbstractDict{Symbol,<:Any})`

returns the average flow for each day of the year for the Historic Simulation

`daily_averages(reach_id::Int; return_format::Symbol = :csv)`

returns the average flow for each day of the year for the Historic Simulation

`daily_averages(lat::Real, lon::Real; return_format::Symbol = :csv)`

returns the average flow for each day of the year for the Historic Simulation

`GEOGloWS.monthly_averages`

— Function.`monthly_averages(parameters::AbstractDict{Symbol,<:Any})`

returns the average flow for each month of the year for the Historic Simulation

`monthly_averages(reach_id::Int; return_format::Symbol = :csv)`

returns the average flow for each month of the year for the Historic Simulation

`monthly_averages(lat::Real, lon::Real; return_format::Symbol = :csv)`

returns the average flow for each month of the year for the Historic Simulation