Skip to content
This repository was archived by the owner on Dec 5, 2025. It is now read-only.

Commit 7a65e47

Browse files
authored
[client] Export only selected entities (#323)
1 parent 2d869e5 commit 7a65e47

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

pycti/utils/opencti_stix2.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,6 +1899,7 @@ def export_list(
18991899
fromTypes: [str] = None,
19001900
toTypes: [str] = None,
19011901
relationship_type: [str] = None,
1902+
element_id: str = None,
19021903
) -> Dict:
19031904
max_marking_definition_entity = (
19041905
self.opencti.marking_definition.read(id=max_marking_definition)
@@ -1986,6 +1987,53 @@ def export_list(
19861987
relationship_type=relationship_type,
19871988
)
19881989
if entities_list is not None:
1990+
if element_id: # filtering of the data to keep those in the container
1991+
new_entities_list = [
1992+
entity
1993+
for entity in entities_list
1994+
if ("objectsIds" in entity) and (element_id in entity["objectsIds"])
1995+
]
1996+
entities_list = new_entities_list
1997+
1998+
uuids = []
1999+
for entity in entities_list:
2000+
entity_bundle = self.prepare_export(
2001+
self.generate_export(entity),
2002+
"simple",
2003+
max_marking_definition_entity,
2004+
)
2005+
if entity_bundle is not None:
2006+
entity_bundle_filtered = self.filter_objects(uuids, entity_bundle)
2007+
for x in entity_bundle_filtered:
2008+
uuids.append(x["id"])
2009+
bundle["objects"] = bundle["objects"] + entity_bundle_filtered
2010+
return bundle
2011+
2012+
def export_selected(
2013+
self,
2014+
entities_list: [str],
2015+
element_id: str = None,
2016+
max_marking_definition: Dict = None,
2017+
) -> Dict:
2018+
max_marking_definition_entity = (
2019+
self.opencti.marking_definition.read(id=max_marking_definition)
2020+
if max_marking_definition is not None
2021+
else None
2022+
)
2023+
bundle = {
2024+
"type": "bundle",
2025+
"id": "bundle--" + str(uuid.uuid4()),
2026+
"objects": [],
2027+
}
2028+
2029+
if entities_list is not None:
2030+
if element_id: # filtering of the data to keep those in the container
2031+
new_entities_list = [
2032+
entity
2033+
for entity in entities_list
2034+
if element_id in entity["objectsIds"]
2035+
]
2036+
entities_list = new_entities_list
19892037
uuids = []
19902038
for entity in entities_list:
19912039
entity_bundle = self.prepare_export(

0 commit comments

Comments
 (0)