diff --git a/cli/odc-cli b/cli/odc-cli index 30365eb1e..d7fe9758f 100755 --- a/cli/odc-cli +++ b/cli/odc-cli @@ -21,6 +21,7 @@ from argparse import ( RawTextHelpFormatter, ) from datetime import datetime, timezone +from http import HTTPStatus from typing import Any, Callable from urllib.error import HTTPError, URLError from urllib.parse import parse_qsl, urlencode, urlparse, urlunparse, quote @@ -214,7 +215,15 @@ class HttpResponse: props['data'] = self.data props['statusCode'] = self.status or 'N/A' elif not self.ok: - props.update(**self.data) + # Every failure carries its status; an API body with its own statusCode still wins. + props['statusCode'] = self.status or 'N/A' + if isinstance(self.data, dict): + props.update(self.data) + else: + try: + props['error'] = HTTPStatus(self.status).phrase + except (TypeError, ValueError): + pass return to_json(props) @property