1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct InputCase {
16 #[serde(rename = "title")]
17 pub title: String,
18 #[serde(rename = "description")]
19 pub description: String,
20 #[serde(rename = "severity", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
21 pub severity: Option<Option<Severity>>,
22 #[serde(rename = "startDate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
23 pub start_date: Option<Option<i64>>,
24 #[serde(rename = "endDate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
25 pub end_date: Option<Option<i64>>,
26 #[serde(rename = "tags", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
27 pub tags: Option<Option<Vec<String>>>,
28 #[serde(rename = "flag", skip_serializing_if = "Option::is_none")]
29 pub flag: Option<bool>,
30 #[serde(rename = "tlp", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
31 pub tlp: Option<Option<Tlp>>,
32 #[serde(rename = "pap", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
33 pub pap: Option<Option<Pap>>,
34 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
35 pub status: Option<models::CaseStatusValue>,
36 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
37 pub summary: Option<Option<String>>,
38 #[serde(rename = "assignee", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
39 pub assignee: Option<Option<String>>,
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 = "caseTemplate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
43 pub case_template: Option<Option<String>>,
44 #[serde(rename = "tasks", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
45 pub tasks: Option<Option<Vec<models::InputTask>>>,
46 #[serde(rename = "pages", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
47 pub pages: Option<Option<Vec<models::InputCasePage>>>,
48 #[serde(rename = "sharingParameters", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
49 pub sharing_parameters: Option<Option<Vec<models::InputShare>>>,
50 #[serde(rename = "taskRule", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
51 pub task_rule: Option<Option<String>>,
52 #[serde(rename = "observableRule", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
53 pub observable_rule: Option<Option<String>>,
54}
55
56impl InputCase {
57 pub fn new(title: String, description: String) -> InputCase {
58 InputCase {
59 title,
60 description,
61 severity: None,
62 start_date: None,
63 end_date: None,
64 tags: None,
65 flag: None,
66 tlp: None,
67 pap: None,
68 status: None,
69 summary: None,
70 assignee: None,
71 custom_fields: None,
72 case_template: None,
73 tasks: None,
74 pages: None,
75 sharing_parameters: None,
76 task_rule: None,
77 observable_rule: 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