1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct InputAlert {
16 #[serde(rename = "type")]
17 pub r#type: String,
18 #[serde(rename = "source")]
19 pub source: String,
20 #[serde(rename = "sourceRef")]
21 pub source_ref: String,
22 #[serde(rename = "title")]
23 pub title: String,
24 #[serde(rename = "description")]
25 pub description: String,
26 #[serde(rename = "date", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
27 pub date: Option<Option<i64>>,
28 #[serde(rename = "externalLink", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
29 pub external_link: Option<Option<String>>,
30 #[serde(rename = "severity", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
31 pub severity: Option<Option<Severity>>,
32 #[serde(rename = "tags", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
33 pub tags: Option<Option<Vec<String>>>,
34 #[serde(rename = "flag", skip_serializing_if = "Option::is_none")]
35 pub flag: Option<bool>,
36 #[serde(rename = "tlp", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
37 pub tlp: Option<Option<Tlp>>,
38 #[serde(rename = "pap", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
39 pub pap: Option<Option<Pap>>,
40 #[serde(rename = "customFields", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
41 pub custom_fields: Option<Option<Vec<models::InputCustomFieldValue>>>,
42 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
43 pub summary: Option<Option<String>>,
44 #[serde(rename = "status", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
45 pub status: Option<Option<String>>,
46 #[serde(rename = "assignee", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
47 pub assignee: Option<Option<String>>,
48 #[serde(rename = "caseTemplate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
49 pub case_template: Option<Option<String>>,
50 #[serde(rename = "observables", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
51 pub observables: Option<Option<Vec<models::InputObservable>>>,
52 #[serde(rename = "procedures", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
53 pub procedures: Option<Option<Vec<models::InputProcedure>>>,
54}
55
56impl InputAlert {
57 pub fn new(r#type: String, source: String, source_ref: String, title: String, description: String) -> InputAlert {
58 InputAlert {
59 r#type,
60 source,
61 source_ref,
62 title,
63 description,
64 date: None,
65 external_link: None,
66 severity: None,
67 tags: None,
68 flag: None,
69 tlp: None,
70 pap: None,
71 custom_fields: None,
72 summary: None,
73 status: None,
74 assignee: None,
75 case_template: None,
76 observables: None,
77 procedures: None,
78 }
79 }
80}
81#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
83pub enum Severity {
84 #[serde(rename = "1")]
85 Variant1,
86 #[serde(rename = "2")]
87 Variant2,
88 #[serde(rename = "3")]
89 Variant3,
90 #[serde(rename = "4")]
91 Variant4,
92}
93
94impl Default for Severity {
95 fn default() -> Severity {
96 Self::Variant1
97 }
98}
99#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
101pub enum Tlp {
102 #[serde(rename = "0")]
103 Variant0,
104 #[serde(rename = "1")]
105 Variant1,
106 #[serde(rename = "2")]
107 Variant2,
108 #[serde(rename = "3")]
109 Variant3,
110 #[serde(rename = "4")]
111 Variant4,
112}
113
114impl Default for Tlp {
115 fn default() -> Tlp {
116 Self::Variant0
117 }
118}
119#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
121pub enum Pap {
122 #[serde(rename = "0")]
123 Variant0,
124 #[serde(rename = "1")]
125 Variant1,
126 #[serde(rename = "2")]
127 Variant2,
128 #[serde(rename = "3")]
129 Variant3,
130}
131
132impl Default for Pap {
133 fn default() -> Pap {
134 Self::Variant0
135 }
136}
137