CLI Script
blob
Describe the bug
I tried to post a text file into cwbi-dev as a blob. This is in nws-wm-cwbi-jobs. Here are what are in hourly.sh:
Run python script(s)
python /jobs/python/usgs_reports/usgs_reports.py || true
upload blob
cwms-cli blob upload --input-file "/jobs/python/usgs_reports/usgs_report12098000.txt" --blob-id "usgs_report12098000" --description "{'last-modified': $(expr $(date +%s) * 1000)}" --media-type text/plain --log-level debug
I created a new api key in cwbi-dev yesterday. Not sure if this key will be linked automatically or I have to put it somewhere in scripts.
I was sent here by the log file in https://cwms-monitoring.dev.cwbi.us in nws-jobs, see attached log output. Thanks.
REDACTED relevant log output
Logs
return api.post(endpoint, data, params, api_version=1)
_post_function(endpoint=endpoint, data=data, params=params, api_version=api_version)
cwms.api.ApiError: CWMS API Error (http://cwms-data-api.dev-int.cwbi.us/cwms-data/blobs?fail-if-exists=True). {"message":"User not authorized for this office.","incidentIdentifier":"9282ef35-b05b-4f5e-9faf-8402ada2595b","source":"Authorization","details":{}}
raise ApiError(response)
File "/appuser/.local/lib/python3.11/site-packages/cwms/api.py", line 401, in _post_function
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/appuser/.local/lib/python3.11/site-packages/cwms/api.py", line 431, in post
cwms.store_blobs(blob, fail_if_exists=not overwrite)
File "/appuser/.local/lib/python3.11/site-packages/cwms/catalog/blobs.py", line 99, in store_blobs
File "/appuser/.local/lib/python3.11/site-packages/cwmscli/utils/deps.py", line 111, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/appuser/.local/lib/python3.11/site-packages/cwmscli/commands/blob.py", line 547, in upload_cmd
upload_cmd(**kwargs)
File "/appuser/.local/lib/python3.11/site-packages/cwmscli/commands/commands_cwms.py", line 614, in blob_upload
^^^^^^^^^^^^^^^^^^^^^^^^^
return ctx.invoke(self.callback, **ctx.params)
return callback(*args, **kwargs)
File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 814, in invoke
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 1850, in invoke
File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 1246, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 1383, in main
rv = self.invoke(ctx)
File "/appuser/.local/lib/python3.11/site-packages/cwmscli/__main__.py", line 129, in main
return self.main(*args, **kwargs)
cli(standalone_mode=False)
File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 1462, in __call__
2026-09-10 19:52:30;ERROR;CDA Error: response=<Response [401]>
sys.exit(main())
File "/appuser/.local/bin/cwms-cli", line 6, in <module>
Traceback (most recent call last):
^^^^^^
Unexpected error. Report it at https://github.com/HydrologicEngineeringCenter/cwms-cli/issues/new?template=bug-report.yml
2026-09-10 19:52:30;DEBUG;http://cwms-data-api.dev-int.cwbi.us:80 "POST /cwms-data/blobs?fail-if-exists=True HTTP/1.1" 401 148
2026-09-10 19:52:30;DEBUG;Starting new HTTP connection (1): cwms-data-api.dev-int.cwbi.us:80
2026-09-10 19:52:30;DEBUG;Office=NWS BlobID=USGS_REPORT12098000 Media=text/plain
2026-09-10 19:52:30;INFO;Read file: /jobs/python/usgs_reports/usgs_report12098000.txt (1631 bytes)
2026-09-10 19:52:30;DEBUG;Initializing root URL: api_root=http://cwms-data-api.dev-int.cwbi.us/cwms-data/
2026-09-10 19:52:29;INFO;logger configured
creating USGS report: 12098500
creating USGS report: 12105900
creating USGS report: 12438000
creating USGS report: 12108500
creating USGS report: 12105800
creating USGS report: 12098000
CDA_API_KEY is set to ak1***
CDA_API_ROOT is set to http://cwms-data-api.dev-int.cwbi.us/cwms-data/
GITHUB_TOKEN is not set
GITHUB_BRANCH is not set
Script name: hourly.sh
OFFICE is set to nws
Steps to Reproduce
No response
CLI Script
blob
Describe the bug
I tried to post a text file into cwbi-dev as a blob. This is in nws-wm-cwbi-jobs. Here are what are in hourly.sh:
Run python script(s)
python /jobs/python/usgs_reports/usgs_reports.py || true
upload blob
cwms-cli blob upload --input-file "/jobs/python/usgs_reports/usgs_report12098000.txt" --blob-id "usgs_report12098000" --description "{'last-modified':$(expr $ (date +%s) * 1000)}" --media-type text/plain --log-level debug
I created a new api key in cwbi-dev yesterday. Not sure if this key will be linked automatically or I have to put it somewhere in scripts.
I was sent here by the log file in https://cwms-monitoring.dev.cwbi.us in nws-jobs, see attached log output. Thanks.
REDACTED relevant log output
Logs return api.post(endpoint, data, params, api_version=1) _post_function(endpoint=endpoint, data=data, params=params, api_version=api_version) cwms.api.ApiError: CWMS API Error (http://cwms-data-api.dev-int.cwbi.us/cwms-data/blobs?fail-if-exists=True). {"message":"User not authorized for this office.","incidentIdentifier":"9282ef35-b05b-4f5e-9faf-8402ada2595b","source":"Authorization","details":{}} raise ApiError(response) File "/appuser/.local/lib/python3.11/site-packages/cwms/api.py", line 401, in _post_function ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/appuser/.local/lib/python3.11/site-packages/cwms/api.py", line 431, in post cwms.store_blobs(blob, fail_if_exists=not overwrite) File "/appuser/.local/lib/python3.11/site-packages/cwms/catalog/blobs.py", line 99, in store_blobs File "/appuser/.local/lib/python3.11/site-packages/cwmscli/utils/deps.py", line 111, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/appuser/.local/lib/python3.11/site-packages/cwmscli/commands/blob.py", line 547, in upload_cmd upload_cmd(**kwargs) File "/appuser/.local/lib/python3.11/site-packages/cwmscli/commands/commands_cwms.py", line 614, in blob_upload ^^^^^^^^^^^^^^^^^^^^^^^^^ return ctx.invoke(self.callback, **ctx.params) return callback(*args, **kwargs) File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 814, in invoke ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 1850, in invoke File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 1246, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 1383, in main rv = self.invoke(ctx) File "/appuser/.local/lib/python3.11/site-packages/cwmscli/__main__.py", line 129, in main return self.main(*args, **kwargs) cli(standalone_mode=False) File "/appuser/.local/lib/python3.11/site-packages/click/core.py", line 1462, in __call__ 2026-09-10 19:52:30;ERROR;CDA Error: response=<Response [401]> sys.exit(main()) File "/appuser/.local/bin/cwms-cli", line 6, in <module> Traceback (most recent call last): ^^^^^^ Unexpected error. Report it at https://github.com/HydrologicEngineeringCenter/cwms-cli/issues/new?template=bug-report.yml 2026-09-10 19:52:30;DEBUG;http://cwms-data-api.dev-int.cwbi.us:80 "POST /cwms-data/blobs?fail-if-exists=True HTTP/1.1" 401 148 2026-09-10 19:52:30;DEBUG;Starting new HTTP connection (1): cwms-data-api.dev-int.cwbi.us:80 2026-09-10 19:52:30;DEBUG;Office=NWS BlobID=USGS_REPORT12098000 Media=text/plain 2026-09-10 19:52:30;INFO;Read file: /jobs/python/usgs_reports/usgs_report12098000.txt (1631 bytes) 2026-09-10 19:52:30;DEBUG;Initializing root URL: api_root=http://cwms-data-api.dev-int.cwbi.us/cwms-data/ 2026-09-10 19:52:29;INFO;logger configured creating USGS report: 12098500 creating USGS report: 12105900 creating USGS report: 12438000 creating USGS report: 12108500 creating USGS report: 12105800 creating USGS report: 12098000 CDA_API_KEY is set to ak1*** CDA_API_ROOT is set to http://cwms-data-api.dev-int.cwbi.us/cwms-data/ GITHUB_TOKEN is not set GITHUB_BRANCH is not set Script name: hourly.sh OFFICE is set to nwsSteps to Reproduce
No response