diff --git a/pycti/entities/opencti_threat_actor.py b/pycti/entities/opencti_threat_actor.py index 601489277..126fb2935 100644 --- a/pycti/entities/opencti_threat_actor.py +++ b/pycti/entities/opencti_threat_actor.py @@ -178,6 +178,7 @@ def list(self, **kwargs) -> dict: order_by = kwargs.get("orderBy", None) order_mode = kwargs.get("orderMode", None) custom_attributes = kwargs.get("customAttributes", None) + get_all = kwargs.get("getAll", False) with_pagination = kwargs.get("withPagination", False) self.opencti.app_logger.info( @@ -216,9 +217,31 @@ def list(self, **kwargs) -> dict: "orderMode": order_mode, }, ) - return self.opencti.process_multiple( - result["data"]["threatActors"], with_pagination - ) + if get_all: + final_data = [] + data = self.opencti.process_multiple(result["data"]["threatActors"]) + final_data = final_data + data + while result["data"]["threatActors"]["pageInfo"]["hasNextPage"]: + after = result["data"]["threatActors"]["pageInfo"]["endCursor"] + self.opencti.app_logger.info("Listing threatActors", {"after": after}) + result = self.opencti.query( + query, + { + "filters": filters, + "search": search, + "first": first, + "after": after, + "orderBy": order_by, + "orderMode": order_mode, + }, + ) + data = self.opencti.process_multiple(result["data"]["threatActors"]) + final_data = final_data + data + return final_data + else: + return self.opencti.process_multiple( + result["data"]["threatActors"], with_pagination + ) def read(self, **kwargs) -> Union[dict, None]: """Read a Threat-Actor object diff --git a/pycti/entities/opencti_threat_actor_group.py b/pycti/entities/opencti_threat_actor_group.py index 9e2f499ea..d5c6d6d3d 100644 --- a/pycti/entities/opencti_threat_actor_group.py +++ b/pycti/entities/opencti_threat_actor_group.py @@ -171,6 +171,7 @@ def list(self, **kwargs) -> dict: order_by = kwargs.get("orderBy", None) order_mode = kwargs.get("orderMode", None) custom_attributes = kwargs.get("customAttributes", None) + get_all = kwargs.get("getAll", False) with_pagination = kwargs.get("withPagination", False) self.opencti.app_logger.info( @@ -209,9 +210,35 @@ def list(self, **kwargs) -> dict: "orderMode": order_mode, }, ) - return self.opencti.process_multiple( - result["data"]["threatActorsGroup"], with_pagination - ) + if get_all: + final_data = [] + data = self.opencti.process_multiple(result["data"]["threatActorsGroup"]) + final_data = final_data + data + while result["data"]["threatActorsGroup"]["pageInfo"]["hasNextPage"]: + after = result["data"]["threatActorsGroup"]["pageInfo"]["endCursor"] + self.opencti.app_logger.info( + "Listing threatActorsGroup", {"after": after} + ) + result = self.opencti.query( + query, + { + "filters": filters, + "search": search, + "first": first, + "after": after, + "orderBy": order_by, + "orderMode": order_mode, + }, + ) + data = self.opencti.process_multiple( + result["data"]["threatActorsGroup"] + ) + final_data = final_data + data + return final_data + else: + return self.opencti.process_multiple( + result["data"]["threatActorsGroup"], with_pagination + ) def read(self, **kwargs) -> Union[dict, None]: """Read a Threat-Actor-Group object diff --git a/pycti/entities/opencti_threat_actor_individual.py b/pycti/entities/opencti_threat_actor_individual.py index b4a5ea7c1..8735319de 100644 --- a/pycti/entities/opencti_threat_actor_individual.py +++ b/pycti/entities/opencti_threat_actor_individual.py @@ -171,6 +171,7 @@ def list(self, **kwargs) -> dict: order_by = kwargs.get("orderBy", None) order_mode = kwargs.get("orderMode", None) custom_attributes = kwargs.get("customAttributes", None) + get_all = kwargs.get("getAll", False) with_pagination = kwargs.get("withPagination", False) self.opencti.app_logger.info( @@ -210,9 +211,39 @@ def list(self, **kwargs) -> dict: "orderMode": order_mode, }, ) - return self.opencti.process_multiple( - result["data"]["threatActorsIndividuals"], with_pagination - ) + if get_all: + final_data = [] + data = self.opencti.process_multiple( + result["data"]["threatActorsIndividuals"] + ) + final_data = final_data + data + while result["data"]["threatActorsIndividuals"]["pageInfo"]["hasNextPage"]: + after = result["data"]["threatActorsIndividuals"]["pageInfo"][ + "endCursor" + ] + self.opencti.app_logger.info( + "Listing threatActorsIndividuals", {"after": after} + ) + result = self.opencti.query( + query, + { + "filters": filters, + "search": search, + "first": first, + "after": after, + "orderBy": order_by, + "orderMode": order_mode, + }, + ) + data = self.opencti.process_multiple( + result["data"]["threatActorsIndividuals"] + ) + final_data = final_data + data + return final_data + else: + return self.opencti.process_multiple( + result["data"]["threatActorsIndividuals"], with_pagination + ) def read(self, **kwargs) -> Union[dict, None]: """Read a Threat-Actor-Individual object