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

Commit 3b0b436

Browse files
author
Samuel Hassine
committed
[client] Update entities if the author is the same
1 parent 64cdb46 commit 3b0b436

16 files changed

+110
-76
lines changed

pycti/entities/opencti_attack_pattern.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,15 @@ def create(self, **kwargs):
332332
name
333333
description
334334
alias
335+
createdByRef {
336+
node {
337+
id
338+
}
339+
}
335340
... on AttackPattern {
336341
platform
337342
required_permission
338-
external_id
339-
343+
external_id
340344
}
341345
"""
342346
object_result = self.opencti.stix_domain_entity.get_by_stix_id_or_name(
@@ -350,7 +354,7 @@ def create(self, **kwargs):
350354
filters=[{"key": "external_id", "values": [external_id]}]
351355
)
352356
if object_result is not None:
353-
if update:
357+
if update or object_result["createdByRef"] == created_by_ref:
354358
# name
355359
if object_result["name"] != name:
356360
self.opencti.stix_domain_entity.update_field(

pycti/entities/opencti_campaign.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,11 @@ def create(self, **kwargs):
287287
name
288288
description
289289
alias
290+
createdByRef {
291+
node {
292+
id
293+
}
294+
}
290295
... on Campaign {
291296
objective
292297
first_seen
@@ -300,7 +305,7 @@ def create(self, **kwargs):
300305
customAttributes=custom_attributes,
301306
)
302307
if object_result is not None:
303-
if update:
308+
if update or object_result["createdByRef"] == created_by_ref:
304309
# name
305310
if object_result["name"] != name:
306311
self.opencti.stix_domain_entity.update_field(

pycti/entities/opencti_course_of_action.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,11 @@ def create(self, **kwargs):
281281
name
282282
description
283283
alias
284+
createdByRef {
285+
node {
286+
id
287+
}
288+
}
284289
"""
285290
object_result = self.opencti.stix_domain_entity.get_by_stix_id_or_name(
286291
types=["Course-Of-Action"],
@@ -289,7 +294,7 @@ def create(self, **kwargs):
289294
customAttributes=custom_attributes,
290295
)
291296
if object_result is not None:
292-
if update:
297+
if update or object_result["createdByRef"] == created_by_ref:
293298
# name
294299
if object_result["name"] != name:
295300
self.opencti.stix_domain_entity.update_field(

pycti/entities/opencti_identity.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,11 @@ def create(self, **kwargs):
281281
name
282282
description
283283
alias
284+
createdByRef {
285+
node {
286+
id
287+
}
288+
}
284289
"""
285290
object_result = self.opencti.stix_domain_entity.get_by_stix_id_or_name(
286291
types=[type],
@@ -289,7 +294,7 @@ def create(self, **kwargs):
289294
customAttributes=custom_attributes,
290295
)
291296
if object_result is not None:
292-
if update:
297+
if update or object_result["createdByRef"] == created_by_ref:
293298
# name
294299
if object_result["name"] != name:
295300
self.opencti.stix_domain_entity.update_field(

pycti/entities/opencti_incident.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,11 @@ def create(self, **kwargs):
295295
name
296296
description
297297
alias
298+
createdByRef {
299+
node {
300+
id
301+
}
302+
}
298303
... on Incident {
299304
first_seen
300305
last_seen
@@ -308,7 +313,7 @@ def create(self, **kwargs):
308313
customAttributes=custom_attributes,
309314
)
310315
if object_result is not None:
311-
if update:
316+
if update or object_result["createdByRef"] == created_by_ref:
312317
# name
313318
if object_result["name"] != name:
314319
self.opencti.stix_domain_entity.update_field(

pycti/entities/opencti_indicator.py

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -353,27 +353,32 @@ def create(self, **kwargs):
353353
kill_chain_phases = kwargs.get("killChainPhases", None)
354354
update = kwargs.get("update", False)
355355
custom_attributes = """
356+
id
357+
entity_type
358+
name
359+
description
360+
score
361+
createdByRef {
362+
node {
356363
id
357-
entity_type
358-
name
359-
description
360-
score
361-
... on Indicator {
362-
observableRefs {
363-
edges {
364-
node {
365-
id
366-
entity_type
367-
stix_id_key
368-
observable_value
369-
}
370-
relation {
371-
id
372-
}
373-
}
364+
}
365+
}
366+
... on Indicator {
367+
observableRefs {
368+
edges {
369+
node {
370+
id
371+
entity_type
372+
stix_id_key
373+
observable_value
374+
}
375+
relation {
376+
id
374377
}
375378
}
376-
"""
379+
}
380+
}
381+
"""
377382
object_result = None
378383
if stix_id_key is not None:
379384
object_result = self.opencti.indicator.read(
@@ -391,7 +396,7 @@ def create(self, **kwargs):
391396
customAttributes=custom_attributes,
392397
)
393398
if object_result is not None:
394-
if update:
399+
if update or object_result["createdByRef"] == created_by_ref:
395400
# name
396401
if name is not None and object_result["name"] != name:
397402
self.opencti.stix_domain_entity.update_field(

pycti/entities/opencti_intrusion_set.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,11 @@ def create(self, **kwargs):
307307
name
308308
description
309309
alias
310+
createdByRef {
311+
node {
312+
id
313+
}
314+
}
310315
... on IntrusionSet {
311316
first_seen
312317
last_seen
@@ -324,7 +329,7 @@ def create(self, **kwargs):
324329
customAttributes=custom_attributes,
325330
)
326331
if object_result is not None:
327-
if update:
332+
if update or object_result["createdByRef"] == created_by_ref:
328333
# name
329334
if object_result["name"] != name:
330335
self.opencti.stix_domain_entity.update_field(

pycti/entities/opencti_malware.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,11 @@ def create(self, **kwargs):
292292
name
293293
description
294294
alias
295+
createdByRef {
296+
node {
297+
id
298+
}
299+
}
295300
"""
296301
object_result = self.opencti.stix_domain_entity.get_by_stix_id_or_name(
297302
types=["Malware"],
@@ -300,7 +305,7 @@ def create(self, **kwargs):
300305
customAttributes=custom_attributes,
301306
)
302307
if object_result is not None:
303-
if update:
308+
if update or object_result["createdByRef"] == created_by_ref:
304309
# name
305310
if object_result["name"] != name:
306311
self.opencti.stix_domain_entity.update_field(

pycti/entities/opencti_note.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -395,19 +395,9 @@ def create(self, **kwargs):
395395
entity_type
396396
name
397397
description
398-
... on Note {
399-
observableRefs {
400-
edges {
401-
node {
402-
id
403-
entity_type
404-
stix_id_key
405-
observable_value
406-
}
407-
relation {
408-
id
409-
}
410-
}
398+
createdByRef {
399+
node {
400+
id
411401
}
412402
}
413403
"""
@@ -428,7 +418,7 @@ def create(self, **kwargs):
428418
custom_attributes=custom_attributes,
429419
)
430420
if object_result is not None:
431-
if update:
421+
if update or object_result["createdByRef"] == created_by_ref:
432422
if object_result["name"] != name:
433423
self.opencti.stix_domain_entity.update_field(
434424
id=object_result["id"], key="name", value=name

pycti/entities/opencti_opinion.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -401,19 +401,9 @@ def create(self, **kwargs):
401401
entity_type
402402
name
403403
description
404-
... on Opinion {
405-
observableRefs {
406-
edges {
407-
node {
408-
id
409-
entity_type
410-
stix_id_key
411-
observable_value
412-
}
413-
relation {
414-
id
415-
}
416-
}
404+
createdByRef {
405+
node {
406+
id
417407
}
418408
}
419409
"""
@@ -438,7 +428,7 @@ def create(self, **kwargs):
438428
custom_attributes=custom_attributes,
439429
)
440430
if object_result is not None:
441-
if update:
431+
if update or object_result["createdByRef"] == created_by_ref:
442432
if object_result["name"] != name:
443433
self.opencti.stix_domain_entity.update_field(
444434
id=object_result["id"], key="name", value=name

0 commit comments

Comments
 (0)