CWMS REST API for Data Retrieval
Python 3.9+
pip install cwms-pythonThen import the package:
importcwmscwms.init_session() supports both CDA API keys and Keycloak access tokens.
Use api_key= for the headless CDA API key flow, or token= for an OIDC access
token such as one saved by cwms-cli login.
importcwmscwms.init_session(
api_root="https://cwms-data.usace.army.mil/cwms-data/",
token="ACCESS_TOKEN",
)If both token and api_key are provided, cwms-python will use the token
and log a warning.
importcwmsfromdatetimeimportdatetime, timedeltaend=datetime.now()
begin=end-timedelta(days=10)
data=cwms.get_timeseries(ts_id='Some.Fully.Qualified.Ts.Id',office_id='OFFICE1' , begin=begin, end=end)
#a cwms data object will be provided this object containes both the JSON as well#as the values converted into a dataframe#display the dataframedf=data.dfprint(df) date-time value quality-code
0 2024-04-23 08:15:00 86.57 3
1 2024-04-23 08:30:00 86.57 3
2 2024-04-23 08:45:00 86.58 3
3 2024-04-23 09:00:00 86.58 3
4 2024-04-23 09:15:00 86.58 3
5 2024-04-23 09:30:00 86.58 3
6 2024-04-23 09:45:00 86.59 3
7 2024-04-23 10:00:00 86.58 3
#display JSONjson=data.JSONprint(json){'name': 'Some.Fully.Qualified.Ts.Id',
'office-id': 'MVP',
'units': 'ft',
'values': [['2024-04-23T08:15:00', 86.57, 3],
['2024-04-23T08:30:00', 86.57, 3],
['2024-04-23T08:45:00', 86.57999999999997, 3],
['2024-04-23T09:00:00', 86.57999999999997, 3],
['2024-04-23T09:15:00', 86.57999999999997, 3],
['2024-04-23T09:30:00', 86.57999999999997, 3],
['2024-04-23T09:45:00', 86.59, 3],
['2024-04-23T10:00:00', 86.57999999999997, 3]],
'version-date': None}
Currently, the TimeSeries Profile API may not be fully supported until a new version of cwms-data-access is released with the updated endpoint implementation.
Please view the contribution documentation here: [CONTRIBUTING.md]