From 45d87e92b5964b996feb9d3df9d577c02eb313eb Mon Sep 17 00:00:00 2001 From: "a.b.christie" Date: Mon, 16 Mar 2026 14:25:06 +0000 Subject: [PATCH 1/3] feat: Add AsApi.get_actions() --- README.rst | 1 + src/squonk2/api.py | 2 +- src/squonk2/as_api.py | 52 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index d8e409f..0626759 100644 --- a/README.rst +++ b/README.rst @@ -119,6 +119,7 @@ The following Squonk2 Account Server API functions are available: - - ``AsApi.disable_asset()`` - ``AsApi.enable_asset()`` - ``AsApi.get_asset()`` +- ``AsApi.get_actions()`` - ``AsApi.get_available_assets()`` - ``AsApi.get_available_units()`` - ``AsApi.get_available_products()`` diff --git a/src/squonk2/api.py b/src/squonk2/api.py index 2bef71d..6576dd9 100644 --- a/src/squonk2/api.py +++ b/src/squonk2/api.py @@ -12,7 +12,7 @@ @dataclass class ApiRv: - """The return value from most of the the AsApi class public methods. + """The return value from most of the class public methods. :param success: True if the call was successful, False otherwise. :param msg: API request response content diff --git a/src/squonk2/as_api.py b/src/squonk2/as_api.py index 4ab0d2a..1078202 100644 --- a/src/squonk2/as_api.py +++ b/src/squonk2/as_api.py @@ -1750,3 +1750,55 @@ def get_default_organisation( error_message="Failed getting default organisation", timeout=timeout_s, )[0] + + @classmethod + @synchronized + def get_actions( + cls, + access_token: str, + *, + from_: Optional[date] = None, + until: Optional[date] = None, + merchant_id: int = 0, + product_id: str = "", + unit_id: str = "", + org_id: str = "", + action_format: EventStreamFormat = EventStreamFormat.PROTOCOL_STRING, + timeout_s: int = _READ_TIMEOUT_S, + ) -> ApiRv: + """Gets the Action records (protocol buffers). + + :param access_token: A valid AS API access token + :param action_format: The action format + :param from_: An optional start + :param until: An optional end + :param merchant_id: An optional merchant + :param product_id: An optional Product UUID + :param unit_id: An optional Unit UUID + :param org_id: An optional Organisation UUID + :param timeout_s: The underlying request timeout + """ + assert access_token + + params: Dict[str, Any] = {"format": action_format.name} + if from_: + params["from"] = str(from_) + if until: + params["until"] = str(until) + if merchant_id: + params["m_id"] = merchant_id + if product_id: + params["product_id"] = product_id + if unit_id: + params["unit_id"] = unit_id + if org_id: + params["org_id"] = org_id + + return AsApi.__request( + "GET", + "/action", + access_token=access_token, + params=params, + error_message="Failed getting actions", + timeout=timeout_s, + )[0] From 4c6369239491d24567120eb8a2cafbe70c2a76a4 Mon Sep 17 00:00:00 2001 From: "a.b.christie" Date: Mon, 16 Mar 2026 14:31:39 +0000 Subject: [PATCH 2/3] feat: Add DmApi get_mode and get_inoput_handler --- README.rst | 2 ++ src/squonk2/dm_api.py | 40 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 0626759..3dc3c52 100644 --- a/README.rst +++ b/README.rst @@ -57,7 +57,9 @@ The following Squonk2 Data Manager API functions are available: - - ``DmApi.get_job_definition_schema_version()`` - ``DmApi.get_job_exchange_rates()`` - ``DmApi.get_job_by_version()`` +- ``DmApi.get_input_handler()`` - ``DmApi.get_instance()`` +- ``DmApi.get_mode()`` - ``DmApi.get_project()`` - ``DmApi.get_project_instances()`` - ``DmApi.get_service_errors()`` diff --git a/src/squonk2/dm_api.py b/src/squonk2/dm_api.py index fbef06a..d8fb657 100644 --- a/src/squonk2/dm_api.py +++ b/src/squonk2/dm_api.py @@ -341,22 +341,56 @@ def ping(cls, access_token: str, *, timeout_s: int = _READ_TIMEOUT_S) -> ApiRv: @classmethod @synchronized def get_version( - cls, access_token: Optional[str] = None, *, timeout_s: int = _READ_TIMEOUT_S + cls, *, timeout_s: int = _READ_TIMEOUT_S ) -> ApiRv: """Returns the DM-API service version. - :param access_token: An optional valid DM API access token (deprecated) :param timeout_s: The underlying request timeout """ return DmApi.__request( "GET", "/version", - access_token=access_token, error_message="Failed getting version", timeout=timeout_s, )[0] + @classmethod + @synchronized + def get_mode( + cls, *, timeout_s: int = _READ_TIMEOUT_S + ) -> ApiRv: + """Returns the DM-API service mode. + + :param timeout_s: The underlying request timeout + """ + + return DmApi.__request( + "GET", + "/mode", + error_message="Failed getting mode", + timeout=timeout_s, + )[0] + + @classmethod + @synchronized + def get_input_handler( + cls, access_token: Optional[str] = None, *, timeout_s: int = _READ_TIMEOUT_S + ) -> ApiRv: + """Returns the DM-API input handler response. + + :param access_token: An optional valid DM API access token (deprecated) + :param timeout_s: The underlying request timeout + """ + + return DmApi.__request( + "GET", + "/input-handler", + access_token=access_token, + error_message="Failed getting input-handler", + timeout=timeout_s, + )[0] + @classmethod @synchronized def get_job_definition_schema_version( From 61237d988ea8b93577d924e195ce0e79b00c9c92 Mon Sep 17 00:00:00 2001 From: "a.b.christie" Date: Mon, 16 Mar 2026 14:34:59 +0000 Subject: [PATCH 3/3] fix: Fix lint errors --- src/squonk2/dm_api.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/squonk2/dm_api.py b/src/squonk2/dm_api.py index d8fb657..f511d3a 100644 --- a/src/squonk2/dm_api.py +++ b/src/squonk2/dm_api.py @@ -340,9 +340,7 @@ def ping(cls, access_token: str, *, timeout_s: int = _READ_TIMEOUT_S) -> ApiRv: @classmethod @synchronized - def get_version( - cls, *, timeout_s: int = _READ_TIMEOUT_S - ) -> ApiRv: + def get_version(cls, *, timeout_s: int = _READ_TIMEOUT_S) -> ApiRv: """Returns the DM-API service version. :param timeout_s: The underlying request timeout @@ -357,9 +355,7 @@ def get_version( @classmethod @synchronized - def get_mode( - cls, *, timeout_s: int = _READ_TIMEOUT_S - ) -> ApiRv: + def get_mode(cls, *, timeout_s: int = _READ_TIMEOUT_S) -> ApiRv: """Returns the DM-API service mode. :param timeout_s: The underlying request timeout