From f07467082588ef8a5170482f5e227ccb52ef5b94 Mon Sep 17 00:00:00 2001 From: Jason Ortiz Date: Fri, 15 Dec 2023 10:03:58 -0500 Subject: [PATCH 1/2] update asset default version after creating a new asset version --- finite_state_sdk/__init__.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/finite_state_sdk/__init__.py b/finite_state_sdk/__init__.py index 76280d9..7078dd7 100644 --- a/finite_state_sdk/__init__.py +++ b/finite_state_sdk/__init__.py @@ -170,6 +170,34 @@ def create_asset(token, organization_context, business_unit_id=None, created_by_ response = send_graphql_query(token, organization_context, graphql_query, variables) return response['data'] +""" + Call updateAsset to set the defaultVersion to the newly created AssetVersion +""" +def update_asset(token, organization_context, asset_id, asset_version_id): + graphql_query = ''' + mutation UpdateAssetMutation($input: UpdateAssetInput!) { + updateAsset(input: $input) { + id + name + defaultVersion { + id + } + versions { + id + } + } + } + ''' + + variables = { + "input": { + "id": asset_id, + "defaultVersion": asset_version_id + } + } + + response = send_graphql_query(token, organization_context, graphql_query, variables) + return response['data'] def create_asset_version(token, organization_context, business_unit_id=None, created_by_user_id=None, asset_id=None, asset_version_name=None, product_id=None): """ @@ -246,6 +274,11 @@ def create_asset_version(token, organization_context, business_unit_id=None, cre variables["input"]["ctx"]["products"] = product_id response = send_graphql_query(token, organization_context, graphql_query, variables) + + if response.ok: + asset_version_id = response['data']['createAssetVersion']['id'] + update_asset(token, organization_context, asset_id, asset_version_id) + return response['data'] From d109af67c82a0bd3dc773923b37bc7cb9d033b17 Mon Sep 17 00:00:00 2001 From: Nicholas Vidovich Date: Mon, 18 Dec 2023 10:53:22 -0500 Subject: [PATCH 2/2] Updated get_findings category parameter to accept a string or an array --- finite_state_sdk/__init__.py | 3 ++- finite_state_sdk/queries.py | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/finite_state_sdk/__init__.py b/finite_state_sdk/__init__.py index 76280d9..ff19c9e 100644 --- a/finite_state_sdk/__init__.py +++ b/finite_state_sdk/__init__.py @@ -1251,7 +1251,8 @@ def get_findings(token, organization_context, asset_version_id=None, category=No asset_version_id (str, optional): Asset Version ID to get findings for. If not provided, will get all findings in the organization. category (str, optional): - The category of Findings to return. Valid values are "CONFIG_ISSUES", "CREDENTIALS", "CRYPTO_MATERIAL", "CVE", "SAST_ANALYSIS". If not specified, will return all findings. See https://docs.finitestate.io/types/finding-category + The category of Findings to return. Valid values are "CONFIG_ISSUES", "CREDENTIALS", "CRYPTO_MATERIAL", "CVE", "SAST_ANALYSIS". If not specified, will return all findings. See https://docs.finitestate.io/types/finding-category. + This can be a single string, or an array of values. status (str, optional): The status of Findings to return. severity (str, optional): diff --git a/finite_state_sdk/queries.py b/finite_state_sdk/queries.py index 0467056..276076b 100644 --- a/finite_state_sdk/queries.py +++ b/finite_state_sdk/queries.py @@ -376,14 +376,16 @@ def _create_GET_FINDINGS_VARIABLES(asset_version_id=None, category=None, cve_id= else: variables["filter"]["assetVersionRefId"] = str(asset_version_id) + # if category is a string, make it a list + if isinstance(category, str): + category = [category] + if category is not None: variables["filter"]["AND"] = [ { "OR": [ { - "category_in": [ - category - ] + "category_in": category } ] },