diff --git a/pycti/api/opencti_api_client.py b/pycti/api/opencti_api_client.py index c27a46bb3..1e6b4784b 100644 --- a/pycti/api/opencti_api_client.py +++ b/pycti/api/opencti_api_client.py @@ -11,6 +11,7 @@ from pycti import __version__ from pycti.api.opencti_api_connector import OpenCTIApiConnector from pycti.api.opencti_api_draft import OpenCTIApiDraft +from pycti.api.opencti_api_internal_file import OpenCTIApiInternalFile from pycti.api.opencti_api_notification import OpenCTIApiNotification from pycti.api.opencti_api_pir import OpenCTIApiPir from pycti.api.opencti_api_playbook import OpenCTIApiPlaybook @@ -182,6 +183,7 @@ def __init__( self.connector = OpenCTIApiConnector(self) self.stix2 = OpenCTIStix2(self) self.pir = OpenCTIApiPir(self) + self.internal_file = OpenCTIApiInternalFile(self) # Define the entities self.vocabulary = Vocabulary(self) diff --git a/pycti/api/opencti_api_internal_file.py b/pycti/api/opencti_api_internal_file.py new file mode 100644 index 000000000..a49b04079 --- /dev/null +++ b/pycti/api/opencti_api_internal_file.py @@ -0,0 +1,26 @@ +class OpenCTIApiInternalFile: + """OpenCTIApiInternalFile""" + + def __init__(self, api): + self.api = api + + def delete(self, **kwargs): + item = kwargs.get("item", None) + file_name = self.api.get_attribute_in_extension("id", item) + if file_name is not None: + query = """ + mutation InternalFileDelete($fileName: String) { + deleteImport(fileName: $fileName) + } + """ + self.api.query( + query, + { + "fileName": file_name, + }, + ) + else: + self.api.app_logger.error( + "[stix_internal_file] Cant delete internal file, missing parameters: fileName" + ) + return None diff --git a/pycti/api/opencti_api_playbook.py b/pycti/api/opencti_api_playbook.py index 62a24d515..96677fc0f 100644 --- a/pycti/api/opencti_api_playbook.py +++ b/pycti/api/opencti_api_playbook.py @@ -48,7 +48,7 @@ def delete(self, **kwargs): }, ) else: - self.opencti.app_logger.error( + self.api.app_logger.error( "[stix_playbook] Cant delete playbook, missing parameters: id" ) return None diff --git a/pycti/utils/opencti_stix2.py b/pycti/utils/opencti_stix2.py index 860427d48..142798afb 100644 --- a/pycti/utils/opencti_stix2.py +++ b/pycti/utils/opencti_stix2.py @@ -941,6 +941,7 @@ def get_internal_helper(self): "workspace": self.opencti.workspace, "publicdashboard": self.opencti.public_dashboard, "notification": self.opencti.notification, + "internalfile": self.opencti.internal_file, } def generate_standard_id_from_stix(self, data): @@ -2599,7 +2600,7 @@ def element_operation_delete(self, item, operation): # Element is not knowledge we need to use the right api stix_helper = self.get_internal_helper().get(item["type"]) if stix_helper and hasattr(stix_helper, "delete"): - stix_helper.delete(id=item["id"]) + stix_helper.delete(id=item["id"], item=item) else: raise ValueError( "Delete operation or not found stix helper", {"type": item["type"]}