pycti 5.11.14__py3-none-any.whl → 5.12.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pycti might be problematic. Click here for more details.

Files changed (53) hide show
  1. pycti/__init__.py +1 -1
  2. pycti/api/opencti_api_work.py +6 -4
  3. pycti/connector/opencti_connector_helper.py +6 -5
  4. pycti/entities/opencti_attack_pattern.py +1 -1
  5. pycti/entities/opencti_campaign.py +1 -1
  6. pycti/entities/opencti_case_incident.py +24 -5
  7. pycti/entities/opencti_case_rfi.py +26 -5
  8. pycti/entities/opencti_case_rft.py +26 -5
  9. pycti/entities/opencti_channel.py +1 -1
  10. pycti/entities/opencti_course_of_action.py +1 -1
  11. pycti/entities/opencti_data_component.py +1 -1
  12. pycti/entities/opencti_data_source.py +1 -1
  13. pycti/entities/opencti_event.py +1 -1
  14. pycti/entities/opencti_external_reference.py +1 -1
  15. pycti/entities/opencti_feedback.py +9 -5
  16. pycti/entities/opencti_grouping.py +9 -5
  17. pycti/entities/opencti_identity.py +1 -1
  18. pycti/entities/opencti_incident.py +1 -1
  19. pycti/entities/opencti_indicator.py +1 -1
  20. pycti/entities/opencti_infrastructure.py +1 -1
  21. pycti/entities/opencti_intrusion_set.py +1 -1
  22. pycti/entities/opencti_kill_chain_phase.py +1 -1
  23. pycti/entities/opencti_label.py +8 -2
  24. pycti/entities/opencti_language.py +1 -1
  25. pycti/entities/opencti_location.py +1 -1
  26. pycti/entities/opencti_malware.py +1 -1
  27. pycti/entities/opencti_malware_analysis.py +1 -1
  28. pycti/entities/opencti_marking_definition.py +1 -1
  29. pycti/entities/opencti_narrative.py +1 -1
  30. pycti/entities/opencti_note.py +1 -1
  31. pycti/entities/opencti_observed_data.py +1 -1
  32. pycti/entities/opencti_opinion.py +1 -1
  33. pycti/entities/opencti_report.py +9 -5
  34. pycti/entities/opencti_stix_core_object.py +1 -1
  35. pycti/entities/opencti_stix_core_relationship.py +7 -3
  36. pycti/entities/opencti_stix_cyber_observable.py +15 -3
  37. pycti/entities/opencti_stix_domain_object.py +26 -6
  38. pycti/entities/opencti_stix_nested_ref_relationship.py +2 -2
  39. pycti/entities/opencti_stix_sighting_relationship.py +2 -2
  40. pycti/entities/opencti_task.py +9 -5
  41. pycti/entities/opencti_threat_actor.py +1 -1
  42. pycti/entities/opencti_threat_actor_group.py +1 -1
  43. pycti/entities/opencti_threat_actor_individual.py +1 -1
  44. pycti/entities/opencti_tool.py +1 -1
  45. pycti/entities/opencti_vocabulary.py +8 -2
  46. pycti/entities/opencti_vulnerability.py +1 -1
  47. pycti/utils/opencti_stix2.py +52 -26
  48. {pycti-5.11.14.dist-info → pycti-5.12.0.dist-info}/METADATA +6 -6
  49. pycti-5.12.0.dist-info/RECORD +67 -0
  50. {pycti-5.11.14.dist-info → pycti-5.12.0.dist-info}/WHEEL +1 -1
  51. pycti-5.11.14.dist-info/RECORD +0 -67
  52. {pycti-5.11.14.dist-info → pycti-5.12.0.dist-info}/LICENSE +0 -0
  53. {pycti-5.11.14.dist-info → pycti-5.12.0.dist-info}/top_level.txt +0 -0
@@ -397,7 +397,7 @@ class StixCoreRelationship:
397
397
  start_time_stop = kwargs.get("startTimeStop", None)
398
398
  stop_time_start = kwargs.get("stopTimeStart", None)
399
399
  stop_time_stop = kwargs.get("stopTimeStop", None)
400
- filters = kwargs.get("filters", [])
400
+ filters = kwargs.get("filters", None)
401
401
  first = kwargs.get("first", 100)
402
402
  after = kwargs.get("after", None)
403
403
  order_by = kwargs.get("orderBy", None)
@@ -416,7 +416,7 @@ class StixCoreRelationship:
416
416
  )
417
417
  query = (
418
418
  """
419
- query StixCoreRelationships($elementId: [String], $elementWithTargetTypes: [String], $fromId: [String], $fromTypes: [String], $toId: [String], $toTypes: [String], $relationship_type: [String], $startTimeStart: DateTime, $startTimeStop: DateTime, $stopTimeStart: DateTime, $stopTimeStop: DateTime, $filters: [StixCoreRelationshipsFiltering], $first: Int, $after: ID, $orderBy: StixCoreRelationshipsOrdering, $orderMode: OrderingMode) {
419
+ query StixCoreRelationships($elementId: [String], $elementWithTargetTypes: [String], $fromId: [String], $fromTypes: [String], $toId: [String], $toTypes: [String], $relationship_type: [String], $startTimeStart: DateTime, $startTimeStop: DateTime, $stopTimeStart: DateTime, $stopTimeStop: DateTime, $filters: FilterGroup, $first: Int, $after: ID, $orderBy: StixCoreRelationshipsOrdering, $orderMode: OrderingMode) {
420
420
  stixCoreRelationships(elementId: $elementId, elementWithTargetTypes: $elementWithTargetTypes, fromId: $fromId, fromTypes: $fromTypes, toId: $toId, toTypes: $toTypes, relationship_type: $relationship_type, startTimeStart: $startTimeStart, startTimeStop: $startTimeStop, stopTimeStart: $stopTimeStart, stopTimeStop: $stopTimeStop, filters: $filters, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
421
421
  edges {
422
422
  node {
@@ -819,7 +819,11 @@ class StixCoreRelationship:
819
819
  label_name = kwargs.get("label_name", None)
820
820
  if label_name is not None:
821
821
  label = self.opencti.label.read(
822
- filters=[{"key": "value", "values": [label_name]}]
822
+ filters={
823
+ "mode": "and",
824
+ "filters": [{"key": "value", "values": [label_name]}],
825
+ "filterGroups": [],
826
+ }
823
827
  )
824
828
  if label:
825
829
  label_id = label["id"]
@@ -155,6 +155,10 @@ class StixCyberObservable:
155
155
  id
156
156
  name
157
157
  size
158
+ metaData {
159
+ mimetype
160
+ version
161
+ }
158
162
  }
159
163
  }
160
164
  }
@@ -648,7 +652,7 @@ class StixCyberObservable:
648
652
  )
649
653
  query = (
650
654
  """
651
- query StixCyberObservables($types: [String], $filters: [StixCyberObservablesFiltering], $search: String, $first: Int, $after: ID, $orderBy: StixCyberObservablesOrdering, $orderMode: OrderingMode) {
655
+ query StixCyberObservables($types: [String], $filters: FilterGroup, $search: String, $first: Int, $after: ID, $orderBy: StixCyberObservablesOrdering, $orderMode: OrderingMode) {
652
656
  stixCyberObservables(types: $types, filters: $filters, search: $search, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
653
657
  edges {
654
658
  node {
@@ -1959,7 +1963,11 @@ class StixCyberObservable:
1959
1963
  label_name = kwargs.get("label_name", None)
1960
1964
  if label_name is not None:
1961
1965
  label = self.opencti.label.read(
1962
- filters=[{"key": "value", "values": [label_name]}]
1966
+ filters={
1967
+ "mode": "and",
1968
+ "filters": [{"key": "value", "values": [label_name]}],
1969
+ "filterGroups": [],
1970
+ }
1963
1971
  )
1964
1972
  if label:
1965
1973
  label_id = label["id"]
@@ -2006,7 +2014,11 @@ class StixCyberObservable:
2006
2014
  label_name = kwargs.get("label_name", None)
2007
2015
  if label_name is not None:
2008
2016
  label = self.opencti.label.read(
2009
- filters=[{"key": "value", "values": [label_name]}]
2017
+ filters={
2018
+ "mode": "and",
2019
+ "filters": [{"key": "value", "values": [label_name]}],
2020
+ "filterGroups": [],
2021
+ }
2010
2022
  )
2011
2023
  if label:
2012
2024
  label_id = label["id"]
@@ -1072,7 +1072,7 @@ class StixDomainObject:
1072
1072
  LOGGER.info("Listing Stix-Domain-Objects with filters %s.", json.dumps(filters))
1073
1073
  query = (
1074
1074
  """
1075
- query StixDomainObjects($types: [String], $filters: [StixDomainObjectsFiltering], $search: String, $relationship_type: [String], $elementId: String, $first: Int, $after: ID, $orderBy: StixDomainObjectsOrdering, $orderMode: OrderingMode) {
1075
+ query StixDomainObjects($types: [String], $filters: FilterGroup, $search: String, $relationship_type: [String], $elementId: String, $first: Int, $after: ID, $orderBy: StixDomainObjectsOrdering, $orderMode: OrderingMode) {
1076
1076
  stixDomainObjects(types: $types, filters: $filters, search: $search, relationship_type: $relationship_type, elementId: $elementId, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
1077
1077
  edges {
1078
1078
  node {
@@ -1215,20 +1215,32 @@ class StixDomainObject:
1215
1215
  # TODO: Change this logic and move it to the API.
1216
1216
  object_result = self.read(
1217
1217
  types=types,
1218
- filters=[{"key": "name", "values": [name]}],
1218
+ filters={
1219
+ "mode": "and",
1220
+ "filters": [{"key": "name", "values": [name]}],
1221
+ "filterGroups": [],
1222
+ },
1219
1223
  customAttributes=custom_attributes,
1220
1224
  )
1221
1225
  if object_result is None:
1222
1226
  object_result = self.read(
1223
1227
  types=types,
1224
- filters=[{"key": field_name, "values": [name]}],
1228
+ filters={
1229
+ "mode": "and",
1230
+ "filters": [{"key": field_name, "values": [name]}],
1231
+ "filterGroups": [],
1232
+ },
1225
1233
  customAttributes=custom_attributes,
1226
1234
  )
1227
1235
  if object_result is None:
1228
1236
  for alias in aliases:
1229
1237
  object_result = self.read(
1230
1238
  types=types,
1231
- filters=[{"key": field_name, "values": [alias]}],
1239
+ filters={
1240
+ "mode": "and",
1241
+ "filters": [{"key": field_name, "values": [alias]}],
1242
+ "filterGroups": [],
1243
+ },
1232
1244
  customAttributes=custom_attributes,
1233
1245
  )
1234
1246
  return object_result
@@ -1582,7 +1594,11 @@ class StixDomainObject:
1582
1594
  label_name = kwargs.get("label_name", None)
1583
1595
  if label_name is not None:
1584
1596
  label = self.opencti.label.read(
1585
- filters=[{"key": "value", "values": [label_name]}]
1597
+ filters={
1598
+ "mode": "and",
1599
+ "filters": [{"key": "value", "values": [label_name]}],
1600
+ "filterGroups": [],
1601
+ }
1586
1602
  )
1587
1603
  if label:
1588
1604
  label_id = label["id"]
@@ -1629,7 +1645,11 @@ class StixDomainObject:
1629
1645
  label_name = kwargs.get("label_name", None)
1630
1646
  if label_name is not None:
1631
1647
  label = self.opencti.label.read(
1632
- filters=[{"key": "value", "values": [label_name]}]
1648
+ filters={
1649
+ "mode": "and",
1650
+ "filters": [{"key": "value", "values": [label_name]}],
1651
+ "filterGroups": [],
1652
+ }
1633
1653
  )
1634
1654
  if label:
1635
1655
  label_id = label["id"]
@@ -91,7 +91,7 @@ class StixNestedRefRelationship:
91
91
  start_time_stop = kwargs.get("startTimeStop", None)
92
92
  stop_time_start = kwargs.get("stopTimeStart", None)
93
93
  stop_time_stop = kwargs.get("stopTimeStop", None)
94
- filters = kwargs.get("filters", [])
94
+ filters = kwargs.get("filters", None)
95
95
  first = kwargs.get("first", 500)
96
96
  after = kwargs.get("after", None)
97
97
  order_by = kwargs.get("orderBy", None)
@@ -108,7 +108,7 @@ class StixNestedRefRelationship:
108
108
  )
109
109
  query = (
110
110
  """
111
- query StixNestedRefRelationships($elementId: String, $fromId: StixRef, $fromTypes: [String], $toId: StixRef, $toTypes: [String], $relationship_type: [String], $startTimeStart: DateTime, $startTimeStop: DateTime, $stopTimeStart: DateTime, $stopTimeStop: DateTime, $filters: [StixRefRelationshipsFiltering], $first: Int, $after: ID, $orderBy: StixRefRelationshipsOrdering, $orderMode: OrderingMode) {
111
+ query StixNestedRefRelationships($elementId: String, $fromId: StixRef, $fromTypes: [String], $toId: StixRef, $toTypes: [String], $relationship_type: [String], $startTimeStart: DateTime, $startTimeStop: DateTime, $stopTimeStart: DateTime, $stopTimeStop: DateTime, $filters: FilterGroup, $first: Int, $after: ID, $orderBy: StixRefRelationshipsOrdering, $orderMode: OrderingMode) {
112
112
  stixNestedRefRelationships(elementId: $elementId, fromId: $fromId, fromTypes: $fromTypes, toId: $toId, toTypes: $toTypes, relationship_type: $relationship_type, startTimeStart: $startTimeStart, startTimeStop: $startTimeStop, stopTimeStart: $stopTimeStart, stopTimeStop: $stopTimeStop, filters: $filters, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
113
113
  edges {
114
114
  node {
@@ -317,7 +317,7 @@ class StixSightingRelationship:
317
317
  first_seen_stop = kwargs.get("firstSeenStop", None)
318
318
  last_seen_start = kwargs.get("lastSeenStart", None)
319
319
  last_seen_stop = kwargs.get("lastSeenStop", None)
320
- filters = kwargs.get("filters", [])
320
+ filters = kwargs.get("filters", None)
321
321
  first = kwargs.get("first", 100)
322
322
  after = kwargs.get("after", None)
323
323
  order_by = kwargs.get("orderBy", None)
@@ -334,7 +334,7 @@ class StixSightingRelationship:
334
334
  )
335
335
  query = (
336
336
  """
337
- query StixSightingRelationships($elementId: String, $fromId: StixRef, $fromTypes: [String], $toId: StixRef, $toTypes: [String], $firstSeenStart: DateTime, $firstSeenStop: DateTime, $lastSeenStart: DateTime, $lastSeenStop: DateTime, $filters: [StixSightingRelationshipsFiltering], $first: Int, $after: ID, $orderBy: StixSightingRelationshipsOrdering, $orderMode: OrderingMode) {
337
+ query StixSightingRelationships($elementId: String, $fromId: StixRef, $fromTypes: [String], $toId: StixRef, $toTypes: [String], $firstSeenStart: DateTime, $firstSeenStop: DateTime, $lastSeenStart: DateTime, $lastSeenStop: DateTime, $filters: FilterGroup, $first: Int, $after: ID, $orderBy: StixSightingRelationshipsOrdering, $orderMode: OrderingMode) {
338
338
  stixSightingRelationships(elementId: $elementId, fromId: $fromId, fromTypes: $fromTypes, toId: $toId, toTypes: $toTypes, firstSeenStart: $firstSeenStart, firstSeenStop: $firstSeenStop, lastSeenStart: $lastSeenStart, lastSeenStop: $lastSeenStop, filters: $filters, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
339
339
  edges {
340
340
  node {
@@ -274,7 +274,7 @@ class Task:
274
274
  LOGGER.info("Listing Tasks with filters " + json.dumps(filters) + ".")
275
275
  query = (
276
276
  """
277
- query tasks($filters: [TasksFiltering!], $search: String, $first: Int, $after: ID, $orderBy: TasksOrdering, $orderMode: OrderingMode) {
277
+ query tasks($filters: FilterGroup, $search: String, $first: Int, $after: ID, $orderBy: TasksOrdering, $orderMode: OrderingMode) {
278
278
  tasks(filters: $filters, search: $search, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
279
279
  edges {
280
280
  node {
@@ -389,10 +389,14 @@ class Task:
389
389
  if object_result is None and name is not None and created is not None:
390
390
  created_final = parse(created).strftime("%Y-%m-%d")
391
391
  object_result = self.read(
392
- filters=[
393
- {"key": "name", "values": [name]},
394
- {"key": "created_day", "values": [created_final]},
395
- ],
392
+ filters={
393
+ "mode": "and",
394
+ "filters": [
395
+ {"key": "name", "values": [name]},
396
+ {"key": "created_day", "values": [created_final]},
397
+ ],
398
+ "filterGroups": [],
399
+ },
396
400
  customAttributes=custom_attributes,
397
401
  )
398
402
  return object_result
@@ -188,7 +188,7 @@ class ThreatActor:
188
188
  LOGGER.info("Listing Threat-Actors with filters %s.", json.dumps(filters))
189
189
  query = (
190
190
  """
191
- query ThreatActors($filters: [ThreatActorsFiltering], $search: String, $first: Int, $after: ID, $orderBy: ThreatActorsOrdering, $orderMode: OrderingMode) {
191
+ query ThreatActors($filters: FilterGroup, $search: String, $first: Int, $after: ID, $orderBy: ThreatActorsOrdering, $orderMode: OrderingMode) {
192
192
  threatActors(filters: $filters, search: $search, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
193
193
  edges {
194
194
  node {
@@ -185,7 +185,7 @@ class ThreatActorGroup:
185
185
  LOGGER.info("Listing Threat-Actors-Group with filters %s.", json.dumps(filters))
186
186
  query = (
187
187
  """
188
- query ThreatActorsGroup($filters: [ThreatActorsFiltering], $search: String, $first: Int, $after: ID, $orderBy: ThreatActorsOrdering, $orderMode: OrderingMode) {
188
+ query ThreatActorsGroup($filters: FilterGroup, $search: String, $first: Int, $after: ID, $orderBy: ThreatActorsOrdering, $orderMode: OrderingMode) {
189
189
  threatActorsGroup(filters: $filters, search: $search, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
190
190
  edges {
191
191
  node {
@@ -187,7 +187,7 @@ class ThreatActorIndividual:
187
187
  )
188
188
  query = (
189
189
  """
190
- query ThreatActorsIndividual($filters: [ThreatActorsIndividualFiltering!], $search: String, $first: Int, $after: ID, $orderBy: ThreatActorsIndividualOrdering, $orderMode: OrderingMode) {
190
+ query ThreatActorsIndividual($filters: FilterGroup, $search: String, $first: Int, $after: ID, $orderBy: ThreatActorsIndividualOrdering, $orderMode: OrderingMode) {
191
191
  threatActorsIndividuals(filters: $filters, search: $search, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
192
192
  edges {
193
193
  node {
@@ -178,7 +178,7 @@ class Tool:
178
178
  LOGGER.info("Listing Tools with filters %s.", json.dumps(filters))
179
179
  query = (
180
180
  """
181
- query Tools($filters: [ToolsFiltering], $search: String, $first: Int, $after: ID, $orderBy: ToolsOrdering, $orderMode: OrderingMode) {
181
+ query Tools($filters: FilterGroup, $search: String, $first: Int, $after: ID, $orderBy: ToolsOrdering, $orderMode: OrderingMode) {
182
182
  tools(filters: $filters, search: $search, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
183
183
  edges {
184
184
  node {
@@ -22,7 +22,7 @@ class Vocabulary:
22
22
  )
23
23
  query = (
24
24
  """
25
- query Vocabularies($filters: [VocabularyFiltering!]) {
25
+ query Vocabularies($filters: FilterGroup) {
26
26
  vocabularies(filters: $filters) {
27
27
  edges {
28
28
  node {
@@ -137,7 +137,13 @@ class Vocabulary:
137
137
 
138
138
  def read_or_create_unchecked(self, **kwargs):
139
139
  value = kwargs.get("name", None)
140
- vocab = self.read(filters=[{"key": "name", "values": [value]}])
140
+ vocab = self.read(
141
+ filters={
142
+ "mode": "and",
143
+ "filters": [{"key": "name", "values": [value]}],
144
+ "filterGroups": [],
145
+ }
146
+ )
141
147
  if vocab is None:
142
148
  try:
143
149
  return self.create(**kwargs)
@@ -168,7 +168,7 @@ class Vulnerability:
168
168
  LOGGER.info("Listing Vulnerabilities with filters %s.", json.dumps(filters))
169
169
  query = (
170
170
  """
171
- query Vulnerabilities($filters: [VulnerabilitiesFiltering], $search: String, $first: Int, $after: ID, $orderBy: VulnerabilitiesOrdering, $orderMode: OrderingMode) {
171
+ query Vulnerabilities($filters: FilterGroup, $search: String, $first: Int, $after: ID, $orderBy: VulnerabilitiesOrdering, $orderMode: OrderingMode) {
172
172
  vulnerabilities(filters: $filters, search: $search, first: $first, after: $after, orderBy: $orderBy, orderMode: $orderMode) {
173
173
  edges {
174
174
  node {
@@ -644,10 +644,20 @@ class OpenCTIStix2:
644
644
  else:
645
645
  object_marking_ref_result = (
646
646
  self.opencti.marking_definition.read(
647
- filters=[
648
- {"key": "definition_type", "values": ["TLP"]},
649
- {"key": "definition", "values": ["TLP:CLEAR"]},
650
- ]
647
+ filters={
648
+ "mode": "and",
649
+ "filters": [
650
+ {
651
+ "key": "definition_type",
652
+ "values": ["TLP"],
653
+ },
654
+ {
655
+ "key": "definition",
656
+ "values": ["TLP:CLEAR"],
657
+ },
658
+ ],
659
+ "filterGroups": [],
660
+ }
651
661
  )
652
662
  )
653
663
  self.mapping_cache["marking_tlpclear"] = {
@@ -2124,28 +2134,40 @@ class OpenCTIStix2:
2124
2134
 
2125
2135
  if IdentityTypes.has_value(entity_type):
2126
2136
  if filters is not None:
2127
- filters.append({"key": "entity_type", "values": [entity_type]})
2137
+ filters.filters.append({"key": "entity_type", "values": [entity_type]})
2128
2138
  else:
2129
- filters = [{"key": "entity_type", "values": [entity_type]}]
2139
+ filters = {
2140
+ "mode": "and",
2141
+ "filters": [{"key": "entity_type", "values": [entity_type]}],
2142
+ "filterGroups": [],
2143
+ }
2130
2144
  entity_type = "Identity"
2131
2145
 
2132
2146
  if LocationTypes.has_value(entity_type):
2133
2147
  if filters is not None:
2134
- filters.append({"key": "entity_type", "values": [entity_type]})
2148
+ filters.filters.append({"key": "entity_type", "values": [entity_type]})
2135
2149
  else:
2136
- filters = [{"key": "entity_type", "values": [entity_type]}]
2150
+ filters = {
2151
+ "mode": "and",
2152
+ "filters": [{"key": "entity_type", "values": [entity_type]}],
2153
+ "filterGroups": [],
2154
+ }
2137
2155
  entity_type = "Location"
2138
2156
 
2139
2157
  if StixCyberObservableTypes.has_value(entity_type):
2140
2158
  if filters is not None:
2141
- filters.append({"key": "entity_type", "values": [entity_type]})
2159
+ filters.filters.append({"key": "entity_type", "values": [entity_type]})
2142
2160
  else:
2143
- filters = [{"key": "entity_type", "values": [entity_type]}]
2161
+ filters = {
2162
+ "mode": "and",
2163
+ "filters": [{"key": "entity_type", "values": [entity_type]}],
2164
+ "filterGroups": [],
2165
+ }
2144
2166
  entity_type = "Stix-Cyber-Observable"
2145
2167
 
2146
2168
  if entity_type == "Container":
2147
2169
  if filters is not None:
2148
- filters.append(
2170
+ filters.filters.append(
2149
2171
  {
2150
2172
  "key": "entity_type",
2151
2173
  "values": [
@@ -2161,21 +2183,25 @@ class OpenCTIStix2:
2161
2183
  }
2162
2184
  )
2163
2185
  else:
2164
- filters = [
2165
- {
2166
- "key": "entity_type",
2167
- "values": [
2168
- "Report",
2169
- "Grouping",
2170
- "Note",
2171
- "Observed-Data",
2172
- "Opinion",
2173
- "Case-Incident",
2174
- "Case-Rfi",
2175
- "Case-Rft",
2176
- ],
2177
- }
2178
- ]
2186
+ filters = {
2187
+ "mode": "and",
2188
+ "filters": [
2189
+ {
2190
+ "key": "entity_type",
2191
+ "values": [
2192
+ "Report",
2193
+ "Grouping",
2194
+ "Note",
2195
+ "Observed-Data",
2196
+ "Opinion",
2197
+ "Case-Incident",
2198
+ "Case-Rfi",
2199
+ "Case-Rft",
2200
+ ],
2201
+ }
2202
+ ],
2203
+ "filterGroups": [],
2204
+ }
2179
2205
  entity_type = "Stix-Domain-Object"
2180
2206
 
2181
2207
  # List
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycti
3
- Version: 5.11.14
3
+ Version: 5.12.0
4
4
  Summary: Python API client for OpenCTI.
5
5
  Home-page: https://github.com/OpenCTI-Platform/client-python
6
6
  Author: Filigran
@@ -23,11 +23,11 @@ Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  Requires-Dist: datefinder ~=0.7.3
25
25
  Requires-Dist: pika ~=1.3.1
26
- Requires-Dist: prometheus-client ~=0.18.0
26
+ Requires-Dist: prometheus-client ~=0.19.0
27
27
  Requires-Dist: python-json-logger ~=2.0.4
28
28
  Requires-Dist: pyyaml ~=6.0
29
29
  Requires-Dist: requests ~=2.31.0
30
- Requires-Dist: setuptools ~=68.2.1
30
+ Requires-Dist: setuptools ~=69.0.2
31
31
  Requires-Dist: filigran-sseclient ~=1.0.0
32
32
  Requires-Dist: stix2 ~=3.0.1
33
33
  Requires-Dist: cachetools ~=5.3.0
@@ -44,11 +44,11 @@ Requires-Dist: pytest-cov ~=4.1.0 ; extra == 'dev'
44
44
  Requires-Dist: pytest-randomly ~=3.15.0 ; extra == 'dev'
45
45
  Requires-Dist: pytest ~=7.4.0 ; extra == 'dev'
46
46
  Requires-Dist: types-python-dateutil ~=2.8.19 ; extra == 'dev'
47
- Requires-Dist: wheel ~=0.41.0 ; extra == 'dev'
47
+ Requires-Dist: wheel ~=0.42.0 ; extra == 'dev'
48
48
  Provides-Extra: doc
49
49
  Requires-Dist: autoapi ~=2.0.1 ; extra == 'doc'
50
- Requires-Dist: sphinx-autodoc-typehints ~=1.24.0 ; extra == 'doc'
51
- Requires-Dist: sphinx-rtd-theme ~=1.3.0 ; extra == 'doc'
50
+ Requires-Dist: sphinx-autodoc-typehints ~=1.25.2 ; extra == 'doc'
51
+ Requires-Dist: sphinx-rtd-theme ~=2.0.0 ; extra == 'doc'
52
52
 
53
53
  # OpenCTI client for Python
54
54
 
@@ -0,0 +1,67 @@
1
+ pycti/__init__.py,sha256=ZqMC83-l0kjlA9EVSGFhff85P-AI5KKdsMkda_yAD2w,4692
2
+ pycti/api/__init__.py,sha256=t78k-bMV5HrTAzNeWgL9sv-Qk5CvzS8ngXFlbTAYEIA,53
3
+ pycti/api/opencti_api_client.py,sha256=7BO-_TUU1Ih-zg7WFUNMXt_WIw_DVwPVMBqYSVUWTOY,29520
4
+ pycti/api/opencti_api_connector.py,sha256=53kV9IE1kcV5Q-Gbdj-2LKDc3ZxqQZUaqCXHeDjRVh8,3565
5
+ pycti/api/opencti_api_playbook.py,sha256=3CbxGZGQ_E967fpKQSamXJG-GZqlELZr6o4Z_mcWT30,1365
6
+ pycti/api/opencti_api_work.py,sha256=LK7gtVMzocmO2GCTkIpWXddxQS-z-7WFv0rjwQ0UCco,6908
7
+ pycti/connector/__init__.py,sha256=t78k-bMV5HrTAzNeWgL9sv-Qk5CvzS8ngXFlbTAYEIA,53
8
+ pycti/connector/opencti_connector.py,sha256=0vrZ8Y8ecbxegAP1YhpX6ybOZahYjjOkcId51D1oBi4,2449
9
+ pycti/connector/opencti_connector_helper.py,sha256=xlm3c28nfnOEQDqlDAfHX8QPY1NtSe3mwe3CN-tdm3w,47690
10
+ pycti/connector/opencti_metric_handler.py,sha256=LWAc3RwbwUgbRvwtUaoOJ1SsfW7Cuq8RaN1jhJg-QSA,3548
11
+ pycti/entities/__init__.py,sha256=t78k-bMV5HrTAzNeWgL9sv-Qk5CvzS8ngXFlbTAYEIA,53
12
+ pycti/entities/opencti_attack_pattern.py,sha256=EZ3JSlK_Y58puV7iJ8U7irAgixpcZOb4IWlXCjojj8g,22265
13
+ pycti/entities/opencti_campaign.py,sha256=Dun_maYmugeW8y9d3mrgD5wBMnlvqU8LD2uZJ6B3I6Q,17259
14
+ pycti/entities/opencti_case_incident.py,sha256=Y2nwV4r1si_Q0bWnoaCUcxoxKnE6m0BEQ5lGlD17vpY,33831
15
+ pycti/entities/opencti_case_rfi.py,sha256=xmboVhsrR7mD7J8I6nKqbpppQBI-yFwQ1lGcsQHvhJY,32144
16
+ pycti/entities/opencti_case_rft.py,sha256=TutlHiaaY71ZzcllblSWafARH_qz9o5Q0UyXWK38L9M,33034
17
+ pycti/entities/opencti_channel.py,sha256=YditzOmt6bmERT7c2HXRzNg6GVGVMh5mvQikBdW-L6k,16736
18
+ pycti/entities/opencti_course_of_action.py,sha256=ZlKNb4IbQ_epgwkQf_QsabgpcC4Ui65LI-IOFbeacEI,18397
19
+ pycti/entities/opencti_data_component.py,sha256=eCm8KOUpuQciav_obNHo2ycRZ2WtXAdzKmANQ0N2zQ4,18862
20
+ pycti/entities/opencti_data_source.py,sha256=XaRa_c94vxLTGM941CrN9GrTHTzUEV3DXUF10DZQ2qI,18048
21
+ pycti/entities/opencti_event.py,sha256=dNX_44q5nXsB1JwmhW9GXpgWYmXwcsUvEmigKGOt1iM,16906
22
+ pycti/entities/opencti_external_reference.py,sha256=Z5YIS2X-UCbFCqnj3Uc113aauEQaZwwLOGKeWZneY28,12732
23
+ pycti/entities/opencti_feedback.py,sha256=K94ztpdo8Mog-KKGwsxt8CkIdQooVL54dkTuBD0htW8,32273
24
+ pycti/entities/opencti_grouping.py,sha256=sMV1NbNOIA1wVaKUqm0w2V5IFvtLWw3lzliOCKAPrp4,29445
25
+ pycti/entities/opencti_identity.py,sha256=3ygZHO2AlS3meQPoHvFbj8yyQXxCnuLZIWuU8BKwolI,22998
26
+ pycti/entities/opencti_incident.py,sha256=TOhZkuAQivTor8BndZ6Eqjdru8WjCxjkkXVP2hojTwo,18417
27
+ pycti/entities/opencti_indicator.py,sha256=U6srsKfM0GEORwjVZosZpR5-P50hnYkhRb3RFIiAtRc,27021
28
+ pycti/entities/opencti_infrastructure.py,sha256=Y623AnmObFj-Hegbr_hmU2lMwR2RKrGenMNUR0KXf4E,19751
29
+ pycti/entities/opencti_intrusion_set.py,sha256=y011RZA3QLCrhFOtEHFRcNz6ho3-7fICJjgB4ErsUgI,17458
30
+ pycti/entities/opencti_kill_chain_phase.py,sha256=wv-lAx4Gw4yySXgkfympoTB4H7dG8MyTDHbFeNWwHR0,7839
31
+ pycti/entities/opencti_label.py,sha256=gwnByNyQJQhe_RU-ADmuqk90PllHUVy0TWKbiWXvlrA,8560
32
+ pycti/entities/opencti_language.py,sha256=siUIFmQHbrx2oB2SOcCXpq3rNFWn4B1IbEXQWpLn5j8,16670
33
+ pycti/entities/opencti_location.py,sha256=s8ZXOI1w2wYWP-UrTvM-i81QmcIrflAXqXF9CnTC7go,17441
34
+ pycti/entities/opencti_malware.py,sha256=2SU5bq1rqK3Ni-bANRSLvG_fLtjGJhugMFhplAEpm9M,20324
35
+ pycti/entities/opencti_malware_analysis.py,sha256=ihlZB1X6CvuicDJ8dznoBgw4-q06U5IgwMGQeHCJWyY,20626
36
+ pycti/entities/opencti_marking_definition.py,sha256=1lWOTRbE5xTpjWvmhkyYPW5z6z2gQv_yLXf86_Lb39w,12497
37
+ pycti/entities/opencti_narrative.py,sha256=GIvdN9es63muKZFKTKBi6g4aZRiFPsq7TGhN7kPOebw,16826
38
+ pycti/entities/opencti_note.py,sha256=09W3-Uflfiz8WuC0OoJBGVVkE18-dFUXwQp_8FgBou0,29769
39
+ pycti/entities/opencti_observed_data.py,sha256=1LffW0EeiHNG-kBWRPdlMS9vcALcmbWei02ejzHtol8,30012
40
+ pycti/entities/opencti_opinion.py,sha256=EG-EWu-CTqnSDNrYXm8loQzJpSq1XoPmGqw1Aw8SFT8,21436
41
+ pycti/entities/opencti_report.py,sha256=WWQBEnwu4UpwiTo4j9uExg8leJMuo_w1Ewgnf3V1n7M,31615
42
+ pycti/entities/opencti_stix.py,sha256=B4cvpYcfxLv8t_QVATB2BddiCmtojRIR949ZSQ9VZP0,2399
43
+ pycti/entities/opencti_stix_core_object.py,sha256=pBXj_1BXPwOlAZNPO8nEIUHMDPBPzyOjRkGMng8kzjg,51874
44
+ pycti/entities/opencti_stix_core_relationship.py,sha256=PotwW9rJxfYYwqHn1KgPYXeMfHzQZ6113LIDoBvoGZ8,41973
45
+ pycti/entities/opencti_stix_cyber_observable.py,sha256=9Qxl1_QWN7Uhjziwiyr93rKp7U30afSQyB4LmCZcMEw,102311
46
+ pycti/entities/opencti_stix_domain_object.py,sha256=lZhrjQYjre6Iz2ZQLB5j2N6gMkmQooiIKn6Vf2QGoiQ,81111
47
+ pycti/entities/opencti_stix_nested_ref_relationship.py,sha256=i11v_HGWStDiGYpn079y1J_oD7wZdph2tR_DA7qmxVQ,12063
48
+ pycti/entities/opencti_stix_object_or_stix_relationship.py,sha256=8x0JxHHjNrHnm-UZFeYHgqWnkiFBUhx-HagHTNONqog,16091
49
+ pycti/entities/opencti_stix_sighting_relationship.py,sha256=JVEBQ-LhIS2JiXhZXzQWv5cA4Q6b7ukYT1q07aSsIMk,27589
50
+ pycti/entities/opencti_task.py,sha256=Sp3En2QFTRl2MzHPEhCP6AyYBpDexK0cZJtw_NhQtec,24752
51
+ pycti/entities/opencti_threat_actor.py,sha256=gI3cu51cVgAh-PpOYDfHrCT3wmuRsX8sSGr7JcW7HG8,10180
52
+ pycti/entities/opencti_threat_actor_group.py,sha256=Wluc75lV1YGg31WOo4Z98Fo4w0z9qXLm5Y5Ju2oK3L4,18638
53
+ pycti/entities/opencti_threat_actor_individual.py,sha256=z7oE71kzmGmNDknNzGUIpqQFpU2jLbrAzcNbBE42AV4,18889
54
+ pycti/entities/opencti_tool.py,sha256=5o6Vwaxj3xdnl59Xjm8H8_Wm13o6yaoPYESgWjsHFC8,14709
55
+ pycti/entities/opencti_vocabulary.py,sha256=_fQNiuNk-uwjXmDJHiEU_pawaThFRbjt9u-RTAHLCfI,5992
56
+ pycti/entities/opencti_vulnerability.py,sha256=CsAsDbceBPRa084GGzd-9Kaj574HIyvkbXC8P1oCB_4,18171
57
+ pycti/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ pycti/utils/constants.py,sha256=g53_tdaq_akCm-ZC0TI2Y5V1yE7ejgB6E-rCDZ86bag,7914
59
+ pycti/utils/opencti_stix2.py,sha256=eUp4q09aaMmhcmtfUTamXcl_ctEh_ykpExJA0v6_2r8,111594
60
+ pycti/utils/opencti_stix2_splitter.py,sha256=Ht9Mp-W3gbwxIKEr7i_5NYpcDr3TA2gYdC4TzOz0G4c,4496
61
+ pycti/utils/opencti_stix2_update.py,sha256=NO-l7g9aUmZ2vP6BSxs-Gq8WXa7pnpcDiNQVtQ3TESE,14515
62
+ pycti/utils/opencti_stix2_utils.py,sha256=XaDLRN9BE-n8chO9OEsCMoonAuoMjoGS_OSJyrxVXDY,3677
63
+ pycti-5.12.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
64
+ pycti-5.12.0.dist-info/METADATA,sha256=2kmcPrGvlGf8oRUpSFN86SdBtRbyrtkTAQTgu9FCqtY,5297
65
+ pycti-5.12.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
66
+ pycti-5.12.0.dist-info/top_level.txt,sha256=cqEpxitAhHP4VgSA6xmrak6Yk9MeBkwoMTB6k7d2ZnE,6
67
+ pycti-5.12.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.3)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,67 +0,0 @@
1
- pycti/__init__.py,sha256=StSid_AlQRLv-4Q8Hxfv3WlWgnDcV678QC1ZlWdDDpE,4693
2
- pycti/api/__init__.py,sha256=t78k-bMV5HrTAzNeWgL9sv-Qk5CvzS8ngXFlbTAYEIA,53
3
- pycti/api/opencti_api_client.py,sha256=7BO-_TUU1Ih-zg7WFUNMXt_WIw_DVwPVMBqYSVUWTOY,29520
4
- pycti/api/opencti_api_connector.py,sha256=53kV9IE1kcV5Q-Gbdj-2LKDc3ZxqQZUaqCXHeDjRVh8,3565
5
- pycti/api/opencti_api_playbook.py,sha256=3CbxGZGQ_E967fpKQSamXJG-GZqlELZr6o4Z_mcWT30,1365
6
- pycti/api/opencti_api_work.py,sha256=1zJTbkqQUVBngCWr2e5jvkKOlUBEKMm-DTAIYYMmoCI,6825
7
- pycti/connector/__init__.py,sha256=t78k-bMV5HrTAzNeWgL9sv-Qk5CvzS8ngXFlbTAYEIA,53
8
- pycti/connector/opencti_connector.py,sha256=0vrZ8Y8ecbxegAP1YhpX6ybOZahYjjOkcId51D1oBi4,2449
9
- pycti/connector/opencti_connector_helper.py,sha256=1ZD7ELDDVusFZi-PWGbIsHj8CxHgpEOBGaIF13JUKxM,47607
10
- pycti/connector/opencti_metric_handler.py,sha256=LWAc3RwbwUgbRvwtUaoOJ1SsfW7Cuq8RaN1jhJg-QSA,3548
11
- pycti/entities/__init__.py,sha256=t78k-bMV5HrTAzNeWgL9sv-Qk5CvzS8ngXFlbTAYEIA,53
12
- pycti/entities/opencti_attack_pattern.py,sha256=6RblGGoxcpeAHOWnHsKIumdONTftHk7WdIvwwF5Iyww,22279
13
- pycti/entities/opencti_campaign.py,sha256=z_SlG9oBZ0mIMD1ZhLrKwUrJCAumyoSGwcZFeGG83Eg,17268
14
- pycti/entities/opencti_case_incident.py,sha256=ZeHgkoJVEA5AuclYyEWjB2U0M71LeGMmxVkgyRJsEbE,33292
15
- pycti/entities/opencti_case_rfi.py,sha256=5KGP9bHjbLkku5kp43fAcNkgVNyBZCxi5v11T87FwXY,31558
16
- pycti/entities/opencti_case_rft.py,sha256=v_N951kbUIMXE1x_rlJ59OtBfpWeIckPQ3Z2FsMbsOs,32448
17
- pycti/entities/opencti_channel.py,sha256=C_F7KgoBsAwrZsF5YSGlFAhcYWlMHnIvpKdvcbwOmas,16745
18
- pycti/entities/opencti_course_of_action.py,sha256=MAGtn0Fuf6at2oxuSJ82xpLoX3zEEkL1waZvxNerLsM,18412
19
- pycti/entities/opencti_data_component.py,sha256=bfbFz61OJGwy3OZoePnMSgKijzA6IXZj1TyugJ6qPIQ,18877
20
- pycti/entities/opencti_data_source.py,sha256=VG5PGRvHloBH2E1xl4xO6oXDlP0HU-IVNoaFGAekOwc,18060
21
- pycti/entities/opencti_event.py,sha256=2RXGhSRuubgGXhvuCnERbsHNV-8ep0jAwTgHSEzjRAw,16913
22
- pycti/entities/opencti_external_reference.py,sha256=VB1zgtV888COJ-q42jtdPWUvfQqcenKz2JwsXEMOPhg,12750
23
- pycti/entities/opencti_feedback.py,sha256=3gEJJv0tLUy5uWFxO4j6nNbXPkuGW6DMxyI5tsjmNuo,32144
24
- pycti/entities/opencti_grouping.py,sha256=smVs5jONH78gGasKdKazZHoYl5Ts3iu8HvzYuNuQjJc,29316
25
- pycti/entities/opencti_identity.py,sha256=Vb9ddq1mPPHTHYWGnYtWYoZtdMKlHaM89RyvYu-9Za0,23008
26
- pycti/entities/opencti_incident.py,sha256=Mjyw9LD2qZY5MZkWIWZMH8ms8K_KjgA7WNqotDqv_bc,18426
27
- pycti/entities/opencti_indicator.py,sha256=DTQqQri5CLZLlRjBVWKV4WmcRsjyJDD8w-8pwL-g4RY,27031
28
- pycti/entities/opencti_infrastructure.py,sha256=Zzh-O4kpx8sd6W67lh-Q9OMJkcIQuEGiTjqnsHsViGw,19766
29
- pycti/entities/opencti_intrusion_set.py,sha256=qJy6HeO3tIHhMeYBOHiYWsfzEMosdmh_zB8KJUu_vHE,17471
30
- pycti/entities/opencti_kill_chain_phase.py,sha256=plKO_lTgTcz50LiyHjoggM-OxyiYtnPesO2Ub3o-cLU,7854
31
- pycti/entities/opencti_label.py,sha256=C5lNEAjrUcDZoStqn1btLwaBgBWEjFw8bvSSGgyXIiA,8433
32
- pycti/entities/opencti_language.py,sha256=7QXYCsox7RKuYtbq_6C-FCUZu4EL7NMfsYD_cG8SVo4,16679
33
- pycti/entities/opencti_location.py,sha256=nMZBYLJhJBZQawrOTMife7yvmCzuoHwPkZrhuPfhvUw,17450
34
- pycti/entities/opencti_malware.py,sha256=96fpj9JxUrF1cZNze-gOvdsk-fwsLcY7wabec-VDTFg,20332
35
- pycti/entities/opencti_malware_analysis.py,sha256=AfXB7K-MktKsQQ8-dHpoJDcWzyLJg7au3UxpT0SlG_g,20642
36
- pycti/entities/opencti_marking_definition.py,sha256=1G3dHrs2lnu_I9wXAIf9wy509bSb2lSSKVWDUTtnMbI,12515
37
- pycti/entities/opencti_narrative.py,sha256=foT4_DN1s5VIWweoU-NQJMl3EbxRwcaukt1HswApXaU,16837
38
- pycti/entities/opencti_note.py,sha256=MknyKKROY_hLOsWD2LmcV9HOMCk30hI6TOKGulq1k5Q,29774
39
- pycti/entities/opencti_observed_data.py,sha256=Zd_35IkIcGMeXhbRgI0HFpOOT3hK2Tyqs4cOiI7QJEM,30025
40
- pycti/entities/opencti_opinion.py,sha256=_eb3FJ4_2lLVbputlHIVwd70GmX5iytc5NHuZ5lucaw,21444
41
- pycti/entities/opencti_report.py,sha256=gzaSdkL38z7YmzByI-0tM-Lz0d72eQ1Xq9BQfyOesqY,31483
42
- pycti/entities/opencti_stix.py,sha256=B4cvpYcfxLv8t_QVATB2BddiCmtojRIR949ZSQ9VZP0,2399
43
- pycti/entities/opencti_stix_core_object.py,sha256=4QKgNMuQxdNwu51n01xatQyto7xKm6-iTbHRzhFxCOQ,51887
44
- pycti/entities/opencti_stix_core_relationship.py,sha256=Rzvaq8r5c1lo5BfL29MY1QW78i1UTKsuQ43TerrKYMc,41865
45
- pycti/entities/opencti_stix_cyber_observable.py,sha256=0NZi1wB3ERiyvJgy1VcT0qPZZz6zdqzi_GWgvLmJ2as,101927
46
- pycti/entities/opencti_stix_domain_object.py,sha256=t-bfZmsCIRBjKb7ZcCGRY2pX9cr05mI3-8RWCvNMKmQ,80429
47
- pycti/entities/opencti_stix_nested_ref_relationship.py,sha256=ciq7vR89NO4zcG7gtVheWL7Qof4c5NqbL5wHs_c1oRI,12081
48
- pycti/entities/opencti_stix_object_or_stix_relationship.py,sha256=8x0JxHHjNrHnm-UZFeYHgqWnkiFBUhx-HagHTNONqog,16091
49
- pycti/entities/opencti_stix_sighting_relationship.py,sha256=0zRAdasahbko1syBpw8VQJ4HhsVKVrp7YBnkEik4WVk,27612
50
- pycti/entities/opencti_task.py,sha256=UjL1BiQAhz33jFHjON70Na06eqZn0wy8F2Z03k2Pdn8,24619
51
- pycti/entities/opencti_threat_actor.py,sha256=kJ8MQY9rGlbRSVabSBBLOzg6WaIuT1faVDclRJPmMzI,10192
52
- pycti/entities/opencti_threat_actor_group.py,sha256=KQlSWaht58L9c125FFhpWm4ozJ9aBrEiUqUupwEukXs,18650
53
- pycti/entities/opencti_threat_actor_individual.py,sha256=MndOT744A2mBlrqjy_1gvvWODl-ACcZpZ1fEHJ0kjgk,18912
54
- pycti/entities/opencti_tool.py,sha256=7BOnP4PczA4Bqskg02xI9uD5a_aI3fx7iAJ9URy2Uyc,14714
55
- pycti/entities/opencti_vocabulary.py,sha256=tuDxTcCAahWOHIqVBh1vqJDh6lBtXWb94h-3fqCYQLo,5870
56
- pycti/entities/opencti_vulnerability.py,sha256=8GUGcDRFXIluKxggPFiqih4RPpMp5vPlwHA7wyhWYM0,18186
57
- pycti/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
- pycti/utils/constants.py,sha256=g53_tdaq_akCm-ZC0TI2Y5V1yE7ejgB6E-rCDZ86bag,7914
59
- pycti/utils/opencti_stix2.py,sha256=qgArgXLX2UGzMxqVWp1U8-eV2A9zsOiGO9mShPzqx-I,110493
60
- pycti/utils/opencti_stix2_splitter.py,sha256=Ht9Mp-W3gbwxIKEr7i_5NYpcDr3TA2gYdC4TzOz0G4c,4496
61
- pycti/utils/opencti_stix2_update.py,sha256=NO-l7g9aUmZ2vP6BSxs-Gq8WXa7pnpcDiNQVtQ3TESE,14515
62
- pycti/utils/opencti_stix2_utils.py,sha256=XaDLRN9BE-n8chO9OEsCMoonAuoMjoGS_OSJyrxVXDY,3677
63
- pycti-5.11.14.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
64
- pycti-5.11.14.dist-info/METADATA,sha256=SQum-bIGUv0Gyo6NJ-8y63s-fwfLamYpuo-eKpsossE,5298
65
- pycti-5.11.14.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
66
- pycti-5.11.14.dist-info/top_level.txt,sha256=cqEpxitAhHP4VgSA6xmrak6Yk9MeBkwoMTB6k7d2ZnE,6
67
- pycti-5.11.14.dist-info/RECORD,,