misp_client_rs/models/
extended_attribute.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14use serde_with::serde_as;
15
16#[serde_as]
17#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
18pub struct ExtendedAttribute {
19 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
20 pub id: Option<String>,
21 #[serde(rename = "event_id", skip_serializing_if = "Option::is_none")]
22 pub event_id: Option<String>,
23 #[serde(rename = "object_id", skip_serializing_if = "Option::is_none")]
24 pub object_id: Option<String>,
25 #[serde(rename = "object_relation", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
26 pub object_relation: Option<Option<String>>,
27 #[serde(rename = "category", skip_serializing_if = "Option::is_none")]
28 pub category: Option<models::AttributeCategory>,
29 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
30 pub r#type: Option<models::AttributeType>,
31 #[serde(rename = "value", skip_serializing_if = "Option::is_none")]
32 pub value: Option<String>,
33 #[serde(rename = "to_ids", skip_serializing_if = "Option::is_none")]
34 pub to_ids: Option<bool>,
35 #[serde(rename = "uuid", skip_serializing_if = "Option::is_none")]
36 pub uuid: Option<uuid::Uuid>,
37 #[serde(rename = "timestamp", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
38 pub timestamp: Option<Option<String>>,
39 #[serde(rename = "distribution", skip_serializing_if = "Option::is_none")]
40 pub distribution: Option<models::DistributionLevelId>,
41 #[serde(rename = "sharing_group_id", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
42 pub sharing_group_id: Option<Option<String>>,
43 #[serde(rename = "comment", skip_serializing_if = "Option::is_none")]
44 pub comment: Option<String>,
45 #[serde(rename = "deleted", skip_serializing_if = "Option::is_none")]
46 pub deleted: Option<bool>,
47 #[serde(rename = "disable_correlation", skip_serializing_if = "Option::is_none")]
48 pub disable_correlation: Option<bool>,
49 #[serde(rename = "first_seen", skip_serializing_if = "Option::is_none")]
50 pub first_seen: Option<Box<models::AttributeNoIdFirstSeen>>,
51 #[serde(rename = "last_seen", skip_serializing_if = "Option::is_none")]
52 pub last_seen: Option<Box<models::AttributeNoIdFirstSeen>>,
53 #[serde(rename = "Tag", skip_serializing_if = "Option::is_none")]
54 pub tag: Option<Vec<models::Tag>>,
55 #[serde(rename = "Galaxy", skip_serializing_if = "Option::is_none")]
56 pub galaxy: Option<Vec<models::Galaxy>>,
57 #[serde_as(as = "Option<serde_with::base64::Base64>")]
59 #[serde(rename = "data", skip_serializing_if = "Option::is_none")]
60 pub data: Option<Vec<u8>>,
61 #[serde(rename = "event_uuid", skip_serializing_if = "Option::is_none")]
62 pub event_uuid: Option<uuid::Uuid>,
63 #[serde(rename = "decay_score", skip_serializing_if = "Option::is_none")]
64 pub decay_score: Option<Vec<models::DecayScore>>,
65}
66
67impl ExtendedAttribute {
68 pub fn new() -> ExtendedAttribute {
69 ExtendedAttribute {
70 id: None,
71 event_id: None,
72 object_id: None,
73 object_relation: None,
74 category: None,
75 r#type: None,
76 value: None,
77 to_ids: None,
78 uuid: None,
79 timestamp: None,
80 distribution: None,
81 sharing_group_id: None,
82 comment: None,
83 deleted: None,
84 disable_correlation: None,
85 first_seen: None,
86 last_seen: None,
87 tag: None,
88 galaxy: None,
89 data: None,
90 event_uuid: None,
91 decay_score: None,
92 }
93 }
94}
95