diff --git a/packages/tipcommon/TIPCommon/pyproject.toml b/packages/tipcommon/TIPCommon/pyproject.toml index 7c5f53cbba..33042d0e7b 100644 --- a/packages/tipcommon/TIPCommon/pyproject.toml +++ b/packages/tipcommon/TIPCommon/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "TIPCommon" -version = "2.4.3" +version = "2.4.4" description = "General Purpose CLI tool for Google SecOps Marketplace" readme = "README.md" authors = [ diff --git a/packages/tipcommon/TIPCommon/src/TIPCommon/rest/soar_api.py b/packages/tipcommon/TIPCommon/src/TIPCommon/rest/soar_api.py index acaee4c82e..f8a03bb102 100644 --- a/packages/tipcommon/TIPCommon/src/TIPCommon/rest/soar_api.py +++ b/packages/tipcommon/TIPCommon/src/TIPCommon/rest/soar_api.py @@ -1990,3 +1990,39 @@ def get_case_close_comment( response = api_client.get_case_close_comment(case_id) validate_response(response, validate_json=True) return CaseCloseComment.from_json(response.json()).comment + + +def attach_case_playbook_to_case( + chronicle_soar: ChronicleSOAR, + case_id: int, + playbook_name: str, + should_run_automatic: bool, + original_workflow_definition_identifier: str | None = None, +) -> None: + """Attach case playbook to the case.""" + api_client = get_soar_client(chronicle_soar) + api_client.params.case_id = case_id + api_client.params.playbook_name = playbook_name + api_client.params.should_run_automatic = should_run_automatic + api_client.params.original_workflow_definition_identifier = ( + original_workflow_definition_identifier + ) + + response = api_client.attach_case_playbook_to_case() + validate_response(response, validate_json=False) + + +def get_enabled_workflow_cards( + chronicle_soar: ChronicleSOAR, + environment: str, +) -> list[SingleJson]: + """Get enabled workflow cards.""" + api_client = get_soar_client(chronicle_soar) + api_client.params.environment = environment + + response = api_client.get_enabled_workflow_cards() + validate_response(response, validate_json=True) + res_json = response.json() + if isinstance(res_json, dict): + return res_json.get("payload", []) + return res_json diff --git a/packages/tipcommon/TIPCommon/src/TIPCommon/rest/soar_platform_clients/one_platform_soar_api.py b/packages/tipcommon/TIPCommon/src/TIPCommon/rest/soar_platform_clients/one_platform_soar_api.py index a6a0d56b11..9d0dd666f0 100644 --- a/packages/tipcommon/TIPCommon/src/TIPCommon/rest/soar_platform_clients/one_platform_soar_api.py +++ b/packages/tipcommon/TIPCommon/src/TIPCommon/rest/soar_platform_clients/one_platform_soar_api.py @@ -870,3 +870,40 @@ def get_case_close_comment(self, case_id: str | int) -> requests.Response: "$pageSize": 1, } return self._make_request(method=HttpMethod.GET, endpoint=endpoint, params=params) + + def attach_case_playbook_to_case(self) -> requests.Response: + """Attach case playbook to the case.""" + endpoint: str = "/legacyPlaybooks:legacyAttachWorkflowToCase" + payload = { + "cyberCaseId": self.params.case_id, + "shouldRunAutomatic": self.params.should_run_automatic, + "wfName": self.params.playbook_name, + } + if ( + getattr(self.params, "original_workflow_definition_identifier", None) + is not None + ): + payload["originalWorkflowDefinitionIdentifier"] = ( + self.params.original_workflow_definition_identifier + ) + + return self._make_request( + HttpMethod.POST, + endpoint, + json_payload=payload, + params={"format": "camel"}, + ) + + def get_enabled_workflow_cards(self) -> requests.Response: + """Get enabled workflow cards.""" + endpoint: str = "/legacyPlaybooks:legacyGetEnabledWFCards" + payload = { + "caseEnvironment": self.params.environment, + "executionScope": "CASE" + } + return self._make_request( + HttpMethod.POST, + endpoint, + json_payload=payload, + params={"format": "camel"}, + ) diff --git a/packages/tipcommon/TIPCommon/uv.lock b/packages/tipcommon/TIPCommon/uv.lock index 929908cb69..18c4b0057a 100644 --- a/packages/tipcommon/TIPCommon/uv.lock +++ b/packages/tipcommon/TIPCommon/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = "==3.11.*" [[package]] @@ -558,7 +558,7 @@ dependencies = [ [[package]] name = "tipcommon" -version = "2.4.3" +version = "2.4.4" source = { editable = "." } dependencies = [ { name = "google-api-python-client" }, diff --git a/packages/tipcommon/whls/TIPCommon-2.4.4-py3-none-any.whl b/packages/tipcommon/whls/TIPCommon-2.4.4-py3-none-any.whl new file mode 100644 index 0000000000..156c8e8901 Binary files /dev/null and b/packages/tipcommon/whls/TIPCommon-2.4.4-py3-none-any.whl differ