diff --git a/jupiterone/client.py b/jupiterone/client.py index 7fefb7b..a8da0ba 100644 --- a/jupiterone/client.py +++ b/jupiterone/client.py @@ -5,7 +5,7 @@ import json from warnings import warn -from typing import Dict, List +from typing import Dict, List, Union from datetime import datetime import time @@ -13,7 +13,6 @@ import requests from requests.adapters import HTTPAdapter, Retry from retrying import retry -from typing import Union, List from jupiterone.errors import ( JupiterOneClientError, @@ -703,7 +702,10 @@ def update_integration_instance_config_value( instance_config["data"]["integrationInstance"]["config"] = config_dict # remove externalId to not include in update payload - del instance_config["data"]["integrationInstance"]["config"]["externalId"] + if "externalId" in instance_config["data"]["integrationInstance"]["config"]: + del instance_config["data"]["integrationInstance"]["config"][ + "externalId" + ] # prepare variables GraphQL payload for updating config instance_details = instance_config["data"]["integrationInstance"] @@ -726,12 +728,18 @@ def update_integration_instance_config_value( } # remove problem fields from previous response - del variables["update"]["pollingIntervalCronExpression"]["__typename"] + if variables["update"].get("pollingIntervalCronExpression") is not None: + if "__typename" in ["update"]["pollingIntervalCronExpression"]: + del variables["update"]["pollingIntervalCronExpression"][ + "__typename" + ] - for ingestion_source in instance_details["ingestionSourcesOverrides"]: - ingestion_source.pop( - "__typename", None - ) # Removes key if it exists, ignores if not + ingestion_sources = instance_details.get("ingestionSourcesOverrides", None) + if ingestion_sources is not None: + for ingestion_source in instance_details["ingestionSourcesOverrides"]: + ingestion_source.pop( + "__typename", None + ) # Removes key if it exists, ignores if not response = self._execute_query( UPDATE_INTEGRATION_INSTANCE, variables=variables