ocsf_types/
ocsf_generated.rs

1#![allow(deprecated)]
2#![allow(unused_imports)]
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5#[doc = "Account Change\n\nAccount Change events report when specific user account management tasks are performed, such as a user/role being created, changed, deleted, renamed, disabled, enabled, locked out or unlocked.\n\n[UID:3001] Category: iam | Name: account_change"]
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
7#[serde(default)]
8#[non_exhaustive]
9pub struct AccountChange {
10    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
11    #[serde(rename = "action")]
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub action: Option<String>,
14    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
15    #[serde(rename = "action_id")]
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub action_id: Option<i64>,
18    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
19    #[serde(rename = "activity_id")]
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub activity_id: Option<i64>,
22    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
23    #[serde(rename = "activity_name")]
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub activity_name: Option<String>,
26    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrecommended"]
27    #[serde(rename = "actor")]
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub actor: Option<Box<Actor>>,
30    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
31    #[serde(rename = "api")]
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub api: Option<Box<Api>>,
34    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
35    #[serde(rename = "attacks")]
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub attacks: Option<Vec<Attack>>,
38    #[doc = "Authentication Factors\n\nDetails about the authentication factors associated with the MFA Factor Enable/Disable activities.\n\noptional"]
39    #[serde(rename = "auth_factors")]
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub auth_factors: Option<Vec<AuthFactor>>,
42    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
43    #[serde(rename = "authorizations")]
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub authorizations: Option<Vec<Authorization>>,
46    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Identity & Access Management</code>.\n\noptional"]
47    #[serde(rename = "category_name")]
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub category_name: Option<String>,
50    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
51    #[serde(rename = "category_uid")]
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub category_uid: Option<i64>,
54    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Account Change</code>.\n\noptional"]
55    #[serde(rename = "class_name")]
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub class_name: Option<String>,
58    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
59    #[serde(rename = "class_uid")]
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub class_uid: Option<i64>,
62    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
63    #[serde(rename = "cloud")]
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub cloud: Option<Box<Cloud>>,
66    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
67    #[serde(rename = "confidence")]
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub confidence: Option<String>,
70    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
71    #[serde(rename = "confidence_id")]
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub confidence_id: Option<i64>,
74    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
75    #[serde(rename = "confidence_score")]
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub confidence_score: Option<i64>,
78    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
79    #[serde(rename = "count")]
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub count: Option<i64>,
82    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
83    #[serde(rename = "device")]
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub device: Option<Box<Device>>,
86    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
87    #[serde(rename = "disposition")]
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub disposition: Option<String>,
90    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
91    #[serde(rename = "disposition_id")]
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub disposition_id: Option<i64>,
94    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
95    #[serde(rename = "duration")]
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub duration: Option<i64>,
98    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
99    #[serde(rename = "end_time")]
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub end_time: Option<i64>,
102    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
103    #[serde(rename = "end_time_dt")]
104    #[serde(skip_serializing_if = "Option::is_none")]
105    pub end_time_dt: Option<String>,
106    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
107    #[serde(rename = "enrichments")]
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub enrichments: Option<Vec<Enrichment>>,
110    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
111    #[serde(rename = "firewall_rule")]
112    #[serde(skip_serializing_if = "Option::is_none")]
113    pub firewall_rule: Option<Box<FirewallRule>>,
114    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\noptional"]
115    #[serde(rename = "http_request")]
116    #[serde(skip_serializing_if = "Option::is_none")]
117    pub http_request: Option<Box<HttpRequest>>,
118    #[doc = "HTTP Response\n\nDetails about the underlying HTTP response.\n\noptional"]
119    #[serde(rename = "http_response")]
120    #[serde(skip_serializing_if = "Option::is_none")]
121    pub http_response: Option<Box<HttpResponse>>,
122    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
123    #[serde(rename = "is_alert")]
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub is_alert: Option<bool>,
126    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
127    #[serde(rename = "malware")]
128    #[serde(skip_serializing_if = "Option::is_none")]
129    pub malware: Option<Vec<Malware>>,
130    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
131    #[serde(rename = "malware_scan_info")]
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
134    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
135    #[serde(rename = "message")]
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub message: Option<String>,
138    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
139    #[serde(rename = "metadata")]
140    #[serde(skip_serializing_if = "Option::is_none")]
141    pub metadata: Option<Box<Metadata>>,
142    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
143    #[serde(rename = "observables")]
144    #[serde(skip_serializing_if = "Option::is_none")]
145    pub observables: Option<Vec<Observable>>,
146    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
147    #[serde(rename = "osint")]
148    #[serde(skip_serializing_if = "Option::is_none")]
149    pub osint: Option<Vec<Osint>>,
150    #[doc = "Policies\n\nDetails about the IAM policies associated with the Attach/Detach Policy activities.\n\noptional"]
151    #[serde(rename = "policies")]
152    #[serde(skip_serializing_if = "Option::is_none")]
153    pub policies: Option<Vec<Policy>>,
154    #[doc = "Policy\n\nDetails about the IAM policy associated to the Attach/Detach Policy activities.\n\noptional"]
155    #[serde(rename = "policy")]
156    #[serde(skip_serializing_if = "Option::is_none")]
157    pub policy: Option<Box<Policy>>,
158    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
159    #[serde(rename = "raw_data")]
160    #[serde(skip_serializing_if = "Option::is_none")]
161    pub raw_data: Option<String>,
162    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
163    #[serde(rename = "raw_data_hash")]
164    #[serde(skip_serializing_if = "Option::is_none")]
165    pub raw_data_hash: Option<Box<Fingerprint>>,
166    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
167    #[serde(rename = "raw_data_size")]
168    #[serde(skip_serializing_if = "Option::is_none")]
169    pub raw_data_size: Option<i64>,
170    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
171    #[serde(rename = "risk_details")]
172    #[serde(skip_serializing_if = "Option::is_none")]
173    pub risk_details: Option<String>,
174    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
175    #[serde(rename = "risk_level")]
176    #[serde(skip_serializing_if = "Option::is_none")]
177    pub risk_level: Option<String>,
178    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
179    #[serde(rename = "risk_level_id")]
180    #[serde(skip_serializing_if = "Option::is_none")]
181    pub risk_level_id: Option<i64>,
182    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
183    #[serde(rename = "risk_score")]
184    #[serde(skip_serializing_if = "Option::is_none")]
185    pub risk_score: Option<i64>,
186    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
187    #[serde(rename = "severity")]
188    #[serde(skip_serializing_if = "Option::is_none")]
189    pub severity: Option<String>,
190    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
191    #[serde(rename = "severity_id")]
192    #[serde(skip_serializing_if = "Option::is_none")]
193    pub severity_id: Option<i64>,
194    #[doc = "Source Endpoint\n\nDetails about the source of the IAM activity.\n\nrecommended"]
195    #[serde(rename = "src_endpoint")]
196    #[serde(skip_serializing_if = "Option::is_none")]
197    pub src_endpoint: Option<Box<NetworkEndpoint>>,
198    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
199    #[serde(rename = "start_time")]
200    #[serde(skip_serializing_if = "Option::is_none")]
201    pub start_time: Option<i64>,
202    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
203    #[serde(rename = "start_time_dt")]
204    #[serde(skip_serializing_if = "Option::is_none")]
205    pub start_time_dt: Option<String>,
206    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
207    #[serde(rename = "status")]
208    #[serde(skip_serializing_if = "Option::is_none")]
209    pub status: Option<String>,
210    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
211    #[serde(rename = "status_code")]
212    #[serde(skip_serializing_if = "Option::is_none")]
213    pub status_code: Option<String>,
214    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
215    #[serde(rename = "status_detail")]
216    #[serde(skip_serializing_if = "Option::is_none")]
217    pub status_detail: Option<String>,
218    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
219    #[serde(rename = "status_id")]
220    #[serde(skip_serializing_if = "Option::is_none")]
221    pub status_id: Option<i64>,
222    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
223    #[serde(rename = "time")]
224    #[serde(skip_serializing_if = "Option::is_none")]
225    pub time: Option<i64>,
226    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
227    #[serde(rename = "time_dt")]
228    #[serde(skip_serializing_if = "Option::is_none")]
229    pub time_dt: Option<String>,
230    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
231    #[serde(rename = "timezone_offset")]
232    #[serde(skip_serializing_if = "Option::is_none")]
233    pub timezone_offset: Option<i64>,
234    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
235    #[serde(rename = "type_name")]
236    #[serde(skip_serializing_if = "Option::is_none")]
237    pub type_name: Option<String>,
238    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
239    #[serde(rename = "type_uid")]
240    #[serde(skip_serializing_if = "Option::is_none")]
241    pub type_uid: Option<i64>,
242    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
243    #[serde(rename = "unmapped")]
244    #[serde(skip_serializing_if = "Option::is_none")]
245    pub unmapped: Option<serde_json::Value>,
246    #[doc = "User\n\nThe user that was a target of an activity.\n\nrequired"]
247    #[serde(rename = "user")]
248    #[serde(skip_serializing_if = "Option::is_none")]
249    pub user: Option<Box<User>>,
250    #[doc = "User Result\n\nThe result of the user account change. It should contain the new values of the changed attributes.\n\nrecommended"]
251    #[serde(rename = "user_result")]
252    #[serde(skip_serializing_if = "Option::is_none")]
253    pub user_result: Option<Box<User>>,
254}
255#[doc = "Admin Group Query\n\nAdmin Group Query events report information about administrative groups.\n\n[UID:5009] Category: discovery | Name: admin_group_query"]
256#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
257#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
258#[serde(default)]
259#[non_exhaustive]
260pub struct AdminGroupQuery {
261    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
262    #[serde(rename = "action")]
263    #[serde(skip_serializing_if = "Option::is_none")]
264    pub action: Option<String>,
265    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
266    #[serde(rename = "action_id")]
267    #[serde(skip_serializing_if = "Option::is_none")]
268    pub action_id: Option<i64>,
269    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
270    #[serde(rename = "activity_id")]
271    #[serde(skip_serializing_if = "Option::is_none")]
272    pub activity_id: Option<i64>,
273    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
274    #[serde(rename = "activity_name")]
275    #[serde(skip_serializing_if = "Option::is_none")]
276    pub activity_name: Option<String>,
277    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
278    #[serde(rename = "actor")]
279    #[serde(skip_serializing_if = "Option::is_none")]
280    pub actor: Option<Box<Actor>>,
281    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
282    #[serde(rename = "api")]
283    #[serde(skip_serializing_if = "Option::is_none")]
284    pub api: Option<Box<Api>>,
285    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
286    #[serde(rename = "attacks")]
287    #[serde(skip_serializing_if = "Option::is_none")]
288    pub attacks: Option<Vec<Attack>>,
289    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
290    #[serde(rename = "authorizations")]
291    #[serde(skip_serializing_if = "Option::is_none")]
292    pub authorizations: Option<Vec<Authorization>>,
293    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
294    #[serde(rename = "category_name")]
295    #[serde(skip_serializing_if = "Option::is_none")]
296    pub category_name: Option<String>,
297    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
298    #[serde(rename = "category_uid")]
299    #[serde(skip_serializing_if = "Option::is_none")]
300    pub category_uid: Option<i64>,
301    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Admin Group Query</code>.\n\noptional"]
302    #[serde(rename = "class_name")]
303    #[serde(skip_serializing_if = "Option::is_none")]
304    pub class_name: Option<String>,
305    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
306    #[serde(rename = "class_uid")]
307    #[serde(skip_serializing_if = "Option::is_none")]
308    pub class_uid: Option<i64>,
309    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
310    #[serde(rename = "cloud")]
311    #[serde(skip_serializing_if = "Option::is_none")]
312    pub cloud: Option<Box<Cloud>>,
313    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
314    #[serde(rename = "confidence")]
315    #[serde(skip_serializing_if = "Option::is_none")]
316    pub confidence: Option<String>,
317    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
318    #[serde(rename = "confidence_id")]
319    #[serde(skip_serializing_if = "Option::is_none")]
320    pub confidence_id: Option<i64>,
321    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
322    #[serde(rename = "confidence_score")]
323    #[serde(skip_serializing_if = "Option::is_none")]
324    pub confidence_score: Option<i64>,
325    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
326    #[serde(rename = "count")]
327    #[serde(skip_serializing_if = "Option::is_none")]
328    pub count: Option<i64>,
329    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
330    #[serde(rename = "device")]
331    #[serde(skip_serializing_if = "Option::is_none")]
332    pub device: Option<Box<Device>>,
333    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
334    #[serde(rename = "disposition")]
335    #[serde(skip_serializing_if = "Option::is_none")]
336    pub disposition: Option<String>,
337    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
338    #[serde(rename = "disposition_id")]
339    #[serde(skip_serializing_if = "Option::is_none")]
340    pub disposition_id: Option<i64>,
341    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
342    #[serde(rename = "duration")]
343    #[serde(skip_serializing_if = "Option::is_none")]
344    pub duration: Option<i64>,
345    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
346    #[serde(rename = "end_time")]
347    #[serde(skip_serializing_if = "Option::is_none")]
348    pub end_time: Option<i64>,
349    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
350    #[serde(rename = "end_time_dt")]
351    #[serde(skip_serializing_if = "Option::is_none")]
352    pub end_time_dt: Option<String>,
353    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
354    #[serde(rename = "enrichments")]
355    #[serde(skip_serializing_if = "Option::is_none")]
356    pub enrichments: Option<Vec<Enrichment>>,
357    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
358    #[serde(rename = "firewall_rule")]
359    #[serde(skip_serializing_if = "Option::is_none")]
360    pub firewall_rule: Option<Box<FirewallRule>>,
361    #[doc = "Group\n\nThe administrative group.\n\nrequired"]
362    #[serde(rename = "group")]
363    #[serde(skip_serializing_if = "Option::is_none")]
364    pub group: Option<Box<Group>>,
365    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
366    #[serde(rename = "is_alert")]
367    #[serde(skip_serializing_if = "Option::is_none")]
368    pub is_alert: Option<bool>,
369    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
370    #[serde(rename = "malware")]
371    #[serde(skip_serializing_if = "Option::is_none")]
372    pub malware: Option<Vec<Malware>>,
373    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
374    #[serde(rename = "malware_scan_info")]
375    #[serde(skip_serializing_if = "Option::is_none")]
376    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
377    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
378    #[serde(rename = "message")]
379    #[serde(skip_serializing_if = "Option::is_none")]
380    pub message: Option<String>,
381    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
382    #[serde(rename = "metadata")]
383    #[serde(skip_serializing_if = "Option::is_none")]
384    pub metadata: Option<Box<Metadata>>,
385    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
386    #[serde(rename = "observables")]
387    #[serde(skip_serializing_if = "Option::is_none")]
388    pub observables: Option<Vec<Observable>>,
389    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
390    #[serde(rename = "osint")]
391    #[serde(skip_serializing_if = "Option::is_none")]
392    pub osint: Option<Vec<Osint>>,
393    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
394    #[serde(rename = "policy")]
395    #[serde(skip_serializing_if = "Option::is_none")]
396    pub policy: Option<Box<Policy>>,
397    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
398    #[serde(rename = "query_info")]
399    #[serde(skip_serializing_if = "Option::is_none")]
400    pub query_info: Option<Box<QueryInfo>>,
401    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
402    #[serde(rename = "query_result")]
403    #[serde(skip_serializing_if = "Option::is_none")]
404    pub query_result: Option<String>,
405    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
406    #[serde(rename = "query_result_id")]
407    #[serde(skip_serializing_if = "Option::is_none")]
408    pub query_result_id: Option<i64>,
409    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
410    #[serde(rename = "raw_data")]
411    #[serde(skip_serializing_if = "Option::is_none")]
412    pub raw_data: Option<String>,
413    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
414    #[serde(rename = "raw_data_hash")]
415    #[serde(skip_serializing_if = "Option::is_none")]
416    pub raw_data_hash: Option<Box<Fingerprint>>,
417    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
418    #[serde(rename = "raw_data_size")]
419    #[serde(skip_serializing_if = "Option::is_none")]
420    pub raw_data_size: Option<i64>,
421    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
422    #[serde(rename = "risk_details")]
423    #[serde(skip_serializing_if = "Option::is_none")]
424    pub risk_details: Option<String>,
425    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
426    #[serde(rename = "risk_level")]
427    #[serde(skip_serializing_if = "Option::is_none")]
428    pub risk_level: Option<String>,
429    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
430    #[serde(rename = "risk_level_id")]
431    #[serde(skip_serializing_if = "Option::is_none")]
432    pub risk_level_id: Option<i64>,
433    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
434    #[serde(rename = "risk_score")]
435    #[serde(skip_serializing_if = "Option::is_none")]
436    pub risk_score: Option<i64>,
437    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
438    #[serde(rename = "severity")]
439    #[serde(skip_serializing_if = "Option::is_none")]
440    pub severity: Option<String>,
441    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
442    #[serde(rename = "severity_id")]
443    #[serde(skip_serializing_if = "Option::is_none")]
444    pub severity_id: Option<i64>,
445    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
446    #[serde(rename = "start_time")]
447    #[serde(skip_serializing_if = "Option::is_none")]
448    pub start_time: Option<i64>,
449    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
450    #[serde(rename = "start_time_dt")]
451    #[serde(skip_serializing_if = "Option::is_none")]
452    pub start_time_dt: Option<String>,
453    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
454    #[serde(rename = "status")]
455    #[serde(skip_serializing_if = "Option::is_none")]
456    pub status: Option<String>,
457    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
458    #[serde(rename = "status_code")]
459    #[serde(skip_serializing_if = "Option::is_none")]
460    pub status_code: Option<String>,
461    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
462    #[serde(rename = "status_detail")]
463    #[serde(skip_serializing_if = "Option::is_none")]
464    pub status_detail: Option<String>,
465    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
466    #[serde(rename = "status_id")]
467    #[serde(skip_serializing_if = "Option::is_none")]
468    pub status_id: Option<i64>,
469    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
470    #[serde(rename = "time")]
471    #[serde(skip_serializing_if = "Option::is_none")]
472    pub time: Option<i64>,
473    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
474    #[serde(rename = "time_dt")]
475    #[serde(skip_serializing_if = "Option::is_none")]
476    pub time_dt: Option<String>,
477    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
478    #[serde(rename = "timezone_offset")]
479    #[serde(skip_serializing_if = "Option::is_none")]
480    pub timezone_offset: Option<i64>,
481    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
482    #[serde(rename = "type_name")]
483    #[serde(skip_serializing_if = "Option::is_none")]
484    pub type_name: Option<String>,
485    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
486    #[serde(rename = "type_uid")]
487    #[serde(skip_serializing_if = "Option::is_none")]
488    pub type_uid: Option<i64>,
489    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
490    #[serde(rename = "unmapped")]
491    #[serde(skip_serializing_if = "Option::is_none")]
492    pub unmapped: Option<serde_json::Value>,
493    #[doc = "Users\n\nThe users that belong to the administrative group.\n\nrecommended"]
494    #[serde(rename = "users")]
495    #[serde(skip_serializing_if = "Option::is_none")]
496    pub users: Option<Vec<User>>,
497}
498#[doc = "Airborne Broadcast Activity\n\nAirborne Broadcast Activity events report the activity of any aircraft or unmanned system as reported and tracked by Automatic Dependent Surveillance - Broadcast (ADS-B) receivers. Based on the ADS-B standards described in <a target='_blank' href='https://www.ecfr.gov/current/title-14/chapter-I/subchapter-F/part-91#91.225'>Code of Federal Regulations (CFR) Title 14 Chapter I Subchapter F Part 91</a> and in other general Federal Aviation Administration (FAA) supplemental orders and guidance described <a target='_blank' href='https://www.faa.gov/about/office_org/headquarters_offices/avs/offices/afx/afs/afs400/afs410/ads-b'>here</a>.\n\n[UID:8002] Category: unmanned_systems | Name: airborne_broadcast_activity\n\n**Constraints:**\n* at_least_one: `[aircraft`,`unmanned_aerial_system`,`unmanned_system_operating_area]`\n"]
499#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
500#[serde(default)]
501#[non_exhaustive]
502pub struct AirborneBroadcastActivity {
503    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
504    #[serde(rename = "action")]
505    #[serde(skip_serializing_if = "Option::is_none")]
506    pub action: Option<String>,
507    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
508    #[serde(rename = "action_id")]
509    #[serde(skip_serializing_if = "Option::is_none")]
510    pub action_id: Option<i64>,
511    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
512    #[serde(rename = "activity_id")]
513    #[serde(skip_serializing_if = "Option::is_none")]
514    pub activity_id: Option<i64>,
515    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
516    #[serde(rename = "activity_name")]
517    #[serde(skip_serializing_if = "Option::is_none")]
518    pub activity_name: Option<String>,
519    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
520    #[serde(rename = "actor")]
521    #[serde(skip_serializing_if = "Option::is_none")]
522    pub actor: Option<Box<Actor>>,
523    #[doc = "Aircraft\n\nThe Aircraft object represents any aircraft or otherwise airborne asset such as an unmanned system, airplane, balloon, spacecraft, or otherwise. The Aircraft object is intended to normalized data captured or otherwise logged from active radar, passive radar, multi-spectral systems, or the Automatic Dependant Broadcast - Surveillance (ADS-B), and/or Mode S systems.\n\nrecommended"]
524    #[serde(rename = "aircraft")]
525    #[serde(skip_serializing_if = "Option::is_none")]
526    pub aircraft: Option<Box<Aircraft>>,
527    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
528    #[serde(rename = "api")]
529    #[serde(skip_serializing_if = "Option::is_none")]
530    pub api: Option<Box<Api>>,
531    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
532    #[serde(rename = "attacks")]
533    #[serde(skip_serializing_if = "Option::is_none")]
534    pub attacks: Option<Vec<Attack>>,
535    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
536    #[serde(rename = "authorizations")]
537    #[serde(skip_serializing_if = "Option::is_none")]
538    pub authorizations: Option<Vec<Authorization>>,
539    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Unmanned Systems</code>.\n\noptional"]
540    #[serde(rename = "category_name")]
541    #[serde(skip_serializing_if = "Option::is_none")]
542    pub category_name: Option<String>,
543    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
544    #[serde(rename = "category_uid")]
545    #[serde(skip_serializing_if = "Option::is_none")]
546    pub category_uid: Option<i64>,
547    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Airborne Broadcast Activity</code>.\n\noptional"]
548    #[serde(rename = "class_name")]
549    #[serde(skip_serializing_if = "Option::is_none")]
550    pub class_name: Option<String>,
551    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
552    #[serde(rename = "class_uid")]
553    #[serde(skip_serializing_if = "Option::is_none")]
554    pub class_uid: Option<i64>,
555    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
556    #[serde(rename = "cloud")]
557    #[serde(skip_serializing_if = "Option::is_none")]
558    pub cloud: Option<Box<Cloud>>,
559    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
560    #[serde(rename = "confidence")]
561    #[serde(skip_serializing_if = "Option::is_none")]
562    pub confidence: Option<String>,
563    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
564    #[serde(rename = "confidence_id")]
565    #[serde(skip_serializing_if = "Option::is_none")]
566    pub confidence_id: Option<i64>,
567    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
568    #[serde(rename = "confidence_score")]
569    #[serde(skip_serializing_if = "Option::is_none")]
570    pub confidence_score: Option<i64>,
571    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
572    #[serde(rename = "connection_info")]
573    #[serde(skip_serializing_if = "Option::is_none")]
574    pub connection_info: Option<Box<NetworkConnectionInfo>>,
575    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
576    #[serde(rename = "count")]
577    #[serde(skip_serializing_if = "Option::is_none")]
578    pub count: Option<i64>,
579    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
580    #[serde(rename = "device")]
581    #[serde(skip_serializing_if = "Option::is_none")]
582    pub device: Option<Box<Device>>,
583    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
584    #[serde(rename = "disposition")]
585    #[serde(skip_serializing_if = "Option::is_none")]
586    pub disposition: Option<String>,
587    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
588    #[serde(rename = "disposition_id")]
589    #[serde(skip_serializing_if = "Option::is_none")]
590    pub disposition_id: Option<i64>,
591    #[doc = "Destination Endpoint\n\nThe destination network endpoint for the ADS-B system, if telemetry is being remotely broadcasted.\n\noptional"]
592    #[serde(rename = "dst_endpoint")]
593    #[serde(skip_serializing_if = "Option::is_none")]
594    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
595    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
596    #[serde(rename = "duration")]
597    #[serde(skip_serializing_if = "Option::is_none")]
598    pub duration: Option<i64>,
599    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
600    #[serde(rename = "end_time")]
601    #[serde(skip_serializing_if = "Option::is_none")]
602    pub end_time: Option<i64>,
603    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
604    #[serde(rename = "end_time_dt")]
605    #[serde(skip_serializing_if = "Option::is_none")]
606    pub end_time_dt: Option<String>,
607    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
608    #[serde(rename = "enrichments")]
609    #[serde(skip_serializing_if = "Option::is_none")]
610    pub enrichments: Option<Vec<Enrichment>>,
611    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
612    #[serde(rename = "firewall_rule")]
613    #[serde(skip_serializing_if = "Option::is_none")]
614    pub firewall_rule: Option<Box<FirewallRule>>,
615    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
616    #[serde(rename = "is_alert")]
617    #[serde(skip_serializing_if = "Option::is_none")]
618    pub is_alert: Option<bool>,
619    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
620    #[serde(rename = "malware")]
621    #[serde(skip_serializing_if = "Option::is_none")]
622    pub malware: Option<Vec<Malware>>,
623    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
624    #[serde(rename = "malware_scan_info")]
625    #[serde(skip_serializing_if = "Option::is_none")]
626    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
627    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
628    #[serde(rename = "message")]
629    #[serde(skip_serializing_if = "Option::is_none")]
630    pub message: Option<String>,
631    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
632    #[serde(rename = "metadata")]
633    #[serde(skip_serializing_if = "Option::is_none")]
634    pub metadata: Option<Box<Metadata>>,
635    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
636    #[serde(rename = "observables")]
637    #[serde(skip_serializing_if = "Option::is_none")]
638    pub observables: Option<Vec<Observable>>,
639    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
640    #[serde(rename = "osint")]
641    #[serde(skip_serializing_if = "Option::is_none")]
642    pub osint: Option<Vec<Osint>>,
643    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
644    #[serde(rename = "policy")]
645    #[serde(skip_serializing_if = "Option::is_none")]
646    pub policy: Option<Box<Policy>>,
647    #[doc = "ADS-B Protocol\n\nThe specific protocol associated with the ADS-B system. E.g. <code>ADS-B UAT</code> or <code>ADS-B ES</code>.\n\nrecommended"]
648    #[serde(rename = "protocol_name")]
649    #[serde(skip_serializing_if = "Option::is_none")]
650    pub protocol_name: Option<String>,
651    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\nrecommended"]
652    #[serde(rename = "proxy_endpoint")]
653    #[serde(skip_serializing_if = "Option::is_none")]
654    pub proxy_endpoint: Option<Box<NetworkProxy>>,
655    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
656    #[serde(rename = "raw_data")]
657    #[serde(skip_serializing_if = "Option::is_none")]
658    pub raw_data: Option<String>,
659    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
660    #[serde(rename = "raw_data_hash")]
661    #[serde(skip_serializing_if = "Option::is_none")]
662    pub raw_data_hash: Option<Box<Fingerprint>>,
663    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
664    #[serde(rename = "raw_data_size")]
665    #[serde(skip_serializing_if = "Option::is_none")]
666    pub raw_data_size: Option<i64>,
667    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
668    #[serde(rename = "risk_details")]
669    #[serde(skip_serializing_if = "Option::is_none")]
670    pub risk_details: Option<String>,
671    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
672    #[serde(rename = "risk_level")]
673    #[serde(skip_serializing_if = "Option::is_none")]
674    pub risk_level: Option<String>,
675    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
676    #[serde(rename = "risk_level_id")]
677    #[serde(skip_serializing_if = "Option::is_none")]
678    pub risk_level_id: Option<i64>,
679    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
680    #[serde(rename = "risk_score")]
681    #[serde(skip_serializing_if = "Option::is_none")]
682    pub risk_score: Option<i64>,
683    #[doc = "RSSI\n\nRecent average RSSI (signal power) measured in dbFS. This value will always be negative, e.g., <code>-87.13</code>.\n\noptional"]
684    #[serde(rename = "rssi")]
685    #[serde(skip_serializing_if = "Option::is_none")]
686    pub rssi: Option<i64>,
687    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
688    #[serde(rename = "severity")]
689    #[serde(skip_serializing_if = "Option::is_none")]
690    pub severity: Option<String>,
691    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
692    #[serde(rename = "severity_id")]
693    #[serde(skip_serializing_if = "Option::is_none")]
694    pub severity_id: Option<i64>,
695    #[doc = "Source Endpoint\n\nThe source network endpoint for the ADS-B system.\n\noptional"]
696    #[serde(rename = "src_endpoint")]
697    #[serde(skip_serializing_if = "Option::is_none")]
698    pub src_endpoint: Option<Box<NetworkEndpoint>>,
699    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
700    #[serde(rename = "start_time")]
701    #[serde(skip_serializing_if = "Option::is_none")]
702    pub start_time: Option<i64>,
703    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
704    #[serde(rename = "start_time_dt")]
705    #[serde(skip_serializing_if = "Option::is_none")]
706    pub start_time_dt: Option<String>,
707    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
708    #[serde(rename = "status")]
709    #[serde(skip_serializing_if = "Option::is_none")]
710    pub status: Option<String>,
711    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
712    #[serde(rename = "status_code")]
713    #[serde(skip_serializing_if = "Option::is_none")]
714    pub status_code: Option<String>,
715    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
716    #[serde(rename = "status_detail")]
717    #[serde(skip_serializing_if = "Option::is_none")]
718    pub status_detail: Option<String>,
719    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
720    #[serde(rename = "status_id")]
721    #[serde(skip_serializing_if = "Option::is_none")]
722    pub status_id: Option<i64>,
723    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
724    #[serde(rename = "time")]
725    #[serde(skip_serializing_if = "Option::is_none")]
726    pub time: Option<i64>,
727    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
728    #[serde(rename = "time_dt")]
729    #[serde(skip_serializing_if = "Option::is_none")]
730    pub time_dt: Option<String>,
731    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
732    #[serde(rename = "timezone_offset")]
733    #[serde(skip_serializing_if = "Option::is_none")]
734    pub timezone_offset: Option<i64>,
735    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
736    #[serde(rename = "tls")]
737    #[serde(skip_serializing_if = "Option::is_none")]
738    pub tls: Option<Box<Tls>>,
739    #[doc = "Traffic\n\nTraffic refers to the amount of data transmitted from a ADS-B remote monitoring system at a given point of time. Ex: <code>bytes_in</code> and <code>bytes_out</code>.\n\noptional"]
740    #[serde(rename = "traffic")]
741    #[serde(skip_serializing_if = "Option::is_none")]
742    pub traffic: Option<Box<NetworkTraffic>>,
743    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
744    #[serde(rename = "type_name")]
745    #[serde(skip_serializing_if = "Option::is_none")]
746    pub type_name: Option<String>,
747    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
748    #[serde(rename = "type_uid")]
749    #[serde(skip_serializing_if = "Option::is_none")]
750    pub type_uid: Option<i64>,
751    #[doc = "Unmanned Aerial System\n\nThe Unmanned Aerial System object describes the characteristics, Position Location Information (PLI), and other metadata of Unmanned Aerial Systems (UAS) and other unmanned and drone systems used in Remote ID. Remote ID is defined in the Standard Specification for Remote ID and Tracking (ASTM Designation: F3411-22a) <a target='_blank' href='https://cdn.standards.iteh.ai/samples/112830/71297057ac42432880a203654f213709/ASTM-F3411-22a.pdf'>ASTM F3411-22a</a>.\n\nrequired"]
752    #[serde(rename = "unmanned_aerial_system")]
753    #[serde(skip_serializing_if = "Option::is_none")]
754    pub unmanned_aerial_system: Option<Box<UnmannedAerialSystem>>,
755    #[doc = "UAS Operating Area\n\nThe UAS Operating Area object describes details about a precise area of operations for a UAS flight or mission.\n\nrecommended"]
756    #[serde(rename = "unmanned_system_operating_area")]
757    #[serde(skip_serializing_if = "Option::is_none")]
758    pub unmanned_system_operating_area: Option<Box<UnmannedSystemOperatingArea>>,
759    #[doc = "Unmanned Systems Operator\n\nThe human or machine operator of an Unmanned System.\n\nrequired"]
760    #[serde(rename = "unmanned_system_operator")]
761    #[serde(skip_serializing_if = "Option::is_none")]
762    pub unmanned_system_operator: Option<Box<User>>,
763    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
764    #[serde(rename = "unmapped")]
765    #[serde(skip_serializing_if = "Option::is_none")]
766    pub unmapped: Option<serde_json::Value>,
767}
768#[doc = "API Activity\n\nAPI events describe general CRUD (Create, Read, Update, Delete) API activities, e.g. (AWS Cloudtrail)\n\n[UID:6003] Category: application | Name: api_activity"]
769#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
770#[serde(default)]
771#[non_exhaustive]
772pub struct ApiActivity {
773    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
774    #[serde(rename = "action")]
775    #[serde(skip_serializing_if = "Option::is_none")]
776    pub action: Option<String>,
777    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
778    #[serde(rename = "action_id")]
779    #[serde(skip_serializing_if = "Option::is_none")]
780    pub action_id: Option<i64>,
781    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
782    #[serde(rename = "activity_id")]
783    #[serde(skip_serializing_if = "Option::is_none")]
784    pub activity_id: Option<i64>,
785    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
786    #[serde(rename = "activity_name")]
787    #[serde(skip_serializing_if = "Option::is_none")]
788    pub activity_name: Option<String>,
789    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrequired"]
790    #[serde(rename = "actor")]
791    #[serde(skip_serializing_if = "Option::is_none")]
792    pub actor: Option<Box<Actor>>,
793    #[doc = "AI Model\n\nThe AI Model object describes the characteristics of an AI/ML model. Examples include language models like GPT-4, embedding models like text-embedding-ada-002, and computer vision models like CLIP.\n\nrecommended"]
794    #[serde(rename = "ai_model")]
795    #[serde(skip_serializing_if = "Option::is_none")]
796    pub ai_model: Option<Box<AiModel>>,
797    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\nrequired"]
798    #[serde(rename = "api")]
799    #[serde(skip_serializing_if = "Option::is_none")]
800    pub api: Option<Box<Api>>,
801    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
802    #[serde(rename = "attacks")]
803    #[serde(skip_serializing_if = "Option::is_none")]
804    pub attacks: Option<Vec<Attack>>,
805    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
806    #[serde(rename = "authorizations")]
807    #[serde(skip_serializing_if = "Option::is_none")]
808    pub authorizations: Option<Vec<Authorization>>,
809    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Application Activity</code>.\n\noptional"]
810    #[serde(rename = "category_name")]
811    #[serde(skip_serializing_if = "Option::is_none")]
812    pub category_name: Option<String>,
813    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
814    #[serde(rename = "category_uid")]
815    #[serde(skip_serializing_if = "Option::is_none")]
816    pub category_uid: Option<i64>,
817    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>API Activity</code>.\n\noptional"]
818    #[serde(rename = "class_name")]
819    #[serde(skip_serializing_if = "Option::is_none")]
820    pub class_name: Option<String>,
821    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
822    #[serde(rename = "class_uid")]
823    #[serde(skip_serializing_if = "Option::is_none")]
824    pub class_uid: Option<i64>,
825    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
826    #[serde(rename = "cloud")]
827    #[serde(skip_serializing_if = "Option::is_none")]
828    pub cloud: Option<Box<Cloud>>,
829    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
830    #[serde(rename = "confidence")]
831    #[serde(skip_serializing_if = "Option::is_none")]
832    pub confidence: Option<String>,
833    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
834    #[serde(rename = "confidence_id")]
835    #[serde(skip_serializing_if = "Option::is_none")]
836    pub confidence_id: Option<i64>,
837    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
838    #[serde(rename = "confidence_score")]
839    #[serde(skip_serializing_if = "Option::is_none")]
840    pub confidence_score: Option<i64>,
841    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
842    #[serde(rename = "count")]
843    #[serde(skip_serializing_if = "Option::is_none")]
844    pub count: Option<i64>,
845    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
846    #[serde(rename = "device")]
847    #[serde(skip_serializing_if = "Option::is_none")]
848    pub device: Option<Box<Device>>,
849    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
850    #[serde(rename = "disposition")]
851    #[serde(skip_serializing_if = "Option::is_none")]
852    pub disposition: Option<String>,
853    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
854    #[serde(rename = "disposition_id")]
855    #[serde(skip_serializing_if = "Option::is_none")]
856    pub disposition_id: Option<i64>,
857    #[doc = "Destination Endpoint\n\nThe network destination endpoint.\n\nrecommended"]
858    #[serde(rename = "dst_endpoint")]
859    #[serde(skip_serializing_if = "Option::is_none")]
860    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
861    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
862    #[serde(rename = "duration")]
863    #[serde(skip_serializing_if = "Option::is_none")]
864    pub duration: Option<i64>,
865    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
866    #[serde(rename = "end_time")]
867    #[serde(skip_serializing_if = "Option::is_none")]
868    pub end_time: Option<i64>,
869    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
870    #[serde(rename = "end_time_dt")]
871    #[serde(skip_serializing_if = "Option::is_none")]
872    pub end_time_dt: Option<String>,
873    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
874    #[serde(rename = "enrichments")]
875    #[serde(skip_serializing_if = "Option::is_none")]
876    pub enrichments: Option<Vec<Enrichment>>,
877    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
878    #[serde(rename = "firewall_rule")]
879    #[serde(skip_serializing_if = "Option::is_none")]
880    pub firewall_rule: Option<Box<FirewallRule>>,
881    #[doc = "HTTP Request\n\nDetails about the underlying http request.\n\nrecommended"]
882    #[serde(rename = "http_request")]
883    #[serde(skip_serializing_if = "Option::is_none")]
884    pub http_request: Option<Box<HttpRequest>>,
885    #[doc = "HTTP Response\n\nDetails about the underlying http response.\n\nrecommended"]
886    #[serde(rename = "http_response")]
887    #[serde(skip_serializing_if = "Option::is_none")]
888    pub http_response: Option<Box<HttpResponse>>,
889    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
890    #[serde(rename = "is_alert")]
891    #[serde(skip_serializing_if = "Option::is_none")]
892    pub is_alert: Option<bool>,
893    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
894    #[serde(rename = "malware")]
895    #[serde(skip_serializing_if = "Option::is_none")]
896    pub malware: Option<Vec<Malware>>,
897    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
898    #[serde(rename = "malware_scan_info")]
899    #[serde(skip_serializing_if = "Option::is_none")]
900    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
901    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
902    #[serde(rename = "message")]
903    #[serde(skip_serializing_if = "Option::is_none")]
904    pub message: Option<String>,
905    #[doc = "Message Context\n\nCommunication context for AI system interactions including protocols, roles, clients, and session information for MCP and other AI communication systems.\n\noptional"]
906    #[serde(rename = "message_context")]
907    #[serde(skip_serializing_if = "Option::is_none")]
908    pub message_context: Option<Box<MessageContext>>,
909    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
910    #[serde(rename = "metadata")]
911    #[serde(skip_serializing_if = "Option::is_none")]
912    pub metadata: Option<Box<Metadata>>,
913    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
914    #[serde(rename = "observables")]
915    #[serde(skip_serializing_if = "Option::is_none")]
916    pub observables: Option<Vec<Observable>>,
917    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
918    #[serde(rename = "osint")]
919    #[serde(skip_serializing_if = "Option::is_none")]
920    pub osint: Option<Vec<Osint>>,
921    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
922    #[serde(rename = "policy")]
923    #[serde(skip_serializing_if = "Option::is_none")]
924    pub policy: Option<Box<Policy>>,
925    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
926    #[serde(rename = "raw_data")]
927    #[serde(skip_serializing_if = "Option::is_none")]
928    pub raw_data: Option<String>,
929    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
930    #[serde(rename = "raw_data_hash")]
931    #[serde(skip_serializing_if = "Option::is_none")]
932    pub raw_data_hash: Option<Box<Fingerprint>>,
933    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
934    #[serde(rename = "raw_data_size")]
935    #[serde(skip_serializing_if = "Option::is_none")]
936    pub raw_data_size: Option<i64>,
937    #[doc = "Resources Array\n\nDetails about resources that were affected by the activity/event.\n\nrecommended"]
938    #[serde(rename = "resources")]
939    #[serde(skip_serializing_if = "Option::is_none")]
940    pub resources: Option<Vec<ResourceDetails>>,
941    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
942    #[serde(rename = "risk_details")]
943    #[serde(skip_serializing_if = "Option::is_none")]
944    pub risk_details: Option<String>,
945    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
946    #[serde(rename = "risk_level")]
947    #[serde(skip_serializing_if = "Option::is_none")]
948    pub risk_level: Option<String>,
949    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
950    #[serde(rename = "risk_level_id")]
951    #[serde(skip_serializing_if = "Option::is_none")]
952    pub risk_level_id: Option<i64>,
953    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
954    #[serde(rename = "risk_score")]
955    #[serde(skip_serializing_if = "Option::is_none")]
956    pub risk_score: Option<i64>,
957    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
958    #[serde(rename = "severity")]
959    #[serde(skip_serializing_if = "Option::is_none")]
960    pub severity: Option<String>,
961    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
962    #[serde(rename = "severity_id")]
963    #[serde(skip_serializing_if = "Option::is_none")]
964    pub severity_id: Option<i64>,
965    #[doc = "Source Endpoint\n\nDetails about the source of the activity.\n\nrequired"]
966    #[serde(rename = "src_endpoint")]
967    #[serde(skip_serializing_if = "Option::is_none")]
968    pub src_endpoint: Option<Box<NetworkEndpoint>>,
969    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
970    #[serde(rename = "start_time")]
971    #[serde(skip_serializing_if = "Option::is_none")]
972    pub start_time: Option<i64>,
973    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
974    #[serde(rename = "start_time_dt")]
975    #[serde(skip_serializing_if = "Option::is_none")]
976    pub start_time_dt: Option<String>,
977    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
978    #[serde(rename = "status")]
979    #[serde(skip_serializing_if = "Option::is_none")]
980    pub status: Option<String>,
981    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
982    #[serde(rename = "status_code")]
983    #[serde(skip_serializing_if = "Option::is_none")]
984    pub status_code: Option<String>,
985    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
986    #[serde(rename = "status_detail")]
987    #[serde(skip_serializing_if = "Option::is_none")]
988    pub status_detail: Option<String>,
989    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
990    #[serde(rename = "status_id")]
991    #[serde(skip_serializing_if = "Option::is_none")]
992    pub status_id: Option<i64>,
993    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
994    #[serde(rename = "time")]
995    #[serde(skip_serializing_if = "Option::is_none")]
996    pub time: Option<i64>,
997    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
998    #[serde(rename = "time_dt")]
999    #[serde(skip_serializing_if = "Option::is_none")]
1000    pub time_dt: Option<String>,
1001    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
1002    #[serde(rename = "timezone_offset")]
1003    #[serde(skip_serializing_if = "Option::is_none")]
1004    pub timezone_offset: Option<i64>,
1005    #[doc = "Trace\n\nThe trace object contains information about distributed traces which are critical to observability and describe how requests move through a system, capturing each step's timing and status.\n\nrecommended"]
1006    #[serde(rename = "trace")]
1007    #[serde(skip_serializing_if = "Option::is_none")]
1008    pub trace: Option<Box<Trace>>,
1009    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
1010    #[serde(rename = "type_name")]
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub type_name: Option<String>,
1013    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
1014    #[serde(rename = "type_uid")]
1015    #[serde(skip_serializing_if = "Option::is_none")]
1016    pub type_uid: Option<i64>,
1017    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
1018    #[serde(rename = "unmapped")]
1019    #[serde(skip_serializing_if = "Option::is_none")]
1020    pub unmapped: Option<serde_json::Value>,
1021}
1022#[doc = "Application Error\n\nApplication Error events describe issues with an applications. The error message should be put in the event's <code>message</code> attribute. The <code>metadata.product</code> attribute can be used to capture the originating application information. The <code>host</code> profile can used to include the generating device information. This class is helpful for applications that generate or handle OCSF events and can also be used for errors in upstream products and services.\n\n[UID:6008] Category: application | Name: application_error"]
1023#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
1024#[serde(default)]
1025#[non_exhaustive]
1026pub struct ApplicationError {
1027    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
1028    #[serde(rename = "action")]
1029    #[serde(skip_serializing_if = "Option::is_none")]
1030    pub action: Option<String>,
1031    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
1032    #[serde(rename = "action_id")]
1033    #[serde(skip_serializing_if = "Option::is_none")]
1034    pub action_id: Option<i64>,
1035    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
1036    #[serde(rename = "activity_id")]
1037    #[serde(skip_serializing_if = "Option::is_none")]
1038    pub activity_id: Option<i64>,
1039    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
1040    #[serde(rename = "activity_name")]
1041    #[serde(skip_serializing_if = "Option::is_none")]
1042    pub activity_name: Option<String>,
1043    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
1044    #[serde(rename = "actor")]
1045    #[serde(skip_serializing_if = "Option::is_none")]
1046    pub actor: Option<Box<Actor>>,
1047    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
1048    #[serde(rename = "api")]
1049    #[serde(skip_serializing_if = "Option::is_none")]
1050    pub api: Option<Box<Api>>,
1051    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
1052    #[serde(rename = "attacks")]
1053    #[serde(skip_serializing_if = "Option::is_none")]
1054    pub attacks: Option<Vec<Attack>>,
1055    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
1056    #[serde(rename = "authorizations")]
1057    #[serde(skip_serializing_if = "Option::is_none")]
1058    pub authorizations: Option<Vec<Authorization>>,
1059    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Application Activity</code>.\n\noptional"]
1060    #[serde(rename = "category_name")]
1061    #[serde(skip_serializing_if = "Option::is_none")]
1062    pub category_name: Option<String>,
1063    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
1064    #[serde(rename = "category_uid")]
1065    #[serde(skip_serializing_if = "Option::is_none")]
1066    pub category_uid: Option<i64>,
1067    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Application Error</code>.\n\noptional"]
1068    #[serde(rename = "class_name")]
1069    #[serde(skip_serializing_if = "Option::is_none")]
1070    pub class_name: Option<String>,
1071    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
1072    #[serde(rename = "class_uid")]
1073    #[serde(skip_serializing_if = "Option::is_none")]
1074    pub class_uid: Option<i64>,
1075    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
1076    #[serde(rename = "cloud")]
1077    #[serde(skip_serializing_if = "Option::is_none")]
1078    pub cloud: Option<Box<Cloud>>,
1079    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1080    #[serde(rename = "confidence")]
1081    #[serde(skip_serializing_if = "Option::is_none")]
1082    pub confidence: Option<String>,
1083    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
1084    #[serde(rename = "confidence_id")]
1085    #[serde(skip_serializing_if = "Option::is_none")]
1086    pub confidence_id: Option<i64>,
1087    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
1088    #[serde(rename = "confidence_score")]
1089    #[serde(skip_serializing_if = "Option::is_none")]
1090    pub confidence_score: Option<i64>,
1091    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
1092    #[serde(rename = "count")]
1093    #[serde(skip_serializing_if = "Option::is_none")]
1094    pub count: Option<i64>,
1095    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
1096    #[serde(rename = "device")]
1097    #[serde(skip_serializing_if = "Option::is_none")]
1098    pub device: Option<Box<Device>>,
1099    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1100    #[serde(rename = "disposition")]
1101    #[serde(skip_serializing_if = "Option::is_none")]
1102    pub disposition: Option<String>,
1103    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
1104    #[serde(rename = "disposition_id")]
1105    #[serde(skip_serializing_if = "Option::is_none")]
1106    pub disposition_id: Option<i64>,
1107    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
1108    #[serde(rename = "duration")]
1109    #[serde(skip_serializing_if = "Option::is_none")]
1110    pub duration: Option<i64>,
1111    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
1112    #[serde(rename = "end_time")]
1113    #[serde(skip_serializing_if = "Option::is_none")]
1114    pub end_time: Option<i64>,
1115    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
1116    #[serde(rename = "end_time_dt")]
1117    #[serde(skip_serializing_if = "Option::is_none")]
1118    pub end_time_dt: Option<String>,
1119    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
1120    #[serde(rename = "enrichments")]
1121    #[serde(skip_serializing_if = "Option::is_none")]
1122    pub enrichments: Option<Vec<Enrichment>>,
1123    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
1124    #[serde(rename = "firewall_rule")]
1125    #[serde(skip_serializing_if = "Option::is_none")]
1126    pub firewall_rule: Option<Box<FirewallRule>>,
1127    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
1128    #[serde(rename = "is_alert")]
1129    #[serde(skip_serializing_if = "Option::is_none")]
1130    pub is_alert: Option<bool>,
1131    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
1132    #[serde(rename = "malware")]
1133    #[serde(skip_serializing_if = "Option::is_none")]
1134    pub malware: Option<Vec<Malware>>,
1135    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
1136    #[serde(rename = "malware_scan_info")]
1137    #[serde(skip_serializing_if = "Option::is_none")]
1138    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
1139    #[doc = "Message\n\nThe error message as reported by the application.\n\nrecommended"]
1140    #[serde(rename = "message")]
1141    #[serde(skip_serializing_if = "Option::is_none")]
1142    pub message: Option<String>,
1143    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
1144    #[serde(rename = "metadata")]
1145    #[serde(skip_serializing_if = "Option::is_none")]
1146    pub metadata: Option<Box<Metadata>>,
1147    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
1148    #[serde(rename = "observables")]
1149    #[serde(skip_serializing_if = "Option::is_none")]
1150    pub observables: Option<Vec<Observable>>,
1151    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
1152    #[serde(rename = "osint")]
1153    #[serde(skip_serializing_if = "Option::is_none")]
1154    pub osint: Option<Vec<Osint>>,
1155    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
1156    #[serde(rename = "policy")]
1157    #[serde(skip_serializing_if = "Option::is_none")]
1158    pub policy: Option<Box<Policy>>,
1159    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
1160    #[serde(rename = "raw_data")]
1161    #[serde(skip_serializing_if = "Option::is_none")]
1162    pub raw_data: Option<String>,
1163    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
1164    #[serde(rename = "raw_data_hash")]
1165    #[serde(skip_serializing_if = "Option::is_none")]
1166    pub raw_data_hash: Option<Box<Fingerprint>>,
1167    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
1168    #[serde(rename = "raw_data_size")]
1169    #[serde(skip_serializing_if = "Option::is_none")]
1170    pub raw_data_size: Option<i64>,
1171    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
1172    #[serde(rename = "risk_details")]
1173    #[serde(skip_serializing_if = "Option::is_none")]
1174    pub risk_details: Option<String>,
1175    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
1176    #[serde(rename = "risk_level")]
1177    #[serde(skip_serializing_if = "Option::is_none")]
1178    pub risk_level: Option<String>,
1179    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
1180    #[serde(rename = "risk_level_id")]
1181    #[serde(skip_serializing_if = "Option::is_none")]
1182    pub risk_level_id: Option<i64>,
1183    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
1184    #[serde(rename = "risk_score")]
1185    #[serde(skip_serializing_if = "Option::is_none")]
1186    pub risk_score: Option<i64>,
1187    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
1188    #[serde(rename = "severity")]
1189    #[serde(skip_serializing_if = "Option::is_none")]
1190    pub severity: Option<String>,
1191    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
1192    #[serde(rename = "severity_id")]
1193    #[serde(skip_serializing_if = "Option::is_none")]
1194    pub severity_id: Option<i64>,
1195    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
1196    #[serde(rename = "start_time")]
1197    #[serde(skip_serializing_if = "Option::is_none")]
1198    pub start_time: Option<i64>,
1199    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
1200    #[serde(rename = "start_time_dt")]
1201    #[serde(skip_serializing_if = "Option::is_none")]
1202    pub start_time_dt: Option<String>,
1203    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
1204    #[serde(rename = "status")]
1205    #[serde(skip_serializing_if = "Option::is_none")]
1206    pub status: Option<String>,
1207    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
1208    #[serde(rename = "status_code")]
1209    #[serde(skip_serializing_if = "Option::is_none")]
1210    pub status_code: Option<String>,
1211    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
1212    #[serde(rename = "status_detail")]
1213    #[serde(skip_serializing_if = "Option::is_none")]
1214    pub status_detail: Option<String>,
1215    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
1216    #[serde(rename = "status_id")]
1217    #[serde(skip_serializing_if = "Option::is_none")]
1218    pub status_id: Option<i64>,
1219    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
1220    #[serde(rename = "time")]
1221    #[serde(skip_serializing_if = "Option::is_none")]
1222    pub time: Option<i64>,
1223    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
1224    #[serde(rename = "time_dt")]
1225    #[serde(skip_serializing_if = "Option::is_none")]
1226    pub time_dt: Option<String>,
1227    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
1228    #[serde(rename = "timezone_offset")]
1229    #[serde(skip_serializing_if = "Option::is_none")]
1230    pub timezone_offset: Option<i64>,
1231    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
1232    #[serde(rename = "type_name")]
1233    #[serde(skip_serializing_if = "Option::is_none")]
1234    pub type_name: Option<String>,
1235    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
1236    #[serde(rename = "type_uid")]
1237    #[serde(skip_serializing_if = "Option::is_none")]
1238    pub type_uid: Option<i64>,
1239    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
1240    #[serde(rename = "unmapped")]
1241    #[serde(skip_serializing_if = "Option::is_none")]
1242    pub unmapped: Option<serde_json::Value>,
1243}
1244#[doc = "Application Lifecycle\n\nApplication Lifecycle events report installation, removal, start, stop of an application or service.\n\n[UID:6002] Category: application | Name: application_lifecycle"]
1245#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
1246#[serde(default)]
1247#[non_exhaustive]
1248pub struct ApplicationLifecycle {
1249    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
1250    #[serde(rename = "action")]
1251    #[serde(skip_serializing_if = "Option::is_none")]
1252    pub action: Option<String>,
1253    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
1254    #[serde(rename = "action_id")]
1255    #[serde(skip_serializing_if = "Option::is_none")]
1256    pub action_id: Option<i64>,
1257    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
1258    #[serde(rename = "activity_id")]
1259    #[serde(skip_serializing_if = "Option::is_none")]
1260    pub activity_id: Option<i64>,
1261    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
1262    #[serde(rename = "activity_name")]
1263    #[serde(skip_serializing_if = "Option::is_none")]
1264    pub activity_name: Option<String>,
1265    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
1266    #[serde(rename = "actor")]
1267    #[serde(skip_serializing_if = "Option::is_none")]
1268    pub actor: Option<Box<Actor>>,
1269    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
1270    #[serde(rename = "api")]
1271    #[serde(skip_serializing_if = "Option::is_none")]
1272    pub api: Option<Box<Api>>,
1273    #[doc = "Application\n\nThe application that was affected by the lifecycle event.  This also applies to self-updating application systems.\n\nrequired"]
1274    #[serde(rename = "app")]
1275    #[serde(skip_serializing_if = "Option::is_none")]
1276    pub app: Option<Box<Product>>,
1277    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
1278    #[serde(rename = "attacks")]
1279    #[serde(skip_serializing_if = "Option::is_none")]
1280    pub attacks: Option<Vec<Attack>>,
1281    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
1282    #[serde(rename = "authorizations")]
1283    #[serde(skip_serializing_if = "Option::is_none")]
1284    pub authorizations: Option<Vec<Authorization>>,
1285    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Application Activity</code>.\n\noptional"]
1286    #[serde(rename = "category_name")]
1287    #[serde(skip_serializing_if = "Option::is_none")]
1288    pub category_name: Option<String>,
1289    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
1290    #[serde(rename = "category_uid")]
1291    #[serde(skip_serializing_if = "Option::is_none")]
1292    pub category_uid: Option<i64>,
1293    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Application Lifecycle</code>.\n\noptional"]
1294    #[serde(rename = "class_name")]
1295    #[serde(skip_serializing_if = "Option::is_none")]
1296    pub class_name: Option<String>,
1297    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
1298    #[serde(rename = "class_uid")]
1299    #[serde(skip_serializing_if = "Option::is_none")]
1300    pub class_uid: Option<i64>,
1301    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
1302    #[serde(rename = "cloud")]
1303    #[serde(skip_serializing_if = "Option::is_none")]
1304    pub cloud: Option<Box<Cloud>>,
1305    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1306    #[serde(rename = "confidence")]
1307    #[serde(skip_serializing_if = "Option::is_none")]
1308    pub confidence: Option<String>,
1309    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
1310    #[serde(rename = "confidence_id")]
1311    #[serde(skip_serializing_if = "Option::is_none")]
1312    pub confidence_id: Option<i64>,
1313    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
1314    #[serde(rename = "confidence_score")]
1315    #[serde(skip_serializing_if = "Option::is_none")]
1316    pub confidence_score: Option<i64>,
1317    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
1318    #[serde(rename = "count")]
1319    #[serde(skip_serializing_if = "Option::is_none")]
1320    pub count: Option<i64>,
1321    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
1322    #[serde(rename = "device")]
1323    #[serde(skip_serializing_if = "Option::is_none")]
1324    pub device: Option<Box<Device>>,
1325    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1326    #[serde(rename = "disposition")]
1327    #[serde(skip_serializing_if = "Option::is_none")]
1328    pub disposition: Option<String>,
1329    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
1330    #[serde(rename = "disposition_id")]
1331    #[serde(skip_serializing_if = "Option::is_none")]
1332    pub disposition_id: Option<i64>,
1333    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
1334    #[serde(rename = "duration")]
1335    #[serde(skip_serializing_if = "Option::is_none")]
1336    pub duration: Option<i64>,
1337    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
1338    #[serde(rename = "end_time")]
1339    #[serde(skip_serializing_if = "Option::is_none")]
1340    pub end_time: Option<i64>,
1341    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
1342    #[serde(rename = "end_time_dt")]
1343    #[serde(skip_serializing_if = "Option::is_none")]
1344    pub end_time_dt: Option<String>,
1345    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
1346    #[serde(rename = "enrichments")]
1347    #[serde(skip_serializing_if = "Option::is_none")]
1348    pub enrichments: Option<Vec<Enrichment>>,
1349    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
1350    #[serde(rename = "firewall_rule")]
1351    #[serde(skip_serializing_if = "Option::is_none")]
1352    pub firewall_rule: Option<Box<FirewallRule>>,
1353    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
1354    #[serde(rename = "is_alert")]
1355    #[serde(skip_serializing_if = "Option::is_none")]
1356    pub is_alert: Option<bool>,
1357    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
1358    #[serde(rename = "malware")]
1359    #[serde(skip_serializing_if = "Option::is_none")]
1360    pub malware: Option<Vec<Malware>>,
1361    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
1362    #[serde(rename = "malware_scan_info")]
1363    #[serde(skip_serializing_if = "Option::is_none")]
1364    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
1365    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
1366    #[serde(rename = "message")]
1367    #[serde(skip_serializing_if = "Option::is_none")]
1368    pub message: Option<String>,
1369    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
1370    #[serde(rename = "metadata")]
1371    #[serde(skip_serializing_if = "Option::is_none")]
1372    pub metadata: Option<Box<Metadata>>,
1373    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
1374    #[serde(rename = "observables")]
1375    #[serde(skip_serializing_if = "Option::is_none")]
1376    pub observables: Option<Vec<Observable>>,
1377    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
1378    #[serde(rename = "osint")]
1379    #[serde(skip_serializing_if = "Option::is_none")]
1380    pub osint: Option<Vec<Osint>>,
1381    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
1382    #[serde(rename = "policy")]
1383    #[serde(skip_serializing_if = "Option::is_none")]
1384    pub policy: Option<Box<Policy>>,
1385    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
1386    #[serde(rename = "raw_data")]
1387    #[serde(skip_serializing_if = "Option::is_none")]
1388    pub raw_data: Option<String>,
1389    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
1390    #[serde(rename = "raw_data_hash")]
1391    #[serde(skip_serializing_if = "Option::is_none")]
1392    pub raw_data_hash: Option<Box<Fingerprint>>,
1393    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
1394    #[serde(rename = "raw_data_size")]
1395    #[serde(skip_serializing_if = "Option::is_none")]
1396    pub raw_data_size: Option<i64>,
1397    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
1398    #[serde(rename = "risk_details")]
1399    #[serde(skip_serializing_if = "Option::is_none")]
1400    pub risk_details: Option<String>,
1401    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
1402    #[serde(rename = "risk_level")]
1403    #[serde(skip_serializing_if = "Option::is_none")]
1404    pub risk_level: Option<String>,
1405    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
1406    #[serde(rename = "risk_level_id")]
1407    #[serde(skip_serializing_if = "Option::is_none")]
1408    pub risk_level_id: Option<i64>,
1409    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
1410    #[serde(rename = "risk_score")]
1411    #[serde(skip_serializing_if = "Option::is_none")]
1412    pub risk_score: Option<i64>,
1413    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
1414    #[serde(rename = "severity")]
1415    #[serde(skip_serializing_if = "Option::is_none")]
1416    pub severity: Option<String>,
1417    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
1418    #[serde(rename = "severity_id")]
1419    #[serde(skip_serializing_if = "Option::is_none")]
1420    pub severity_id: Option<i64>,
1421    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
1422    #[serde(rename = "start_time")]
1423    #[serde(skip_serializing_if = "Option::is_none")]
1424    pub start_time: Option<i64>,
1425    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
1426    #[serde(rename = "start_time_dt")]
1427    #[serde(skip_serializing_if = "Option::is_none")]
1428    pub start_time_dt: Option<String>,
1429    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
1430    #[serde(rename = "status")]
1431    #[serde(skip_serializing_if = "Option::is_none")]
1432    pub status: Option<String>,
1433    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
1434    #[serde(rename = "status_code")]
1435    #[serde(skip_serializing_if = "Option::is_none")]
1436    pub status_code: Option<String>,
1437    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
1438    #[serde(rename = "status_detail")]
1439    #[serde(skip_serializing_if = "Option::is_none")]
1440    pub status_detail: Option<String>,
1441    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
1442    #[serde(rename = "status_id")]
1443    #[serde(skip_serializing_if = "Option::is_none")]
1444    pub status_id: Option<i64>,
1445    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
1446    #[serde(rename = "time")]
1447    #[serde(skip_serializing_if = "Option::is_none")]
1448    pub time: Option<i64>,
1449    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
1450    #[serde(rename = "time_dt")]
1451    #[serde(skip_serializing_if = "Option::is_none")]
1452    pub time_dt: Option<String>,
1453    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
1454    #[serde(rename = "timezone_offset")]
1455    #[serde(skip_serializing_if = "Option::is_none")]
1456    pub timezone_offset: Option<i64>,
1457    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
1458    #[serde(rename = "type_name")]
1459    #[serde(skip_serializing_if = "Option::is_none")]
1460    pub type_name: Option<String>,
1461    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
1462    #[serde(rename = "type_uid")]
1463    #[serde(skip_serializing_if = "Option::is_none")]
1464    pub type_uid: Option<i64>,
1465    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
1466    #[serde(rename = "unmapped")]
1467    #[serde(skip_serializing_if = "Option::is_none")]
1468    pub unmapped: Option<serde_json::Value>,
1469}
1470#[doc = "Application Security Posture Finding\n\nThe Application Security Posture Finding event is a notification about any bug, defect, deficiency, exploit, vulnerability, weakness or any other issue with software and related systems. Application Security Posture Findings typically involve reporting on the greater context including compliance, impacted resources, remediation guidance, specific code defects, and/or vulnerability metadata. Application Security Posture Findings can be reported by Threat & Vulnerability Management (TVM) tools, Application Security Posture Management (ASPM) tools, or other similar tools. Note: if the event producer is a security control, the <code>security_control</code> profile should be applied and its <code>attacks</code> information, if present, should be duplicated into the <code>finding_info</code> object. <br><strong>Note: </strong>If the Finding is an incident, i.e. requires incident workflow, also apply the <code>incident</code> profile or aggregate this finding into an <code>Incident Finding</code>.\n\n[UID:2007] Category: findings | Name: application_security_posture_finding\n\n**Constraints:**\n* at_least_one: `[application`,`compliance`,`remediation`,`vulnerabilities]`\n"]
1471#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
1472#[serde(default)]
1473#[non_exhaustive]
1474pub struct ApplicationSecurityPostureFinding {
1475    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
1476    #[serde(rename = "action")]
1477    #[serde(skip_serializing_if = "Option::is_none")]
1478    pub action: Option<String>,
1479    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
1480    #[serde(rename = "action_id")]
1481    #[serde(skip_serializing_if = "Option::is_none")]
1482    pub action_id: Option<i64>,
1483    #[doc = "Activity ID\n\nThe normalized identifier of the finding activity.\n\nrequired"]
1484    #[serde(rename = "activity_id")]
1485    #[serde(skip_serializing_if = "Option::is_none")]
1486    pub activity_id: Option<i64>,
1487    #[doc = "Activity\n\nThe finding activity name, as defined by the <code>activity_id</code>.\n\noptional"]
1488    #[serde(rename = "activity_name")]
1489    #[serde(skip_serializing_if = "Option::is_none")]
1490    pub activity_name: Option<String>,
1491    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
1492    #[serde(rename = "actor")]
1493    #[serde(skip_serializing_if = "Option::is_none")]
1494    pub actor: Option<Box<Actor>>,
1495    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
1496    #[serde(rename = "api")]
1497    #[serde(skip_serializing_if = "Option::is_none")]
1498    pub api: Option<Box<Api>>,
1499    #[doc = "Related Application\n\nAn Application describes the details for an inventoried application as reported by an Application Security tool or other Developer-centric tooling. Applications can be defined as Kubernetes resources, Containerized resources, or application hosting-specific cloud sources such as AWS Elastic BeanStalk, AWS Lightsail, or Azure Logic Apps.\n\nrecommended"]
1500    #[serde(rename = "application")]
1501    #[serde(skip_serializing_if = "Option::is_none")]
1502    pub application: Option<Box<Application>>,
1503    #[doc = "Assignee\n\nThe details of the user assigned to an Incident.\n\noptional"]
1504    #[serde(rename = "assignee")]
1505    #[serde(skip_serializing_if = "Option::is_none")]
1506    pub assignee: Option<Box<User>>,
1507    #[doc = "Assignee Group\n\nThe details of the group assigned to an Incident.\n\noptional"]
1508    #[serde(rename = "assignee_group")]
1509    #[serde(skip_serializing_if = "Option::is_none")]
1510    pub assignee_group: Option<Box<Group>>,
1511    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
1512    #[serde(rename = "attacks")]
1513    #[serde(skip_serializing_if = "Option::is_none")]
1514    pub attacks: Option<Vec<Attack>>,
1515    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
1516    #[serde(rename = "authorizations")]
1517    #[serde(skip_serializing_if = "Option::is_none")]
1518    pub authorizations: Option<Vec<Authorization>>,
1519    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Findings</code>.\n\noptional"]
1520    #[serde(rename = "category_name")]
1521    #[serde(skip_serializing_if = "Option::is_none")]
1522    pub category_name: Option<String>,
1523    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
1524    #[serde(rename = "category_uid")]
1525    #[serde(skip_serializing_if = "Option::is_none")]
1526    pub category_uid: Option<i64>,
1527    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Application Security Posture Finding</code>.\n\noptional"]
1528    #[serde(rename = "class_name")]
1529    #[serde(skip_serializing_if = "Option::is_none")]
1530    pub class_name: Option<String>,
1531    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
1532    #[serde(rename = "class_uid")]
1533    #[serde(skip_serializing_if = "Option::is_none")]
1534    pub class_uid: Option<i64>,
1535    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
1536    #[serde(rename = "cloud")]
1537    #[serde(skip_serializing_if = "Option::is_none")]
1538    pub cloud: Option<Box<Cloud>>,
1539    #[doc = "Comment\n\nA user provided comment about the finding.\n\noptional"]
1540    #[serde(rename = "comment")]
1541    #[serde(skip_serializing_if = "Option::is_none")]
1542    pub comment: Option<String>,
1543    #[doc = "Related Compliance\n\nProvides compliance context to vulnerabilities and other weaknesses that are reported as part of an Application Security or Vulnerability Management tool's built-in compliance framework mapping.\n\nrecommended"]
1544    #[serde(rename = "compliance")]
1545    #[serde(skip_serializing_if = "Option::is_none")]
1546    pub compliance: Option<Box<Compliance>>,
1547    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1548    #[serde(rename = "confidence")]
1549    #[serde(skip_serializing_if = "Option::is_none")]
1550    pub confidence: Option<String>,
1551    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
1552    #[serde(rename = "confidence_id")]
1553    #[serde(skip_serializing_if = "Option::is_none")]
1554    pub confidence_id: Option<i64>,
1555    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
1556    #[serde(rename = "confidence_score")]
1557    #[serde(skip_serializing_if = "Option::is_none")]
1558    pub confidence_score: Option<i64>,
1559    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
1560    #[serde(rename = "count")]
1561    #[serde(skip_serializing_if = "Option::is_none")]
1562    pub count: Option<i64>,
1563    #[doc = "Device\n\nDescribes the affected device/host. If applicable, it can be used in conjunction with <code>Resource(s)</code>. <p> e.g. Specific details about an AWS EC2 instance, that is affected by the Finding.</p>\n\noptional"]
1564    #[serde(rename = "device")]
1565    #[serde(skip_serializing_if = "Option::is_none")]
1566    pub device: Option<Box<Device>>,
1567    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1568    #[serde(rename = "disposition")]
1569    #[serde(skip_serializing_if = "Option::is_none")]
1570    pub disposition: Option<String>,
1571    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
1572    #[serde(rename = "disposition_id")]
1573    #[serde(skip_serializing_if = "Option::is_none")]
1574    pub disposition_id: Option<i64>,
1575    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
1576    #[serde(rename = "duration")]
1577    #[serde(skip_serializing_if = "Option::is_none")]
1578    pub duration: Option<i64>,
1579    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
1580    #[serde(rename = "end_time")]
1581    #[serde(skip_serializing_if = "Option::is_none")]
1582    pub end_time: Option<i64>,
1583    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
1584    #[serde(rename = "end_time_dt")]
1585    #[serde(skip_serializing_if = "Option::is_none")]
1586    pub end_time_dt: Option<String>,
1587    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
1588    #[serde(rename = "enrichments")]
1589    #[serde(skip_serializing_if = "Option::is_none")]
1590    pub enrichments: Option<Vec<Enrichment>>,
1591    #[doc = "Finding Information\n\nDescribes the supporting information about a generated finding.\n\nrequired"]
1592    #[serde(rename = "finding_info")]
1593    #[serde(skip_serializing_if = "Option::is_none")]
1594    pub finding_info: Option<Box<FindingInfo>>,
1595    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
1596    #[serde(rename = "firewall_rule")]
1597    #[serde(skip_serializing_if = "Option::is_none")]
1598    pub firewall_rule: Option<Box<FirewallRule>>,
1599    #[doc = "Impact\n\nThe impact , normalized to the caption of the impact_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
1600    #[serde(rename = "impact")]
1601    #[serde(skip_serializing_if = "Option::is_none")]
1602    pub impact: Option<String>,
1603    #[doc = "Impact ID\n\nThe normalized impact of the incident or finding. Per NIST, this is the magnitude of harm that can be expected to result from the consequences of unauthorized disclosure, modification, destruction, or loss of information or information system availability.\n\nrecommended"]
1604    #[serde(rename = "impact_id")]
1605    #[serde(skip_serializing_if = "Option::is_none")]
1606    pub impact_id: Option<i64>,
1607    #[doc = "Impact Score\n\nThe impact as an integer value of the finding, valid range 0-100.\n\nrecommended"]
1608    #[serde(rename = "impact_score")]
1609    #[serde(skip_serializing_if = "Option::is_none")]
1610    pub impact_score: Option<i64>,
1611    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
1612    #[serde(rename = "is_alert")]
1613    #[serde(skip_serializing_if = "Option::is_none")]
1614    pub is_alert: Option<bool>,
1615    #[doc = "Suspected Breach\n\nA determination based on analytics as to whether a potential breach was found.\n\noptional"]
1616    #[serde(rename = "is_suspected_breach")]
1617    #[serde(skip_serializing_if = "Option::is_none")]
1618    pub is_suspected_breach: Option<bool>,
1619    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
1620    #[serde(rename = "malware")]
1621    #[serde(skip_serializing_if = "Option::is_none")]
1622    pub malware: Option<Vec<Malware>>,
1623    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
1624    #[serde(rename = "malware_scan_info")]
1625    #[serde(skip_serializing_if = "Option::is_none")]
1626    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
1627    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
1628    #[serde(rename = "message")]
1629    #[serde(skip_serializing_if = "Option::is_none")]
1630    pub message: Option<String>,
1631    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
1632    #[serde(rename = "metadata")]
1633    #[serde(skip_serializing_if = "Option::is_none")]
1634    pub metadata: Option<Box<Metadata>>,
1635    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
1636    #[serde(rename = "observables")]
1637    #[serde(skip_serializing_if = "Option::is_none")]
1638    pub observables: Option<Vec<Observable>>,
1639    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
1640    #[serde(rename = "osint")]
1641    #[serde(skip_serializing_if = "Option::is_none")]
1642    pub osint: Option<Vec<Osint>>,
1643    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
1644    #[serde(rename = "policy")]
1645    #[serde(skip_serializing_if = "Option::is_none")]
1646    pub policy: Option<Box<Policy>>,
1647    #[doc = "Priority\n\nThe priority, normalized to the caption of the priority_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1648    #[serde(rename = "priority")]
1649    #[serde(skip_serializing_if = "Option::is_none")]
1650    pub priority: Option<String>,
1651    #[doc = "Priority ID\n\nThe normalized priority. Priority identifies the relative importance of the incident or finding. It is a measurement of urgency.\n\nrecommended"]
1652    #[serde(rename = "priority_id")]
1653    #[serde(skip_serializing_if = "Option::is_none")]
1654    pub priority_id: Option<i64>,
1655    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
1656    #[serde(rename = "raw_data")]
1657    #[serde(skip_serializing_if = "Option::is_none")]
1658    pub raw_data: Option<String>,
1659    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
1660    #[serde(rename = "raw_data_hash")]
1661    #[serde(skip_serializing_if = "Option::is_none")]
1662    pub raw_data_hash: Option<Box<Fingerprint>>,
1663    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
1664    #[serde(rename = "raw_data_size")]
1665    #[serde(skip_serializing_if = "Option::is_none")]
1666    pub raw_data_size: Option<i64>,
1667    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified vulnerabilities or weaknesses.\n\nrecommended"]
1668    #[serde(rename = "remediation")]
1669    #[serde(skip_serializing_if = "Option::is_none")]
1670    pub remediation: Option<Box<Remediation>>,
1671    #[doc = "Affected Resources\n\nDescribes details about the resource/resources that are affected by the vulnerability/vulnerabilities.\n\nrecommended"]
1672    #[serde(rename = "resources")]
1673    #[serde(skip_serializing_if = "Option::is_none")]
1674    pub resources: Option<Vec<ResourceDetails>>,
1675    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
1676    #[serde(rename = "risk_details")]
1677    #[serde(skip_serializing_if = "Option::is_none")]
1678    pub risk_details: Option<String>,
1679    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
1680    #[serde(rename = "risk_level")]
1681    #[serde(skip_serializing_if = "Option::is_none")]
1682    pub risk_level: Option<String>,
1683    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
1684    #[serde(rename = "risk_level_id")]
1685    #[serde(skip_serializing_if = "Option::is_none")]
1686    pub risk_level_id: Option<i64>,
1687    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
1688    #[serde(rename = "risk_score")]
1689    #[serde(skip_serializing_if = "Option::is_none")]
1690    pub risk_score: Option<i64>,
1691    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
1692    #[serde(rename = "severity")]
1693    #[serde(skip_serializing_if = "Option::is_none")]
1694    pub severity: Option<String>,
1695    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
1696    #[serde(rename = "severity_id")]
1697    #[serde(skip_serializing_if = "Option::is_none")]
1698    pub severity_id: Option<i64>,
1699    #[doc = "Source URL\n\nA Url link used to access the original incident.\n\nrecommended"]
1700    #[serde(rename = "src_url")]
1701    #[serde(skip_serializing_if = "Option::is_none")]
1702    pub src_url: Option<String>,
1703    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
1704    #[serde(rename = "start_time")]
1705    #[serde(skip_serializing_if = "Option::is_none")]
1706    pub start_time: Option<i64>,
1707    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
1708    #[serde(rename = "start_time_dt")]
1709    #[serde(skip_serializing_if = "Option::is_none")]
1710    pub start_time_dt: Option<String>,
1711    #[doc = "Status\n\nThe normalized status of the Finding set by the consumer normalized to the caption of the status_id value. In the case of 'Other', it is defined by the source.\n\noptional"]
1712    #[serde(rename = "status")]
1713    #[serde(skip_serializing_if = "Option::is_none")]
1714    pub status: Option<String>,
1715    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
1716    #[serde(rename = "status_code")]
1717    #[serde(skip_serializing_if = "Option::is_none")]
1718    pub status_code: Option<String>,
1719    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
1720    #[serde(rename = "status_detail")]
1721    #[serde(skip_serializing_if = "Option::is_none")]
1722    pub status_detail: Option<String>,
1723    #[doc = "Status ID\n\nThe normalized status identifier of the Finding, set by the consumer.\n\nrecommended"]
1724    #[serde(rename = "status_id")]
1725    #[serde(skip_serializing_if = "Option::is_none")]
1726    pub status_id: Option<i64>,
1727    #[doc = "Ticket\n\nThe linked ticket in the ticketing system.\n\noptional"]
1728    #[serde(rename = "ticket")]
1729    #[serde(skip_serializing_if = "Option::is_none")]
1730    pub ticket: Option<Box<Ticket>>,
1731    #[doc = "Tickets\n\nThe associated ticket(s) in the ticketing system. Each ticket contains details like ticket ID, status, etc.\n\noptional"]
1732    #[serde(rename = "tickets")]
1733    #[serde(skip_serializing_if = "Option::is_none")]
1734    pub tickets: Option<Vec<Ticket>>,
1735    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
1736    #[serde(rename = "time")]
1737    #[serde(skip_serializing_if = "Option::is_none")]
1738    pub time: Option<i64>,
1739    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
1740    #[serde(rename = "time_dt")]
1741    #[serde(skip_serializing_if = "Option::is_none")]
1742    pub time_dt: Option<String>,
1743    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
1744    #[serde(rename = "timezone_offset")]
1745    #[serde(skip_serializing_if = "Option::is_none")]
1746    pub timezone_offset: Option<i64>,
1747    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
1748    #[serde(rename = "type_name")]
1749    #[serde(skip_serializing_if = "Option::is_none")]
1750    pub type_name: Option<String>,
1751    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
1752    #[serde(rename = "type_uid")]
1753    #[serde(skip_serializing_if = "Option::is_none")]
1754    pub type_uid: Option<i64>,
1755    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
1756    #[serde(rename = "unmapped")]
1757    #[serde(skip_serializing_if = "Option::is_none")]
1758    pub unmapped: Option<serde_json::Value>,
1759    #[doc = "Vendor Attributes\n\nThe Vendor Attributes object can be used to represent values of attributes populated by the Vendor/Finding Provider. It can help distinguish between the vendor-provided values and consumer-updated values, of key attributes like <code>severity_id</code>.<br>The original finding producer should not populate this object. It should be populated by consuming systems that support data mutability.\n\noptional"]
1760    #[serde(rename = "vendor_attributes")]
1761    #[serde(skip_serializing_if = "Option::is_none")]
1762    pub vendor_attributes: Option<Box<VendorAttributes>>,
1763    #[doc = "Verdict\n\nThe verdict assigned to an Incident finding.\n\nrecommended"]
1764    #[serde(rename = "verdict")]
1765    #[serde(skip_serializing_if = "Option::is_none")]
1766    pub verdict: Option<String>,
1767    #[doc = "Verdict ID\n\nThe normalized verdict of an Incident.\n\nrecommended"]
1768    #[serde(rename = "verdict_id")]
1769    #[serde(skip_serializing_if = "Option::is_none")]
1770    pub verdict_id: Option<i64>,
1771    #[doc = "Vulnerabilities\n\nThis object describes vulnerabilities reported in a security finding.\n\nrecommended"]
1772    #[serde(rename = "vulnerabilities")]
1773    #[serde(skip_serializing_if = "Option::is_none")]
1774    pub vulnerabilities: Option<Vec<Vulnerability>>,
1775}
1776#[doc = "Authentication\n\nAuthentication events report authentication session activities, including user attempts to log on or log off, regardless of success, as well as other key stages within the authentication process. These events are typically generated by authentication services, such as Kerberos, OIDC, or SAML, and may include information about the user, the authentication method used, and the status of the authentication attempt.\n\n[UID:3002] Category: iam | Name: authentication\n\n**Constraints:**\n* at_least_one: `[service`,`dst_endpoint]`\n"]
1777#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
1778#[serde(default)]
1779#[non_exhaustive]
1780pub struct Authentication {
1781    #[doc = "Account Switch Type\n\nThe account switch method, normalized to the caption of the account_switch_type_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
1782    #[serde(rename = "account_switch_type")]
1783    #[serde(skip_serializing_if = "Option::is_none")]
1784    pub account_switch_type: Option<String>,
1785    #[doc = "Account Switch Type ID\n\nThe normalized identifier of the account switch method.\n\nrecommended"]
1786    #[serde(rename = "account_switch_type_id")]
1787    #[serde(skip_serializing_if = "Option::is_none")]
1788    pub account_switch_type_id: Option<i64>,
1789    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
1790    #[serde(rename = "action")]
1791    #[serde(skip_serializing_if = "Option::is_none")]
1792    pub action: Option<String>,
1793    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
1794    #[serde(rename = "action_id")]
1795    #[serde(skip_serializing_if = "Option::is_none")]
1796    pub action_id: Option<i64>,
1797    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
1798    #[serde(rename = "activity_id")]
1799    #[serde(skip_serializing_if = "Option::is_none")]
1800    pub activity_id: Option<i64>,
1801    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
1802    #[serde(rename = "activity_name")]
1803    #[serde(skip_serializing_if = "Option::is_none")]
1804    pub activity_name: Option<String>,
1805    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrecommended"]
1806    #[serde(rename = "actor")]
1807    #[serde(skip_serializing_if = "Option::is_none")]
1808    pub actor: Option<Box<Actor>>,
1809    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
1810    #[serde(rename = "api")]
1811    #[serde(skip_serializing_if = "Option::is_none")]
1812    pub api: Option<Box<Api>>,
1813    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
1814    #[serde(rename = "attacks")]
1815    #[serde(skip_serializing_if = "Option::is_none")]
1816    pub attacks: Option<Vec<Attack>>,
1817    #[doc = "Authentication Factors\n\nDescribes a category of methods used for identity verification in an authentication attempt.\n\noptional"]
1818    #[serde(rename = "auth_factors")]
1819    #[serde(skip_serializing_if = "Option::is_none")]
1820    pub auth_factors: Option<Vec<AuthFactor>>,
1821    #[doc = "Auth Protocol\n\nThe authentication protocol as defined by the caption of <code>auth_protocol_id</code>. In the case of <code>Other</code>, it is defined by the event source.\n\nrecommended"]
1822    #[serde(rename = "auth_protocol")]
1823    #[serde(skip_serializing_if = "Option::is_none")]
1824    pub auth_protocol: Option<String>,
1825    #[doc = "Auth Protocol ID\n\nThe normalized identifier of the authentication protocol used to create the user session.\n\nrecommended"]
1826    #[serde(rename = "auth_protocol_id")]
1827    #[serde(skip_serializing_if = "Option::is_none")]
1828    pub auth_protocol_id: Option<i64>,
1829    #[doc = "Authentication Token\n\nThe authentication token, ticket, or assertion, e.g. <code>Kerberos</code>, <code>OIDC</code>, <code>SAML</code>.\n\noptional"]
1830    #[serde(rename = "authentication_token")]
1831    #[serde(skip_serializing_if = "Option::is_none")]
1832    pub authentication_token: Option<Box<AuthenticationToken>>,
1833    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
1834    #[serde(rename = "authorizations")]
1835    #[serde(skip_serializing_if = "Option::is_none")]
1836    pub authorizations: Option<Vec<Authorization>>,
1837    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Identity & Access Management</code>.\n\noptional"]
1838    #[serde(rename = "category_name")]
1839    #[serde(skip_serializing_if = "Option::is_none")]
1840    pub category_name: Option<String>,
1841    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
1842    #[serde(rename = "category_uid")]
1843    #[serde(skip_serializing_if = "Option::is_none")]
1844    pub category_uid: Option<i64>,
1845    #[doc = "Certificate\n\nThe certificate associated with the authentication or pre-authentication (Kerberos).\n\nrecommended"]
1846    #[serde(rename = "certificate")]
1847    #[serde(skip_serializing_if = "Option::is_none")]
1848    pub certificate: Option<Box<Certificate>>,
1849    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Authentication</code>.\n\noptional"]
1850    #[serde(rename = "class_name")]
1851    #[serde(skip_serializing_if = "Option::is_none")]
1852    pub class_name: Option<String>,
1853    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
1854    #[serde(rename = "class_uid")]
1855    #[serde(skip_serializing_if = "Option::is_none")]
1856    pub class_uid: Option<i64>,
1857    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
1858    #[serde(rename = "cloud")]
1859    #[serde(skip_serializing_if = "Option::is_none")]
1860    pub cloud: Option<Box<Cloud>>,
1861    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1862    #[serde(rename = "confidence")]
1863    #[serde(skip_serializing_if = "Option::is_none")]
1864    pub confidence: Option<String>,
1865    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
1866    #[serde(rename = "confidence_id")]
1867    #[serde(skip_serializing_if = "Option::is_none")]
1868    pub confidence_id: Option<i64>,
1869    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
1870    #[serde(rename = "confidence_score")]
1871    #[serde(skip_serializing_if = "Option::is_none")]
1872    pub confidence_score: Option<i64>,
1873    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
1874    #[serde(rename = "count")]
1875    #[serde(skip_serializing_if = "Option::is_none")]
1876    pub count: Option<i64>,
1877    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
1878    #[serde(rename = "device")]
1879    #[serde(skip_serializing_if = "Option::is_none")]
1880    pub device: Option<Box<Device>>,
1881    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
1882    #[serde(rename = "disposition")]
1883    #[serde(skip_serializing_if = "Option::is_none")]
1884    pub disposition: Option<String>,
1885    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
1886    #[serde(rename = "disposition_id")]
1887    #[serde(skip_serializing_if = "Option::is_none")]
1888    pub disposition_id: Option<i64>,
1889    #[doc = "Destination Endpoint\n\nThe endpoint to which the authentication was targeted.\n\nrecommended"]
1890    #[serde(rename = "dst_endpoint")]
1891    #[serde(skip_serializing_if = "Option::is_none")]
1892    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
1893    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
1894    #[serde(rename = "duration")]
1895    #[serde(skip_serializing_if = "Option::is_none")]
1896    pub duration: Option<i64>,
1897    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
1898    #[serde(rename = "end_time")]
1899    #[serde(skip_serializing_if = "Option::is_none")]
1900    pub end_time: Option<i64>,
1901    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
1902    #[serde(rename = "end_time_dt")]
1903    #[serde(skip_serializing_if = "Option::is_none")]
1904    pub end_time_dt: Option<String>,
1905    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
1906    #[serde(rename = "enrichments")]
1907    #[serde(skip_serializing_if = "Option::is_none")]
1908    pub enrichments: Option<Vec<Enrichment>>,
1909    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
1910    #[serde(rename = "firewall_rule")]
1911    #[serde(skip_serializing_if = "Option::is_none")]
1912    pub firewall_rule: Option<Box<FirewallRule>>,
1913    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\noptional"]
1914    #[serde(rename = "http_request")]
1915    #[serde(skip_serializing_if = "Option::is_none")]
1916    pub http_request: Option<Box<HttpRequest>>,
1917    #[doc = "HTTP Response\n\nDetails about the underlying HTTP response.\n\noptional"]
1918    #[serde(rename = "http_response")]
1919    #[serde(skip_serializing_if = "Option::is_none")]
1920    pub http_response: Option<Box<HttpResponse>>,
1921    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
1922    #[serde(rename = "is_alert")]
1923    #[serde(skip_serializing_if = "Option::is_none")]
1924    pub is_alert: Option<bool>,
1925    #[doc = "Cleartext Credentials\n\nIndicates whether the credentials were passed in clear text.<p><b>Note:</b> True if the credentials were passed in a clear text protocol such as FTP or TELNET, or if Windows detected that a user's logon password was passed to the authentication package in clear text.</p>\n\noptional"]
1926    #[serde(rename = "is_cleartext")]
1927    #[serde(skip_serializing_if = "Option::is_none")]
1928    pub is_cleartext: Option<bool>,
1929    #[doc = "Multi Factor Authentication\n\nIndicates whether Multi Factor Authentication was used during authentication.\n\nrecommended"]
1930    #[serde(rename = "is_mfa")]
1931    #[serde(skip_serializing_if = "Option::is_none")]
1932    pub is_mfa: Option<bool>,
1933    #[doc = "New Logon\n\nIndicates logon is from a device not seen before or a first time account logon.\n\noptional"]
1934    #[serde(rename = "is_new_logon")]
1935    #[serde(skip_serializing_if = "Option::is_none")]
1936    pub is_new_logon: Option<bool>,
1937    #[doc = "Remote\n\nThe attempted authentication is over a remote connection.\n\nrecommended"]
1938    #[serde(rename = "is_remote")]
1939    #[serde(skip_serializing_if = "Option::is_none")]
1940    pub is_remote: Option<bool>,
1941    #[doc = "Logon Process\n\nThe trusted process that validated the authentication credentials.\n\noptional"]
1942    #[serde(rename = "logon_process")]
1943    #[serde(skip_serializing_if = "Option::is_none")]
1944    pub logon_process: Option<Box<Process>>,
1945    #[doc = "Logon Type\n\nThe logon type, normalized to the caption of the logon_type_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
1946    #[serde(rename = "logon_type")]
1947    #[serde(skip_serializing_if = "Option::is_none")]
1948    pub logon_type: Option<String>,
1949    #[doc = "Logon Type ID\n\nThe normalized logon type identifier.\n\nrecommended"]
1950    #[serde(rename = "logon_type_id")]
1951    #[serde(skip_serializing_if = "Option::is_none")]
1952    pub logon_type_id: Option<i64>,
1953    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
1954    #[serde(rename = "malware")]
1955    #[serde(skip_serializing_if = "Option::is_none")]
1956    pub malware: Option<Vec<Malware>>,
1957    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
1958    #[serde(rename = "malware_scan_info")]
1959    #[serde(skip_serializing_if = "Option::is_none")]
1960    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
1961    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
1962    #[serde(rename = "message")]
1963    #[serde(skip_serializing_if = "Option::is_none")]
1964    pub message: Option<String>,
1965    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
1966    #[serde(rename = "metadata")]
1967    #[serde(skip_serializing_if = "Option::is_none")]
1968    pub metadata: Option<Box<Metadata>>,
1969    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
1970    #[serde(rename = "observables")]
1971    #[serde(skip_serializing_if = "Option::is_none")]
1972    pub observables: Option<Vec<Observable>>,
1973    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
1974    #[serde(rename = "osint")]
1975    #[serde(skip_serializing_if = "Option::is_none")]
1976    pub osint: Option<Vec<Osint>>,
1977    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
1978    #[serde(rename = "policy")]
1979    #[serde(skip_serializing_if = "Option::is_none")]
1980    pub policy: Option<Box<Policy>>,
1981    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
1982    #[serde(rename = "raw_data")]
1983    #[serde(skip_serializing_if = "Option::is_none")]
1984    pub raw_data: Option<String>,
1985    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
1986    #[serde(rename = "raw_data_hash")]
1987    #[serde(skip_serializing_if = "Option::is_none")]
1988    pub raw_data_hash: Option<Box<Fingerprint>>,
1989    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
1990    #[serde(rename = "raw_data_size")]
1991    #[serde(skip_serializing_if = "Option::is_none")]
1992    pub raw_data_size: Option<i64>,
1993    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
1994    #[serde(rename = "risk_details")]
1995    #[serde(skip_serializing_if = "Option::is_none")]
1996    pub risk_details: Option<String>,
1997    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
1998    #[serde(rename = "risk_level")]
1999    #[serde(skip_serializing_if = "Option::is_none")]
2000    pub risk_level: Option<String>,
2001    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
2002    #[serde(rename = "risk_level_id")]
2003    #[serde(skip_serializing_if = "Option::is_none")]
2004    pub risk_level_id: Option<i64>,
2005    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
2006    #[serde(rename = "risk_score")]
2007    #[serde(skip_serializing_if = "Option::is_none")]
2008    pub risk_score: Option<i64>,
2009    #[doc = "Service\n\nThe service or gateway to which the user or process is being authenticated\n\nrecommended"]
2010    #[serde(rename = "service")]
2011    #[serde(skip_serializing_if = "Option::is_none")]
2012    pub service: Option<Box<Service>>,
2013    #[doc = "Session\n\nThe authenticated user or service session.\n\nrecommended"]
2014    #[serde(rename = "session")]
2015    #[serde(skip_serializing_if = "Option::is_none")]
2016    pub session: Option<Box<Session>>,
2017    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
2018    #[serde(rename = "severity")]
2019    #[serde(skip_serializing_if = "Option::is_none")]
2020    pub severity: Option<String>,
2021    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
2022    #[serde(rename = "severity_id")]
2023    #[serde(skip_serializing_if = "Option::is_none")]
2024    pub severity_id: Option<i64>,
2025    #[doc = "Source Endpoint\n\nDetails about the source of the IAM activity.\n\nrecommended"]
2026    #[serde(rename = "src_endpoint")]
2027    #[serde(skip_serializing_if = "Option::is_none")]
2028    pub src_endpoint: Option<Box<NetworkEndpoint>>,
2029    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
2030    #[serde(rename = "start_time")]
2031    #[serde(skip_serializing_if = "Option::is_none")]
2032    pub start_time: Option<i64>,
2033    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
2034    #[serde(rename = "start_time_dt")]
2035    #[serde(skip_serializing_if = "Option::is_none")]
2036    pub start_time_dt: Option<String>,
2037    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
2038    #[serde(rename = "status")]
2039    #[serde(skip_serializing_if = "Option::is_none")]
2040    pub status: Option<String>,
2041    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
2042    #[serde(rename = "status_code")]
2043    #[serde(skip_serializing_if = "Option::is_none")]
2044    pub status_code: Option<String>,
2045    #[doc = "Status Detail\n\nThe details about the authentication request. For example, possible details for Windows logon or logoff events are:<ul><li>Success</li><ul><li>LOGOFF_USER_INITIATED</li><li>LOGOFF_OTHER</li></ul><li>Failure</li><ul><li>USER_DOES_NOT_EXIST</li><li>INVALID_CREDENTIALS</li><li>ACCOUNT_DISABLED</li><li>ACCOUNT_LOCKED_OUT</li><li>PASSWORD_EXPIRED</li></ul></ul>\n\nrecommended"]
2046    #[serde(rename = "status_detail")]
2047    #[serde(skip_serializing_if = "Option::is_none")]
2048    pub status_detail: Option<String>,
2049    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
2050    #[serde(rename = "status_id")]
2051    #[serde(skip_serializing_if = "Option::is_none")]
2052    pub status_id: Option<i64>,
2053    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
2054    #[serde(rename = "time")]
2055    #[serde(skip_serializing_if = "Option::is_none")]
2056    pub time: Option<i64>,
2057    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
2058    #[serde(rename = "time_dt")]
2059    #[serde(skip_serializing_if = "Option::is_none")]
2060    pub time_dt: Option<String>,
2061    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
2062    #[serde(rename = "timezone_offset")]
2063    #[serde(skip_serializing_if = "Option::is_none")]
2064    pub timezone_offset: Option<i64>,
2065    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
2066    #[serde(rename = "type_name")]
2067    #[serde(skip_serializing_if = "Option::is_none")]
2068    pub type_name: Option<String>,
2069    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
2070    #[serde(rename = "type_uid")]
2071    #[serde(skip_serializing_if = "Option::is_none")]
2072    pub type_uid: Option<i64>,
2073    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
2074    #[serde(rename = "unmapped")]
2075    #[serde(skip_serializing_if = "Option::is_none")]
2076    pub unmapped: Option<serde_json::Value>,
2077    #[doc = "User\n\nThe subject (user/role or account) to authenticate.\n\nrequired"]
2078    #[serde(rename = "user")]
2079    #[serde(skip_serializing_if = "Option::is_none")]
2080    pub user: Option<Box<User>>,
2081}
2082#[doc = "Authorize Session\n\nAuthorize Session events report privileges or groups assigned to a new user session, usually at login time.\n\n[UID:3003] Category: iam | Name: authorize_session\n\n**Constraints:**\n* just_one: `[privileges`,`group]`\n"]
2083#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
2084#[serde(default)]
2085#[non_exhaustive]
2086pub struct AuthorizeSession {
2087    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
2088    #[serde(rename = "action")]
2089    #[serde(skip_serializing_if = "Option::is_none")]
2090    pub action: Option<String>,
2091    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
2092    #[serde(rename = "action_id")]
2093    #[serde(skip_serializing_if = "Option::is_none")]
2094    pub action_id: Option<i64>,
2095    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
2096    #[serde(rename = "activity_id")]
2097    #[serde(skip_serializing_if = "Option::is_none")]
2098    pub activity_id: Option<i64>,
2099    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
2100    #[serde(rename = "activity_name")]
2101    #[serde(skip_serializing_if = "Option::is_none")]
2102    pub activity_name: Option<String>,
2103    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrecommended"]
2104    #[serde(rename = "actor")]
2105    #[serde(skip_serializing_if = "Option::is_none")]
2106    pub actor: Option<Box<Actor>>,
2107    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
2108    #[serde(rename = "api")]
2109    #[serde(skip_serializing_if = "Option::is_none")]
2110    pub api: Option<Box<Api>>,
2111    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
2112    #[serde(rename = "attacks")]
2113    #[serde(skip_serializing_if = "Option::is_none")]
2114    pub attacks: Option<Vec<Attack>>,
2115    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
2116    #[serde(rename = "authorizations")]
2117    #[serde(skip_serializing_if = "Option::is_none")]
2118    pub authorizations: Option<Vec<Authorization>>,
2119    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Identity & Access Management</code>.\n\noptional"]
2120    #[serde(rename = "category_name")]
2121    #[serde(skip_serializing_if = "Option::is_none")]
2122    pub category_name: Option<String>,
2123    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
2124    #[serde(rename = "category_uid")]
2125    #[serde(skip_serializing_if = "Option::is_none")]
2126    pub category_uid: Option<i64>,
2127    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Authorize Session</code>.\n\noptional"]
2128    #[serde(rename = "class_name")]
2129    #[serde(skip_serializing_if = "Option::is_none")]
2130    pub class_name: Option<String>,
2131    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
2132    #[serde(rename = "class_uid")]
2133    #[serde(skip_serializing_if = "Option::is_none")]
2134    pub class_uid: Option<i64>,
2135    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
2136    #[serde(rename = "cloud")]
2137    #[serde(skip_serializing_if = "Option::is_none")]
2138    pub cloud: Option<Box<Cloud>>,
2139    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2140    #[serde(rename = "confidence")]
2141    #[serde(skip_serializing_if = "Option::is_none")]
2142    pub confidence: Option<String>,
2143    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
2144    #[serde(rename = "confidence_id")]
2145    #[serde(skip_serializing_if = "Option::is_none")]
2146    pub confidence_id: Option<i64>,
2147    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
2148    #[serde(rename = "confidence_score")]
2149    #[serde(skip_serializing_if = "Option::is_none")]
2150    pub confidence_score: Option<i64>,
2151    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
2152    #[serde(rename = "count")]
2153    #[serde(skip_serializing_if = "Option::is_none")]
2154    pub count: Option<i64>,
2155    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
2156    #[serde(rename = "device")]
2157    #[serde(skip_serializing_if = "Option::is_none")]
2158    pub device: Option<Box<Device>>,
2159    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2160    #[serde(rename = "disposition")]
2161    #[serde(skip_serializing_if = "Option::is_none")]
2162    pub disposition: Option<String>,
2163    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
2164    #[serde(rename = "disposition_id")]
2165    #[serde(skip_serializing_if = "Option::is_none")]
2166    pub disposition_id: Option<i64>,
2167    #[doc = "Destination Endpoint\n\nThe Endpoint for which the user session was targeted.\n\noptional"]
2168    #[serde(rename = "dst_endpoint")]
2169    #[serde(skip_serializing_if = "Option::is_none")]
2170    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
2171    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
2172    #[serde(rename = "duration")]
2173    #[serde(skip_serializing_if = "Option::is_none")]
2174    pub duration: Option<i64>,
2175    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
2176    #[serde(rename = "end_time")]
2177    #[serde(skip_serializing_if = "Option::is_none")]
2178    pub end_time: Option<i64>,
2179    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
2180    #[serde(rename = "end_time_dt")]
2181    #[serde(skip_serializing_if = "Option::is_none")]
2182    pub end_time_dt: Option<String>,
2183    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
2184    #[serde(rename = "enrichments")]
2185    #[serde(skip_serializing_if = "Option::is_none")]
2186    pub enrichments: Option<Vec<Enrichment>>,
2187    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
2188    #[serde(rename = "firewall_rule")]
2189    #[serde(skip_serializing_if = "Option::is_none")]
2190    pub firewall_rule: Option<Box<FirewallRule>>,
2191    #[doc = "Group\n\nGroup that was assigned to the new user session.\n\nrecommended"]
2192    #[serde(rename = "group")]
2193    #[serde(skip_serializing_if = "Option::is_none")]
2194    pub group: Option<Box<Group>>,
2195    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\noptional"]
2196    #[serde(rename = "http_request")]
2197    #[serde(skip_serializing_if = "Option::is_none")]
2198    pub http_request: Option<Box<HttpRequest>>,
2199    #[doc = "HTTP Response\n\nDetails about the underlying HTTP response.\n\noptional"]
2200    #[serde(rename = "http_response")]
2201    #[serde(skip_serializing_if = "Option::is_none")]
2202    pub http_response: Option<Box<HttpResponse>>,
2203    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
2204    #[serde(rename = "is_alert")]
2205    #[serde(skip_serializing_if = "Option::is_none")]
2206    pub is_alert: Option<bool>,
2207    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
2208    #[serde(rename = "malware")]
2209    #[serde(skip_serializing_if = "Option::is_none")]
2210    pub malware: Option<Vec<Malware>>,
2211    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
2212    #[serde(rename = "malware_scan_info")]
2213    #[serde(skip_serializing_if = "Option::is_none")]
2214    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
2215    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
2216    #[serde(rename = "message")]
2217    #[serde(skip_serializing_if = "Option::is_none")]
2218    pub message: Option<String>,
2219    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
2220    #[serde(rename = "metadata")]
2221    #[serde(skip_serializing_if = "Option::is_none")]
2222    pub metadata: Option<Box<Metadata>>,
2223    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
2224    #[serde(rename = "observables")]
2225    #[serde(skip_serializing_if = "Option::is_none")]
2226    pub observables: Option<Vec<Observable>>,
2227    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
2228    #[serde(rename = "osint")]
2229    #[serde(skip_serializing_if = "Option::is_none")]
2230    pub osint: Option<Vec<Osint>>,
2231    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
2232    #[serde(rename = "policy")]
2233    #[serde(skip_serializing_if = "Option::is_none")]
2234    pub policy: Option<Box<Policy>>,
2235    #[doc = "Privileges\n\nThe list of sensitive privileges, assigned to the new user session.\n\nrecommended"]
2236    #[serde(rename = "privileges")]
2237    #[serde(skip_serializing_if = "Option::is_none")]
2238    pub privileges: Option<Vec<String>>,
2239    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
2240    #[serde(rename = "raw_data")]
2241    #[serde(skip_serializing_if = "Option::is_none")]
2242    pub raw_data: Option<String>,
2243    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
2244    #[serde(rename = "raw_data_hash")]
2245    #[serde(skip_serializing_if = "Option::is_none")]
2246    pub raw_data_hash: Option<Box<Fingerprint>>,
2247    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
2248    #[serde(rename = "raw_data_size")]
2249    #[serde(skip_serializing_if = "Option::is_none")]
2250    pub raw_data_size: Option<i64>,
2251    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
2252    #[serde(rename = "risk_details")]
2253    #[serde(skip_serializing_if = "Option::is_none")]
2254    pub risk_details: Option<String>,
2255    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
2256    #[serde(rename = "risk_level")]
2257    #[serde(skip_serializing_if = "Option::is_none")]
2258    pub risk_level: Option<String>,
2259    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
2260    #[serde(rename = "risk_level_id")]
2261    #[serde(skip_serializing_if = "Option::is_none")]
2262    pub risk_level_id: Option<i64>,
2263    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
2264    #[serde(rename = "risk_score")]
2265    #[serde(skip_serializing_if = "Option::is_none")]
2266    pub risk_score: Option<i64>,
2267    #[doc = "Session\n\nThe user session with the assigned privileges.\n\nrecommended"]
2268    #[serde(rename = "session")]
2269    #[serde(skip_serializing_if = "Option::is_none")]
2270    pub session: Option<Box<Session>>,
2271    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
2272    #[serde(rename = "severity")]
2273    #[serde(skip_serializing_if = "Option::is_none")]
2274    pub severity: Option<String>,
2275    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
2276    #[serde(rename = "severity_id")]
2277    #[serde(skip_serializing_if = "Option::is_none")]
2278    pub severity_id: Option<i64>,
2279    #[doc = "Source Endpoint\n\nDetails about the source of the IAM activity.\n\nrecommended"]
2280    #[serde(rename = "src_endpoint")]
2281    #[serde(skip_serializing_if = "Option::is_none")]
2282    pub src_endpoint: Option<Box<NetworkEndpoint>>,
2283    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
2284    #[serde(rename = "start_time")]
2285    #[serde(skip_serializing_if = "Option::is_none")]
2286    pub start_time: Option<i64>,
2287    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
2288    #[serde(rename = "start_time_dt")]
2289    #[serde(skip_serializing_if = "Option::is_none")]
2290    pub start_time_dt: Option<String>,
2291    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
2292    #[serde(rename = "status")]
2293    #[serde(skip_serializing_if = "Option::is_none")]
2294    pub status: Option<String>,
2295    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
2296    #[serde(rename = "status_code")]
2297    #[serde(skip_serializing_if = "Option::is_none")]
2298    pub status_code: Option<String>,
2299    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
2300    #[serde(rename = "status_detail")]
2301    #[serde(skip_serializing_if = "Option::is_none")]
2302    pub status_detail: Option<String>,
2303    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
2304    #[serde(rename = "status_id")]
2305    #[serde(skip_serializing_if = "Option::is_none")]
2306    pub status_id: Option<i64>,
2307    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
2308    #[serde(rename = "time")]
2309    #[serde(skip_serializing_if = "Option::is_none")]
2310    pub time: Option<i64>,
2311    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
2312    #[serde(rename = "time_dt")]
2313    #[serde(skip_serializing_if = "Option::is_none")]
2314    pub time_dt: Option<String>,
2315    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
2316    #[serde(rename = "timezone_offset")]
2317    #[serde(skip_serializing_if = "Option::is_none")]
2318    pub timezone_offset: Option<i64>,
2319    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
2320    #[serde(rename = "type_name")]
2321    #[serde(skip_serializing_if = "Option::is_none")]
2322    pub type_name: Option<String>,
2323    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
2324    #[serde(rename = "type_uid")]
2325    #[serde(skip_serializing_if = "Option::is_none")]
2326    pub type_uid: Option<i64>,
2327    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
2328    #[serde(rename = "unmapped")]
2329    #[serde(skip_serializing_if = "Option::is_none")]
2330    pub unmapped: Option<serde_json::Value>,
2331    #[doc = "User\n\nThe user to which new privileges were assigned.\n\nrequired"]
2332    #[serde(rename = "user")]
2333    #[serde(skip_serializing_if = "Option::is_none")]
2334    pub user: Option<Box<User>>,
2335}
2336#[doc = "Base Event\n\nThe base event is a generic and concrete event. It also defines a set of attributes available in most event classes. As a generic event that does not belong to any event category, it could be used to log events that are not otherwise defined by the schema.\n\n[UID:0] Category: other | Name: base_event"]
2337#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
2338#[serde(default)]
2339#[non_exhaustive]
2340pub struct BaseEvent {
2341    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
2342    #[serde(rename = "action")]
2343    #[serde(skip_serializing_if = "Option::is_none")]
2344    pub action: Option<String>,
2345    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
2346    #[serde(rename = "action_id")]
2347    #[serde(skip_serializing_if = "Option::is_none")]
2348    pub action_id: Option<i64>,
2349    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
2350    #[serde(rename = "activity_id")]
2351    #[serde(skip_serializing_if = "Option::is_none")]
2352    pub activity_id: Option<i64>,
2353    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
2354    #[serde(rename = "activity_name")]
2355    #[serde(skip_serializing_if = "Option::is_none")]
2356    pub activity_name: Option<String>,
2357    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
2358    #[serde(rename = "actor")]
2359    #[serde(skip_serializing_if = "Option::is_none")]
2360    pub actor: Option<Box<Actor>>,
2361    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
2362    #[serde(rename = "api")]
2363    #[serde(skip_serializing_if = "Option::is_none")]
2364    pub api: Option<Box<Api>>,
2365    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
2366    #[serde(rename = "attacks")]
2367    #[serde(skip_serializing_if = "Option::is_none")]
2368    pub attacks: Option<Vec<Attack>>,
2369    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
2370    #[serde(rename = "authorizations")]
2371    #[serde(skip_serializing_if = "Option::is_none")]
2372    pub authorizations: Option<Vec<Authorization>>,
2373    #[doc = "Category\n\nThe event category name, as defined by category_uid value.\n\noptional"]
2374    #[serde(rename = "category_name")]
2375    #[serde(skip_serializing_if = "Option::is_none")]
2376    pub category_name: Option<String>,
2377    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
2378    #[serde(rename = "category_uid")]
2379    #[serde(skip_serializing_if = "Option::is_none")]
2380    pub category_uid: Option<i64>,
2381    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Base Event</code>.\n\noptional"]
2382    #[serde(rename = "class_name")]
2383    #[serde(skip_serializing_if = "Option::is_none")]
2384    pub class_name: Option<String>,
2385    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
2386    #[serde(rename = "class_uid")]
2387    #[serde(skip_serializing_if = "Option::is_none")]
2388    pub class_uid: Option<i64>,
2389    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
2390    #[serde(rename = "cloud")]
2391    #[serde(skip_serializing_if = "Option::is_none")]
2392    pub cloud: Option<Box<Cloud>>,
2393    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2394    #[serde(rename = "confidence")]
2395    #[serde(skip_serializing_if = "Option::is_none")]
2396    pub confidence: Option<String>,
2397    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
2398    #[serde(rename = "confidence_id")]
2399    #[serde(skip_serializing_if = "Option::is_none")]
2400    pub confidence_id: Option<i64>,
2401    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
2402    #[serde(rename = "confidence_score")]
2403    #[serde(skip_serializing_if = "Option::is_none")]
2404    pub confidence_score: Option<i64>,
2405    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
2406    #[serde(rename = "count")]
2407    #[serde(skip_serializing_if = "Option::is_none")]
2408    pub count: Option<i64>,
2409    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
2410    #[serde(rename = "device")]
2411    #[serde(skip_serializing_if = "Option::is_none")]
2412    pub device: Option<Box<Device>>,
2413    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2414    #[serde(rename = "disposition")]
2415    #[serde(skip_serializing_if = "Option::is_none")]
2416    pub disposition: Option<String>,
2417    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
2418    #[serde(rename = "disposition_id")]
2419    #[serde(skip_serializing_if = "Option::is_none")]
2420    pub disposition_id: Option<i64>,
2421    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
2422    #[serde(rename = "duration")]
2423    #[serde(skip_serializing_if = "Option::is_none")]
2424    pub duration: Option<i64>,
2425    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
2426    #[serde(rename = "end_time")]
2427    #[serde(skip_serializing_if = "Option::is_none")]
2428    pub end_time: Option<i64>,
2429    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
2430    #[serde(rename = "end_time_dt")]
2431    #[serde(skip_serializing_if = "Option::is_none")]
2432    pub end_time_dt: Option<String>,
2433    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
2434    #[serde(rename = "enrichments")]
2435    #[serde(skip_serializing_if = "Option::is_none")]
2436    pub enrichments: Option<Vec<Enrichment>>,
2437    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
2438    #[serde(rename = "firewall_rule")]
2439    #[serde(skip_serializing_if = "Option::is_none")]
2440    pub firewall_rule: Option<Box<FirewallRule>>,
2441    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
2442    #[serde(rename = "is_alert")]
2443    #[serde(skip_serializing_if = "Option::is_none")]
2444    pub is_alert: Option<bool>,
2445    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
2446    #[serde(rename = "malware")]
2447    #[serde(skip_serializing_if = "Option::is_none")]
2448    pub malware: Option<Vec<Malware>>,
2449    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
2450    #[serde(rename = "malware_scan_info")]
2451    #[serde(skip_serializing_if = "Option::is_none")]
2452    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
2453    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
2454    #[serde(rename = "message")]
2455    #[serde(skip_serializing_if = "Option::is_none")]
2456    pub message: Option<String>,
2457    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
2458    #[serde(rename = "metadata")]
2459    #[serde(skip_serializing_if = "Option::is_none")]
2460    pub metadata: Option<Box<Metadata>>,
2461    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
2462    #[serde(rename = "observables")]
2463    #[serde(skip_serializing_if = "Option::is_none")]
2464    pub observables: Option<Vec<Observable>>,
2465    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
2466    #[serde(rename = "osint")]
2467    #[serde(skip_serializing_if = "Option::is_none")]
2468    pub osint: Option<Vec<Osint>>,
2469    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
2470    #[serde(rename = "policy")]
2471    #[serde(skip_serializing_if = "Option::is_none")]
2472    pub policy: Option<Box<Policy>>,
2473    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
2474    #[serde(rename = "raw_data")]
2475    #[serde(skip_serializing_if = "Option::is_none")]
2476    pub raw_data: Option<String>,
2477    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
2478    #[serde(rename = "raw_data_hash")]
2479    #[serde(skip_serializing_if = "Option::is_none")]
2480    pub raw_data_hash: Option<Box<Fingerprint>>,
2481    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
2482    #[serde(rename = "raw_data_size")]
2483    #[serde(skip_serializing_if = "Option::is_none")]
2484    pub raw_data_size: Option<i64>,
2485    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
2486    #[serde(rename = "risk_details")]
2487    #[serde(skip_serializing_if = "Option::is_none")]
2488    pub risk_details: Option<String>,
2489    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
2490    #[serde(rename = "risk_level")]
2491    #[serde(skip_serializing_if = "Option::is_none")]
2492    pub risk_level: Option<String>,
2493    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
2494    #[serde(rename = "risk_level_id")]
2495    #[serde(skip_serializing_if = "Option::is_none")]
2496    pub risk_level_id: Option<i64>,
2497    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
2498    #[serde(rename = "risk_score")]
2499    #[serde(skip_serializing_if = "Option::is_none")]
2500    pub risk_score: Option<i64>,
2501    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
2502    #[serde(rename = "severity")]
2503    #[serde(skip_serializing_if = "Option::is_none")]
2504    pub severity: Option<String>,
2505    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
2506    #[serde(rename = "severity_id")]
2507    #[serde(skip_serializing_if = "Option::is_none")]
2508    pub severity_id: Option<i64>,
2509    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
2510    #[serde(rename = "start_time")]
2511    #[serde(skip_serializing_if = "Option::is_none")]
2512    pub start_time: Option<i64>,
2513    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
2514    #[serde(rename = "start_time_dt")]
2515    #[serde(skip_serializing_if = "Option::is_none")]
2516    pub start_time_dt: Option<String>,
2517    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
2518    #[serde(rename = "status")]
2519    #[serde(skip_serializing_if = "Option::is_none")]
2520    pub status: Option<String>,
2521    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
2522    #[serde(rename = "status_code")]
2523    #[serde(skip_serializing_if = "Option::is_none")]
2524    pub status_code: Option<String>,
2525    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
2526    #[serde(rename = "status_detail")]
2527    #[serde(skip_serializing_if = "Option::is_none")]
2528    pub status_detail: Option<String>,
2529    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
2530    #[serde(rename = "status_id")]
2531    #[serde(skip_serializing_if = "Option::is_none")]
2532    pub status_id: Option<i64>,
2533    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
2534    #[serde(rename = "time")]
2535    #[serde(skip_serializing_if = "Option::is_none")]
2536    pub time: Option<i64>,
2537    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
2538    #[serde(rename = "time_dt")]
2539    #[serde(skip_serializing_if = "Option::is_none")]
2540    pub time_dt: Option<String>,
2541    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
2542    #[serde(rename = "timezone_offset")]
2543    #[serde(skip_serializing_if = "Option::is_none")]
2544    pub timezone_offset: Option<i64>,
2545    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
2546    #[serde(rename = "type_name")]
2547    #[serde(skip_serializing_if = "Option::is_none")]
2548    pub type_name: Option<String>,
2549    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
2550    #[serde(rename = "type_uid")]
2551    #[serde(skip_serializing_if = "Option::is_none")]
2552    pub type_uid: Option<i64>,
2553    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
2554    #[serde(rename = "unmapped")]
2555    #[serde(skip_serializing_if = "Option::is_none")]
2556    pub unmapped: Option<serde_json::Value>,
2557}
2558#[doc = "Cloud Resources Inventory Info\n\nCloud Resources Inventory Info events report cloud asset inventory data. This data can be either logged or proactively collected. For example, use this event class when creating an inventory of cloud resource information from a Configuration Management Database (CMDB), Cyber Asset Attack Surface Management (CAASM), direct public cloud service provider APIs, Software-as-a-Service (SaaS) APIs, or otherwise.\n\n[UID:5023] Category: discovery | Name: cloud_resources_inventory_info\n\n**Constraints:**\n* at_least_one: `[cloud`,`container`,`database`,`databucket`,`idp`,`resources`,`table]`\n"]
2559#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
2560#[serde(default)]
2561#[non_exhaustive]
2562pub struct CloudResourcesInventoryInfo {
2563    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
2564    #[serde(rename = "action")]
2565    #[serde(skip_serializing_if = "Option::is_none")]
2566    pub action: Option<String>,
2567    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
2568    #[serde(rename = "action_id")]
2569    #[serde(skip_serializing_if = "Option::is_none")]
2570    pub action_id: Option<i64>,
2571    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
2572    #[serde(rename = "activity_id")]
2573    #[serde(skip_serializing_if = "Option::is_none")]
2574    pub activity_id: Option<i64>,
2575    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
2576    #[serde(rename = "activity_name")]
2577    #[serde(skip_serializing_if = "Option::is_none")]
2578    pub activity_name: Option<String>,
2579    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
2580    #[serde(rename = "actor")]
2581    #[serde(skip_serializing_if = "Option::is_none")]
2582    pub actor: Option<Box<Actor>>,
2583    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
2584    #[serde(rename = "api")]
2585    #[serde(skip_serializing_if = "Option::is_none")]
2586    pub api: Option<Box<Api>>,
2587    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
2588    #[serde(rename = "attacks")]
2589    #[serde(skip_serializing_if = "Option::is_none")]
2590    pub attacks: Option<Vec<Attack>>,
2591    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
2592    #[serde(rename = "authorizations")]
2593    #[serde(skip_serializing_if = "Option::is_none")]
2594    pub authorizations: Option<Vec<Authorization>>,
2595    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
2596    #[serde(rename = "category_name")]
2597    #[serde(skip_serializing_if = "Option::is_none")]
2598    pub category_name: Option<String>,
2599    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
2600    #[serde(rename = "category_uid")]
2601    #[serde(skip_serializing_if = "Option::is_none")]
2602    pub category_uid: Option<i64>,
2603    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Cloud Resources Inventory Info</code>.\n\noptional"]
2604    #[serde(rename = "class_name")]
2605    #[serde(skip_serializing_if = "Option::is_none")]
2606    pub class_name: Option<String>,
2607    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
2608    #[serde(rename = "class_uid")]
2609    #[serde(skip_serializing_if = "Option::is_none")]
2610    pub class_uid: Option<i64>,
2611    #[doc = "Cloud\n\nCloud service provider or SaaS platform metadata about the cloud resource(s) that are being discovered by an inventory process.\n\nrecommended"]
2612    #[serde(rename = "cloud")]
2613    #[serde(skip_serializing_if = "Option::is_none")]
2614    pub cloud: Option<Box<Cloud>>,
2615    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2616    #[serde(rename = "confidence")]
2617    #[serde(skip_serializing_if = "Option::is_none")]
2618    pub confidence: Option<String>,
2619    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
2620    #[serde(rename = "confidence_id")]
2621    #[serde(skip_serializing_if = "Option::is_none")]
2622    pub confidence_id: Option<i64>,
2623    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
2624    #[serde(rename = "confidence_score")]
2625    #[serde(skip_serializing_if = "Option::is_none")]
2626    pub confidence_score: Option<i64>,
2627    #[doc = "Container\n\nA cloud-based container image or running container discovered by an inventory process.\n\nrecommended"]
2628    #[serde(rename = "container")]
2629    #[serde(skip_serializing_if = "Option::is_none")]
2630    pub container: Option<Box<Container>>,
2631    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
2632    #[serde(rename = "count")]
2633    #[serde(skip_serializing_if = "Option::is_none")]
2634    pub count: Option<i64>,
2635    #[doc = "Database\n\nA cloud-based database discovered by an inventory process.\n\nrecommended"]
2636    #[serde(rename = "database")]
2637    #[serde(skip_serializing_if = "Option::is_none")]
2638    pub database: Option<Box<Database>>,
2639    #[doc = "Databucket\n\nA cloud-based data bucket or other object storage discovered by an inventory process.\n\nrecommended"]
2640    #[serde(rename = "databucket")]
2641    #[serde(skip_serializing_if = "Option::is_none")]
2642    pub databucket: Option<Box<Databucket>>,
2643    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
2644    #[serde(rename = "device")]
2645    #[serde(skip_serializing_if = "Option::is_none")]
2646    pub device: Option<Box<Device>>,
2647    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2648    #[serde(rename = "disposition")]
2649    #[serde(skip_serializing_if = "Option::is_none")]
2650    pub disposition: Option<String>,
2651    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
2652    #[serde(rename = "disposition_id")]
2653    #[serde(skip_serializing_if = "Option::is_none")]
2654    pub disposition_id: Option<i64>,
2655    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
2656    #[serde(rename = "duration")]
2657    #[serde(skip_serializing_if = "Option::is_none")]
2658    pub duration: Option<i64>,
2659    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
2660    #[serde(rename = "end_time")]
2661    #[serde(skip_serializing_if = "Option::is_none")]
2662    pub end_time: Option<i64>,
2663    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
2664    #[serde(rename = "end_time_dt")]
2665    #[serde(skip_serializing_if = "Option::is_none")]
2666    pub end_time_dt: Option<String>,
2667    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
2668    #[serde(rename = "enrichments")]
2669    #[serde(skip_serializing_if = "Option::is_none")]
2670    pub enrichments: Option<Vec<Enrichment>>,
2671    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
2672    #[serde(rename = "firewall_rule")]
2673    #[serde(skip_serializing_if = "Option::is_none")]
2674    pub firewall_rule: Option<Box<FirewallRule>>,
2675    #[doc = "Identity Provider\n\nThe Identity Provider that is being discovered by an inventory process, or that is related to the cloud resource(s) being discovered by an inventory process.\n\nrecommended"]
2676    #[serde(rename = "idp")]
2677    #[serde(skip_serializing_if = "Option::is_none")]
2678    pub idp: Option<Box<Idp>>,
2679    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
2680    #[serde(rename = "is_alert")]
2681    #[serde(skip_serializing_if = "Option::is_none")]
2682    pub is_alert: Option<bool>,
2683    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
2684    #[serde(rename = "malware")]
2685    #[serde(skip_serializing_if = "Option::is_none")]
2686    pub malware: Option<Vec<Malware>>,
2687    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
2688    #[serde(rename = "malware_scan_info")]
2689    #[serde(skip_serializing_if = "Option::is_none")]
2690    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
2691    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
2692    #[serde(rename = "message")]
2693    #[serde(skip_serializing_if = "Option::is_none")]
2694    pub message: Option<String>,
2695    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
2696    #[serde(rename = "metadata")]
2697    #[serde(skip_serializing_if = "Option::is_none")]
2698    pub metadata: Option<Box<Metadata>>,
2699    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
2700    #[serde(rename = "observables")]
2701    #[serde(skip_serializing_if = "Option::is_none")]
2702    pub observables: Option<Vec<Observable>>,
2703    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
2704    #[serde(rename = "osint")]
2705    #[serde(skip_serializing_if = "Option::is_none")]
2706    pub osint: Option<Vec<Osint>>,
2707    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
2708    #[serde(rename = "policy")]
2709    #[serde(skip_serializing_if = "Option::is_none")]
2710    pub policy: Option<Box<Policy>>,
2711    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
2712    #[serde(rename = "raw_data")]
2713    #[serde(skip_serializing_if = "Option::is_none")]
2714    pub raw_data: Option<String>,
2715    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
2716    #[serde(rename = "raw_data_hash")]
2717    #[serde(skip_serializing_if = "Option::is_none")]
2718    pub raw_data_hash: Option<Box<Fingerprint>>,
2719    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
2720    #[serde(rename = "raw_data_size")]
2721    #[serde(skip_serializing_if = "Option::is_none")]
2722    pub raw_data_size: Option<i64>,
2723    #[doc = "Region\n\nThe cloud region where the resource is located, e.g., <code>us-isof-south-1</code>, <code>eastus2</code>, <code>us-central1</code>, etc.\n\nrecommended"]
2724    #[serde(rename = "region")]
2725    #[serde(skip_serializing_if = "Option::is_none")]
2726    pub region: Option<String>,
2727    #[doc = "Cloud Resources\n\nThe cloud resource(s) that are being discovered by an inventory process. Use this object if there is not a direct object match in the class.\n\nrecommended"]
2728    #[serde(rename = "resources")]
2729    #[serde(skip_serializing_if = "Option::is_none")]
2730    pub resources: Option<Vec<ResourceDetails>>,
2731    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
2732    #[serde(rename = "risk_details")]
2733    #[serde(skip_serializing_if = "Option::is_none")]
2734    pub risk_details: Option<String>,
2735    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
2736    #[serde(rename = "risk_level")]
2737    #[serde(skip_serializing_if = "Option::is_none")]
2738    pub risk_level: Option<String>,
2739    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
2740    #[serde(rename = "risk_level_id")]
2741    #[serde(skip_serializing_if = "Option::is_none")]
2742    pub risk_level_id: Option<i64>,
2743    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
2744    #[serde(rename = "risk_score")]
2745    #[serde(skip_serializing_if = "Option::is_none")]
2746    pub risk_score: Option<i64>,
2747    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
2748    #[serde(rename = "severity")]
2749    #[serde(skip_serializing_if = "Option::is_none")]
2750    pub severity: Option<String>,
2751    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
2752    #[serde(rename = "severity_id")]
2753    #[serde(skip_serializing_if = "Option::is_none")]
2754    pub severity_id: Option<i64>,
2755    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
2756    #[serde(rename = "start_time")]
2757    #[serde(skip_serializing_if = "Option::is_none")]
2758    pub start_time: Option<i64>,
2759    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
2760    #[serde(rename = "start_time_dt")]
2761    #[serde(skip_serializing_if = "Option::is_none")]
2762    pub start_time_dt: Option<String>,
2763    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
2764    #[serde(rename = "status")]
2765    #[serde(skip_serializing_if = "Option::is_none")]
2766    pub status: Option<String>,
2767    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
2768    #[serde(rename = "status_code")]
2769    #[serde(skip_serializing_if = "Option::is_none")]
2770    pub status_code: Option<String>,
2771    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
2772    #[serde(rename = "status_detail")]
2773    #[serde(skip_serializing_if = "Option::is_none")]
2774    pub status_detail: Option<String>,
2775    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
2776    #[serde(rename = "status_id")]
2777    #[serde(skip_serializing_if = "Option::is_none")]
2778    pub status_id: Option<i64>,
2779    #[doc = "Table\n\nA cloud-based database table discovered by an inventory process.\n\nrecommended"]
2780    #[serde(rename = "table")]
2781    #[serde(skip_serializing_if = "Option::is_none")]
2782    pub table: Option<Box<Table>>,
2783    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
2784    #[serde(rename = "time")]
2785    #[serde(skip_serializing_if = "Option::is_none")]
2786    pub time: Option<i64>,
2787    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
2788    #[serde(rename = "time_dt")]
2789    #[serde(skip_serializing_if = "Option::is_none")]
2790    pub time_dt: Option<String>,
2791    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
2792    #[serde(rename = "timezone_offset")]
2793    #[serde(skip_serializing_if = "Option::is_none")]
2794    pub timezone_offset: Option<i64>,
2795    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
2796    #[serde(rename = "type_name")]
2797    #[serde(skip_serializing_if = "Option::is_none")]
2798    pub type_name: Option<String>,
2799    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
2800    #[serde(rename = "type_uid")]
2801    #[serde(skip_serializing_if = "Option::is_none")]
2802    pub type_uid: Option<i64>,
2803    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
2804    #[serde(rename = "unmapped")]
2805    #[serde(skip_serializing_if = "Option::is_none")]
2806    pub unmapped: Option<serde_json::Value>,
2807}
2808#[doc = "Compliance Finding\n\nCompliance Finding events describe results of evaluations performed against resources, to check compliance with various Industry Frameworks or Security Standards such as <code>NIST SP 800-53, CIS AWS Foundations Benchmark v1.4.0, ISO/IEC 27001</code> etc. Note: if the event producer is a security control, the <code>security_control</code> profile should be applied and its <code>attacks</code> information, if present, should be duplicated into the <code>finding_info</code> object. <br><strong>Note: </strong>If the Finding is an incident, i.e. requires incident workflow, also apply the <code>incident</code> profile or aggregate this finding into an <code>Incident Finding</code>.\n\n[UID:2003] Category: findings | Name: compliance_finding"]
2809#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
2810#[serde(default)]
2811#[non_exhaustive]
2812pub struct ComplianceFinding {
2813    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
2814    #[serde(rename = "action")]
2815    #[serde(skip_serializing_if = "Option::is_none")]
2816    pub action: Option<String>,
2817    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
2818    #[serde(rename = "action_id")]
2819    #[serde(skip_serializing_if = "Option::is_none")]
2820    pub action_id: Option<i64>,
2821    #[doc = "Activity ID\n\nThe normalized identifier of the finding activity.\n\nrequired"]
2822    #[serde(rename = "activity_id")]
2823    #[serde(skip_serializing_if = "Option::is_none")]
2824    pub activity_id: Option<i64>,
2825    #[doc = "Activity\n\nThe finding activity name, as defined by the <code>activity_id</code>.\n\noptional"]
2826    #[serde(rename = "activity_name")]
2827    #[serde(skip_serializing_if = "Option::is_none")]
2828    pub activity_name: Option<String>,
2829    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
2830    #[serde(rename = "actor")]
2831    #[serde(skip_serializing_if = "Option::is_none")]
2832    pub actor: Option<Box<Actor>>,
2833    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
2834    #[serde(rename = "api")]
2835    #[serde(skip_serializing_if = "Option::is_none")]
2836    pub api: Option<Box<Api>>,
2837    #[doc = "Assignee\n\nThe details of the user assigned to an Incident.\n\noptional"]
2838    #[serde(rename = "assignee")]
2839    #[serde(skip_serializing_if = "Option::is_none")]
2840    pub assignee: Option<Box<User>>,
2841    #[doc = "Assignee Group\n\nThe details of the group assigned to an Incident.\n\noptional"]
2842    #[serde(rename = "assignee_group")]
2843    #[serde(skip_serializing_if = "Option::is_none")]
2844    pub assignee_group: Option<Box<Group>>,
2845    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
2846    #[serde(rename = "attacks")]
2847    #[serde(skip_serializing_if = "Option::is_none")]
2848    pub attacks: Option<Vec<Attack>>,
2849    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
2850    #[serde(rename = "authorizations")]
2851    #[serde(skip_serializing_if = "Option::is_none")]
2852    pub authorizations: Option<Vec<Authorization>>,
2853    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Findings</code>.\n\noptional"]
2854    #[serde(rename = "category_name")]
2855    #[serde(skip_serializing_if = "Option::is_none")]
2856    pub category_name: Option<String>,
2857    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
2858    #[serde(rename = "category_uid")]
2859    #[serde(skip_serializing_if = "Option::is_none")]
2860    pub category_uid: Option<i64>,
2861    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Compliance Finding</code>.\n\noptional"]
2862    #[serde(rename = "class_name")]
2863    #[serde(skip_serializing_if = "Option::is_none")]
2864    pub class_name: Option<String>,
2865    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
2866    #[serde(rename = "class_uid")]
2867    #[serde(skip_serializing_if = "Option::is_none")]
2868    pub class_uid: Option<i64>,
2869    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
2870    #[serde(rename = "cloud")]
2871    #[serde(skip_serializing_if = "Option::is_none")]
2872    pub cloud: Option<Box<Cloud>>,
2873    #[doc = "Comment\n\nA user provided comment about the finding.\n\noptional"]
2874    #[serde(rename = "comment")]
2875    #[serde(skip_serializing_if = "Option::is_none")]
2876    pub comment: Option<String>,
2877    #[doc = "Compliance\n\nThe compliance object provides context to compliance findings (e.g., a check against a specific regulatory or best practice framework such as CIS, NIST etc.) and contains compliance related details.\n\nrequired"]
2878    #[serde(rename = "compliance")]
2879    #[serde(skip_serializing_if = "Option::is_none")]
2880    pub compliance: Option<Box<Compliance>>,
2881    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2882    #[serde(rename = "confidence")]
2883    #[serde(skip_serializing_if = "Option::is_none")]
2884    pub confidence: Option<String>,
2885    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
2886    #[serde(rename = "confidence_id")]
2887    #[serde(skip_serializing_if = "Option::is_none")]
2888    pub confidence_id: Option<i64>,
2889    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
2890    #[serde(rename = "confidence_score")]
2891    #[serde(skip_serializing_if = "Option::is_none")]
2892    pub confidence_score: Option<i64>,
2893    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
2894    #[serde(rename = "count")]
2895    #[serde(skip_serializing_if = "Option::is_none")]
2896    pub count: Option<i64>,
2897    #[doc = "Device\n\nDescribes the affected device/host. If applicable, it can be used in conjunction with <code>Resource(s)</code>. <p> e.g. Specific details about an AWS EC2 instance, that is affected by the Finding.</p>\n\noptional"]
2898    #[serde(rename = "device")]
2899    #[serde(skip_serializing_if = "Option::is_none")]
2900    pub device: Option<Box<Device>>,
2901    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2902    #[serde(rename = "disposition")]
2903    #[serde(skip_serializing_if = "Option::is_none")]
2904    pub disposition: Option<String>,
2905    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
2906    #[serde(rename = "disposition_id")]
2907    #[serde(skip_serializing_if = "Option::is_none")]
2908    pub disposition_id: Option<i64>,
2909    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
2910    #[serde(rename = "duration")]
2911    #[serde(skip_serializing_if = "Option::is_none")]
2912    pub duration: Option<i64>,
2913    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
2914    #[serde(rename = "end_time")]
2915    #[serde(skip_serializing_if = "Option::is_none")]
2916    pub end_time: Option<i64>,
2917    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
2918    #[serde(rename = "end_time_dt")]
2919    #[serde(skip_serializing_if = "Option::is_none")]
2920    pub end_time_dt: Option<String>,
2921    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
2922    #[serde(rename = "enrichments")]
2923    #[serde(skip_serializing_if = "Option::is_none")]
2924    pub enrichments: Option<Vec<Enrichment>>,
2925    #[doc = "Evidence Artifacts\n\nDescribes various evidence artifacts associated with the compliance finding.\n\noptional"]
2926    #[serde(rename = "evidences")]
2927    #[serde(skip_serializing_if = "Option::is_none")]
2928    pub evidences: Option<Vec<Evidences>>,
2929    #[doc = "Finding Information\n\nDescribes the supporting information about a generated finding.\n\nrequired"]
2930    #[serde(rename = "finding_info")]
2931    #[serde(skip_serializing_if = "Option::is_none")]
2932    pub finding_info: Option<Box<FindingInfo>>,
2933    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
2934    #[serde(rename = "firewall_rule")]
2935    #[serde(skip_serializing_if = "Option::is_none")]
2936    pub firewall_rule: Option<Box<FirewallRule>>,
2937    #[doc = "Impact\n\nThe impact , normalized to the caption of the impact_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
2938    #[serde(rename = "impact")]
2939    #[serde(skip_serializing_if = "Option::is_none")]
2940    pub impact: Option<String>,
2941    #[doc = "Impact ID\n\nThe normalized impact of the incident or finding. Per NIST, this is the magnitude of harm that can be expected to result from the consequences of unauthorized disclosure, modification, destruction, or loss of information or information system availability.\n\nrecommended"]
2942    #[serde(rename = "impact_id")]
2943    #[serde(skip_serializing_if = "Option::is_none")]
2944    pub impact_id: Option<i64>,
2945    #[doc = "Impact Score\n\nThe impact as an integer value of the finding, valid range 0-100.\n\nrecommended"]
2946    #[serde(rename = "impact_score")]
2947    #[serde(skip_serializing_if = "Option::is_none")]
2948    pub impact_score: Option<i64>,
2949    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
2950    #[serde(rename = "is_alert")]
2951    #[serde(skip_serializing_if = "Option::is_none")]
2952    pub is_alert: Option<bool>,
2953    #[doc = "Suspected Breach\n\nA determination based on analytics as to whether a potential breach was found.\n\noptional"]
2954    #[serde(rename = "is_suspected_breach")]
2955    #[serde(skip_serializing_if = "Option::is_none")]
2956    pub is_suspected_breach: Option<bool>,
2957    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
2958    #[serde(rename = "malware")]
2959    #[serde(skip_serializing_if = "Option::is_none")]
2960    pub malware: Option<Vec<Malware>>,
2961    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
2962    #[serde(rename = "malware_scan_info")]
2963    #[serde(skip_serializing_if = "Option::is_none")]
2964    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
2965    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
2966    #[serde(rename = "message")]
2967    #[serde(skip_serializing_if = "Option::is_none")]
2968    pub message: Option<String>,
2969    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
2970    #[serde(rename = "metadata")]
2971    #[serde(skip_serializing_if = "Option::is_none")]
2972    pub metadata: Option<Box<Metadata>>,
2973    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
2974    #[serde(rename = "observables")]
2975    #[serde(skip_serializing_if = "Option::is_none")]
2976    pub observables: Option<Vec<Observable>>,
2977    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
2978    #[serde(rename = "osint")]
2979    #[serde(skip_serializing_if = "Option::is_none")]
2980    pub osint: Option<Vec<Osint>>,
2981    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
2982    #[serde(rename = "policy")]
2983    #[serde(skip_serializing_if = "Option::is_none")]
2984    pub policy: Option<Box<Policy>>,
2985    #[doc = "Priority\n\nThe priority, normalized to the caption of the priority_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
2986    #[serde(rename = "priority")]
2987    #[serde(skip_serializing_if = "Option::is_none")]
2988    pub priority: Option<String>,
2989    #[doc = "Priority ID\n\nThe normalized priority. Priority identifies the relative importance of the incident or finding. It is a measurement of urgency.\n\nrecommended"]
2990    #[serde(rename = "priority_id")]
2991    #[serde(skip_serializing_if = "Option::is_none")]
2992    pub priority_id: Option<i64>,
2993    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
2994    #[serde(rename = "raw_data")]
2995    #[serde(skip_serializing_if = "Option::is_none")]
2996    pub raw_data: Option<String>,
2997    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
2998    #[serde(rename = "raw_data_hash")]
2999    #[serde(skip_serializing_if = "Option::is_none")]
3000    pub raw_data_hash: Option<Box<Fingerprint>>,
3001    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
3002    #[serde(rename = "raw_data_size")]
3003    #[serde(skip_serializing_if = "Option::is_none")]
3004    pub raw_data_size: Option<i64>,
3005    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\nrecommended"]
3006    #[serde(rename = "remediation")]
3007    #[serde(skip_serializing_if = "Option::is_none")]
3008    pub remediation: Option<Box<Remediation>>,
3009    #[doc = "Resource\n\nDescribes details about the resource that is the subject of the compliance check.\n\nrecommended"]
3010    #[serde(rename = "resource")]
3011    #[serde(skip_serializing_if = "Option::is_none")]
3012    pub resource: Option<Box<ResourceDetails>>,
3013    #[doc = "Resources Array\n\nDescribes details about the resource/resources that are the subject of the compliance check.\n\nrecommended"]
3014    #[serde(rename = "resources")]
3015    #[serde(skip_serializing_if = "Option::is_none")]
3016    pub resources: Option<Vec<ResourceDetails>>,
3017    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
3018    #[serde(rename = "risk_details")]
3019    #[serde(skip_serializing_if = "Option::is_none")]
3020    pub risk_details: Option<String>,
3021    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
3022    #[serde(rename = "risk_level")]
3023    #[serde(skip_serializing_if = "Option::is_none")]
3024    pub risk_level: Option<String>,
3025    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
3026    #[serde(rename = "risk_level_id")]
3027    #[serde(skip_serializing_if = "Option::is_none")]
3028    pub risk_level_id: Option<i64>,
3029    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
3030    #[serde(rename = "risk_score")]
3031    #[serde(skip_serializing_if = "Option::is_none")]
3032    pub risk_score: Option<i64>,
3033    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
3034    #[serde(rename = "severity")]
3035    #[serde(skip_serializing_if = "Option::is_none")]
3036    pub severity: Option<String>,
3037    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
3038    #[serde(rename = "severity_id")]
3039    #[serde(skip_serializing_if = "Option::is_none")]
3040    pub severity_id: Option<i64>,
3041    #[doc = "Source URL\n\nA Url link used to access the original incident.\n\nrecommended"]
3042    #[serde(rename = "src_url")]
3043    #[serde(skip_serializing_if = "Option::is_none")]
3044    pub src_url: Option<String>,
3045    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
3046    #[serde(rename = "start_time")]
3047    #[serde(skip_serializing_if = "Option::is_none")]
3048    pub start_time: Option<i64>,
3049    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
3050    #[serde(rename = "start_time_dt")]
3051    #[serde(skip_serializing_if = "Option::is_none")]
3052    pub start_time_dt: Option<String>,
3053    #[doc = "Status\n\nThe normalized status of the Finding set by the consumer normalized to the caption of the status_id value. In the case of 'Other', it is defined by the source.\n\noptional"]
3054    #[serde(rename = "status")]
3055    #[serde(skip_serializing_if = "Option::is_none")]
3056    pub status: Option<String>,
3057    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
3058    #[serde(rename = "status_code")]
3059    #[serde(skip_serializing_if = "Option::is_none")]
3060    pub status_code: Option<String>,
3061    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
3062    #[serde(rename = "status_detail")]
3063    #[serde(skip_serializing_if = "Option::is_none")]
3064    pub status_detail: Option<String>,
3065    #[doc = "Status ID\n\nThe normalized status identifier of the Finding, set by the consumer.\n\nrecommended"]
3066    #[serde(rename = "status_id")]
3067    #[serde(skip_serializing_if = "Option::is_none")]
3068    pub status_id: Option<i64>,
3069    #[doc = "Ticket\n\nThe linked ticket in the ticketing system.\n\noptional"]
3070    #[serde(rename = "ticket")]
3071    #[serde(skip_serializing_if = "Option::is_none")]
3072    pub ticket: Option<Box<Ticket>>,
3073    #[doc = "Tickets\n\nThe associated ticket(s) in the ticketing system. Each ticket contains details like ticket ID, status, etc.\n\noptional"]
3074    #[serde(rename = "tickets")]
3075    #[serde(skip_serializing_if = "Option::is_none")]
3076    pub tickets: Option<Vec<Ticket>>,
3077    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
3078    #[serde(rename = "time")]
3079    #[serde(skip_serializing_if = "Option::is_none")]
3080    pub time: Option<i64>,
3081    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
3082    #[serde(rename = "time_dt")]
3083    #[serde(skip_serializing_if = "Option::is_none")]
3084    pub time_dt: Option<String>,
3085    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
3086    #[serde(rename = "timezone_offset")]
3087    #[serde(skip_serializing_if = "Option::is_none")]
3088    pub timezone_offset: Option<i64>,
3089    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
3090    #[serde(rename = "type_name")]
3091    #[serde(skip_serializing_if = "Option::is_none")]
3092    pub type_name: Option<String>,
3093    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
3094    #[serde(rename = "type_uid")]
3095    #[serde(skip_serializing_if = "Option::is_none")]
3096    pub type_uid: Option<i64>,
3097    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
3098    #[serde(rename = "unmapped")]
3099    #[serde(skip_serializing_if = "Option::is_none")]
3100    pub unmapped: Option<serde_json::Value>,
3101    #[doc = "Vendor Attributes\n\nThe Vendor Attributes object can be used to represent values of attributes populated by the Vendor/Finding Provider. It can help distinguish between the vendor-provided values and consumer-updated values, of key attributes like <code>severity_id</code>.<br>The original finding producer should not populate this object. It should be populated by consuming systems that support data mutability.\n\noptional"]
3102    #[serde(rename = "vendor_attributes")]
3103    #[serde(skip_serializing_if = "Option::is_none")]
3104    pub vendor_attributes: Option<Box<VendorAttributes>>,
3105    #[doc = "Verdict\n\nThe verdict assigned to an Incident finding.\n\nrecommended"]
3106    #[serde(rename = "verdict")]
3107    #[serde(skip_serializing_if = "Option::is_none")]
3108    pub verdict: Option<String>,
3109    #[doc = "Verdict ID\n\nThe normalized verdict of an Incident.\n\nrecommended"]
3110    #[serde(rename = "verdict_id")]
3111    #[serde(skip_serializing_if = "Option::is_none")]
3112    pub verdict_id: Option<i64>,
3113}
3114#[doc = "Device Config State\n\nDevice Config State events report device configuration data, device assessments, and/or CIS Benchmark results.\n\n[UID:5002] Category: discovery | Name: config_state"]
3115#[deprecated(note = "Use <code>Compliance Finding</code> class. (Since 1.5.0)")]
3116#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
3117#[serde(default)]
3118#[non_exhaustive]
3119pub struct ConfigState {
3120    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
3121    #[serde(rename = "action")]
3122    #[serde(skip_serializing_if = "Option::is_none")]
3123    pub action: Option<String>,
3124    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
3125    #[serde(rename = "action_id")]
3126    #[serde(skip_serializing_if = "Option::is_none")]
3127    pub action_id: Option<i64>,
3128    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
3129    #[serde(rename = "activity_id")]
3130    #[serde(skip_serializing_if = "Option::is_none")]
3131    pub activity_id: Option<i64>,
3132    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
3133    #[serde(rename = "activity_name")]
3134    #[serde(skip_serializing_if = "Option::is_none")]
3135    pub activity_name: Option<String>,
3136    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
3137    #[serde(rename = "actor")]
3138    #[serde(skip_serializing_if = "Option::is_none")]
3139    pub actor: Option<Box<Actor>>,
3140    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
3141    #[serde(rename = "api")]
3142    #[serde(skip_serializing_if = "Option::is_none")]
3143    pub api: Option<Box<Api>>,
3144    #[doc = "Related Assessments\n\nA list of assessments associated with the device.\n\noptional"]
3145    #[serde(rename = "assessments")]
3146    #[serde(skip_serializing_if = "Option::is_none")]
3147    pub assessments: Option<Vec<Assessment>>,
3148    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
3149    #[serde(rename = "attacks")]
3150    #[serde(skip_serializing_if = "Option::is_none")]
3151    pub attacks: Option<Vec<Attack>>,
3152    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
3153    #[serde(rename = "authorizations")]
3154    #[serde(skip_serializing_if = "Option::is_none")]
3155    pub authorizations: Option<Vec<Authorization>>,
3156    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
3157    #[serde(rename = "category_name")]
3158    #[serde(skip_serializing_if = "Option::is_none")]
3159    pub category_name: Option<String>,
3160    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
3161    #[serde(rename = "category_uid")]
3162    #[serde(skip_serializing_if = "Option::is_none")]
3163    pub category_uid: Option<i64>,
3164    #[doc = "CIS Benchmark Result\n\nThe CIS Benchmark Result object captures results generated from benchmark evaluations as defined by the Center for Internet Security (<a target='_blank' href='https://www.cisecurity.org/cis-benchmarks/'>CIS</a>).\n\nrecommended"]
3165    #[serde(rename = "cis_benchmark_result")]
3166    #[serde(skip_serializing_if = "Option::is_none")]
3167    pub cis_benchmark_result: Option<Box<CisBenchmarkResult>>,
3168    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Device Config State</code>.\n\noptional"]
3169    #[serde(rename = "class_name")]
3170    #[serde(skip_serializing_if = "Option::is_none")]
3171    pub class_name: Option<String>,
3172    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
3173    #[serde(rename = "class_uid")]
3174    #[serde(skip_serializing_if = "Option::is_none")]
3175    pub class_uid: Option<i64>,
3176    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
3177    #[serde(rename = "cloud")]
3178    #[serde(skip_serializing_if = "Option::is_none")]
3179    pub cloud: Option<Box<Cloud>>,
3180    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
3181    #[serde(rename = "confidence")]
3182    #[serde(skip_serializing_if = "Option::is_none")]
3183    pub confidence: Option<String>,
3184    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
3185    #[serde(rename = "confidence_id")]
3186    #[serde(skip_serializing_if = "Option::is_none")]
3187    pub confidence_id: Option<i64>,
3188    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
3189    #[serde(rename = "confidence_score")]
3190    #[serde(skip_serializing_if = "Option::is_none")]
3191    pub confidence_score: Option<i64>,
3192    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
3193    #[serde(rename = "count")]
3194    #[serde(skip_serializing_if = "Option::is_none")]
3195    pub count: Option<i64>,
3196    #[doc = "Device\n\nThe device that is being discovered by an inventory process.\n\nrequired"]
3197    #[serde(rename = "device")]
3198    #[serde(skip_serializing_if = "Option::is_none")]
3199    pub device: Option<Box<Device>>,
3200    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
3201    #[serde(rename = "disposition")]
3202    #[serde(skip_serializing_if = "Option::is_none")]
3203    pub disposition: Option<String>,
3204    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
3205    #[serde(rename = "disposition_id")]
3206    #[serde(skip_serializing_if = "Option::is_none")]
3207    pub disposition_id: Option<i64>,
3208    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
3209    #[serde(rename = "duration")]
3210    #[serde(skip_serializing_if = "Option::is_none")]
3211    pub duration: Option<i64>,
3212    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
3213    #[serde(rename = "end_time")]
3214    #[serde(skip_serializing_if = "Option::is_none")]
3215    pub end_time: Option<i64>,
3216    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
3217    #[serde(rename = "end_time_dt")]
3218    #[serde(skip_serializing_if = "Option::is_none")]
3219    pub end_time_dt: Option<String>,
3220    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
3221    #[serde(rename = "enrichments")]
3222    #[serde(skip_serializing_if = "Option::is_none")]
3223    pub enrichments: Option<Vec<Enrichment>>,
3224    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
3225    #[serde(rename = "firewall_rule")]
3226    #[serde(skip_serializing_if = "Option::is_none")]
3227    pub firewall_rule: Option<Box<FirewallRule>>,
3228    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
3229    #[serde(rename = "is_alert")]
3230    #[serde(skip_serializing_if = "Option::is_none")]
3231    pub is_alert: Option<bool>,
3232    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
3233    #[serde(rename = "malware")]
3234    #[serde(skip_serializing_if = "Option::is_none")]
3235    pub malware: Option<Vec<Malware>>,
3236    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
3237    #[serde(rename = "malware_scan_info")]
3238    #[serde(skip_serializing_if = "Option::is_none")]
3239    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
3240    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
3241    #[serde(rename = "message")]
3242    #[serde(skip_serializing_if = "Option::is_none")]
3243    pub message: Option<String>,
3244    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
3245    #[serde(rename = "metadata")]
3246    #[serde(skip_serializing_if = "Option::is_none")]
3247    pub metadata: Option<Box<Metadata>>,
3248    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
3249    #[serde(rename = "observables")]
3250    #[serde(skip_serializing_if = "Option::is_none")]
3251    pub observables: Option<Vec<Observable>>,
3252    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
3253    #[serde(rename = "osint")]
3254    #[serde(skip_serializing_if = "Option::is_none")]
3255    pub osint: Option<Vec<Osint>>,
3256    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
3257    #[serde(rename = "policy")]
3258    #[serde(skip_serializing_if = "Option::is_none")]
3259    pub policy: Option<Box<Policy>>,
3260    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
3261    #[serde(rename = "raw_data")]
3262    #[serde(skip_serializing_if = "Option::is_none")]
3263    pub raw_data: Option<String>,
3264    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
3265    #[serde(rename = "raw_data_hash")]
3266    #[serde(skip_serializing_if = "Option::is_none")]
3267    pub raw_data_hash: Option<Box<Fingerprint>>,
3268    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
3269    #[serde(rename = "raw_data_size")]
3270    #[serde(skip_serializing_if = "Option::is_none")]
3271    pub raw_data_size: Option<i64>,
3272    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
3273    #[serde(rename = "risk_details")]
3274    #[serde(skip_serializing_if = "Option::is_none")]
3275    pub risk_details: Option<String>,
3276    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
3277    #[serde(rename = "risk_level")]
3278    #[serde(skip_serializing_if = "Option::is_none")]
3279    pub risk_level: Option<String>,
3280    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
3281    #[serde(rename = "risk_level_id")]
3282    #[serde(skip_serializing_if = "Option::is_none")]
3283    pub risk_level_id: Option<i64>,
3284    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
3285    #[serde(rename = "risk_score")]
3286    #[serde(skip_serializing_if = "Option::is_none")]
3287    pub risk_score: Option<i64>,
3288    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
3289    #[serde(rename = "severity")]
3290    #[serde(skip_serializing_if = "Option::is_none")]
3291    pub severity: Option<String>,
3292    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
3293    #[serde(rename = "severity_id")]
3294    #[serde(skip_serializing_if = "Option::is_none")]
3295    pub severity_id: Option<i64>,
3296    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
3297    #[serde(rename = "start_time")]
3298    #[serde(skip_serializing_if = "Option::is_none")]
3299    pub start_time: Option<i64>,
3300    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
3301    #[serde(rename = "start_time_dt")]
3302    #[serde(skip_serializing_if = "Option::is_none")]
3303    pub start_time_dt: Option<String>,
3304    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
3305    #[serde(rename = "status")]
3306    #[serde(skip_serializing_if = "Option::is_none")]
3307    pub status: Option<String>,
3308    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
3309    #[serde(rename = "status_code")]
3310    #[serde(skip_serializing_if = "Option::is_none")]
3311    pub status_code: Option<String>,
3312    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
3313    #[serde(rename = "status_detail")]
3314    #[serde(skip_serializing_if = "Option::is_none")]
3315    pub status_detail: Option<String>,
3316    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
3317    #[serde(rename = "status_id")]
3318    #[serde(skip_serializing_if = "Option::is_none")]
3319    pub status_id: Option<i64>,
3320    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
3321    #[serde(rename = "time")]
3322    #[serde(skip_serializing_if = "Option::is_none")]
3323    pub time: Option<i64>,
3324    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
3325    #[serde(rename = "time_dt")]
3326    #[serde(skip_serializing_if = "Option::is_none")]
3327    pub time_dt: Option<String>,
3328    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
3329    #[serde(rename = "timezone_offset")]
3330    #[serde(skip_serializing_if = "Option::is_none")]
3331    pub timezone_offset: Option<i64>,
3332    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
3333    #[serde(rename = "type_name")]
3334    #[serde(skip_serializing_if = "Option::is_none")]
3335    pub type_name: Option<String>,
3336    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
3337    #[serde(rename = "type_uid")]
3338    #[serde(skip_serializing_if = "Option::is_none")]
3339    pub type_uid: Option<i64>,
3340    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
3341    #[serde(rename = "unmapped")]
3342    #[serde(skip_serializing_if = "Option::is_none")]
3343    pub unmapped: Option<serde_json::Value>,
3344}
3345#[doc = "Data Security Finding\n\nA Data Security Finding describes detections or alerts generated by various data security products such as Data Loss Prevention (DLP), Data Classification, Secrets Management, Digital Rights Management (DRM), Data Security Posture Management (DSPM), and similar tools. These detections or alerts can be created using fingerprinting, statistical analysis, machine learning or other methodologies. The finding describes the actors and endpoints who accessed or own the sensitive data, as well as the resources which store the sensitive data. Note: if the event producer is a security control, the <code>security_control</code> profile should be applied and its <code>attacks</code> information, if present, should be duplicated into the <code>finding_info</code> object. <br><strong>Note: </strong>If the Finding is an incident, i.e. requires incident workflow, also apply the <code>incident</code> profile  or aggregate this finding into an <code>Incident Finding</code>.\n\n[UID:2006] Category: findings | Name: data_security_finding"]
3346#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
3347#[serde(default)]
3348#[non_exhaustive]
3349pub struct DataSecurityFinding {
3350    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
3351    #[serde(rename = "action")]
3352    #[serde(skip_serializing_if = "Option::is_none")]
3353    pub action: Option<String>,
3354    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
3355    #[serde(rename = "action_id")]
3356    #[serde(skip_serializing_if = "Option::is_none")]
3357    pub action_id: Option<i64>,
3358    #[doc = "Activity ID\n\nThe normalized identifier of the Data Security Finding activity.\n\nrequired"]
3359    #[serde(rename = "activity_id")]
3360    #[serde(skip_serializing_if = "Option::is_none")]
3361    pub activity_id: Option<i64>,
3362    #[doc = "Activity\n\nThe Data Security finding activity name, as defined by the <code>activity_id</code>.\n\noptional"]
3363    #[serde(rename = "activity_name")]
3364    #[serde(skip_serializing_if = "Option::is_none")]
3365    pub activity_name: Option<String>,
3366    #[doc = "Actor\n\nDescribes details about the actor implicated in the data security finding. Either an actor that owns a particular digital file or information store, or an actor which accessed classified or sensitive data.\n\nrecommended"]
3367    #[serde(rename = "actor")]
3368    #[serde(skip_serializing_if = "Option::is_none")]
3369    pub actor: Option<Box<Actor>>,
3370    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
3371    #[serde(rename = "api")]
3372    #[serde(skip_serializing_if = "Option::is_none")]
3373    pub api: Option<Box<Api>>,
3374    #[doc = "Assignee\n\nThe details of the user assigned to an Incident.\n\noptional"]
3375    #[serde(rename = "assignee")]
3376    #[serde(skip_serializing_if = "Option::is_none")]
3377    pub assignee: Option<Box<User>>,
3378    #[doc = "Assignee Group\n\nThe details of the group assigned to an Incident.\n\noptional"]
3379    #[serde(rename = "assignee_group")]
3380    #[serde(skip_serializing_if = "Option::is_none")]
3381    pub assignee_group: Option<Box<Group>>,
3382    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
3383    #[serde(rename = "attacks")]
3384    #[serde(skip_serializing_if = "Option::is_none")]
3385    pub attacks: Option<Vec<Attack>>,
3386    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
3387    #[serde(rename = "authorizations")]
3388    #[serde(skip_serializing_if = "Option::is_none")]
3389    pub authorizations: Option<Vec<Authorization>>,
3390    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Findings</code>.\n\noptional"]
3391    #[serde(rename = "category_name")]
3392    #[serde(skip_serializing_if = "Option::is_none")]
3393    pub category_name: Option<String>,
3394    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
3395    #[serde(rename = "category_uid")]
3396    #[serde(skip_serializing_if = "Option::is_none")]
3397    pub category_uid: Option<i64>,
3398    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Data Security Finding</code>.\n\noptional"]
3399    #[serde(rename = "class_name")]
3400    #[serde(skip_serializing_if = "Option::is_none")]
3401    pub class_name: Option<String>,
3402    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
3403    #[serde(rename = "class_uid")]
3404    #[serde(skip_serializing_if = "Option::is_none")]
3405    pub class_uid: Option<i64>,
3406    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
3407    #[serde(rename = "cloud")]
3408    #[serde(skip_serializing_if = "Option::is_none")]
3409    pub cloud: Option<Box<Cloud>>,
3410    #[doc = "Comment\n\nA user provided comment about the finding.\n\noptional"]
3411    #[serde(rename = "comment")]
3412    #[serde(skip_serializing_if = "Option::is_none")]
3413    pub comment: Option<String>,
3414    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
3415    #[serde(rename = "confidence")]
3416    #[serde(skip_serializing_if = "Option::is_none")]
3417    pub confidence: Option<String>,
3418    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
3419    #[serde(rename = "confidence_id")]
3420    #[serde(skip_serializing_if = "Option::is_none")]
3421    pub confidence_id: Option<i64>,
3422    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
3423    #[serde(rename = "confidence_score")]
3424    #[serde(skip_serializing_if = "Option::is_none")]
3425    pub confidence_score: Option<i64>,
3426    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
3427    #[serde(rename = "count")]
3428    #[serde(skip_serializing_if = "Option::is_none")]
3429    pub count: Option<i64>,
3430    #[doc = "Data Security\n\nThe Data Security object describes the characteristics, techniques and content of a Data Loss Prevention (DLP), Data Loss Detection (DLD), Data Classification, or similar tools' finding, alert, or detection mechanism(s).\n\nrecommended"]
3431    #[serde(rename = "data_security")]
3432    #[serde(skip_serializing_if = "Option::is_none")]
3433    pub data_security: Option<Box<DataSecurity>>,
3434    #[doc = "Database\n\nDescribes the database where classified or sensitive data is stored in, or was accessed from. Databases are typically datastore services that contain an organized collection of structured and/or semi-structured data.\n\nrecommended"]
3435    #[serde(rename = "database")]
3436    #[serde(skip_serializing_if = "Option::is_none")]
3437    pub database: Option<Box<Database>>,
3438    #[doc = "Databucket\n\nDescribes the databucket where classified or sensitive data is stored in, or was accessed from. The data bucket object is a basic container that holds data, typically organized through the use of data partitions.\n\nrecommended"]
3439    #[serde(rename = "databucket")]
3440    #[serde(skip_serializing_if = "Option::is_none")]
3441    pub databucket: Option<Box<Databucket>>,
3442    #[doc = "Device\n\nDescribes the device where classified or sensitive data is stored in, or was accessed from.\n\nrecommended"]
3443    #[serde(rename = "device")]
3444    #[serde(skip_serializing_if = "Option::is_none")]
3445    pub device: Option<Box<Device>>,
3446    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
3447    #[serde(rename = "disposition")]
3448    #[serde(skip_serializing_if = "Option::is_none")]
3449    pub disposition: Option<String>,
3450    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
3451    #[serde(rename = "disposition_id")]
3452    #[serde(skip_serializing_if = "Option::is_none")]
3453    pub disposition_id: Option<i64>,
3454    #[doc = "Destination Endpoint\n\nDescribes the endpoint where classified or sensitive data is stored in, or was accessed from.\n\nrecommended"]
3455    #[serde(rename = "dst_endpoint")]
3456    #[serde(skip_serializing_if = "Option::is_none")]
3457    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
3458    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
3459    #[serde(rename = "duration")]
3460    #[serde(skip_serializing_if = "Option::is_none")]
3461    pub duration: Option<i64>,
3462    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
3463    #[serde(rename = "end_time")]
3464    #[serde(skip_serializing_if = "Option::is_none")]
3465    pub end_time: Option<i64>,
3466    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
3467    #[serde(rename = "end_time_dt")]
3468    #[serde(skip_serializing_if = "Option::is_none")]
3469    pub end_time_dt: Option<String>,
3470    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
3471    #[serde(rename = "enrichments")]
3472    #[serde(skip_serializing_if = "Option::is_none")]
3473    pub enrichments: Option<Vec<Enrichment>>,
3474    #[doc = "File\n\nDescribes a file that contains classified or sensitive data.\n\nrecommended"]
3475    #[serde(rename = "file")]
3476    #[serde(skip_serializing_if = "Option::is_none")]
3477    pub file: Option<Box<File>>,
3478    #[doc = "Finding Information\n\nDescribes the supporting information about a generated finding.\n\nrequired"]
3479    #[serde(rename = "finding_info")]
3480    #[serde(skip_serializing_if = "Option::is_none")]
3481    pub finding_info: Option<Box<FindingInfo>>,
3482    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
3483    #[serde(rename = "firewall_rule")]
3484    #[serde(skip_serializing_if = "Option::is_none")]
3485    pub firewall_rule: Option<Box<FirewallRule>>,
3486    #[doc = "Impact\n\nThe impact , normalized to the caption of the impact_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
3487    #[serde(rename = "impact")]
3488    #[serde(skip_serializing_if = "Option::is_none")]
3489    pub impact: Option<String>,
3490    #[doc = "Impact ID\n\nThe normalized impact of the incident or finding. Per NIST, this is the magnitude of harm that can be expected to result from the consequences of unauthorized disclosure, modification, destruction, or loss of information or information system availability.\n\noptional"]
3491    #[serde(rename = "impact_id")]
3492    #[serde(skip_serializing_if = "Option::is_none")]
3493    pub impact_id: Option<i64>,
3494    #[doc = "Impact Score\n\nThe impact as an integer value of the finding, valid range 0-100.\n\noptional"]
3495    #[serde(rename = "impact_score")]
3496    #[serde(skip_serializing_if = "Option::is_none")]
3497    pub impact_score: Option<i64>,
3498    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. For example, an <code>activity_id</code> of 'Create' could constitute an alertable signal and the value would be <code>true</code>, while 'Close' likely would not and either omit the attribute or set its value to <code>false</code>.  Note that other events with the <code>security_control</code> profile may also be deemed alertable signals and may also carry <code>is_alert = true</code> attributes.\n\nrecommended"]
3499    #[serde(rename = "is_alert")]
3500    #[serde(skip_serializing_if = "Option::is_none")]
3501    pub is_alert: Option<bool>,
3502    #[doc = "Suspected Breach\n\nA determination based on analytics as to whether a potential breach was found.\n\noptional"]
3503    #[serde(rename = "is_suspected_breach")]
3504    #[serde(skip_serializing_if = "Option::is_none")]
3505    pub is_suspected_breach: Option<bool>,
3506    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
3507    #[serde(rename = "malware")]
3508    #[serde(skip_serializing_if = "Option::is_none")]
3509    pub malware: Option<Vec<Malware>>,
3510    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
3511    #[serde(rename = "malware_scan_info")]
3512    #[serde(skip_serializing_if = "Option::is_none")]
3513    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
3514    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
3515    #[serde(rename = "message")]
3516    #[serde(skip_serializing_if = "Option::is_none")]
3517    pub message: Option<String>,
3518    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
3519    #[serde(rename = "metadata")]
3520    #[serde(skip_serializing_if = "Option::is_none")]
3521    pub metadata: Option<Box<Metadata>>,
3522    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
3523    #[serde(rename = "observables")]
3524    #[serde(skip_serializing_if = "Option::is_none")]
3525    pub observables: Option<Vec<Observable>>,
3526    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
3527    #[serde(rename = "osint")]
3528    #[serde(skip_serializing_if = "Option::is_none")]
3529    pub osint: Option<Vec<Osint>>,
3530    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
3531    #[serde(rename = "policy")]
3532    #[serde(skip_serializing_if = "Option::is_none")]
3533    pub policy: Option<Box<Policy>>,
3534    #[doc = "Priority\n\nThe priority, normalized to the caption of the priority_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
3535    #[serde(rename = "priority")]
3536    #[serde(skip_serializing_if = "Option::is_none")]
3537    pub priority: Option<String>,
3538    #[doc = "Priority ID\n\nThe normalized priority. Priority identifies the relative importance of the incident or finding. It is a measurement of urgency.\n\nrecommended"]
3539    #[serde(rename = "priority_id")]
3540    #[serde(skip_serializing_if = "Option::is_none")]
3541    pub priority_id: Option<i64>,
3542    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
3543    #[serde(rename = "raw_data")]
3544    #[serde(skip_serializing_if = "Option::is_none")]
3545    pub raw_data: Option<String>,
3546    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
3547    #[serde(rename = "raw_data_hash")]
3548    #[serde(skip_serializing_if = "Option::is_none")]
3549    pub raw_data_hash: Option<Box<Fingerprint>>,
3550    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
3551    #[serde(rename = "raw_data_size")]
3552    #[serde(skip_serializing_if = "Option::is_none")]
3553    pub raw_data_size: Option<i64>,
3554    #[doc = "Additional Resources\n\nDescribes details about additional resources, where classified or sensitive data is stored in, or was accessed from. <p> You can populate this object, if the specific resource type objects available in the class (<code>database, databucket, table, file</code>) aren't sufficient; OR <br> You can also choose to duplicate <code>uid, name</code> of the specific resources objects, for a consistent access to resource uids across all findings.\n\nrecommended"]
3555    #[serde(rename = "resources")]
3556    #[serde(skip_serializing_if = "Option::is_none")]
3557    pub resources: Option<Vec<ResourceDetails>>,
3558    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
3559    #[serde(rename = "risk_details")]
3560    #[serde(skip_serializing_if = "Option::is_none")]
3561    pub risk_details: Option<String>,
3562    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
3563    #[serde(rename = "risk_level")]
3564    #[serde(skip_serializing_if = "Option::is_none")]
3565    pub risk_level: Option<String>,
3566    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
3567    #[serde(rename = "risk_level_id")]
3568    #[serde(skip_serializing_if = "Option::is_none")]
3569    pub risk_level_id: Option<i64>,
3570    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
3571    #[serde(rename = "risk_score")]
3572    #[serde(skip_serializing_if = "Option::is_none")]
3573    pub risk_score: Option<i64>,
3574    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
3575    #[serde(rename = "severity")]
3576    #[serde(skip_serializing_if = "Option::is_none")]
3577    pub severity: Option<String>,
3578    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
3579    #[serde(rename = "severity_id")]
3580    #[serde(skip_serializing_if = "Option::is_none")]
3581    pub severity_id: Option<i64>,
3582    #[doc = "Source Endpoint\n\nDetails about the source endpoint where classified or sensitive data was accessed from.\n\nrecommended"]
3583    #[serde(rename = "src_endpoint")]
3584    #[serde(skip_serializing_if = "Option::is_none")]
3585    pub src_endpoint: Option<Box<NetworkEndpoint>>,
3586    #[doc = "Source URL\n\nA Url link used to access the original incident.\n\nrecommended"]
3587    #[serde(rename = "src_url")]
3588    #[serde(skip_serializing_if = "Option::is_none")]
3589    pub src_url: Option<String>,
3590    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
3591    #[serde(rename = "start_time")]
3592    #[serde(skip_serializing_if = "Option::is_none")]
3593    pub start_time: Option<i64>,
3594    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
3595    #[serde(rename = "start_time_dt")]
3596    #[serde(skip_serializing_if = "Option::is_none")]
3597    pub start_time_dt: Option<String>,
3598    #[doc = "Status\n\nThe normalized status of the Finding set by the consumer normalized to the caption of the status_id value. In the case of 'Other', it is defined by the source.\n\noptional"]
3599    #[serde(rename = "status")]
3600    #[serde(skip_serializing_if = "Option::is_none")]
3601    pub status: Option<String>,
3602    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
3603    #[serde(rename = "status_code")]
3604    #[serde(skip_serializing_if = "Option::is_none")]
3605    pub status_code: Option<String>,
3606    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
3607    #[serde(rename = "status_detail")]
3608    #[serde(skip_serializing_if = "Option::is_none")]
3609    pub status_detail: Option<String>,
3610    #[doc = "Status ID\n\nThe normalized status identifier of the Finding, set by the consumer.\n\nrecommended"]
3611    #[serde(rename = "status_id")]
3612    #[serde(skip_serializing_if = "Option::is_none")]
3613    pub status_id: Option<i64>,
3614    #[doc = "Table\n\nDescribes the table where classified or sensitive data is stored in, or was accessed from. The table object represents a table within a structured relational database, warehouse, lake, or similar.\n\nrecommended"]
3615    #[serde(rename = "table")]
3616    #[serde(skip_serializing_if = "Option::is_none")]
3617    pub table: Option<Box<Table>>,
3618    #[doc = "Ticket\n\nThe linked ticket in the ticketing system.\n\noptional"]
3619    #[serde(rename = "ticket")]
3620    #[serde(skip_serializing_if = "Option::is_none")]
3621    pub ticket: Option<Box<Ticket>>,
3622    #[doc = "Tickets\n\nThe associated ticket(s) in the ticketing system. Each ticket contains details like ticket ID, status, etc.\n\noptional"]
3623    #[serde(rename = "tickets")]
3624    #[serde(skip_serializing_if = "Option::is_none")]
3625    pub tickets: Option<Vec<Ticket>>,
3626    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
3627    #[serde(rename = "time")]
3628    #[serde(skip_serializing_if = "Option::is_none")]
3629    pub time: Option<i64>,
3630    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
3631    #[serde(rename = "time_dt")]
3632    #[serde(skip_serializing_if = "Option::is_none")]
3633    pub time_dt: Option<String>,
3634    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
3635    #[serde(rename = "timezone_offset")]
3636    #[serde(skip_serializing_if = "Option::is_none")]
3637    pub timezone_offset: Option<i64>,
3638    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
3639    #[serde(rename = "type_name")]
3640    #[serde(skip_serializing_if = "Option::is_none")]
3641    pub type_name: Option<String>,
3642    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
3643    #[serde(rename = "type_uid")]
3644    #[serde(skip_serializing_if = "Option::is_none")]
3645    pub type_uid: Option<i64>,
3646    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
3647    #[serde(rename = "unmapped")]
3648    #[serde(skip_serializing_if = "Option::is_none")]
3649    pub unmapped: Option<serde_json::Value>,
3650    #[doc = "Vendor Attributes\n\nThe Vendor Attributes object can be used to represent values of attributes populated by the Vendor/Finding Provider. It can help distinguish between the vendor-provided values and consumer-updated values, of key attributes like <code>severity_id</code>.<br>The original finding producer should not populate this object. It should be populated by consuming systems that support data mutability.\n\noptional"]
3651    #[serde(rename = "vendor_attributes")]
3652    #[serde(skip_serializing_if = "Option::is_none")]
3653    pub vendor_attributes: Option<Box<VendorAttributes>>,
3654    #[doc = "Verdict\n\nThe verdict assigned to an Incident finding.\n\nrecommended"]
3655    #[serde(rename = "verdict")]
3656    #[serde(skip_serializing_if = "Option::is_none")]
3657    pub verdict: Option<String>,
3658    #[doc = "Verdict ID\n\nThe normalized verdict of an Incident.\n\nrecommended"]
3659    #[serde(rename = "verdict_id")]
3660    #[serde(skip_serializing_if = "Option::is_none")]
3661    pub verdict_id: Option<i64>,
3662}
3663#[doc = "Datastore Activity\n\nDatastore events describe general activities (Read, Update, Query, Delete, etc.) which affect datastores or data within those datastores, e.g. (AWS RDS, AWS S3).\n\n[UID:6005] Category: application | Name: datastore_activity\n\n**Constraints:**\n* at_least_one: `[database`,`databucket`,`table]`\n"]
3664#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
3665#[serde(default)]
3666#[non_exhaustive]
3667pub struct DatastoreActivity {
3668    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
3669    #[serde(rename = "action")]
3670    #[serde(skip_serializing_if = "Option::is_none")]
3671    pub action: Option<String>,
3672    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
3673    #[serde(rename = "action_id")]
3674    #[serde(skip_serializing_if = "Option::is_none")]
3675    pub action_id: Option<i64>,
3676    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
3677    #[serde(rename = "activity_id")]
3678    #[serde(skip_serializing_if = "Option::is_none")]
3679    pub activity_id: Option<i64>,
3680    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
3681    #[serde(rename = "activity_name")]
3682    #[serde(skip_serializing_if = "Option::is_none")]
3683    pub activity_name: Option<String>,
3684    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrequired"]
3685    #[serde(rename = "actor")]
3686    #[serde(skip_serializing_if = "Option::is_none")]
3687    pub actor: Option<Box<Actor>>,
3688    #[doc = "AI Model\n\nThe AI Model object describes the characteristics of an AI/ML model. Examples include language models like GPT-4, embedding models like text-embedding-ada-002, and computer vision models like CLIP.\n\nrecommended"]
3689    #[serde(rename = "ai_model")]
3690    #[serde(skip_serializing_if = "Option::is_none")]
3691    pub ai_model: Option<Box<AiModel>>,
3692    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
3693    #[serde(rename = "api")]
3694    #[serde(skip_serializing_if = "Option::is_none")]
3695    pub api: Option<Box<Api>>,
3696    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
3697    #[serde(rename = "attacks")]
3698    #[serde(skip_serializing_if = "Option::is_none")]
3699    pub attacks: Option<Vec<Attack>>,
3700    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
3701    #[serde(rename = "authorizations")]
3702    #[serde(skip_serializing_if = "Option::is_none")]
3703    pub authorizations: Option<Vec<Authorization>>,
3704    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Application Activity</code>.\n\noptional"]
3705    #[serde(rename = "category_name")]
3706    #[serde(skip_serializing_if = "Option::is_none")]
3707    pub category_name: Option<String>,
3708    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
3709    #[serde(rename = "category_uid")]
3710    #[serde(skip_serializing_if = "Option::is_none")]
3711    pub category_uid: Option<i64>,
3712    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Datastore Activity</code>.\n\noptional"]
3713    #[serde(rename = "class_name")]
3714    #[serde(skip_serializing_if = "Option::is_none")]
3715    pub class_name: Option<String>,
3716    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
3717    #[serde(rename = "class_uid")]
3718    #[serde(skip_serializing_if = "Option::is_none")]
3719    pub class_uid: Option<i64>,
3720    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
3721    #[serde(rename = "cloud")]
3722    #[serde(skip_serializing_if = "Option::is_none")]
3723    pub cloud: Option<Box<Cloud>>,
3724    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
3725    #[serde(rename = "confidence")]
3726    #[serde(skip_serializing_if = "Option::is_none")]
3727    pub confidence: Option<String>,
3728    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
3729    #[serde(rename = "confidence_id")]
3730    #[serde(skip_serializing_if = "Option::is_none")]
3731    pub confidence_id: Option<i64>,
3732    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
3733    #[serde(rename = "confidence_score")]
3734    #[serde(skip_serializing_if = "Option::is_none")]
3735    pub confidence_score: Option<i64>,
3736    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
3737    #[serde(rename = "count")]
3738    #[serde(skip_serializing_if = "Option::is_none")]
3739    pub count: Option<i64>,
3740    #[doc = "Database\n\nThe database object is used for databases which are typically datastore services that contain an organized collection of structured and unstructured data or a types of data.\n\nrecommended"]
3741    #[serde(rename = "database")]
3742    #[serde(skip_serializing_if = "Option::is_none")]
3743    pub database: Option<Box<Database>>,
3744    #[doc = "Databucket\n\nThe data bucket object is a basic container that holds data, typically organized through the use of data partitions.\n\nrecommended"]
3745    #[serde(rename = "databucket")]
3746    #[serde(skip_serializing_if = "Option::is_none")]
3747    pub databucket: Option<Box<Databucket>>,
3748    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
3749    #[serde(rename = "device")]
3750    #[serde(skip_serializing_if = "Option::is_none")]
3751    pub device: Option<Box<Device>>,
3752    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
3753    #[serde(rename = "disposition")]
3754    #[serde(skip_serializing_if = "Option::is_none")]
3755    pub disposition: Option<String>,
3756    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
3757    #[serde(rename = "disposition_id")]
3758    #[serde(skip_serializing_if = "Option::is_none")]
3759    pub disposition_id: Option<i64>,
3760    #[doc = "Destination Endpoint\n\nDetails about the endpoint hosting the datastore application or service.\n\nrecommended"]
3761    #[serde(rename = "dst_endpoint")]
3762    #[serde(skip_serializing_if = "Option::is_none")]
3763    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
3764    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
3765    #[serde(rename = "duration")]
3766    #[serde(skip_serializing_if = "Option::is_none")]
3767    pub duration: Option<i64>,
3768    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
3769    #[serde(rename = "end_time")]
3770    #[serde(skip_serializing_if = "Option::is_none")]
3771    pub end_time: Option<i64>,
3772    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
3773    #[serde(rename = "end_time_dt")]
3774    #[serde(skip_serializing_if = "Option::is_none")]
3775    pub end_time_dt: Option<String>,
3776    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
3777    #[serde(rename = "enrichments")]
3778    #[serde(skip_serializing_if = "Option::is_none")]
3779    pub enrichments: Option<Vec<Enrichment>>,
3780    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
3781    #[serde(rename = "firewall_rule")]
3782    #[serde(skip_serializing_if = "Option::is_none")]
3783    pub firewall_rule: Option<Box<FirewallRule>>,
3784    #[doc = "HTTP Request\n\nDetails about the underlying http request.\n\nrecommended"]
3785    #[serde(rename = "http_request")]
3786    #[serde(skip_serializing_if = "Option::is_none")]
3787    pub http_request: Option<Box<HttpRequest>>,
3788    #[doc = "HTTP Response\n\nDetails about the underlying http response.\n\nrecommended"]
3789    #[serde(rename = "http_response")]
3790    #[serde(skip_serializing_if = "Option::is_none")]
3791    pub http_response: Option<Box<HttpResponse>>,
3792    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
3793    #[serde(rename = "is_alert")]
3794    #[serde(skip_serializing_if = "Option::is_none")]
3795    pub is_alert: Option<bool>,
3796    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
3797    #[serde(rename = "malware")]
3798    #[serde(skip_serializing_if = "Option::is_none")]
3799    pub malware: Option<Vec<Malware>>,
3800    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
3801    #[serde(rename = "malware_scan_info")]
3802    #[serde(skip_serializing_if = "Option::is_none")]
3803    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
3804    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
3805    #[serde(rename = "message")]
3806    #[serde(skip_serializing_if = "Option::is_none")]
3807    pub message: Option<String>,
3808    #[doc = "Message Context\n\nCommunication context for AI system interactions including protocols, roles, clients, and session information for MCP and other AI communication systems.\n\noptional"]
3809    #[serde(rename = "message_context")]
3810    #[serde(skip_serializing_if = "Option::is_none")]
3811    pub message_context: Option<Box<MessageContext>>,
3812    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
3813    #[serde(rename = "metadata")]
3814    #[serde(skip_serializing_if = "Option::is_none")]
3815    pub metadata: Option<Box<Metadata>>,
3816    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
3817    #[serde(rename = "observables")]
3818    #[serde(skip_serializing_if = "Option::is_none")]
3819    pub observables: Option<Vec<Observable>>,
3820    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
3821    #[serde(rename = "osint")]
3822    #[serde(skip_serializing_if = "Option::is_none")]
3823    pub osint: Option<Vec<Osint>>,
3824    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
3825    #[serde(rename = "policy")]
3826    #[serde(skip_serializing_if = "Option::is_none")]
3827    pub policy: Option<Box<Policy>>,
3828    #[doc = "Query Info\n\nThe query info object holds information related to data access within a datastore. To access, manipulate, delete, or retrieve data from a datastore, a database query must be written using a specific syntax.\n\nrecommended"]
3829    #[serde(rename = "query_info")]
3830    #[serde(skip_serializing_if = "Option::is_none")]
3831    pub query_info: Option<Box<QueryInfo>>,
3832    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
3833    #[serde(rename = "raw_data")]
3834    #[serde(skip_serializing_if = "Option::is_none")]
3835    pub raw_data: Option<String>,
3836    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
3837    #[serde(rename = "raw_data_hash")]
3838    #[serde(skip_serializing_if = "Option::is_none")]
3839    pub raw_data_hash: Option<Box<Fingerprint>>,
3840    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
3841    #[serde(rename = "raw_data_size")]
3842    #[serde(skip_serializing_if = "Option::is_none")]
3843    pub raw_data_size: Option<i64>,
3844    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
3845    #[serde(rename = "risk_details")]
3846    #[serde(skip_serializing_if = "Option::is_none")]
3847    pub risk_details: Option<String>,
3848    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
3849    #[serde(rename = "risk_level")]
3850    #[serde(skip_serializing_if = "Option::is_none")]
3851    pub risk_level: Option<String>,
3852    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
3853    #[serde(rename = "risk_level_id")]
3854    #[serde(skip_serializing_if = "Option::is_none")]
3855    pub risk_level_id: Option<i64>,
3856    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
3857    #[serde(rename = "risk_score")]
3858    #[serde(skip_serializing_if = "Option::is_none")]
3859    pub risk_score: Option<i64>,
3860    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
3861    #[serde(rename = "severity")]
3862    #[serde(skip_serializing_if = "Option::is_none")]
3863    pub severity: Option<String>,
3864    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
3865    #[serde(rename = "severity_id")]
3866    #[serde(skip_serializing_if = "Option::is_none")]
3867    pub severity_id: Option<i64>,
3868    #[doc = "Source Endpoint\n\nDetails about the source of the activity.\n\nrequired"]
3869    #[serde(rename = "src_endpoint")]
3870    #[serde(skip_serializing_if = "Option::is_none")]
3871    pub src_endpoint: Option<Box<NetworkEndpoint>>,
3872    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
3873    #[serde(rename = "start_time")]
3874    #[serde(skip_serializing_if = "Option::is_none")]
3875    pub start_time: Option<i64>,
3876    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
3877    #[serde(rename = "start_time_dt")]
3878    #[serde(skip_serializing_if = "Option::is_none")]
3879    pub start_time_dt: Option<String>,
3880    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
3881    #[serde(rename = "status")]
3882    #[serde(skip_serializing_if = "Option::is_none")]
3883    pub status: Option<String>,
3884    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
3885    #[serde(rename = "status_code")]
3886    #[serde(skip_serializing_if = "Option::is_none")]
3887    pub status_code: Option<String>,
3888    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
3889    #[serde(rename = "status_detail")]
3890    #[serde(skip_serializing_if = "Option::is_none")]
3891    pub status_detail: Option<String>,
3892    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
3893    #[serde(rename = "status_id")]
3894    #[serde(skip_serializing_if = "Option::is_none")]
3895    pub status_id: Option<i64>,
3896    #[doc = "Table\n\nThe table object represents a table within a structured relational database or datastore, which contains columns and rows of data that are able to be create, updated, deleted and queried.\n\nrecommended"]
3897    #[serde(rename = "table")]
3898    #[serde(skip_serializing_if = "Option::is_none")]
3899    pub table: Option<Box<Table>>,
3900    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
3901    #[serde(rename = "time")]
3902    #[serde(skip_serializing_if = "Option::is_none")]
3903    pub time: Option<i64>,
3904    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
3905    #[serde(rename = "time_dt")]
3906    #[serde(skip_serializing_if = "Option::is_none")]
3907    pub time_dt: Option<String>,
3908    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
3909    #[serde(rename = "timezone_offset")]
3910    #[serde(skip_serializing_if = "Option::is_none")]
3911    pub timezone_offset: Option<i64>,
3912    #[doc = "Datastore Type\n\nThe datastore resource type (e.g. database, datastore, or table).\n\noptional"]
3913    #[serde(rename = "type")]
3914    #[serde(skip_serializing_if = "Option::is_none")]
3915    pub r#type: Option<String>,
3916    #[doc = "Datastore Type ID\n\nThe normalized datastore resource type identifier.\n\nrecommended"]
3917    #[serde(rename = "type_id")]
3918    #[serde(skip_serializing_if = "Option::is_none")]
3919    pub type_id: Option<i64>,
3920    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
3921    #[serde(rename = "type_name")]
3922    #[serde(skip_serializing_if = "Option::is_none")]
3923    pub type_name: Option<String>,
3924    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
3925    #[serde(rename = "type_uid")]
3926    #[serde(skip_serializing_if = "Option::is_none")]
3927    pub type_uid: Option<i64>,
3928    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
3929    #[serde(rename = "unmapped")]
3930    #[serde(skip_serializing_if = "Option::is_none")]
3931    pub unmapped: Option<serde_json::Value>,
3932}
3933#[doc = "Detection Finding\n\nA Detection Finding describes detections or alerts generated by security products using correlation engines, detection engines or other methodologies. Note: if the event producer is a security control, the <code>security_control</code> profile should be applied and its <code>attacks</code> information, if present, should be duplicated into the <code>finding_info</code> object. <br><strong>Note: </strong>If the Finding is an incident, i.e. requires incident workflow, also apply the <code>incident</code> profile  or aggregate this finding into an <code>Incident Finding</code>.\n\n[UID:2004] Category: findings | Name: detection_finding"]
3934#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
3935#[serde(default)]
3936#[non_exhaustive]
3937pub struct DetectionFinding {
3938    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
3939    #[serde(rename = "action")]
3940    #[serde(skip_serializing_if = "Option::is_none")]
3941    pub action: Option<String>,
3942    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
3943    #[serde(rename = "action_id")]
3944    #[serde(skip_serializing_if = "Option::is_none")]
3945    pub action_id: Option<i64>,
3946    #[doc = "Activity ID\n\nThe normalized identifier of the finding activity.\n\nrequired"]
3947    #[serde(rename = "activity_id")]
3948    #[serde(skip_serializing_if = "Option::is_none")]
3949    pub activity_id: Option<i64>,
3950    #[doc = "Activity\n\nThe finding activity name, as defined by the <code>activity_id</code>.\n\noptional"]
3951    #[serde(rename = "activity_name")]
3952    #[serde(skip_serializing_if = "Option::is_none")]
3953    pub activity_name: Option<String>,
3954    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
3955    #[serde(rename = "actor")]
3956    #[serde(skip_serializing_if = "Option::is_none")]
3957    pub actor: Option<Box<Actor>>,
3958    #[doc = "Anomaly Analyses\n\nDescribes baseline information about normal activity patterns, along with any detected deviations or anomalies that triggered this finding.\n\noptional"]
3959    #[serde(rename = "anomaly_analyses")]
3960    #[serde(skip_serializing_if = "Option::is_none")]
3961    pub anomaly_analyses: Option<Vec<AnomalyAnalysis>>,
3962    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
3963    #[serde(rename = "api")]
3964    #[serde(skip_serializing_if = "Option::is_none")]
3965    pub api: Option<Box<Api>>,
3966    #[doc = "Assignee\n\nThe details of the user assigned to an Incident.\n\noptional"]
3967    #[serde(rename = "assignee")]
3968    #[serde(skip_serializing_if = "Option::is_none")]
3969    pub assignee: Option<Box<User>>,
3970    #[doc = "Assignee Group\n\nThe details of the group assigned to an Incident.\n\noptional"]
3971    #[serde(rename = "assignee_group")]
3972    #[serde(skip_serializing_if = "Option::is_none")]
3973    pub assignee_group: Option<Box<Group>>,
3974    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
3975    #[serde(rename = "attacks")]
3976    #[serde(skip_serializing_if = "Option::is_none")]
3977    pub attacks: Option<Vec<Attack>>,
3978    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
3979    #[serde(rename = "authorizations")]
3980    #[serde(skip_serializing_if = "Option::is_none")]
3981    pub authorizations: Option<Vec<Authorization>>,
3982    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Findings</code>.\n\noptional"]
3983    #[serde(rename = "category_name")]
3984    #[serde(skip_serializing_if = "Option::is_none")]
3985    pub category_name: Option<String>,
3986    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
3987    #[serde(rename = "category_uid")]
3988    #[serde(skip_serializing_if = "Option::is_none")]
3989    pub category_uid: Option<i64>,
3990    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Detection Finding</code>.\n\noptional"]
3991    #[serde(rename = "class_name")]
3992    #[serde(skip_serializing_if = "Option::is_none")]
3993    pub class_name: Option<String>,
3994    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
3995    #[serde(rename = "class_uid")]
3996    #[serde(skip_serializing_if = "Option::is_none")]
3997    pub class_uid: Option<i64>,
3998    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
3999    #[serde(rename = "cloud")]
4000    #[serde(skip_serializing_if = "Option::is_none")]
4001    pub cloud: Option<Box<Cloud>>,
4002    #[doc = "Comment\n\nA user provided comment about the finding.\n\noptional"]
4003    #[serde(rename = "comment")]
4004    #[serde(skip_serializing_if = "Option::is_none")]
4005    pub comment: Option<String>,
4006    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4007    #[serde(rename = "confidence")]
4008    #[serde(skip_serializing_if = "Option::is_none")]
4009    pub confidence: Option<String>,
4010    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
4011    #[serde(rename = "confidence_id")]
4012    #[serde(skip_serializing_if = "Option::is_none")]
4013    pub confidence_id: Option<i64>,
4014    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
4015    #[serde(rename = "confidence_score")]
4016    #[serde(skip_serializing_if = "Option::is_none")]
4017    pub confidence_score: Option<i64>,
4018    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
4019    #[serde(rename = "count")]
4020    #[serde(skip_serializing_if = "Option::is_none")]
4021    pub count: Option<i64>,
4022    #[doc = "Device\n\nDescribes the affected device/host. If applicable, it can be used in conjunction with <code>Resource(s)</code>. <p> e.g. Specific details about an AWS EC2 instance, that is affected by the Finding.</p>\n\noptional"]
4023    #[serde(rename = "device")]
4024    #[serde(skip_serializing_if = "Option::is_none")]
4025    pub device: Option<Box<Device>>,
4026    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4027    #[serde(rename = "disposition")]
4028    #[serde(skip_serializing_if = "Option::is_none")]
4029    pub disposition: Option<String>,
4030    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
4031    #[serde(rename = "disposition_id")]
4032    #[serde(skip_serializing_if = "Option::is_none")]
4033    pub disposition_id: Option<i64>,
4034    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
4035    #[serde(rename = "duration")]
4036    #[serde(skip_serializing_if = "Option::is_none")]
4037    pub duration: Option<i64>,
4038    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
4039    #[serde(rename = "end_time")]
4040    #[serde(skip_serializing_if = "Option::is_none")]
4041    pub end_time: Option<i64>,
4042    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
4043    #[serde(rename = "end_time_dt")]
4044    #[serde(skip_serializing_if = "Option::is_none")]
4045    pub end_time_dt: Option<String>,
4046    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
4047    #[serde(rename = "enrichments")]
4048    #[serde(skip_serializing_if = "Option::is_none")]
4049    pub enrichments: Option<Vec<Enrichment>>,
4050    #[doc = "Evidence Artifacts\n\nDescribes various evidence artifacts associated to the activity/activities that triggered a security detection.\n\nrecommended"]
4051    #[serde(rename = "evidences")]
4052    #[serde(skip_serializing_if = "Option::is_none")]
4053    pub evidences: Option<Vec<Evidences>>,
4054    #[doc = "Finding Information\n\nDescribes the supporting information about a generated finding.\n\nrequired"]
4055    #[serde(rename = "finding_info")]
4056    #[serde(skip_serializing_if = "Option::is_none")]
4057    pub finding_info: Option<Box<FindingInfo>>,
4058    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
4059    #[serde(rename = "firewall_rule")]
4060    #[serde(skip_serializing_if = "Option::is_none")]
4061    pub firewall_rule: Option<Box<FirewallRule>>,
4062    #[doc = "Impact\n\nThe impact , normalized to the caption of the impact_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4063    #[serde(rename = "impact")]
4064    #[serde(skip_serializing_if = "Option::is_none")]
4065    pub impact: Option<String>,
4066    #[doc = "Impact ID\n\nThe normalized impact of the incident or finding. Per NIST, this is the magnitude of harm that can be expected to result from the consequences of unauthorized disclosure, modification, destruction, or loss of information or information system availability.\n\noptional"]
4067    #[serde(rename = "impact_id")]
4068    #[serde(skip_serializing_if = "Option::is_none")]
4069    pub impact_id: Option<i64>,
4070    #[doc = "Impact Score\n\nThe impact as an integer value of the finding, valid range 0-100.\n\noptional"]
4071    #[serde(rename = "impact_score")]
4072    #[serde(skip_serializing_if = "Option::is_none")]
4073    pub impact_score: Option<i64>,
4074    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. For example, an <code>activity_id</code> of 'Create' could constitute an alertable signal and the value would be <code>true</code>, while 'Close' likely would not and either omit the attribute or set its value to <code>false</code>.  Note that other events with the <code>security_control</code> profile may also be deemed alertable signals and may also carry <code>is_alert = true</code> attributes.\n\nrecommended"]
4075    #[serde(rename = "is_alert")]
4076    #[serde(skip_serializing_if = "Option::is_none")]
4077    pub is_alert: Option<bool>,
4078    #[doc = "Suspected Breach\n\nA determination based on analytics as to whether a potential breach was found.\n\noptional"]
4079    #[serde(rename = "is_suspected_breach")]
4080    #[serde(skip_serializing_if = "Option::is_none")]
4081    pub is_suspected_breach: Option<bool>,
4082    #[doc = "Malware\n\nDescribes malware reported in a Detection Finding.\n\noptional"]
4083    #[serde(rename = "malware")]
4084    #[serde(skip_serializing_if = "Option::is_none")]
4085    pub malware: Option<Vec<Malware>>,
4086    #[doc = "Malware Scan Info\n\nDescribes details about malware scan job that triggered this Detection Finding.\n\noptional"]
4087    #[serde(rename = "malware_scan_info")]
4088    #[serde(skip_serializing_if = "Option::is_none")]
4089    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
4090    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
4091    #[serde(rename = "message")]
4092    #[serde(skip_serializing_if = "Option::is_none")]
4093    pub message: Option<String>,
4094    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
4095    #[serde(rename = "metadata")]
4096    #[serde(skip_serializing_if = "Option::is_none")]
4097    pub metadata: Option<Box<Metadata>>,
4098    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
4099    #[serde(rename = "observables")]
4100    #[serde(skip_serializing_if = "Option::is_none")]
4101    pub observables: Option<Vec<Observable>>,
4102    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
4103    #[serde(rename = "osint")]
4104    #[serde(skip_serializing_if = "Option::is_none")]
4105    pub osint: Option<Vec<Osint>>,
4106    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
4107    #[serde(rename = "policy")]
4108    #[serde(skip_serializing_if = "Option::is_none")]
4109    pub policy: Option<Box<Policy>>,
4110    #[doc = "Priority\n\nThe priority, normalized to the caption of the priority_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4111    #[serde(rename = "priority")]
4112    #[serde(skip_serializing_if = "Option::is_none")]
4113    pub priority: Option<String>,
4114    #[doc = "Priority ID\n\nThe normalized priority. Priority identifies the relative importance of the incident or finding. It is a measurement of urgency.\n\nrecommended"]
4115    #[serde(rename = "priority_id")]
4116    #[serde(skip_serializing_if = "Option::is_none")]
4117    pub priority_id: Option<i64>,
4118    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
4119    #[serde(rename = "raw_data")]
4120    #[serde(skip_serializing_if = "Option::is_none")]
4121    pub raw_data: Option<String>,
4122    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
4123    #[serde(rename = "raw_data_hash")]
4124    #[serde(skip_serializing_if = "Option::is_none")]
4125    pub raw_data_hash: Option<Box<Fingerprint>>,
4126    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
4127    #[serde(rename = "raw_data_size")]
4128    #[serde(skip_serializing_if = "Option::is_none")]
4129    pub raw_data_size: Option<i64>,
4130    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
4131    #[serde(rename = "remediation")]
4132    #[serde(skip_serializing_if = "Option::is_none")]
4133    pub remediation: Option<Box<Remediation>>,
4134    #[doc = "Affected Resources\n\nDescribes details about resources that were the target of the activity that triggered the finding.\n\nrecommended"]
4135    #[serde(rename = "resources")]
4136    #[serde(skip_serializing_if = "Option::is_none")]
4137    pub resources: Option<Vec<ResourceDetails>>,
4138    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
4139    #[serde(rename = "risk_details")]
4140    #[serde(skip_serializing_if = "Option::is_none")]
4141    pub risk_details: Option<String>,
4142    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
4143    #[serde(rename = "risk_level")]
4144    #[serde(skip_serializing_if = "Option::is_none")]
4145    pub risk_level: Option<String>,
4146    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
4147    #[serde(rename = "risk_level_id")]
4148    #[serde(skip_serializing_if = "Option::is_none")]
4149    pub risk_level_id: Option<i64>,
4150    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
4151    #[serde(rename = "risk_score")]
4152    #[serde(skip_serializing_if = "Option::is_none")]
4153    pub risk_score: Option<i64>,
4154    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
4155    #[serde(rename = "severity")]
4156    #[serde(skip_serializing_if = "Option::is_none")]
4157    pub severity: Option<String>,
4158    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
4159    #[serde(rename = "severity_id")]
4160    #[serde(skip_serializing_if = "Option::is_none")]
4161    pub severity_id: Option<i64>,
4162    #[doc = "Source URL\n\nA Url link used to access the original incident.\n\nrecommended"]
4163    #[serde(rename = "src_url")]
4164    #[serde(skip_serializing_if = "Option::is_none")]
4165    pub src_url: Option<String>,
4166    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
4167    #[serde(rename = "start_time")]
4168    #[serde(skip_serializing_if = "Option::is_none")]
4169    pub start_time: Option<i64>,
4170    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
4171    #[serde(rename = "start_time_dt")]
4172    #[serde(skip_serializing_if = "Option::is_none")]
4173    pub start_time_dt: Option<String>,
4174    #[doc = "Status\n\nThe normalized status of the Finding set by the consumer normalized to the caption of the status_id value. In the case of 'Other', it is defined by the source.\n\noptional"]
4175    #[serde(rename = "status")]
4176    #[serde(skip_serializing_if = "Option::is_none")]
4177    pub status: Option<String>,
4178    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
4179    #[serde(rename = "status_code")]
4180    #[serde(skip_serializing_if = "Option::is_none")]
4181    pub status_code: Option<String>,
4182    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
4183    #[serde(rename = "status_detail")]
4184    #[serde(skip_serializing_if = "Option::is_none")]
4185    pub status_detail: Option<String>,
4186    #[doc = "Status ID\n\nThe normalized status identifier of the Finding, set by the consumer.\n\nrecommended"]
4187    #[serde(rename = "status_id")]
4188    #[serde(skip_serializing_if = "Option::is_none")]
4189    pub status_id: Option<i64>,
4190    #[doc = "Ticket\n\nThe linked ticket in the ticketing system.\n\noptional"]
4191    #[serde(rename = "ticket")]
4192    #[serde(skip_serializing_if = "Option::is_none")]
4193    pub ticket: Option<Box<Ticket>>,
4194    #[doc = "Tickets\n\nThe associated ticket(s) in the ticketing system. Each ticket contains details like ticket ID, status, etc.\n\noptional"]
4195    #[serde(rename = "tickets")]
4196    #[serde(skip_serializing_if = "Option::is_none")]
4197    pub tickets: Option<Vec<Ticket>>,
4198    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
4199    #[serde(rename = "time")]
4200    #[serde(skip_serializing_if = "Option::is_none")]
4201    pub time: Option<i64>,
4202    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
4203    #[serde(rename = "time_dt")]
4204    #[serde(skip_serializing_if = "Option::is_none")]
4205    pub time_dt: Option<String>,
4206    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
4207    #[serde(rename = "timezone_offset")]
4208    #[serde(skip_serializing_if = "Option::is_none")]
4209    pub timezone_offset: Option<i64>,
4210    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
4211    #[serde(rename = "type_name")]
4212    #[serde(skip_serializing_if = "Option::is_none")]
4213    pub type_name: Option<String>,
4214    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
4215    #[serde(rename = "type_uid")]
4216    #[serde(skip_serializing_if = "Option::is_none")]
4217    pub type_uid: Option<i64>,
4218    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
4219    #[serde(rename = "unmapped")]
4220    #[serde(skip_serializing_if = "Option::is_none")]
4221    pub unmapped: Option<serde_json::Value>,
4222    #[doc = "Vendor Attributes\n\nThe Vendor Attributes object can be used to represent values of attributes populated by the Vendor/Finding Provider. It can help distinguish between the vendor-provided values and consumer-updated values, of key attributes like <code>severity_id</code>.<br>The original finding producer should not populate this object. It should be populated by consuming systems that support data mutability.\n\noptional"]
4223    #[serde(rename = "vendor_attributes")]
4224    #[serde(skip_serializing_if = "Option::is_none")]
4225    pub vendor_attributes: Option<Box<VendorAttributes>>,
4226    #[doc = "Verdict\n\nThe verdict assigned to an Incident finding.\n\nrecommended"]
4227    #[serde(rename = "verdict")]
4228    #[serde(skip_serializing_if = "Option::is_none")]
4229    pub verdict: Option<String>,
4230    #[doc = "Verdict ID\n\nThe normalized verdict of an Incident.\n\nrecommended"]
4231    #[serde(rename = "verdict_id")]
4232    #[serde(skip_serializing_if = "Option::is_none")]
4233    pub verdict_id: Option<i64>,
4234    #[doc = "Vulnerabilities\n\nDescribes vulnerabilities reported in a Detection Finding.\n\noptional"]
4235    #[serde(rename = "vulnerabilities")]
4236    #[serde(skip_serializing_if = "Option::is_none")]
4237    pub vulnerabilities: Option<Vec<Vulnerability>>,
4238}
4239#[doc = "Device Config State Change\n\nDevice Config State Change events report state changes that impact the security of the device.\n\n[UID:5019] Category: discovery | Name: device_config_state_change"]
4240#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
4241#[serde(default)]
4242#[non_exhaustive]
4243pub struct DeviceConfigStateChange {
4244    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
4245    #[serde(rename = "action")]
4246    #[serde(skip_serializing_if = "Option::is_none")]
4247    pub action: Option<String>,
4248    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
4249    #[serde(rename = "action_id")]
4250    #[serde(skip_serializing_if = "Option::is_none")]
4251    pub action_id: Option<i64>,
4252    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
4253    #[serde(rename = "activity_id")]
4254    #[serde(skip_serializing_if = "Option::is_none")]
4255    pub activity_id: Option<i64>,
4256    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
4257    #[serde(rename = "activity_name")]
4258    #[serde(skip_serializing_if = "Option::is_none")]
4259    pub activity_name: Option<String>,
4260    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
4261    #[serde(rename = "actor")]
4262    #[serde(skip_serializing_if = "Option::is_none")]
4263    pub actor: Option<Box<Actor>>,
4264    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
4265    #[serde(rename = "api")]
4266    #[serde(skip_serializing_if = "Option::is_none")]
4267    pub api: Option<Box<Api>>,
4268    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
4269    #[serde(rename = "attacks")]
4270    #[serde(skip_serializing_if = "Option::is_none")]
4271    pub attacks: Option<Vec<Attack>>,
4272    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
4273    #[serde(rename = "authorizations")]
4274    #[serde(skip_serializing_if = "Option::is_none")]
4275    pub authorizations: Option<Vec<Authorization>>,
4276    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
4277    #[serde(rename = "category_name")]
4278    #[serde(skip_serializing_if = "Option::is_none")]
4279    pub category_name: Option<String>,
4280    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
4281    #[serde(rename = "category_uid")]
4282    #[serde(skip_serializing_if = "Option::is_none")]
4283    pub category_uid: Option<i64>,
4284    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Device Config State Change</code>.\n\noptional"]
4285    #[serde(rename = "class_name")]
4286    #[serde(skip_serializing_if = "Option::is_none")]
4287    pub class_name: Option<String>,
4288    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
4289    #[serde(rename = "class_uid")]
4290    #[serde(skip_serializing_if = "Option::is_none")]
4291    pub class_uid: Option<i64>,
4292    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
4293    #[serde(rename = "cloud")]
4294    #[serde(skip_serializing_if = "Option::is_none")]
4295    pub cloud: Option<Box<Cloud>>,
4296    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4297    #[serde(rename = "confidence")]
4298    #[serde(skip_serializing_if = "Option::is_none")]
4299    pub confidence: Option<String>,
4300    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
4301    #[serde(rename = "confidence_id")]
4302    #[serde(skip_serializing_if = "Option::is_none")]
4303    pub confidence_id: Option<i64>,
4304    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
4305    #[serde(rename = "confidence_score")]
4306    #[serde(skip_serializing_if = "Option::is_none")]
4307    pub confidence_score: Option<i64>,
4308    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
4309    #[serde(rename = "count")]
4310    #[serde(skip_serializing_if = "Option::is_none")]
4311    pub count: Option<i64>,
4312    #[doc = "Device\n\nThe device that is impacted by the state change.\n\nrequired"]
4313    #[serde(rename = "device")]
4314    #[serde(skip_serializing_if = "Option::is_none")]
4315    pub device: Option<Box<Device>>,
4316    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4317    #[serde(rename = "disposition")]
4318    #[serde(skip_serializing_if = "Option::is_none")]
4319    pub disposition: Option<String>,
4320    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
4321    #[serde(rename = "disposition_id")]
4322    #[serde(skip_serializing_if = "Option::is_none")]
4323    pub disposition_id: Option<i64>,
4324    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
4325    #[serde(rename = "duration")]
4326    #[serde(skip_serializing_if = "Option::is_none")]
4327    pub duration: Option<i64>,
4328    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
4329    #[serde(rename = "end_time")]
4330    #[serde(skip_serializing_if = "Option::is_none")]
4331    pub end_time: Option<i64>,
4332    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
4333    #[serde(rename = "end_time_dt")]
4334    #[serde(skip_serializing_if = "Option::is_none")]
4335    pub end_time_dt: Option<String>,
4336    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
4337    #[serde(rename = "enrichments")]
4338    #[serde(skip_serializing_if = "Option::is_none")]
4339    pub enrichments: Option<Vec<Enrichment>>,
4340    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
4341    #[serde(rename = "firewall_rule")]
4342    #[serde(skip_serializing_if = "Option::is_none")]
4343    pub firewall_rule: Option<Box<FirewallRule>>,
4344    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
4345    #[serde(rename = "is_alert")]
4346    #[serde(skip_serializing_if = "Option::is_none")]
4347    pub is_alert: Option<bool>,
4348    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
4349    #[serde(rename = "malware")]
4350    #[serde(skip_serializing_if = "Option::is_none")]
4351    pub malware: Option<Vec<Malware>>,
4352    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
4353    #[serde(rename = "malware_scan_info")]
4354    #[serde(skip_serializing_if = "Option::is_none")]
4355    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
4356    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
4357    #[serde(rename = "message")]
4358    #[serde(skip_serializing_if = "Option::is_none")]
4359    pub message: Option<String>,
4360    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
4361    #[serde(rename = "metadata")]
4362    #[serde(skip_serializing_if = "Option::is_none")]
4363    pub metadata: Option<Box<Metadata>>,
4364    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
4365    #[serde(rename = "observables")]
4366    #[serde(skip_serializing_if = "Option::is_none")]
4367    pub observables: Option<Vec<Observable>>,
4368    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
4369    #[serde(rename = "osint")]
4370    #[serde(skip_serializing_if = "Option::is_none")]
4371    pub osint: Option<Vec<Osint>>,
4372    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
4373    #[serde(rename = "policy")]
4374    #[serde(skip_serializing_if = "Option::is_none")]
4375    pub policy: Option<Box<Policy>>,
4376    #[doc = "Previous Security Level\n\nThe previous security level of the entity\n\nrecommended"]
4377    #[serde(rename = "prev_security_level")]
4378    #[serde(skip_serializing_if = "Option::is_none")]
4379    pub prev_security_level: Option<String>,
4380    #[doc = "Previous Security Level ID\n\nThe previous security level of the entity\n\nrecommended"]
4381    #[serde(rename = "prev_security_level_id")]
4382    #[serde(skip_serializing_if = "Option::is_none")]
4383    pub prev_security_level_id: Option<i64>,
4384    #[doc = "Previous Security States\n\nThe previous security states of the device.\n\nrecommended"]
4385    #[serde(rename = "prev_security_states")]
4386    #[serde(skip_serializing_if = "Option::is_none")]
4387    pub prev_security_states: Option<Vec<SecurityState>>,
4388    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
4389    #[serde(rename = "raw_data")]
4390    #[serde(skip_serializing_if = "Option::is_none")]
4391    pub raw_data: Option<String>,
4392    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
4393    #[serde(rename = "raw_data_hash")]
4394    #[serde(skip_serializing_if = "Option::is_none")]
4395    pub raw_data_hash: Option<Box<Fingerprint>>,
4396    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
4397    #[serde(rename = "raw_data_size")]
4398    #[serde(skip_serializing_if = "Option::is_none")]
4399    pub raw_data_size: Option<i64>,
4400    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
4401    #[serde(rename = "risk_details")]
4402    #[serde(skip_serializing_if = "Option::is_none")]
4403    pub risk_details: Option<String>,
4404    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
4405    #[serde(rename = "risk_level")]
4406    #[serde(skip_serializing_if = "Option::is_none")]
4407    pub risk_level: Option<String>,
4408    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
4409    #[serde(rename = "risk_level_id")]
4410    #[serde(skip_serializing_if = "Option::is_none")]
4411    pub risk_level_id: Option<i64>,
4412    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
4413    #[serde(rename = "risk_score")]
4414    #[serde(skip_serializing_if = "Option::is_none")]
4415    pub risk_score: Option<i64>,
4416    #[doc = "Security Level\n\nThe current security level of the entity\n\nrecommended"]
4417    #[serde(rename = "security_level")]
4418    #[serde(skip_serializing_if = "Option::is_none")]
4419    pub security_level: Option<String>,
4420    #[doc = "Security Level ID\n\nThe current security level of the entity\n\nrecommended"]
4421    #[serde(rename = "security_level_id")]
4422    #[serde(skip_serializing_if = "Option::is_none")]
4423    pub security_level_id: Option<i64>,
4424    #[doc = "Security States\n\nThe current security states of the device.\n\nrecommended"]
4425    #[serde(rename = "security_states")]
4426    #[serde(skip_serializing_if = "Option::is_none")]
4427    pub security_states: Option<Vec<SecurityState>>,
4428    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
4429    #[serde(rename = "severity")]
4430    #[serde(skip_serializing_if = "Option::is_none")]
4431    pub severity: Option<String>,
4432    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
4433    #[serde(rename = "severity_id")]
4434    #[serde(skip_serializing_if = "Option::is_none")]
4435    pub severity_id: Option<i64>,
4436    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
4437    #[serde(rename = "start_time")]
4438    #[serde(skip_serializing_if = "Option::is_none")]
4439    pub start_time: Option<i64>,
4440    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
4441    #[serde(rename = "start_time_dt")]
4442    #[serde(skip_serializing_if = "Option::is_none")]
4443    pub start_time_dt: Option<String>,
4444    #[doc = "Config Change State\n\nThe Config Change Stat, normalized to the caption of the state_id value. In the case of 'Other', it is defined by the source.\n\noptional"]
4445    #[serde(rename = "state")]
4446    #[serde(skip_serializing_if = "Option::is_none")]
4447    pub state: Option<String>,
4448    #[doc = "Config Change State ID\n\nThe Config Change State of the managed entity.\n\nrecommended"]
4449    #[serde(rename = "state_id")]
4450    #[serde(skip_serializing_if = "Option::is_none")]
4451    pub state_id: Option<i64>,
4452    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
4453    #[serde(rename = "status")]
4454    #[serde(skip_serializing_if = "Option::is_none")]
4455    pub status: Option<String>,
4456    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
4457    #[serde(rename = "status_code")]
4458    #[serde(skip_serializing_if = "Option::is_none")]
4459    pub status_code: Option<String>,
4460    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
4461    #[serde(rename = "status_detail")]
4462    #[serde(skip_serializing_if = "Option::is_none")]
4463    pub status_detail: Option<String>,
4464    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
4465    #[serde(rename = "status_id")]
4466    #[serde(skip_serializing_if = "Option::is_none")]
4467    pub status_id: Option<i64>,
4468    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
4469    #[serde(rename = "time")]
4470    #[serde(skip_serializing_if = "Option::is_none")]
4471    pub time: Option<i64>,
4472    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
4473    #[serde(rename = "time_dt")]
4474    #[serde(skip_serializing_if = "Option::is_none")]
4475    pub time_dt: Option<String>,
4476    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
4477    #[serde(rename = "timezone_offset")]
4478    #[serde(skip_serializing_if = "Option::is_none")]
4479    pub timezone_offset: Option<i64>,
4480    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
4481    #[serde(rename = "type_name")]
4482    #[serde(skip_serializing_if = "Option::is_none")]
4483    pub type_name: Option<String>,
4484    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
4485    #[serde(rename = "type_uid")]
4486    #[serde(skip_serializing_if = "Option::is_none")]
4487    pub type_uid: Option<i64>,
4488    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
4489    #[serde(rename = "unmapped")]
4490    #[serde(skip_serializing_if = "Option::is_none")]
4491    pub unmapped: Option<serde_json::Value>,
4492}
4493#[doc = "DHCP Activity\n\nDHCP Activity events report MAC to IP assignment via DHCP from a client or server.\n\n[UID:4004] Category: network | Name: dhcp_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
4494#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
4495#[serde(default)]
4496#[non_exhaustive]
4497pub struct DhcpActivity {
4498    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
4499    #[serde(rename = "action")]
4500    #[serde(skip_serializing_if = "Option::is_none")]
4501    pub action: Option<String>,
4502    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
4503    #[serde(rename = "action_id")]
4504    #[serde(skip_serializing_if = "Option::is_none")]
4505    pub action_id: Option<i64>,
4506    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
4507    #[serde(rename = "activity_id")]
4508    #[serde(skip_serializing_if = "Option::is_none")]
4509    pub activity_id: Option<i64>,
4510    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
4511    #[serde(rename = "activity_name")]
4512    #[serde(skip_serializing_if = "Option::is_none")]
4513    pub activity_name: Option<String>,
4514    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
4515    #[serde(rename = "actor")]
4516    #[serde(skip_serializing_if = "Option::is_none")]
4517    pub actor: Option<Box<Actor>>,
4518    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
4519    #[serde(rename = "api")]
4520    #[serde(skip_serializing_if = "Option::is_none")]
4521    pub api: Option<Box<Api>>,
4522    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
4523    #[serde(rename = "app_name")]
4524    #[serde(skip_serializing_if = "Option::is_none")]
4525    pub app_name: Option<String>,
4526    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
4527    #[serde(rename = "attacks")]
4528    #[serde(skip_serializing_if = "Option::is_none")]
4529    pub attacks: Option<Vec<Attack>>,
4530    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
4531    #[serde(rename = "authorizations")]
4532    #[serde(skip_serializing_if = "Option::is_none")]
4533    pub authorizations: Option<Vec<Authorization>>,
4534    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
4535    #[serde(rename = "category_name")]
4536    #[serde(skip_serializing_if = "Option::is_none")]
4537    pub category_name: Option<String>,
4538    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
4539    #[serde(rename = "category_uid")]
4540    #[serde(skip_serializing_if = "Option::is_none")]
4541    pub category_uid: Option<i64>,
4542    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>DHCP Activity</code>.\n\noptional"]
4543    #[serde(rename = "class_name")]
4544    #[serde(skip_serializing_if = "Option::is_none")]
4545    pub class_name: Option<String>,
4546    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
4547    #[serde(rename = "class_uid")]
4548    #[serde(skip_serializing_if = "Option::is_none")]
4549    pub class_uid: Option<i64>,
4550    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
4551    #[serde(rename = "cloud")]
4552    #[serde(skip_serializing_if = "Option::is_none")]
4553    pub cloud: Option<Box<Cloud>>,
4554    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4555    #[serde(rename = "confidence")]
4556    #[serde(skip_serializing_if = "Option::is_none")]
4557    pub confidence: Option<String>,
4558    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
4559    #[serde(rename = "confidence_id")]
4560    #[serde(skip_serializing_if = "Option::is_none")]
4561    pub confidence_id: Option<i64>,
4562    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
4563    #[serde(rename = "confidence_score")]
4564    #[serde(skip_serializing_if = "Option::is_none")]
4565    pub confidence_score: Option<i64>,
4566    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
4567    #[serde(rename = "connection_info")]
4568    #[serde(skip_serializing_if = "Option::is_none")]
4569    pub connection_info: Option<Box<NetworkConnectionInfo>>,
4570    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
4571    #[serde(rename = "count")]
4572    #[serde(skip_serializing_if = "Option::is_none")]
4573    pub count: Option<i64>,
4574    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
4575    #[serde(rename = "cumulative_traffic")]
4576    #[serde(skip_serializing_if = "Option::is_none")]
4577    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
4578    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
4579    #[serde(rename = "device")]
4580    #[serde(skip_serializing_if = "Option::is_none")]
4581    pub device: Option<Box<Device>>,
4582    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4583    #[serde(rename = "disposition")]
4584    #[serde(skip_serializing_if = "Option::is_none")]
4585    pub disposition: Option<String>,
4586    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
4587    #[serde(rename = "disposition_id")]
4588    #[serde(skip_serializing_if = "Option::is_none")]
4589    pub disposition_id: Option<i64>,
4590    #[doc = "Destination Endpoint\n\nThe responder (server) of the DHCP connection.\n\nrecommended"]
4591    #[serde(rename = "dst_endpoint")]
4592    #[serde(skip_serializing_if = "Option::is_none")]
4593    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
4594    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
4595    #[serde(rename = "duration")]
4596    #[serde(skip_serializing_if = "Option::is_none")]
4597    pub duration: Option<i64>,
4598    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
4599    #[serde(rename = "end_time")]
4600    #[serde(skip_serializing_if = "Option::is_none")]
4601    pub end_time: Option<i64>,
4602    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
4603    #[serde(rename = "end_time_dt")]
4604    #[serde(skip_serializing_if = "Option::is_none")]
4605    pub end_time_dt: Option<String>,
4606    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
4607    #[serde(rename = "enrichments")]
4608    #[serde(skip_serializing_if = "Option::is_none")]
4609    pub enrichments: Option<Vec<Enrichment>>,
4610    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
4611    #[serde(rename = "firewall_rule")]
4612    #[serde(skip_serializing_if = "Option::is_none")]
4613    pub firewall_rule: Option<Box<FirewallRule>>,
4614    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
4615    #[serde(rename = "is_alert")]
4616    #[serde(skip_serializing_if = "Option::is_none")]
4617    pub is_alert: Option<bool>,
4618    #[doc = "Renewal\n\nIndicates whether this is a lease/session renewal event.\n\nrecommended"]
4619    #[serde(rename = "is_renewal")]
4620    #[serde(skip_serializing_if = "Option::is_none")]
4621    pub is_renewal: Option<bool>,
4622    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
4623    #[serde(rename = "ja4_fingerprint_list")]
4624    #[serde(skip_serializing_if = "Option::is_none")]
4625    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
4626    #[doc = "Lease Duration\n\nThis represents the length of the DHCP lease in seconds. This is present in DHCP Ack events.\n\nrecommended"]
4627    #[serde(rename = "lease_dur")]
4628    #[serde(skip_serializing_if = "Option::is_none")]
4629    pub lease_dur: Option<i64>,
4630    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
4631    #[serde(rename = "load_balancer")]
4632    #[serde(skip_serializing_if = "Option::is_none")]
4633    pub load_balancer: Option<Box<LoadBalancer>>,
4634    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
4635    #[serde(rename = "malware")]
4636    #[serde(skip_serializing_if = "Option::is_none")]
4637    pub malware: Option<Vec<Malware>>,
4638    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
4639    #[serde(rename = "malware_scan_info")]
4640    #[serde(skip_serializing_if = "Option::is_none")]
4641    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
4642    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
4643    #[serde(rename = "message")]
4644    #[serde(skip_serializing_if = "Option::is_none")]
4645    pub message: Option<String>,
4646    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
4647    #[serde(rename = "metadata")]
4648    #[serde(skip_serializing_if = "Option::is_none")]
4649    pub metadata: Option<Box<Metadata>>,
4650    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
4651    #[serde(rename = "observables")]
4652    #[serde(skip_serializing_if = "Option::is_none")]
4653    pub observables: Option<Vec<Observable>>,
4654    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
4655    #[serde(rename = "observation_point")]
4656    #[serde(skip_serializing_if = "Option::is_none")]
4657    pub observation_point: Option<String>,
4658    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
4659    #[serde(rename = "observation_point_id")]
4660    #[serde(skip_serializing_if = "Option::is_none")]
4661    pub observation_point_id: Option<i64>,
4662    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
4663    #[serde(rename = "osint")]
4664    #[serde(skip_serializing_if = "Option::is_none")]
4665    pub osint: Option<Vec<Osint>>,
4666    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
4667    #[serde(rename = "policy")]
4668    #[serde(skip_serializing_if = "Option::is_none")]
4669    pub policy: Option<Box<Policy>>,
4670    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
4671    #[serde(rename = "proxy")]
4672    #[serde(skip_serializing_if = "Option::is_none")]
4673    pub proxy: Option<Box<NetworkProxy>>,
4674    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
4675    #[serde(rename = "proxy_connection_info")]
4676    #[serde(skip_serializing_if = "Option::is_none")]
4677    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
4678    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
4679    #[serde(rename = "proxy_endpoint")]
4680    #[serde(skip_serializing_if = "Option::is_none")]
4681    pub proxy_endpoint: Option<Box<NetworkProxy>>,
4682    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
4683    #[serde(rename = "proxy_http_request")]
4684    #[serde(skip_serializing_if = "Option::is_none")]
4685    pub proxy_http_request: Option<Box<HttpRequest>>,
4686    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
4687    #[serde(rename = "proxy_http_response")]
4688    #[serde(skip_serializing_if = "Option::is_none")]
4689    pub proxy_http_response: Option<Box<HttpResponse>>,
4690    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
4691    #[serde(rename = "proxy_tls")]
4692    #[serde(skip_serializing_if = "Option::is_none")]
4693    pub proxy_tls: Option<Box<Tls>>,
4694    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
4695    #[serde(rename = "proxy_traffic")]
4696    #[serde(skip_serializing_if = "Option::is_none")]
4697    pub proxy_traffic: Option<Box<NetworkTraffic>>,
4698    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
4699    #[serde(rename = "raw_data")]
4700    #[serde(skip_serializing_if = "Option::is_none")]
4701    pub raw_data: Option<String>,
4702    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
4703    #[serde(rename = "raw_data_hash")]
4704    #[serde(skip_serializing_if = "Option::is_none")]
4705    pub raw_data_hash: Option<Box<Fingerprint>>,
4706    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
4707    #[serde(rename = "raw_data_size")]
4708    #[serde(skip_serializing_if = "Option::is_none")]
4709    pub raw_data_size: Option<i64>,
4710    #[doc = "Relay\n\nThe network relay that is associated with the event.\n\nrecommended"]
4711    #[serde(rename = "relay")]
4712    #[serde(skip_serializing_if = "Option::is_none")]
4713    pub relay: Option<Box<NetworkInterface>>,
4714    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
4715    #[serde(rename = "risk_details")]
4716    #[serde(skip_serializing_if = "Option::is_none")]
4717    pub risk_details: Option<String>,
4718    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
4719    #[serde(rename = "risk_level")]
4720    #[serde(skip_serializing_if = "Option::is_none")]
4721    pub risk_level: Option<String>,
4722    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
4723    #[serde(rename = "risk_level_id")]
4724    #[serde(skip_serializing_if = "Option::is_none")]
4725    pub risk_level_id: Option<i64>,
4726    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
4727    #[serde(rename = "risk_score")]
4728    #[serde(skip_serializing_if = "Option::is_none")]
4729    pub risk_score: Option<i64>,
4730    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
4731    #[serde(rename = "severity")]
4732    #[serde(skip_serializing_if = "Option::is_none")]
4733    pub severity: Option<String>,
4734    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
4735    #[serde(rename = "severity_id")]
4736    #[serde(skip_serializing_if = "Option::is_none")]
4737    pub severity_id: Option<i64>,
4738    #[doc = "Source Endpoint\n\nThe initiator (client) of the DHCP connection.\n\nrecommended"]
4739    #[serde(rename = "src_endpoint")]
4740    #[serde(skip_serializing_if = "Option::is_none")]
4741    pub src_endpoint: Option<Box<NetworkEndpoint>>,
4742    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
4743    #[serde(rename = "start_time")]
4744    #[serde(skip_serializing_if = "Option::is_none")]
4745    pub start_time: Option<i64>,
4746    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
4747    #[serde(rename = "start_time_dt")]
4748    #[serde(skip_serializing_if = "Option::is_none")]
4749    pub start_time_dt: Option<String>,
4750    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
4751    #[serde(rename = "status")]
4752    #[serde(skip_serializing_if = "Option::is_none")]
4753    pub status: Option<String>,
4754    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
4755    #[serde(rename = "status_code")]
4756    #[serde(skip_serializing_if = "Option::is_none")]
4757    pub status_code: Option<String>,
4758    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
4759    #[serde(rename = "status_detail")]
4760    #[serde(skip_serializing_if = "Option::is_none")]
4761    pub status_detail: Option<String>,
4762    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
4763    #[serde(rename = "status_id")]
4764    #[serde(skip_serializing_if = "Option::is_none")]
4765    pub status_id: Option<i64>,
4766    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
4767    #[serde(rename = "time")]
4768    #[serde(skip_serializing_if = "Option::is_none")]
4769    pub time: Option<i64>,
4770    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
4771    #[serde(rename = "time_dt")]
4772    #[serde(skip_serializing_if = "Option::is_none")]
4773    pub time_dt: Option<String>,
4774    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
4775    #[serde(rename = "timezone_offset")]
4776    #[serde(skip_serializing_if = "Option::is_none")]
4777    pub timezone_offset: Option<i64>,
4778    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
4779    #[serde(rename = "tls")]
4780    #[serde(skip_serializing_if = "Option::is_none")]
4781    pub tls: Option<Box<Tls>>,
4782    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
4783    #[serde(rename = "traffic")]
4784    #[serde(skip_serializing_if = "Option::is_none")]
4785    pub traffic: Option<Box<NetworkTraffic>>,
4786    #[doc = "Transaction UID\n\nThe unique identifier of the transaction. This is typically a random number generated from the client to associate a dhcp request/response pair.\n\nrecommended"]
4787    #[serde(rename = "transaction_uid")]
4788    #[serde(skip_serializing_if = "Option::is_none")]
4789    pub transaction_uid: Option<String>,
4790    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
4791    #[serde(rename = "type_name")]
4792    #[serde(skip_serializing_if = "Option::is_none")]
4793    pub type_name: Option<String>,
4794    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
4795    #[serde(rename = "type_uid")]
4796    #[serde(skip_serializing_if = "Option::is_none")]
4797    pub type_uid: Option<i64>,
4798    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
4799    #[serde(rename = "unmapped")]
4800    #[serde(skip_serializing_if = "Option::is_none")]
4801    pub unmapped: Option<serde_json::Value>,
4802}
4803#[doc = "DNS Activity\n\nDNS Activity events report DNS queries and answers as seen on the network.\n\n[UID:4003] Category: network | Name: dns_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
4804#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
4805#[serde(default)]
4806#[non_exhaustive]
4807pub struct DnsActivity {
4808    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
4809    #[serde(rename = "action")]
4810    #[serde(skip_serializing_if = "Option::is_none")]
4811    pub action: Option<String>,
4812    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
4813    #[serde(rename = "action_id")]
4814    #[serde(skip_serializing_if = "Option::is_none")]
4815    pub action_id: Option<i64>,
4816    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
4817    #[serde(rename = "activity_id")]
4818    #[serde(skip_serializing_if = "Option::is_none")]
4819    pub activity_id: Option<i64>,
4820    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
4821    #[serde(rename = "activity_name")]
4822    #[serde(skip_serializing_if = "Option::is_none")]
4823    pub activity_name: Option<String>,
4824    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
4825    #[serde(rename = "actor")]
4826    #[serde(skip_serializing_if = "Option::is_none")]
4827    pub actor: Option<Box<Actor>>,
4828    #[doc = "DNS Answer\n\nThe Domain Name System (DNS) answers.\n\nrecommended"]
4829    #[serde(rename = "answers")]
4830    #[serde(skip_serializing_if = "Option::is_none")]
4831    pub answers: Option<Vec<DnsAnswer>>,
4832    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
4833    #[serde(rename = "api")]
4834    #[serde(skip_serializing_if = "Option::is_none")]
4835    pub api: Option<Box<Api>>,
4836    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
4837    #[serde(rename = "app_name")]
4838    #[serde(skip_serializing_if = "Option::is_none")]
4839    pub app_name: Option<String>,
4840    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
4841    #[serde(rename = "attacks")]
4842    #[serde(skip_serializing_if = "Option::is_none")]
4843    pub attacks: Option<Vec<Attack>>,
4844    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
4845    #[serde(rename = "authorizations")]
4846    #[serde(skip_serializing_if = "Option::is_none")]
4847    pub authorizations: Option<Vec<Authorization>>,
4848    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
4849    #[serde(rename = "category_name")]
4850    #[serde(skip_serializing_if = "Option::is_none")]
4851    pub category_name: Option<String>,
4852    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
4853    #[serde(rename = "category_uid")]
4854    #[serde(skip_serializing_if = "Option::is_none")]
4855    pub category_uid: Option<i64>,
4856    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>DNS Activity</code>.\n\noptional"]
4857    #[serde(rename = "class_name")]
4858    #[serde(skip_serializing_if = "Option::is_none")]
4859    pub class_name: Option<String>,
4860    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
4861    #[serde(rename = "class_uid")]
4862    #[serde(skip_serializing_if = "Option::is_none")]
4863    pub class_uid: Option<i64>,
4864    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
4865    #[serde(rename = "cloud")]
4866    #[serde(skip_serializing_if = "Option::is_none")]
4867    pub cloud: Option<Box<Cloud>>,
4868    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4869    #[serde(rename = "confidence")]
4870    #[serde(skip_serializing_if = "Option::is_none")]
4871    pub confidence: Option<String>,
4872    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
4873    #[serde(rename = "confidence_id")]
4874    #[serde(skip_serializing_if = "Option::is_none")]
4875    pub confidence_id: Option<i64>,
4876    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
4877    #[serde(rename = "confidence_score")]
4878    #[serde(skip_serializing_if = "Option::is_none")]
4879    pub confidence_score: Option<i64>,
4880    #[doc = "Connection Info\n\nThe network connection information.\n\noptional"]
4881    #[serde(rename = "connection_info")]
4882    #[serde(skip_serializing_if = "Option::is_none")]
4883    pub connection_info: Option<Box<NetworkConnectionInfo>>,
4884    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
4885    #[serde(rename = "count")]
4886    #[serde(skip_serializing_if = "Option::is_none")]
4887    pub count: Option<i64>,
4888    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
4889    #[serde(rename = "cumulative_traffic")]
4890    #[serde(skip_serializing_if = "Option::is_none")]
4891    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
4892    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
4893    #[serde(rename = "device")]
4894    #[serde(skip_serializing_if = "Option::is_none")]
4895    pub device: Option<Box<Device>>,
4896    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
4897    #[serde(rename = "disposition")]
4898    #[serde(skip_serializing_if = "Option::is_none")]
4899    pub disposition: Option<String>,
4900    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
4901    #[serde(rename = "disposition_id")]
4902    #[serde(skip_serializing_if = "Option::is_none")]
4903    pub disposition_id: Option<i64>,
4904    #[doc = "Destination Endpoint\n\nThe responder (server) in a network connection.\n\nrecommended"]
4905    #[serde(rename = "dst_endpoint")]
4906    #[serde(skip_serializing_if = "Option::is_none")]
4907    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
4908    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
4909    #[serde(rename = "duration")]
4910    #[serde(skip_serializing_if = "Option::is_none")]
4911    pub duration: Option<i64>,
4912    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
4913    #[serde(rename = "end_time")]
4914    #[serde(skip_serializing_if = "Option::is_none")]
4915    pub end_time: Option<i64>,
4916    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
4917    #[serde(rename = "end_time_dt")]
4918    #[serde(skip_serializing_if = "Option::is_none")]
4919    pub end_time_dt: Option<String>,
4920    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
4921    #[serde(rename = "enrichments")]
4922    #[serde(skip_serializing_if = "Option::is_none")]
4923    pub enrichments: Option<Vec<Enrichment>>,
4924    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
4925    #[serde(rename = "firewall_rule")]
4926    #[serde(skip_serializing_if = "Option::is_none")]
4927    pub firewall_rule: Option<Box<FirewallRule>>,
4928    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
4929    #[serde(rename = "is_alert")]
4930    #[serde(skip_serializing_if = "Option::is_none")]
4931    pub is_alert: Option<bool>,
4932    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
4933    #[serde(rename = "ja4_fingerprint_list")]
4934    #[serde(skip_serializing_if = "Option::is_none")]
4935    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
4936    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
4937    #[serde(rename = "load_balancer")]
4938    #[serde(skip_serializing_if = "Option::is_none")]
4939    pub load_balancer: Option<Box<LoadBalancer>>,
4940    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
4941    #[serde(rename = "malware")]
4942    #[serde(skip_serializing_if = "Option::is_none")]
4943    pub malware: Option<Vec<Malware>>,
4944    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
4945    #[serde(rename = "malware_scan_info")]
4946    #[serde(skip_serializing_if = "Option::is_none")]
4947    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
4948    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
4949    #[serde(rename = "message")]
4950    #[serde(skip_serializing_if = "Option::is_none")]
4951    pub message: Option<String>,
4952    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
4953    #[serde(rename = "metadata")]
4954    #[serde(skip_serializing_if = "Option::is_none")]
4955    pub metadata: Option<Box<Metadata>>,
4956    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
4957    #[serde(rename = "observables")]
4958    #[serde(skip_serializing_if = "Option::is_none")]
4959    pub observables: Option<Vec<Observable>>,
4960    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
4961    #[serde(rename = "observation_point")]
4962    #[serde(skip_serializing_if = "Option::is_none")]
4963    pub observation_point: Option<String>,
4964    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
4965    #[serde(rename = "observation_point_id")]
4966    #[serde(skip_serializing_if = "Option::is_none")]
4967    pub observation_point_id: Option<i64>,
4968    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
4969    #[serde(rename = "osint")]
4970    #[serde(skip_serializing_if = "Option::is_none")]
4971    pub osint: Option<Vec<Osint>>,
4972    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
4973    #[serde(rename = "policy")]
4974    #[serde(skip_serializing_if = "Option::is_none")]
4975    pub policy: Option<Box<Policy>>,
4976    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
4977    #[serde(rename = "proxy")]
4978    #[serde(skip_serializing_if = "Option::is_none")]
4979    pub proxy: Option<Box<NetworkProxy>>,
4980    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
4981    #[serde(rename = "proxy_connection_info")]
4982    #[serde(skip_serializing_if = "Option::is_none")]
4983    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
4984    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
4985    #[serde(rename = "proxy_endpoint")]
4986    #[serde(skip_serializing_if = "Option::is_none")]
4987    pub proxy_endpoint: Option<Box<NetworkProxy>>,
4988    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
4989    #[serde(rename = "proxy_http_request")]
4990    #[serde(skip_serializing_if = "Option::is_none")]
4991    pub proxy_http_request: Option<Box<HttpRequest>>,
4992    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
4993    #[serde(rename = "proxy_http_response")]
4994    #[serde(skip_serializing_if = "Option::is_none")]
4995    pub proxy_http_response: Option<Box<HttpResponse>>,
4996    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
4997    #[serde(rename = "proxy_tls")]
4998    #[serde(skip_serializing_if = "Option::is_none")]
4999    pub proxy_tls: Option<Box<Tls>>,
5000    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
5001    #[serde(rename = "proxy_traffic")]
5002    #[serde(skip_serializing_if = "Option::is_none")]
5003    pub proxy_traffic: Option<Box<NetworkTraffic>>,
5004    #[doc = "DNS Query\n\nThe Domain Name System (DNS) query.\n\nrecommended"]
5005    #[serde(rename = "query")]
5006    #[serde(skip_serializing_if = "Option::is_none")]
5007    pub query: Option<Box<DnsQuery>>,
5008    #[doc = "Query Time\n\nThe Domain Name System (DNS) query time.\n\nrecommended"]
5009    #[serde(rename = "query_time")]
5010    #[serde(skip_serializing_if = "Option::is_none")]
5011    pub query_time: Option<i64>,
5012    #[doc = "Query Time\n\nThe Domain Name System (DNS) query time.\n\noptional"]
5013    #[serde(rename = "query_time_dt")]
5014    #[serde(skip_serializing_if = "Option::is_none")]
5015    pub query_time_dt: Option<String>,
5016    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
5017    #[serde(rename = "raw_data")]
5018    #[serde(skip_serializing_if = "Option::is_none")]
5019    pub raw_data: Option<String>,
5020    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
5021    #[serde(rename = "raw_data_hash")]
5022    #[serde(skip_serializing_if = "Option::is_none")]
5023    pub raw_data_hash: Option<Box<Fingerprint>>,
5024    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
5025    #[serde(rename = "raw_data_size")]
5026    #[serde(skip_serializing_if = "Option::is_none")]
5027    pub raw_data_size: Option<i64>,
5028    #[doc = "Response Code\n\nThe DNS server response code, normalized to the caption of the rcode_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
5029    #[serde(rename = "rcode")]
5030    #[serde(skip_serializing_if = "Option::is_none")]
5031    pub rcode: Option<String>,
5032    #[doc = "Response Code ID\n\nThe normalized identifier of the DNS server response code. See <a target='_blank' href='https://datatracker.ietf.org/doc/html/rfc6895'>RFC-6895</a>.\n\nrecommended"]
5033    #[serde(rename = "rcode_id")]
5034    #[serde(skip_serializing_if = "Option::is_none")]
5035    pub rcode_id: Option<i64>,
5036    #[doc = "Response Time\n\nThe Domain Name System (DNS) response time.\n\nrecommended"]
5037    #[serde(rename = "response_time")]
5038    #[serde(skip_serializing_if = "Option::is_none")]
5039    pub response_time: Option<i64>,
5040    #[doc = "Response Time\n\nThe Domain Name System (DNS) response time.\n\noptional"]
5041    #[serde(rename = "response_time_dt")]
5042    #[serde(skip_serializing_if = "Option::is_none")]
5043    pub response_time_dt: Option<String>,
5044    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
5045    #[serde(rename = "risk_details")]
5046    #[serde(skip_serializing_if = "Option::is_none")]
5047    pub risk_details: Option<String>,
5048    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
5049    #[serde(rename = "risk_level")]
5050    #[serde(skip_serializing_if = "Option::is_none")]
5051    pub risk_level: Option<String>,
5052    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
5053    #[serde(rename = "risk_level_id")]
5054    #[serde(skip_serializing_if = "Option::is_none")]
5055    pub risk_level_id: Option<i64>,
5056    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
5057    #[serde(rename = "risk_score")]
5058    #[serde(skip_serializing_if = "Option::is_none")]
5059    pub risk_score: Option<i64>,
5060    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
5061    #[serde(rename = "severity")]
5062    #[serde(skip_serializing_if = "Option::is_none")]
5063    pub severity: Option<String>,
5064    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
5065    #[serde(rename = "severity_id")]
5066    #[serde(skip_serializing_if = "Option::is_none")]
5067    pub severity_id: Option<i64>,
5068    #[doc = "Source Endpoint\n\nThe initiator (client) of the network connection.\n\nrecommended"]
5069    #[serde(rename = "src_endpoint")]
5070    #[serde(skip_serializing_if = "Option::is_none")]
5071    pub src_endpoint: Option<Box<NetworkEndpoint>>,
5072    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
5073    #[serde(rename = "start_time")]
5074    #[serde(skip_serializing_if = "Option::is_none")]
5075    pub start_time: Option<i64>,
5076    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
5077    #[serde(rename = "start_time_dt")]
5078    #[serde(skip_serializing_if = "Option::is_none")]
5079    pub start_time_dt: Option<String>,
5080    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
5081    #[serde(rename = "status")]
5082    #[serde(skip_serializing_if = "Option::is_none")]
5083    pub status: Option<String>,
5084    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
5085    #[serde(rename = "status_code")]
5086    #[serde(skip_serializing_if = "Option::is_none")]
5087    pub status_code: Option<String>,
5088    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
5089    #[serde(rename = "status_detail")]
5090    #[serde(skip_serializing_if = "Option::is_none")]
5091    pub status_detail: Option<String>,
5092    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
5093    #[serde(rename = "status_id")]
5094    #[serde(skip_serializing_if = "Option::is_none")]
5095    pub status_id: Option<i64>,
5096    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
5097    #[serde(rename = "time")]
5098    #[serde(skip_serializing_if = "Option::is_none")]
5099    pub time: Option<i64>,
5100    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
5101    #[serde(rename = "time_dt")]
5102    #[serde(skip_serializing_if = "Option::is_none")]
5103    pub time_dt: Option<String>,
5104    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
5105    #[serde(rename = "timezone_offset")]
5106    #[serde(skip_serializing_if = "Option::is_none")]
5107    pub timezone_offset: Option<i64>,
5108    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
5109    #[serde(rename = "tls")]
5110    #[serde(skip_serializing_if = "Option::is_none")]
5111    pub tls: Option<Box<Tls>>,
5112    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\noptional"]
5113    #[serde(rename = "traffic")]
5114    #[serde(skip_serializing_if = "Option::is_none")]
5115    pub traffic: Option<Box<NetworkTraffic>>,
5116    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
5117    #[serde(rename = "type_name")]
5118    #[serde(skip_serializing_if = "Option::is_none")]
5119    pub type_name: Option<String>,
5120    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
5121    #[serde(rename = "type_uid")]
5122    #[serde(skip_serializing_if = "Option::is_none")]
5123    pub type_uid: Option<i64>,
5124    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
5125    #[serde(rename = "unmapped")]
5126    #[serde(skip_serializing_if = "Option::is_none")]
5127    pub unmapped: Option<serde_json::Value>,
5128}
5129#[doc = "Drone Flights Activity\n\nDrone Flights Activity events report the activity of Unmanned Aerial Systems (UAS), their Operators, and mission-planning and authorization metadata as reported by the UAS platforms themselves, by Counter-UAS (CUAS) systems, or other remote monitoring or sensing infrastructure. Based on the Remote ID defined in Standard Specification for Remote ID and Tracking (ASTM Designation: F3411-22a) <a target='_blank' href='https://cdn.standards.iteh.ai/samples/112830/71297057ac42432880a203654f213709/ASTM-F3411-22a.pdf'>ASTM F3411-22a</a>\n\n[UID:8001] Category: unmanned_systems | Name: drone_flights_activity\n\n**Constraints:**\n* at_least_one: `[src_endpoint`,`unmanned_aerial_system`,`unmanned_system_operator`,`unmanned_system_operating_area]`\n"]
5130#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
5131#[serde(default)]
5132#[non_exhaustive]
5133pub struct DroneFlightsActivity {
5134    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
5135    #[serde(rename = "action")]
5136    #[serde(skip_serializing_if = "Option::is_none")]
5137    pub action: Option<String>,
5138    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
5139    #[serde(rename = "action_id")]
5140    #[serde(skip_serializing_if = "Option::is_none")]
5141    pub action_id: Option<i64>,
5142    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
5143    #[serde(rename = "activity_id")]
5144    #[serde(skip_serializing_if = "Option::is_none")]
5145    pub activity_id: Option<i64>,
5146    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
5147    #[serde(rename = "activity_name")]
5148    #[serde(skip_serializing_if = "Option::is_none")]
5149    pub activity_name: Option<String>,
5150    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
5151    #[serde(rename = "actor")]
5152    #[serde(skip_serializing_if = "Option::is_none")]
5153    pub actor: Option<Box<Actor>>,
5154    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
5155    #[serde(rename = "api")]
5156    #[serde(skip_serializing_if = "Option::is_none")]
5157    pub api: Option<Box<Api>>,
5158    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
5159    #[serde(rename = "attacks")]
5160    #[serde(skip_serializing_if = "Option::is_none")]
5161    pub attacks: Option<Vec<Attack>>,
5162    #[doc = "Authentication Type\n\nThe authentication type as defined by the caption of <code>auth_protocol_id</code>. In the case of 'Other', it is defined by the event source.\n\noptional"]
5163    #[serde(rename = "auth_protocol")]
5164    #[serde(skip_serializing_if = "Option::is_none")]
5165    pub auth_protocol: Option<String>,
5166    #[doc = "Authentication Type ID\n\nThe normalized identifier of the authentication type used to authorize a flight plan or mission.\n\noptional"]
5167    #[serde(rename = "auth_protocol_id")]
5168    #[serde(skip_serializing_if = "Option::is_none")]
5169    pub auth_protocol_id: Option<i64>,
5170    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
5171    #[serde(rename = "authorizations")]
5172    #[serde(skip_serializing_if = "Option::is_none")]
5173    pub authorizations: Option<Vec<Authorization>>,
5174    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Unmanned Systems</code>.\n\noptional"]
5175    #[serde(rename = "category_name")]
5176    #[serde(skip_serializing_if = "Option::is_none")]
5177    pub category_name: Option<String>,
5178    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
5179    #[serde(rename = "category_uid")]
5180    #[serde(skip_serializing_if = "Option::is_none")]
5181    pub category_uid: Option<i64>,
5182    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Drone Flights Activity</code>.\n\noptional"]
5183    #[serde(rename = "class_name")]
5184    #[serde(skip_serializing_if = "Option::is_none")]
5185    pub class_name: Option<String>,
5186    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
5187    #[serde(rename = "class_uid")]
5188    #[serde(skip_serializing_if = "Option::is_none")]
5189    pub class_uid: Option<i64>,
5190    #[doc = "Classification Type\n\nUA Classification - Allows a region to classify UAS in a regional specific manner. The format may differ from region to region.\n\noptional"]
5191    #[serde(rename = "classification")]
5192    #[serde(skip_serializing_if = "Option::is_none")]
5193    pub classification: Option<String>,
5194    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
5195    #[serde(rename = "cloud")]
5196    #[serde(skip_serializing_if = "Option::is_none")]
5197    pub cloud: Option<Box<Cloud>>,
5198    #[doc = "Operation Description\n\nThis optional, free-text field enables the operator to describe the purpose of a flight, if so desired.\n\noptional"]
5199    #[serde(rename = "comment")]
5200    #[serde(skip_serializing_if = "Option::is_none")]
5201    pub comment: Option<String>,
5202    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
5203    #[serde(rename = "confidence")]
5204    #[serde(skip_serializing_if = "Option::is_none")]
5205    pub confidence: Option<String>,
5206    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
5207    #[serde(rename = "confidence_id")]
5208    #[serde(skip_serializing_if = "Option::is_none")]
5209    pub confidence_id: Option<i64>,
5210    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
5211    #[serde(rename = "confidence_score")]
5212    #[serde(skip_serializing_if = "Option::is_none")]
5213    pub confidence_score: Option<i64>,
5214    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
5215    #[serde(rename = "connection_info")]
5216    #[serde(skip_serializing_if = "Option::is_none")]
5217    pub connection_info: Option<Box<NetworkConnectionInfo>>,
5218    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
5219    #[serde(rename = "count")]
5220    #[serde(skip_serializing_if = "Option::is_none")]
5221    pub count: Option<i64>,
5222    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
5223    #[serde(rename = "device")]
5224    #[serde(skip_serializing_if = "Option::is_none")]
5225    pub device: Option<Box<Device>>,
5226    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
5227    #[serde(rename = "disposition")]
5228    #[serde(skip_serializing_if = "Option::is_none")]
5229    pub disposition: Option<String>,
5230    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
5231    #[serde(rename = "disposition_id")]
5232    #[serde(skip_serializing_if = "Option::is_none")]
5233    pub disposition_id: Option<i64>,
5234    #[doc = "Destination Endpoint\n\nThe destination network endpoint of the Unmanned Aerial System (UAS), Counter Unmanned Aerial System (CUAS) platform, or other unmanned systems monitoring and/or sensing infrastructure.\n\nrequired"]
5235    #[serde(rename = "dst_endpoint")]
5236    #[serde(skip_serializing_if = "Option::is_none")]
5237    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
5238    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
5239    #[serde(rename = "duration")]
5240    #[serde(skip_serializing_if = "Option::is_none")]
5241    pub duration: Option<i64>,
5242    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
5243    #[serde(rename = "end_time")]
5244    #[serde(skip_serializing_if = "Option::is_none")]
5245    pub end_time: Option<i64>,
5246    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
5247    #[serde(rename = "end_time_dt")]
5248    #[serde(skip_serializing_if = "Option::is_none")]
5249    pub end_time_dt: Option<String>,
5250    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
5251    #[serde(rename = "enrichments")]
5252    #[serde(skip_serializing_if = "Option::is_none")]
5253    pub enrichments: Option<Vec<Enrichment>>,
5254    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
5255    #[serde(rename = "firewall_rule")]
5256    #[serde(skip_serializing_if = "Option::is_none")]
5257    pub firewall_rule: Option<Box<FirewallRule>>,
5258    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
5259    #[serde(rename = "is_alert")]
5260    #[serde(skip_serializing_if = "Option::is_none")]
5261    pub is_alert: Option<bool>,
5262    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
5263    #[serde(rename = "malware")]
5264    #[serde(skip_serializing_if = "Option::is_none")]
5265    pub malware: Option<Vec<Malware>>,
5266    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
5267    #[serde(rename = "malware_scan_info")]
5268    #[serde(skip_serializing_if = "Option::is_none")]
5269    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
5270    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
5271    #[serde(rename = "message")]
5272    #[serde(skip_serializing_if = "Option::is_none")]
5273    pub message: Option<String>,
5274    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
5275    #[serde(rename = "metadata")]
5276    #[serde(skip_serializing_if = "Option::is_none")]
5277    pub metadata: Option<Box<Metadata>>,
5278    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
5279    #[serde(rename = "observables")]
5280    #[serde(skip_serializing_if = "Option::is_none")]
5281    pub observables: Option<Vec<Observable>>,
5282    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
5283    #[serde(rename = "osint")]
5284    #[serde(skip_serializing_if = "Option::is_none")]
5285    pub osint: Option<Vec<Osint>>,
5286    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
5287    #[serde(rename = "policy")]
5288    #[serde(skip_serializing_if = "Option::is_none")]
5289    pub policy: Option<Box<Policy>>,
5290    #[doc = "Remote ID Protocol\n\nThe networking protocol associated with the Remote ID device or beacon. E.g. <code>BLE</code>, <code>LTE</code>, <code>802.11</code>.\n\noptional"]
5291    #[serde(rename = "protocol_name")]
5292    #[serde(skip_serializing_if = "Option::is_none")]
5293    pub protocol_name: Option<String>,
5294    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\nrecommended"]
5295    #[serde(rename = "proxy_endpoint")]
5296    #[serde(skip_serializing_if = "Option::is_none")]
5297    pub proxy_endpoint: Option<Box<NetworkProxy>>,
5298    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
5299    #[serde(rename = "raw_data")]
5300    #[serde(skip_serializing_if = "Option::is_none")]
5301    pub raw_data: Option<String>,
5302    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
5303    #[serde(rename = "raw_data_hash")]
5304    #[serde(skip_serializing_if = "Option::is_none")]
5305    pub raw_data_hash: Option<Box<Fingerprint>>,
5306    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
5307    #[serde(rename = "raw_data_size")]
5308    #[serde(skip_serializing_if = "Option::is_none")]
5309    pub raw_data_size: Option<i64>,
5310    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
5311    #[serde(rename = "risk_details")]
5312    #[serde(skip_serializing_if = "Option::is_none")]
5313    pub risk_details: Option<String>,
5314    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
5315    #[serde(rename = "risk_level")]
5316    #[serde(skip_serializing_if = "Option::is_none")]
5317    pub risk_level: Option<String>,
5318    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
5319    #[serde(rename = "risk_level_id")]
5320    #[serde(skip_serializing_if = "Option::is_none")]
5321    pub risk_level_id: Option<i64>,
5322    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
5323    #[serde(rename = "risk_score")]
5324    #[serde(skip_serializing_if = "Option::is_none")]
5325    pub risk_score: Option<i64>,
5326    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
5327    #[serde(rename = "severity")]
5328    #[serde(skip_serializing_if = "Option::is_none")]
5329    pub severity: Option<String>,
5330    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
5331    #[serde(rename = "severity_id")]
5332    #[serde(skip_serializing_if = "Option::is_none")]
5333    pub severity_id: Option<i64>,
5334    #[doc = "Source Endpoint\n\nThe source network endpoint of the Unmanned Aerial System (UAS), Counter Unmanned Aerial System (CUAS) platform, or other unmanned systems monitoring and/or sensing infrastructure.\n\noptional"]
5335    #[serde(rename = "src_endpoint")]
5336    #[serde(skip_serializing_if = "Option::is_none")]
5337    pub src_endpoint: Option<Box<NetworkEndpoint>>,
5338    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
5339    #[serde(rename = "start_time")]
5340    #[serde(skip_serializing_if = "Option::is_none")]
5341    pub start_time: Option<i64>,
5342    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
5343    #[serde(rename = "start_time_dt")]
5344    #[serde(skip_serializing_if = "Option::is_none")]
5345    pub start_time_dt: Option<String>,
5346    #[doc = "Operational Status\n\nThe normalized Operational status for the Unmanned Aerial System (UAS) normalized to the caption of the <code>status_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
5347    #[serde(rename = "status")]
5348    #[serde(skip_serializing_if = "Option::is_none")]
5349    pub status: Option<String>,
5350    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
5351    #[serde(rename = "status_code")]
5352    #[serde(skip_serializing_if = "Option::is_none")]
5353    pub status_code: Option<String>,
5354    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
5355    #[serde(rename = "status_detail")]
5356    #[serde(skip_serializing_if = "Option::is_none")]
5357    pub status_detail: Option<String>,
5358    #[doc = "Operational Status ID\n\nThe normalized Operational status identifier for the Unmanned Aerial System (UAS).\n\nrecommended"]
5359    #[serde(rename = "status_id")]
5360    #[serde(skip_serializing_if = "Option::is_none")]
5361    pub status_id: Option<i64>,
5362    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
5363    #[serde(rename = "time")]
5364    #[serde(skip_serializing_if = "Option::is_none")]
5365    pub time: Option<i64>,
5366    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
5367    #[serde(rename = "time_dt")]
5368    #[serde(skip_serializing_if = "Option::is_none")]
5369    pub time_dt: Option<String>,
5370    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
5371    #[serde(rename = "timezone_offset")]
5372    #[serde(skip_serializing_if = "Option::is_none")]
5373    pub timezone_offset: Option<i64>,
5374    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
5375    #[serde(rename = "tls")]
5376    #[serde(skip_serializing_if = "Option::is_none")]
5377    pub tls: Option<Box<Tls>>,
5378    #[doc = "Traffic\n\nTraffic refers to the amount of data transmitted from a Unmanned Aerial System (UAS) or Counter Unmanned Aerial System (UAS) (CUAS) system at a given point of time. Ex: <code>bytes_in</code> and <code>bytes_out</code>.\n\noptional"]
5379    #[serde(rename = "traffic")]
5380    #[serde(skip_serializing_if = "Option::is_none")]
5381    pub traffic: Option<Box<NetworkTraffic>>,
5382    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
5383    #[serde(rename = "type_name")]
5384    #[serde(skip_serializing_if = "Option::is_none")]
5385    pub type_name: Option<String>,
5386    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
5387    #[serde(rename = "type_uid")]
5388    #[serde(skip_serializing_if = "Option::is_none")]
5389    pub type_uid: Option<i64>,
5390    #[doc = "Unmanned Aerial System\n\nThe Unmanned Aerial System object describes the characteristics, Position Location Information (PLI), and other metadata of Unmanned Aerial Systems (UAS) and other unmanned and drone systems used in Remote ID. Remote ID is defined in the Standard Specification for Remote ID and Tracking (ASTM Designation: F3411-22a) <a target='_blank' href='https://cdn.standards.iteh.ai/samples/112830/71297057ac42432880a203654f213709/ASTM-F3411-22a.pdf'>ASTM F3411-22a</a>.\n\nrequired"]
5391    #[serde(rename = "unmanned_aerial_system")]
5392    #[serde(skip_serializing_if = "Option::is_none")]
5393    pub unmanned_aerial_system: Option<Box<UnmannedAerialSystem>>,
5394    #[doc = "UAS Operating Area\n\nThe UAS Operating Area object describes details about a precise area of operations for a UAS flight or mission.\n\nrecommended"]
5395    #[serde(rename = "unmanned_system_operating_area")]
5396    #[serde(skip_serializing_if = "Option::is_none")]
5397    pub unmanned_system_operating_area: Option<Box<UnmannedSystemOperatingArea>>,
5398    #[doc = "Unmanned Systems Operator\n\nThe human or machine operator of an Unmanned System.\n\nrequired"]
5399    #[serde(rename = "unmanned_system_operator")]
5400    #[serde(skip_serializing_if = "Option::is_none")]
5401    pub unmanned_system_operator: Option<Box<User>>,
5402    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
5403    #[serde(rename = "unmapped")]
5404    #[serde(skip_serializing_if = "Option::is_none")]
5405    pub unmapped: Option<serde_json::Value>,
5406}
5407#[doc = "Email Activity\n\nEmail Activity events report SMTP protocol and email activities including those with embedded URLs and files. See the <code>Email</code> object for details.\n\n[UID:4009] Category: network | Name: email_activity"]
5408#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
5409#[serde(default)]
5410#[non_exhaustive]
5411pub struct EmailActivity {
5412    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
5413    #[serde(rename = "action")]
5414    #[serde(skip_serializing_if = "Option::is_none")]
5415    pub action: Option<String>,
5416    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
5417    #[serde(rename = "action_id")]
5418    #[serde(skip_serializing_if = "Option::is_none")]
5419    pub action_id: Option<i64>,
5420    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
5421    #[serde(rename = "activity_id")]
5422    #[serde(skip_serializing_if = "Option::is_none")]
5423    pub activity_id: Option<i64>,
5424    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
5425    #[serde(rename = "activity_name")]
5426    #[serde(skip_serializing_if = "Option::is_none")]
5427    pub activity_name: Option<String>,
5428    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
5429    #[serde(rename = "actor")]
5430    #[serde(skip_serializing_if = "Option::is_none")]
5431    pub actor: Option<Box<Actor>>,
5432    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
5433    #[serde(rename = "api")]
5434    #[serde(skip_serializing_if = "Option::is_none")]
5435    pub api: Option<Box<Api>>,
5436    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
5437    #[serde(rename = "attacks")]
5438    #[serde(skip_serializing_if = "Option::is_none")]
5439    pub attacks: Option<Vec<Attack>>,
5440    #[doc = "Attempt\n\nThe attempt number for attempting to deliver the email.\n\noptional"]
5441    #[serde(rename = "attempt")]
5442    #[serde(skip_serializing_if = "Option::is_none")]
5443    pub attempt: Option<i64>,
5444    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
5445    #[serde(rename = "authorizations")]
5446    #[serde(skip_serializing_if = "Option::is_none")]
5447    pub authorizations: Option<Vec<Authorization>>,
5448    #[doc = "Protocol Banner\n\nThe initial connection response that a messaging server receives after it connects to an email server.\n\noptional"]
5449    #[serde(rename = "banner")]
5450    #[serde(skip_serializing_if = "Option::is_none")]
5451    pub banner: Option<String>,
5452    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
5453    #[serde(rename = "category_name")]
5454    #[serde(skip_serializing_if = "Option::is_none")]
5455    pub category_name: Option<String>,
5456    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
5457    #[serde(rename = "category_uid")]
5458    #[serde(skip_serializing_if = "Option::is_none")]
5459    pub category_uid: Option<i64>,
5460    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Email Activity</code>.\n\noptional"]
5461    #[serde(rename = "class_name")]
5462    #[serde(skip_serializing_if = "Option::is_none")]
5463    pub class_name: Option<String>,
5464    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
5465    #[serde(rename = "class_uid")]
5466    #[serde(skip_serializing_if = "Option::is_none")]
5467    pub class_uid: Option<i64>,
5468    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
5469    #[serde(rename = "cloud")]
5470    #[serde(skip_serializing_if = "Option::is_none")]
5471    pub cloud: Option<Box<Cloud>>,
5472    #[doc = "Command\n\nThe command issued by the initiator (client), such as SMTP HELO or EHLO.\n\nrecommended"]
5473    #[serde(rename = "command")]
5474    #[serde(skip_serializing_if = "Option::is_none")]
5475    pub command: Option<String>,
5476    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
5477    #[serde(rename = "confidence")]
5478    #[serde(skip_serializing_if = "Option::is_none")]
5479    pub confidence: Option<String>,
5480    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
5481    #[serde(rename = "confidence_id")]
5482    #[serde(skip_serializing_if = "Option::is_none")]
5483    pub confidence_id: Option<i64>,
5484    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
5485    #[serde(rename = "confidence_score")]
5486    #[serde(skip_serializing_if = "Option::is_none")]
5487    pub confidence_score: Option<i64>,
5488    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
5489    #[serde(rename = "count")]
5490    #[serde(skip_serializing_if = "Option::is_none")]
5491    pub count: Option<i64>,
5492    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
5493    #[serde(rename = "device")]
5494    #[serde(skip_serializing_if = "Option::is_none")]
5495    pub device: Option<Box<Device>>,
5496    #[doc = "Direction\n\nThe direction of the email, as defined by the <code>direction_id</code> value.\n\noptional"]
5497    #[serde(rename = "direction")]
5498    #[serde(skip_serializing_if = "Option::is_none")]
5499    pub direction: Option<String>,
5500    #[doc = "Direction ID\n\n<p>The direction of the email relative to the scanning host or organization.</p>Email scanned at an internet gateway might be characterized as inbound to the organization from the Internet, outbound from the organization to the Internet, or internal within the organization. Email scanned at a workstation might be characterized as inbound to, or outbound from the workstation.\n\nrequired"]
5501    #[serde(rename = "direction_id")]
5502    #[serde(skip_serializing_if = "Option::is_none")]
5503    pub direction_id: Option<i64>,
5504    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
5505    #[serde(rename = "disposition")]
5506    #[serde(skip_serializing_if = "Option::is_none")]
5507    pub disposition: Option<String>,
5508    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
5509    #[serde(rename = "disposition_id")]
5510    #[serde(skip_serializing_if = "Option::is_none")]
5511    pub disposition_id: Option<i64>,
5512    #[doc = "Destination Endpoint\n\nThe responder (server) receiving the email.\n\nrecommended"]
5513    #[serde(rename = "dst_endpoint")]
5514    #[serde(skip_serializing_if = "Option::is_none")]
5515    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
5516    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
5517    #[serde(rename = "duration")]
5518    #[serde(skip_serializing_if = "Option::is_none")]
5519    pub duration: Option<i64>,
5520    #[doc = "Email\n\nThe email object.\n\nrequired"]
5521    #[serde(rename = "email")]
5522    #[serde(skip_serializing_if = "Option::is_none")]
5523    pub email: Option<Box<Email>>,
5524    #[doc = "Email Authentication\n\nThe SPF, DKIM and DMARC attributes of an email.\n\nrecommended"]
5525    #[serde(rename = "email_auth")]
5526    #[serde(skip_serializing_if = "Option::is_none")]
5527    pub email_auth: Option<Box<EmailAuth>>,
5528    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
5529    #[serde(rename = "end_time")]
5530    #[serde(skip_serializing_if = "Option::is_none")]
5531    pub end_time: Option<i64>,
5532    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
5533    #[serde(rename = "end_time_dt")]
5534    #[serde(skip_serializing_if = "Option::is_none")]
5535    pub end_time_dt: Option<String>,
5536    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
5537    #[serde(rename = "enrichments")]
5538    #[serde(skip_serializing_if = "Option::is_none")]
5539    pub enrichments: Option<Vec<Enrichment>>,
5540    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
5541    #[serde(rename = "firewall_rule")]
5542    #[serde(skip_serializing_if = "Option::is_none")]
5543    pub firewall_rule: Option<Box<FirewallRule>>,
5544    #[doc = "From\n\nThe sender address from the transmission envelope. This reflects the actual sending party and may differ from the 'From' header in the message.\n\nrecommended"]
5545    #[serde(rename = "from")]
5546    #[serde(skip_serializing_if = "Option::is_none")]
5547    pub from: Option<String>,
5548    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
5549    #[serde(rename = "is_alert")]
5550    #[serde(skip_serializing_if = "Option::is_none")]
5551    pub is_alert: Option<bool>,
5552    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
5553    #[serde(rename = "malware")]
5554    #[serde(skip_serializing_if = "Option::is_none")]
5555    pub malware: Option<Vec<Malware>>,
5556    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
5557    #[serde(rename = "malware_scan_info")]
5558    #[serde(skip_serializing_if = "Option::is_none")]
5559    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
5560    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
5561    #[serde(rename = "message")]
5562    #[serde(skip_serializing_if = "Option::is_none")]
5563    pub message: Option<String>,
5564    #[doc = "Message Trace UID\n\nThe identifier that tracks a message that travels through multiple points of a messaging service.\n\nrecommended"]
5565    #[serde(rename = "message_trace_uid")]
5566    #[serde(skip_serializing_if = "Option::is_none")]
5567    pub message_trace_uid: Option<String>,
5568    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
5569    #[serde(rename = "metadata")]
5570    #[serde(skip_serializing_if = "Option::is_none")]
5571    pub metadata: Option<Box<Metadata>>,
5572    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
5573    #[serde(rename = "observables")]
5574    #[serde(skip_serializing_if = "Option::is_none")]
5575    pub observables: Option<Vec<Observable>>,
5576    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
5577    #[serde(rename = "osint")]
5578    #[serde(skip_serializing_if = "Option::is_none")]
5579    pub osint: Option<Vec<Osint>>,
5580    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
5581    #[serde(rename = "policy")]
5582    #[serde(skip_serializing_if = "Option::is_none")]
5583    pub policy: Option<Box<Policy>>,
5584    #[doc = "Protocol Name\n\nThe Protocol Name specifies the email communication protocol, such as SMTP, IMAP, or POP3.\n\nrecommended"]
5585    #[serde(rename = "protocol_name")]
5586    #[serde(skip_serializing_if = "Option::is_none")]
5587    pub protocol_name: Option<String>,
5588    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
5589    #[serde(rename = "raw_data")]
5590    #[serde(skip_serializing_if = "Option::is_none")]
5591    pub raw_data: Option<String>,
5592    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
5593    #[serde(rename = "raw_data_hash")]
5594    #[serde(skip_serializing_if = "Option::is_none")]
5595    pub raw_data_hash: Option<Box<Fingerprint>>,
5596    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
5597    #[serde(rename = "raw_data_size")]
5598    #[serde(skip_serializing_if = "Option::is_none")]
5599    pub raw_data_size: Option<i64>,
5600    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
5601    #[serde(rename = "risk_details")]
5602    #[serde(skip_serializing_if = "Option::is_none")]
5603    pub risk_details: Option<String>,
5604    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
5605    #[serde(rename = "risk_level")]
5606    #[serde(skip_serializing_if = "Option::is_none")]
5607    pub risk_level: Option<String>,
5608    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
5609    #[serde(rename = "risk_level_id")]
5610    #[serde(skip_serializing_if = "Option::is_none")]
5611    pub risk_level_id: Option<i64>,
5612    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
5613    #[serde(rename = "risk_score")]
5614    #[serde(skip_serializing_if = "Option::is_none")]
5615    pub risk_score: Option<i64>,
5616    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
5617    #[serde(rename = "severity")]
5618    #[serde(skip_serializing_if = "Option::is_none")]
5619    pub severity: Option<String>,
5620    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
5621    #[serde(rename = "severity_id")]
5622    #[serde(skip_serializing_if = "Option::is_none")]
5623    pub severity_id: Option<i64>,
5624    #[doc = "SMTP Hello\n\nThe value of the SMTP HELO or EHLO command sent by the initiator (client).\n\nrecommended"]
5625    #[serde(rename = "smtp_hello")]
5626    #[serde(skip_serializing_if = "Option::is_none")]
5627    pub smtp_hello: Option<String>,
5628    #[doc = "Source Endpoint\n\nThe initiator (client) sending the email.\n\nrecommended"]
5629    #[serde(rename = "src_endpoint")]
5630    #[serde(skip_serializing_if = "Option::is_none")]
5631    pub src_endpoint: Option<Box<NetworkEndpoint>>,
5632    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
5633    #[serde(rename = "start_time")]
5634    #[serde(skip_serializing_if = "Option::is_none")]
5635    pub start_time: Option<i64>,
5636    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
5637    #[serde(rename = "start_time_dt")]
5638    #[serde(skip_serializing_if = "Option::is_none")]
5639    pub start_time_dt: Option<String>,
5640    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
5641    #[serde(rename = "status")]
5642    #[serde(skip_serializing_if = "Option::is_none")]
5643    pub status: Option<String>,
5644    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
5645    #[serde(rename = "status_code")]
5646    #[serde(skip_serializing_if = "Option::is_none")]
5647    pub status_code: Option<String>,
5648    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
5649    #[serde(rename = "status_detail")]
5650    #[serde(skip_serializing_if = "Option::is_none")]
5651    pub status_detail: Option<String>,
5652    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
5653    #[serde(rename = "status_id")]
5654    #[serde(skip_serializing_if = "Option::is_none")]
5655    pub status_id: Option<i64>,
5656    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
5657    #[serde(rename = "time")]
5658    #[serde(skip_serializing_if = "Option::is_none")]
5659    pub time: Option<i64>,
5660    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
5661    #[serde(rename = "time_dt")]
5662    #[serde(skip_serializing_if = "Option::is_none")]
5663    pub time_dt: Option<String>,
5664    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
5665    #[serde(rename = "timezone_offset")]
5666    #[serde(skip_serializing_if = "Option::is_none")]
5667    pub timezone_offset: Option<i64>,
5668    #[doc = "To\n\nThe recipient address from the transmission envelope. This may differ from the 'To' header and represents where the message was actually delivered.\n\nrecommended"]
5669    #[serde(rename = "to")]
5670    #[serde(skip_serializing_if = "Option::is_none")]
5671    pub to: Option<Vec<String>>,
5672    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
5673    #[serde(rename = "type_name")]
5674    #[serde(skip_serializing_if = "Option::is_none")]
5675    pub type_name: Option<String>,
5676    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
5677    #[serde(rename = "type_uid")]
5678    #[serde(skip_serializing_if = "Option::is_none")]
5679    pub type_uid: Option<i64>,
5680    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
5681    #[serde(rename = "unmapped")]
5682    #[serde(skip_serializing_if = "Option::is_none")]
5683    pub unmapped: Option<serde_json::Value>,
5684}
5685#[doc = "Email File Activity\n\nEmail File Activity events report files within emails.\n\n[UID:4011] Category: network | Name: email_file_activity"]
5686#[deprecated(
5687    note = "Use the <code>Email Activity</code> class with the <code>email.files[]</code> array instead. (Since 1.3.0)"
5688)]
5689#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
5690#[serde(default)]
5691#[non_exhaustive]
5692pub struct EmailFileActivity {
5693    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
5694    #[serde(rename = "action")]
5695    #[serde(skip_serializing_if = "Option::is_none")]
5696    pub action: Option<String>,
5697    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
5698    #[serde(rename = "action_id")]
5699    #[serde(skip_serializing_if = "Option::is_none")]
5700    pub action_id: Option<i64>,
5701    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
5702    #[serde(rename = "activity_id")]
5703    #[serde(skip_serializing_if = "Option::is_none")]
5704    pub activity_id: Option<i64>,
5705    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
5706    #[serde(rename = "activity_name")]
5707    #[serde(skip_serializing_if = "Option::is_none")]
5708    pub activity_name: Option<String>,
5709    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
5710    #[serde(rename = "actor")]
5711    #[serde(skip_serializing_if = "Option::is_none")]
5712    pub actor: Option<Box<Actor>>,
5713    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
5714    #[serde(rename = "api")]
5715    #[serde(skip_serializing_if = "Option::is_none")]
5716    pub api: Option<Box<Api>>,
5717    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
5718    #[serde(rename = "attacks")]
5719    #[serde(skip_serializing_if = "Option::is_none")]
5720    pub attacks: Option<Vec<Attack>>,
5721    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
5722    #[serde(rename = "authorizations")]
5723    #[serde(skip_serializing_if = "Option::is_none")]
5724    pub authorizations: Option<Vec<Authorization>>,
5725    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
5726    #[serde(rename = "category_name")]
5727    #[serde(skip_serializing_if = "Option::is_none")]
5728    pub category_name: Option<String>,
5729    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
5730    #[serde(rename = "category_uid")]
5731    #[serde(skip_serializing_if = "Option::is_none")]
5732    pub category_uid: Option<i64>,
5733    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Email File Activity</code>.\n\noptional"]
5734    #[serde(rename = "class_name")]
5735    #[serde(skip_serializing_if = "Option::is_none")]
5736    pub class_name: Option<String>,
5737    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
5738    #[serde(rename = "class_uid")]
5739    #[serde(skip_serializing_if = "Option::is_none")]
5740    pub class_uid: Option<i64>,
5741    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
5742    #[serde(rename = "cloud")]
5743    #[serde(skip_serializing_if = "Option::is_none")]
5744    pub cloud: Option<Box<Cloud>>,
5745    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
5746    #[serde(rename = "confidence")]
5747    #[serde(skip_serializing_if = "Option::is_none")]
5748    pub confidence: Option<String>,
5749    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
5750    #[serde(rename = "confidence_id")]
5751    #[serde(skip_serializing_if = "Option::is_none")]
5752    pub confidence_id: Option<i64>,
5753    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
5754    #[serde(rename = "confidence_score")]
5755    #[serde(skip_serializing_if = "Option::is_none")]
5756    pub confidence_score: Option<i64>,
5757    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
5758    #[serde(rename = "count")]
5759    #[serde(skip_serializing_if = "Option::is_none")]
5760    pub count: Option<i64>,
5761    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
5762    #[serde(rename = "device")]
5763    #[serde(skip_serializing_if = "Option::is_none")]
5764    pub device: Option<Box<Device>>,
5765    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
5766    #[serde(rename = "disposition")]
5767    #[serde(skip_serializing_if = "Option::is_none")]
5768    pub disposition: Option<String>,
5769    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
5770    #[serde(rename = "disposition_id")]
5771    #[serde(skip_serializing_if = "Option::is_none")]
5772    pub disposition_id: Option<i64>,
5773    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
5774    #[serde(rename = "duration")]
5775    #[serde(skip_serializing_if = "Option::is_none")]
5776    pub duration: Option<i64>,
5777    #[doc = "Email UID\n\nThe unique identifier of the email, used to correlate related email alert and activity events.\n\nrequired"]
5778    #[serde(rename = "email_uid")]
5779    #[serde(skip_serializing_if = "Option::is_none")]
5780    pub email_uid: Option<String>,
5781    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
5782    #[serde(rename = "end_time")]
5783    #[serde(skip_serializing_if = "Option::is_none")]
5784    pub end_time: Option<i64>,
5785    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
5786    #[serde(rename = "end_time_dt")]
5787    #[serde(skip_serializing_if = "Option::is_none")]
5788    pub end_time_dt: Option<String>,
5789    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
5790    #[serde(rename = "enrichments")]
5791    #[serde(skip_serializing_if = "Option::is_none")]
5792    pub enrichments: Option<Vec<Enrichment>>,
5793    #[doc = "File\n\nThe email file attachment.\n\nrequired"]
5794    #[serde(rename = "file")]
5795    #[serde(skip_serializing_if = "Option::is_none")]
5796    pub file: Option<Box<File>>,
5797    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
5798    #[serde(rename = "firewall_rule")]
5799    #[serde(skip_serializing_if = "Option::is_none")]
5800    pub firewall_rule: Option<Box<FirewallRule>>,
5801    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
5802    #[serde(rename = "is_alert")]
5803    #[serde(skip_serializing_if = "Option::is_none")]
5804    pub is_alert: Option<bool>,
5805    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
5806    #[serde(rename = "malware")]
5807    #[serde(skip_serializing_if = "Option::is_none")]
5808    pub malware: Option<Vec<Malware>>,
5809    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
5810    #[serde(rename = "malware_scan_info")]
5811    #[serde(skip_serializing_if = "Option::is_none")]
5812    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
5813    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
5814    #[serde(rename = "message")]
5815    #[serde(skip_serializing_if = "Option::is_none")]
5816    pub message: Option<String>,
5817    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
5818    #[serde(rename = "metadata")]
5819    #[serde(skip_serializing_if = "Option::is_none")]
5820    pub metadata: Option<Box<Metadata>>,
5821    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
5822    #[serde(rename = "observables")]
5823    #[serde(skip_serializing_if = "Option::is_none")]
5824    pub observables: Option<Vec<Observable>>,
5825    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
5826    #[serde(rename = "osint")]
5827    #[serde(skip_serializing_if = "Option::is_none")]
5828    pub osint: Option<Vec<Osint>>,
5829    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
5830    #[serde(rename = "policy")]
5831    #[serde(skip_serializing_if = "Option::is_none")]
5832    pub policy: Option<Box<Policy>>,
5833    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
5834    #[serde(rename = "raw_data")]
5835    #[serde(skip_serializing_if = "Option::is_none")]
5836    pub raw_data: Option<String>,
5837    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
5838    #[serde(rename = "raw_data_hash")]
5839    #[serde(skip_serializing_if = "Option::is_none")]
5840    pub raw_data_hash: Option<Box<Fingerprint>>,
5841    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
5842    #[serde(rename = "raw_data_size")]
5843    #[serde(skip_serializing_if = "Option::is_none")]
5844    pub raw_data_size: Option<i64>,
5845    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
5846    #[serde(rename = "risk_details")]
5847    #[serde(skip_serializing_if = "Option::is_none")]
5848    pub risk_details: Option<String>,
5849    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
5850    #[serde(rename = "risk_level")]
5851    #[serde(skip_serializing_if = "Option::is_none")]
5852    pub risk_level: Option<String>,
5853    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
5854    #[serde(rename = "risk_level_id")]
5855    #[serde(skip_serializing_if = "Option::is_none")]
5856    pub risk_level_id: Option<i64>,
5857    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
5858    #[serde(rename = "risk_score")]
5859    #[serde(skip_serializing_if = "Option::is_none")]
5860    pub risk_score: Option<i64>,
5861    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
5862    #[serde(rename = "severity")]
5863    #[serde(skip_serializing_if = "Option::is_none")]
5864    pub severity: Option<String>,
5865    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
5866    #[serde(rename = "severity_id")]
5867    #[serde(skip_serializing_if = "Option::is_none")]
5868    pub severity_id: Option<i64>,
5869    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
5870    #[serde(rename = "start_time")]
5871    #[serde(skip_serializing_if = "Option::is_none")]
5872    pub start_time: Option<i64>,
5873    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
5874    #[serde(rename = "start_time_dt")]
5875    #[serde(skip_serializing_if = "Option::is_none")]
5876    pub start_time_dt: Option<String>,
5877    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
5878    #[serde(rename = "status")]
5879    #[serde(skip_serializing_if = "Option::is_none")]
5880    pub status: Option<String>,
5881    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
5882    #[serde(rename = "status_code")]
5883    #[serde(skip_serializing_if = "Option::is_none")]
5884    pub status_code: Option<String>,
5885    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
5886    #[serde(rename = "status_detail")]
5887    #[serde(skip_serializing_if = "Option::is_none")]
5888    pub status_detail: Option<String>,
5889    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
5890    #[serde(rename = "status_id")]
5891    #[serde(skip_serializing_if = "Option::is_none")]
5892    pub status_id: Option<i64>,
5893    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
5894    #[serde(rename = "time")]
5895    #[serde(skip_serializing_if = "Option::is_none")]
5896    pub time: Option<i64>,
5897    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
5898    #[serde(rename = "time_dt")]
5899    #[serde(skip_serializing_if = "Option::is_none")]
5900    pub time_dt: Option<String>,
5901    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
5902    #[serde(rename = "timezone_offset")]
5903    #[serde(skip_serializing_if = "Option::is_none")]
5904    pub timezone_offset: Option<i64>,
5905    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
5906    #[serde(rename = "type_name")]
5907    #[serde(skip_serializing_if = "Option::is_none")]
5908    pub type_name: Option<String>,
5909    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
5910    #[serde(rename = "type_uid")]
5911    #[serde(skip_serializing_if = "Option::is_none")]
5912    pub type_uid: Option<i64>,
5913    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
5914    #[serde(rename = "unmapped")]
5915    #[serde(skip_serializing_if = "Option::is_none")]
5916    pub unmapped: Option<serde_json::Value>,
5917}
5918#[doc = "Email URL Activity\n\nEmail URL Activity events report URLs within an email.\n\n[UID:4012] Category: network | Name: email_url_activity"]
5919#[deprecated(
5920    note = "Use the <code>Email Activity</code> class with the <code>email.urls[]</code> array instead. (Since 1.3.0)"
5921)]
5922#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
5923#[serde(default)]
5924#[non_exhaustive]
5925pub struct EmailUrlActivity {
5926    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
5927    #[serde(rename = "action")]
5928    #[serde(skip_serializing_if = "Option::is_none")]
5929    pub action: Option<String>,
5930    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
5931    #[serde(rename = "action_id")]
5932    #[serde(skip_serializing_if = "Option::is_none")]
5933    pub action_id: Option<i64>,
5934    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
5935    #[serde(rename = "activity_id")]
5936    #[serde(skip_serializing_if = "Option::is_none")]
5937    pub activity_id: Option<i64>,
5938    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
5939    #[serde(rename = "activity_name")]
5940    #[serde(skip_serializing_if = "Option::is_none")]
5941    pub activity_name: Option<String>,
5942    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
5943    #[serde(rename = "actor")]
5944    #[serde(skip_serializing_if = "Option::is_none")]
5945    pub actor: Option<Box<Actor>>,
5946    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
5947    #[serde(rename = "api")]
5948    #[serde(skip_serializing_if = "Option::is_none")]
5949    pub api: Option<Box<Api>>,
5950    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
5951    #[serde(rename = "attacks")]
5952    #[serde(skip_serializing_if = "Option::is_none")]
5953    pub attacks: Option<Vec<Attack>>,
5954    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
5955    #[serde(rename = "authorizations")]
5956    #[serde(skip_serializing_if = "Option::is_none")]
5957    pub authorizations: Option<Vec<Authorization>>,
5958    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
5959    #[serde(rename = "category_name")]
5960    #[serde(skip_serializing_if = "Option::is_none")]
5961    pub category_name: Option<String>,
5962    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
5963    #[serde(rename = "category_uid")]
5964    #[serde(skip_serializing_if = "Option::is_none")]
5965    pub category_uid: Option<i64>,
5966    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Email URL Activity</code>.\n\noptional"]
5967    #[serde(rename = "class_name")]
5968    #[serde(skip_serializing_if = "Option::is_none")]
5969    pub class_name: Option<String>,
5970    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
5971    #[serde(rename = "class_uid")]
5972    #[serde(skip_serializing_if = "Option::is_none")]
5973    pub class_uid: Option<i64>,
5974    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
5975    #[serde(rename = "cloud")]
5976    #[serde(skip_serializing_if = "Option::is_none")]
5977    pub cloud: Option<Box<Cloud>>,
5978    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
5979    #[serde(rename = "confidence")]
5980    #[serde(skip_serializing_if = "Option::is_none")]
5981    pub confidence: Option<String>,
5982    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
5983    #[serde(rename = "confidence_id")]
5984    #[serde(skip_serializing_if = "Option::is_none")]
5985    pub confidence_id: Option<i64>,
5986    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
5987    #[serde(rename = "confidence_score")]
5988    #[serde(skip_serializing_if = "Option::is_none")]
5989    pub confidence_score: Option<i64>,
5990    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
5991    #[serde(rename = "count")]
5992    #[serde(skip_serializing_if = "Option::is_none")]
5993    pub count: Option<i64>,
5994    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
5995    #[serde(rename = "device")]
5996    #[serde(skip_serializing_if = "Option::is_none")]
5997    pub device: Option<Box<Device>>,
5998    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
5999    #[serde(rename = "disposition")]
6000    #[serde(skip_serializing_if = "Option::is_none")]
6001    pub disposition: Option<String>,
6002    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
6003    #[serde(rename = "disposition_id")]
6004    #[serde(skip_serializing_if = "Option::is_none")]
6005    pub disposition_id: Option<i64>,
6006    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
6007    #[serde(rename = "duration")]
6008    #[serde(skip_serializing_if = "Option::is_none")]
6009    pub duration: Option<i64>,
6010    #[doc = "Email UID\n\nThe unique identifier of the email, used to correlate related email alert and activity events.\n\nrequired"]
6011    #[serde(rename = "email_uid")]
6012    #[serde(skip_serializing_if = "Option::is_none")]
6013    pub email_uid: Option<String>,
6014    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6015    #[serde(rename = "end_time")]
6016    #[serde(skip_serializing_if = "Option::is_none")]
6017    pub end_time: Option<i64>,
6018    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6019    #[serde(rename = "end_time_dt")]
6020    #[serde(skip_serializing_if = "Option::is_none")]
6021    pub end_time_dt: Option<String>,
6022    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
6023    #[serde(rename = "enrichments")]
6024    #[serde(skip_serializing_if = "Option::is_none")]
6025    pub enrichments: Option<Vec<Enrichment>>,
6026    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
6027    #[serde(rename = "firewall_rule")]
6028    #[serde(skip_serializing_if = "Option::is_none")]
6029    pub firewall_rule: Option<Box<FirewallRule>>,
6030    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
6031    #[serde(rename = "is_alert")]
6032    #[serde(skip_serializing_if = "Option::is_none")]
6033    pub is_alert: Option<bool>,
6034    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
6035    #[serde(rename = "malware")]
6036    #[serde(skip_serializing_if = "Option::is_none")]
6037    pub malware: Option<Vec<Malware>>,
6038    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
6039    #[serde(rename = "malware_scan_info")]
6040    #[serde(skip_serializing_if = "Option::is_none")]
6041    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
6042    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
6043    #[serde(rename = "message")]
6044    #[serde(skip_serializing_if = "Option::is_none")]
6045    pub message: Option<String>,
6046    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
6047    #[serde(rename = "metadata")]
6048    #[serde(skip_serializing_if = "Option::is_none")]
6049    pub metadata: Option<Box<Metadata>>,
6050    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
6051    #[serde(rename = "observables")]
6052    #[serde(skip_serializing_if = "Option::is_none")]
6053    pub observables: Option<Vec<Observable>>,
6054    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
6055    #[serde(rename = "osint")]
6056    #[serde(skip_serializing_if = "Option::is_none")]
6057    pub osint: Option<Vec<Osint>>,
6058    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
6059    #[serde(rename = "policy")]
6060    #[serde(skip_serializing_if = "Option::is_none")]
6061    pub policy: Option<Box<Policy>>,
6062    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
6063    #[serde(rename = "raw_data")]
6064    #[serde(skip_serializing_if = "Option::is_none")]
6065    pub raw_data: Option<String>,
6066    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
6067    #[serde(rename = "raw_data_hash")]
6068    #[serde(skip_serializing_if = "Option::is_none")]
6069    pub raw_data_hash: Option<Box<Fingerprint>>,
6070    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
6071    #[serde(rename = "raw_data_size")]
6072    #[serde(skip_serializing_if = "Option::is_none")]
6073    pub raw_data_size: Option<i64>,
6074    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
6075    #[serde(rename = "risk_details")]
6076    #[serde(skip_serializing_if = "Option::is_none")]
6077    pub risk_details: Option<String>,
6078    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
6079    #[serde(rename = "risk_level")]
6080    #[serde(skip_serializing_if = "Option::is_none")]
6081    pub risk_level: Option<String>,
6082    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
6083    #[serde(rename = "risk_level_id")]
6084    #[serde(skip_serializing_if = "Option::is_none")]
6085    pub risk_level_id: Option<i64>,
6086    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
6087    #[serde(rename = "risk_score")]
6088    #[serde(skip_serializing_if = "Option::is_none")]
6089    pub risk_score: Option<i64>,
6090    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
6091    #[serde(rename = "severity")]
6092    #[serde(skip_serializing_if = "Option::is_none")]
6093    pub severity: Option<String>,
6094    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
6095    #[serde(rename = "severity_id")]
6096    #[serde(skip_serializing_if = "Option::is_none")]
6097    pub severity_id: Option<i64>,
6098    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
6099    #[serde(rename = "start_time")]
6100    #[serde(skip_serializing_if = "Option::is_none")]
6101    pub start_time: Option<i64>,
6102    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
6103    #[serde(rename = "start_time_dt")]
6104    #[serde(skip_serializing_if = "Option::is_none")]
6105    pub start_time_dt: Option<String>,
6106    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
6107    #[serde(rename = "status")]
6108    #[serde(skip_serializing_if = "Option::is_none")]
6109    pub status: Option<String>,
6110    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
6111    #[serde(rename = "status_code")]
6112    #[serde(skip_serializing_if = "Option::is_none")]
6113    pub status_code: Option<String>,
6114    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
6115    #[serde(rename = "status_detail")]
6116    #[serde(skip_serializing_if = "Option::is_none")]
6117    pub status_detail: Option<String>,
6118    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
6119    #[serde(rename = "status_id")]
6120    #[serde(skip_serializing_if = "Option::is_none")]
6121    pub status_id: Option<i64>,
6122    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
6123    #[serde(rename = "time")]
6124    #[serde(skip_serializing_if = "Option::is_none")]
6125    pub time: Option<i64>,
6126    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
6127    #[serde(rename = "time_dt")]
6128    #[serde(skip_serializing_if = "Option::is_none")]
6129    pub time_dt: Option<String>,
6130    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
6131    #[serde(rename = "timezone_offset")]
6132    #[serde(skip_serializing_if = "Option::is_none")]
6133    pub timezone_offset: Option<i64>,
6134    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
6135    #[serde(rename = "type_name")]
6136    #[serde(skip_serializing_if = "Option::is_none")]
6137    pub type_name: Option<String>,
6138    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
6139    #[serde(rename = "type_uid")]
6140    #[serde(skip_serializing_if = "Option::is_none")]
6141    pub type_uid: Option<i64>,
6142    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
6143    #[serde(rename = "unmapped")]
6144    #[serde(skip_serializing_if = "Option::is_none")]
6145    pub unmapped: Option<serde_json::Value>,
6146    #[doc = "URL\n\nThe URL included in the email content.\n\nrequired"]
6147    #[serde(rename = "url")]
6148    #[serde(skip_serializing_if = "Option::is_none")]
6149    pub url: Option<Box<Url>>,
6150}
6151#[doc = "Entity Management\n\nEntity Management events report activity by a managed client, a micro service, or a user at a management console. The activity can be a create, read, update, and delete operation on a managed entity.\n\n[UID:3004] Category: iam | Name: entity_management"]
6152#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
6153#[serde(default)]
6154#[non_exhaustive]
6155pub struct EntityManagement {
6156    #[doc = "Access List\n\nThe list of requested access rights.\n\noptional"]
6157    #[serde(rename = "access_list")]
6158    #[serde(skip_serializing_if = "Option::is_none")]
6159    pub access_list: Option<Vec<String>>,
6160    #[doc = "Access Mask\n\nThe access mask in a platform-native format.\n\noptional"]
6161    #[serde(rename = "access_mask")]
6162    #[serde(skip_serializing_if = "Option::is_none")]
6163    pub access_mask: Option<i64>,
6164    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
6165    #[serde(rename = "action")]
6166    #[serde(skip_serializing_if = "Option::is_none")]
6167    pub action: Option<String>,
6168    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
6169    #[serde(rename = "action_id")]
6170    #[serde(skip_serializing_if = "Option::is_none")]
6171    pub action_id: Option<i64>,
6172    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
6173    #[serde(rename = "activity_id")]
6174    #[serde(skip_serializing_if = "Option::is_none")]
6175    pub activity_id: Option<i64>,
6176    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
6177    #[serde(rename = "activity_name")]
6178    #[serde(skip_serializing_if = "Option::is_none")]
6179    pub activity_name: Option<String>,
6180    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrecommended"]
6181    #[serde(rename = "actor")]
6182    #[serde(skip_serializing_if = "Option::is_none")]
6183    pub actor: Option<Box<Actor>>,
6184    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
6185    #[serde(rename = "api")]
6186    #[serde(skip_serializing_if = "Option::is_none")]
6187    pub api: Option<Box<Api>>,
6188    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
6189    #[serde(rename = "attacks")]
6190    #[serde(skip_serializing_if = "Option::is_none")]
6191    pub attacks: Option<Vec<Attack>>,
6192    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
6193    #[serde(rename = "authorizations")]
6194    #[serde(skip_serializing_if = "Option::is_none")]
6195    pub authorizations: Option<Vec<Authorization>>,
6196    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Identity & Access Management</code>.\n\noptional"]
6197    #[serde(rename = "category_name")]
6198    #[serde(skip_serializing_if = "Option::is_none")]
6199    pub category_name: Option<String>,
6200    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
6201    #[serde(rename = "category_uid")]
6202    #[serde(skip_serializing_if = "Option::is_none")]
6203    pub category_uid: Option<i64>,
6204    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Entity Management</code>.\n\noptional"]
6205    #[serde(rename = "class_name")]
6206    #[serde(skip_serializing_if = "Option::is_none")]
6207    pub class_name: Option<String>,
6208    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
6209    #[serde(rename = "class_uid")]
6210    #[serde(skip_serializing_if = "Option::is_none")]
6211    pub class_uid: Option<i64>,
6212    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
6213    #[serde(rename = "cloud")]
6214    #[serde(skip_serializing_if = "Option::is_none")]
6215    pub cloud: Option<Box<Cloud>>,
6216    #[doc = "Comment\n\nThe user provided comment about why the entity was changed.\n\nrecommended"]
6217    #[serde(rename = "comment")]
6218    #[serde(skip_serializing_if = "Option::is_none")]
6219    pub comment: Option<String>,
6220    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
6221    #[serde(rename = "confidence")]
6222    #[serde(skip_serializing_if = "Option::is_none")]
6223    pub confidence: Option<String>,
6224    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
6225    #[serde(rename = "confidence_id")]
6226    #[serde(skip_serializing_if = "Option::is_none")]
6227    pub confidence_id: Option<i64>,
6228    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
6229    #[serde(rename = "confidence_score")]
6230    #[serde(skip_serializing_if = "Option::is_none")]
6231    pub confidence_score: Option<i64>,
6232    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
6233    #[serde(rename = "count")]
6234    #[serde(skip_serializing_if = "Option::is_none")]
6235    pub count: Option<i64>,
6236    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
6237    #[serde(rename = "device")]
6238    #[serde(skip_serializing_if = "Option::is_none")]
6239    pub device: Option<Box<Device>>,
6240    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
6241    #[serde(rename = "disposition")]
6242    #[serde(skip_serializing_if = "Option::is_none")]
6243    pub disposition: Option<String>,
6244    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
6245    #[serde(rename = "disposition_id")]
6246    #[serde(skip_serializing_if = "Option::is_none")]
6247    pub disposition_id: Option<i64>,
6248    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
6249    #[serde(rename = "duration")]
6250    #[serde(skip_serializing_if = "Option::is_none")]
6251    pub duration: Option<i64>,
6252    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6253    #[serde(rename = "end_time")]
6254    #[serde(skip_serializing_if = "Option::is_none")]
6255    pub end_time: Option<i64>,
6256    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6257    #[serde(rename = "end_time_dt")]
6258    #[serde(skip_serializing_if = "Option::is_none")]
6259    pub end_time_dt: Option<String>,
6260    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
6261    #[serde(rename = "enrichments")]
6262    #[serde(skip_serializing_if = "Option::is_none")]
6263    pub enrichments: Option<Vec<Enrichment>>,
6264    #[doc = "Entity\n\nThe managed entity that is being acted upon.\n\nrequired"]
6265    #[serde(rename = "entity")]
6266    #[serde(skip_serializing_if = "Option::is_none")]
6267    pub entity: Option<Box<ManagedEntity>>,
6268    #[doc = "Entity Result\n\nThe updated managed entity.\n\nrecommended"]
6269    #[serde(rename = "entity_result")]
6270    #[serde(skip_serializing_if = "Option::is_none")]
6271    pub entity_result: Option<Box<ManagedEntity>>,
6272    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
6273    #[serde(rename = "firewall_rule")]
6274    #[serde(skip_serializing_if = "Option::is_none")]
6275    pub firewall_rule: Option<Box<FirewallRule>>,
6276    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\noptional"]
6277    #[serde(rename = "http_request")]
6278    #[serde(skip_serializing_if = "Option::is_none")]
6279    pub http_request: Option<Box<HttpRequest>>,
6280    #[doc = "HTTP Response\n\nDetails about the underlying HTTP response.\n\noptional"]
6281    #[serde(rename = "http_response")]
6282    #[serde(skip_serializing_if = "Option::is_none")]
6283    pub http_response: Option<Box<HttpResponse>>,
6284    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
6285    #[serde(rename = "is_alert")]
6286    #[serde(skip_serializing_if = "Option::is_none")]
6287    pub is_alert: Option<bool>,
6288    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
6289    #[serde(rename = "malware")]
6290    #[serde(skip_serializing_if = "Option::is_none")]
6291    pub malware: Option<Vec<Malware>>,
6292    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
6293    #[serde(rename = "malware_scan_info")]
6294    #[serde(skip_serializing_if = "Option::is_none")]
6295    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
6296    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
6297    #[serde(rename = "message")]
6298    #[serde(skip_serializing_if = "Option::is_none")]
6299    pub message: Option<String>,
6300    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
6301    #[serde(rename = "metadata")]
6302    #[serde(skip_serializing_if = "Option::is_none")]
6303    pub metadata: Option<Box<Metadata>>,
6304    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
6305    #[serde(rename = "observables")]
6306    #[serde(skip_serializing_if = "Option::is_none")]
6307    pub observables: Option<Vec<Observable>>,
6308    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
6309    #[serde(rename = "osint")]
6310    #[serde(skip_serializing_if = "Option::is_none")]
6311    pub osint: Option<Vec<Osint>>,
6312    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
6313    #[serde(rename = "policy")]
6314    #[serde(skip_serializing_if = "Option::is_none")]
6315    pub policy: Option<Box<Policy>>,
6316    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
6317    #[serde(rename = "raw_data")]
6318    #[serde(skip_serializing_if = "Option::is_none")]
6319    pub raw_data: Option<String>,
6320    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
6321    #[serde(rename = "raw_data_hash")]
6322    #[serde(skip_serializing_if = "Option::is_none")]
6323    pub raw_data_hash: Option<Box<Fingerprint>>,
6324    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
6325    #[serde(rename = "raw_data_size")]
6326    #[serde(skip_serializing_if = "Option::is_none")]
6327    pub raw_data_size: Option<i64>,
6328    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
6329    #[serde(rename = "risk_details")]
6330    #[serde(skip_serializing_if = "Option::is_none")]
6331    pub risk_details: Option<String>,
6332    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
6333    #[serde(rename = "risk_level")]
6334    #[serde(skip_serializing_if = "Option::is_none")]
6335    pub risk_level: Option<String>,
6336    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
6337    #[serde(rename = "risk_level_id")]
6338    #[serde(skip_serializing_if = "Option::is_none")]
6339    pub risk_level_id: Option<i64>,
6340    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
6341    #[serde(rename = "risk_score")]
6342    #[serde(skip_serializing_if = "Option::is_none")]
6343    pub risk_score: Option<i64>,
6344    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
6345    #[serde(rename = "severity")]
6346    #[serde(skip_serializing_if = "Option::is_none")]
6347    pub severity: Option<String>,
6348    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
6349    #[serde(rename = "severity_id")]
6350    #[serde(skip_serializing_if = "Option::is_none")]
6351    pub severity_id: Option<i64>,
6352    #[doc = "Source Endpoint\n\nDetails about the source of the IAM activity.\n\nrecommended"]
6353    #[serde(rename = "src_endpoint")]
6354    #[serde(skip_serializing_if = "Option::is_none")]
6355    pub src_endpoint: Option<Box<NetworkEndpoint>>,
6356    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
6357    #[serde(rename = "start_time")]
6358    #[serde(skip_serializing_if = "Option::is_none")]
6359    pub start_time: Option<i64>,
6360    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
6361    #[serde(rename = "start_time_dt")]
6362    #[serde(skip_serializing_if = "Option::is_none")]
6363    pub start_time_dt: Option<String>,
6364    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
6365    #[serde(rename = "status")]
6366    #[serde(skip_serializing_if = "Option::is_none")]
6367    pub status: Option<String>,
6368    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
6369    #[serde(rename = "status_code")]
6370    #[serde(skip_serializing_if = "Option::is_none")]
6371    pub status_code: Option<String>,
6372    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
6373    #[serde(rename = "status_detail")]
6374    #[serde(skip_serializing_if = "Option::is_none")]
6375    pub status_detail: Option<String>,
6376    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
6377    #[serde(rename = "status_id")]
6378    #[serde(skip_serializing_if = "Option::is_none")]
6379    pub status_id: Option<i64>,
6380    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
6381    #[serde(rename = "time")]
6382    #[serde(skip_serializing_if = "Option::is_none")]
6383    pub time: Option<i64>,
6384    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
6385    #[serde(rename = "time_dt")]
6386    #[serde(skip_serializing_if = "Option::is_none")]
6387    pub time_dt: Option<String>,
6388    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
6389    #[serde(rename = "timezone_offset")]
6390    #[serde(skip_serializing_if = "Option::is_none")]
6391    pub timezone_offset: Option<i64>,
6392    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
6393    #[serde(rename = "type_name")]
6394    #[serde(skip_serializing_if = "Option::is_none")]
6395    pub type_name: Option<String>,
6396    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
6397    #[serde(rename = "type_uid")]
6398    #[serde(skip_serializing_if = "Option::is_none")]
6399    pub type_uid: Option<i64>,
6400    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
6401    #[serde(rename = "unmapped")]
6402    #[serde(skip_serializing_if = "Option::is_none")]
6403    pub unmapped: Option<serde_json::Value>,
6404}
6405#[doc = "Event Log Activity\n\nEvent Log Activity events report actions pertaining to the system's event logging service(s), such as disabling logging or clearing the log data.\n\n[UID:1008] Category: system | Name: event_log_actvity\n\n**Constraints:**\n* at_least_one: `[log_file`,`log_name`,`log_provider`,`log_type`,`log_type_id]`\n"]
6406#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
6407#[serde(default)]
6408#[non_exhaustive]
6409pub struct EventLogActvity {
6410    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
6411    #[serde(rename = "action")]
6412    #[serde(skip_serializing_if = "Option::is_none")]
6413    pub action: Option<String>,
6414    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
6415    #[serde(rename = "action_id")]
6416    #[serde(skip_serializing_if = "Option::is_none")]
6417    pub action_id: Option<i64>,
6418    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
6419    #[serde(rename = "activity_id")]
6420    #[serde(skip_serializing_if = "Option::is_none")]
6421    pub activity_id: Option<i64>,
6422    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
6423    #[serde(rename = "activity_name")]
6424    #[serde(skip_serializing_if = "Option::is_none")]
6425    pub activity_name: Option<String>,
6426    #[doc = "Actor\n\nThe actor that performed the activity.\n\nrecommended"]
6427    #[serde(rename = "actor")]
6428    #[serde(skip_serializing_if = "Option::is_none")]
6429    pub actor: Option<Box<Actor>>,
6430    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
6431    #[serde(rename = "api")]
6432    #[serde(skip_serializing_if = "Option::is_none")]
6433    pub api: Option<Box<Api>>,
6434    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
6435    #[serde(rename = "attacks")]
6436    #[serde(skip_serializing_if = "Option::is_none")]
6437    pub attacks: Option<Vec<Attack>>,
6438    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
6439    #[serde(rename = "authorizations")]
6440    #[serde(skip_serializing_if = "Option::is_none")]
6441    pub authorizations: Option<Vec<Authorization>>,
6442    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
6443    #[serde(rename = "category_name")]
6444    #[serde(skip_serializing_if = "Option::is_none")]
6445    pub category_name: Option<String>,
6446    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
6447    #[serde(rename = "category_uid")]
6448    #[serde(skip_serializing_if = "Option::is_none")]
6449    pub category_uid: Option<i64>,
6450    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Event Log Activity</code>.\n\noptional"]
6451    #[serde(rename = "class_name")]
6452    #[serde(skip_serializing_if = "Option::is_none")]
6453    pub class_name: Option<String>,
6454    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
6455    #[serde(rename = "class_uid")]
6456    #[serde(skip_serializing_if = "Option::is_none")]
6457    pub class_uid: Option<i64>,
6458    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
6459    #[serde(rename = "cloud")]
6460    #[serde(skip_serializing_if = "Option::is_none")]
6461    pub cloud: Option<Box<Cloud>>,
6462    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
6463    #[serde(rename = "confidence")]
6464    #[serde(skip_serializing_if = "Option::is_none")]
6465    pub confidence: Option<String>,
6466    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
6467    #[serde(rename = "confidence_id")]
6468    #[serde(skip_serializing_if = "Option::is_none")]
6469    pub confidence_id: Option<i64>,
6470    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
6471    #[serde(rename = "confidence_score")]
6472    #[serde(skip_serializing_if = "Option::is_none")]
6473    pub confidence_score: Option<i64>,
6474    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
6475    #[serde(rename = "count")]
6476    #[serde(skip_serializing_if = "Option::is_none")]
6477    pub count: Option<i64>,
6478    #[doc = "Device\n\nThe device that reported the event.\n\nrecommended"]
6479    #[serde(rename = "device")]
6480    #[serde(skip_serializing_if = "Option::is_none")]
6481    pub device: Option<Box<Device>>,
6482    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
6483    #[serde(rename = "disposition")]
6484    #[serde(skip_serializing_if = "Option::is_none")]
6485    pub disposition: Option<String>,
6486    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
6487    #[serde(rename = "disposition_id")]
6488    #[serde(skip_serializing_if = "Option::is_none")]
6489    pub disposition_id: Option<i64>,
6490    #[doc = "Destination Endpoint\n\nThe <p style='display:inline;color:red'>targeted</p> endpoint for the event log activity.\n\nrecommended"]
6491    #[serde(rename = "dst_endpoint")]
6492    #[serde(skip_serializing_if = "Option::is_none")]
6493    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
6494    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
6495    #[serde(rename = "duration")]
6496    #[serde(skip_serializing_if = "Option::is_none")]
6497    pub duration: Option<i64>,
6498    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6499    #[serde(rename = "end_time")]
6500    #[serde(skip_serializing_if = "Option::is_none")]
6501    pub end_time: Option<i64>,
6502    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6503    #[serde(rename = "end_time_dt")]
6504    #[serde(skip_serializing_if = "Option::is_none")]
6505    pub end_time_dt: Option<String>,
6506    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
6507    #[serde(rename = "enrichments")]
6508    #[serde(skip_serializing_if = "Option::is_none")]
6509    pub enrichments: Option<Vec<Enrichment>>,
6510    #[doc = "File\n\nThe file <p style='display:inline;color:red'>targeted by</p> the activity. Example: <code>/var/log/audit.log</code>\n\nrecommended"]
6511    #[serde(rename = "file")]
6512    #[serde(skip_serializing_if = "Option::is_none")]
6513    pub file: Option<Box<File>>,
6514    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
6515    #[serde(rename = "firewall_rule")]
6516    #[serde(skip_serializing_if = "Option::is_none")]
6517    pub firewall_rule: Option<Box<FirewallRule>>,
6518    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
6519    #[serde(rename = "is_alert")]
6520    #[serde(skip_serializing_if = "Option::is_none")]
6521    pub is_alert: Option<bool>,
6522    #[doc = "Log Name\n\nThe name of the event log <p style='display:inline;color:red'>targeted by</p> the activity. Example: Windows <code>Security</code>.\n\nrecommended"]
6523    #[serde(rename = "log_name")]
6524    #[serde(skip_serializing_if = "Option::is_none")]
6525    pub log_name: Option<String>,
6526    #[doc = "Log Provider\n\nThe logging provider or logging service <p style='display:inline;color:red'>targeted by</p> the activity.<br />Example: <code>Microsoft-Windows-Security-Auditing</code>, <code>Auditd</code>, or <code>Syslog</code>.\n\nrecommended"]
6527    #[serde(rename = "log_provider")]
6528    #[serde(skip_serializing_if = "Option::is_none")]
6529    pub log_provider: Option<String>,
6530    #[doc = "Log Type\n\nThe log type, normalized to the caption of the <code>log_type_id</code> value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
6531    #[serde(rename = "log_type")]
6532    #[serde(skip_serializing_if = "Option::is_none")]
6533    pub log_type: Option<String>,
6534    #[doc = "Log Type ID\n\nThe normalized log type identifier.\n\nrecommended"]
6535    #[serde(rename = "log_type_id")]
6536    #[serde(skip_serializing_if = "Option::is_none")]
6537    pub log_type_id: Option<i64>,
6538    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
6539    #[serde(rename = "malware")]
6540    #[serde(skip_serializing_if = "Option::is_none")]
6541    pub malware: Option<Vec<Malware>>,
6542    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
6543    #[serde(rename = "malware_scan_info")]
6544    #[serde(skip_serializing_if = "Option::is_none")]
6545    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
6546    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
6547    #[serde(rename = "message")]
6548    #[serde(skip_serializing_if = "Option::is_none")]
6549    pub message: Option<String>,
6550    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
6551    #[serde(rename = "metadata")]
6552    #[serde(skip_serializing_if = "Option::is_none")]
6553    pub metadata: Option<Box<Metadata>>,
6554    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
6555    #[serde(rename = "observables")]
6556    #[serde(skip_serializing_if = "Option::is_none")]
6557    pub observables: Option<Vec<Observable>>,
6558    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
6559    #[serde(rename = "osint")]
6560    #[serde(skip_serializing_if = "Option::is_none")]
6561    pub osint: Option<Vec<Osint>>,
6562    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
6563    #[serde(rename = "policy")]
6564    #[serde(skip_serializing_if = "Option::is_none")]
6565    pub policy: Option<Box<Policy>>,
6566    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
6567    #[serde(rename = "raw_data")]
6568    #[serde(skip_serializing_if = "Option::is_none")]
6569    pub raw_data: Option<String>,
6570    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
6571    #[serde(rename = "raw_data_hash")]
6572    #[serde(skip_serializing_if = "Option::is_none")]
6573    pub raw_data_hash: Option<Box<Fingerprint>>,
6574    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
6575    #[serde(rename = "raw_data_size")]
6576    #[serde(skip_serializing_if = "Option::is_none")]
6577    pub raw_data_size: Option<i64>,
6578    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
6579    #[serde(rename = "risk_details")]
6580    #[serde(skip_serializing_if = "Option::is_none")]
6581    pub risk_details: Option<String>,
6582    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
6583    #[serde(rename = "risk_level")]
6584    #[serde(skip_serializing_if = "Option::is_none")]
6585    pub risk_level: Option<String>,
6586    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
6587    #[serde(rename = "risk_level_id")]
6588    #[serde(skip_serializing_if = "Option::is_none")]
6589    pub risk_level_id: Option<i64>,
6590    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
6591    #[serde(rename = "risk_score")]
6592    #[serde(skip_serializing_if = "Option::is_none")]
6593    pub risk_score: Option<i64>,
6594    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
6595    #[serde(rename = "severity")]
6596    #[serde(skip_serializing_if = "Option::is_none")]
6597    pub severity: Option<String>,
6598    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
6599    #[serde(rename = "severity_id")]
6600    #[serde(skip_serializing_if = "Option::is_none")]
6601    pub severity_id: Option<i64>,
6602    #[doc = "Source Endpoint\n\nThe source endpoint for the event log activity.\n\nrecommended"]
6603    #[serde(rename = "src_endpoint")]
6604    #[serde(skip_serializing_if = "Option::is_none")]
6605    pub src_endpoint: Option<Box<NetworkEndpoint>>,
6606    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
6607    #[serde(rename = "start_time")]
6608    #[serde(skip_serializing_if = "Option::is_none")]
6609    pub start_time: Option<i64>,
6610    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
6611    #[serde(rename = "start_time_dt")]
6612    #[serde(skip_serializing_if = "Option::is_none")]
6613    pub start_time_dt: Option<String>,
6614    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
6615    #[serde(rename = "status")]
6616    #[serde(skip_serializing_if = "Option::is_none")]
6617    pub status: Option<String>,
6618    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br />Example: <code>0</code>, <code>8</code>, or <code>21</code> for <a target='_blank' href='https://learn.microsoft.com/en-us/previous-versions/windows/desktop/eventlogprov/cleareventlog-method-in-class-win32-nteventlogfile'>Windows ClearEventLog</a>.\n\nrecommended"]
6619    #[serde(rename = "status_code")]
6620    #[serde(skip_serializing_if = "Option::is_none")]
6621    pub status_code: Option<String>,
6622    #[doc = "Status Detail\n\nThe status detail contains additional information about the event outcome.<br />Example: <code>Success</code>, <code>Privilege Missing</code>, or <code>Invalid Parameter</code> for <a target='_blank' href='https://learn.microsoft.com/en-us/previous-versions/windows/desktop/eventlogprov/cleareventlog-method-in-class-win32-nteventlogfile'>Windows ClearEventLog</a>.\n\nrecommended"]
6623    #[serde(rename = "status_detail")]
6624    #[serde(skip_serializing_if = "Option::is_none")]
6625    pub status_detail: Option<String>,
6626    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
6627    #[serde(rename = "status_id")]
6628    #[serde(skip_serializing_if = "Option::is_none")]
6629    pub status_id: Option<i64>,
6630    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
6631    #[serde(rename = "time")]
6632    #[serde(skip_serializing_if = "Option::is_none")]
6633    pub time: Option<i64>,
6634    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
6635    #[serde(rename = "time_dt")]
6636    #[serde(skip_serializing_if = "Option::is_none")]
6637    pub time_dt: Option<String>,
6638    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
6639    #[serde(rename = "timezone_offset")]
6640    #[serde(skip_serializing_if = "Option::is_none")]
6641    pub timezone_offset: Option<i64>,
6642    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
6643    #[serde(rename = "type_name")]
6644    #[serde(skip_serializing_if = "Option::is_none")]
6645    pub type_name: Option<String>,
6646    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
6647    #[serde(rename = "type_uid")]
6648    #[serde(skip_serializing_if = "Option::is_none")]
6649    pub type_uid: Option<i64>,
6650    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
6651    #[serde(rename = "unmapped")]
6652    #[serde(skip_serializing_if = "Option::is_none")]
6653    pub unmapped: Option<serde_json::Value>,
6654}
6655#[doc = "Live Evidence Info\n\nData collected directly from devices that represents forensic information pulled, queried, or discovered from devices that may indicate malicious activity. It contains a number of child objects, each representing a distinct evidence domain (network connections, file artifacts, registry entries, etc.). When mapping raw telemetry data users should select Query Evidence and then the appropriate child object that best matches the evidence type.\n\n[UID:5040] Category: discovery | Name: evidence_info"]
6656#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
6657#[serde(default)]
6658#[non_exhaustive]
6659pub struct EvidenceInfo {
6660    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
6661    #[serde(rename = "action")]
6662    #[serde(skip_serializing_if = "Option::is_none")]
6663    pub action: Option<String>,
6664    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
6665    #[serde(rename = "action_id")]
6666    #[serde(skip_serializing_if = "Option::is_none")]
6667    pub action_id: Option<i64>,
6668    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
6669    #[serde(rename = "activity_id")]
6670    #[serde(skip_serializing_if = "Option::is_none")]
6671    pub activity_id: Option<i64>,
6672    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
6673    #[serde(rename = "activity_name")]
6674    #[serde(skip_serializing_if = "Option::is_none")]
6675    pub activity_name: Option<String>,
6676    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
6677    #[serde(rename = "actor")]
6678    #[serde(skip_serializing_if = "Option::is_none")]
6679    pub actor: Option<Box<Actor>>,
6680    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
6681    #[serde(rename = "api")]
6682    #[serde(skip_serializing_if = "Option::is_none")]
6683    pub api: Option<Box<Api>>,
6684    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
6685    #[serde(rename = "attacks")]
6686    #[serde(skip_serializing_if = "Option::is_none")]
6687    pub attacks: Option<Vec<Attack>>,
6688    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
6689    #[serde(rename = "authorizations")]
6690    #[serde(skip_serializing_if = "Option::is_none")]
6691    pub authorizations: Option<Vec<Authorization>>,
6692    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
6693    #[serde(rename = "category_name")]
6694    #[serde(skip_serializing_if = "Option::is_none")]
6695    pub category_name: Option<String>,
6696    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
6697    #[serde(rename = "category_uid")]
6698    #[serde(skip_serializing_if = "Option::is_none")]
6699    pub category_uid: Option<i64>,
6700    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Live Evidence Info</code>.\n\noptional"]
6701    #[serde(rename = "class_name")]
6702    #[serde(skip_serializing_if = "Option::is_none")]
6703    pub class_name: Option<String>,
6704    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
6705    #[serde(rename = "class_uid")]
6706    #[serde(skip_serializing_if = "Option::is_none")]
6707    pub class_uid: Option<i64>,
6708    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
6709    #[serde(rename = "cloud")]
6710    #[serde(skip_serializing_if = "Option::is_none")]
6711    pub cloud: Option<Box<Cloud>>,
6712    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
6713    #[serde(rename = "confidence")]
6714    #[serde(skip_serializing_if = "Option::is_none")]
6715    pub confidence: Option<String>,
6716    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
6717    #[serde(rename = "confidence_id")]
6718    #[serde(skip_serializing_if = "Option::is_none")]
6719    pub confidence_id: Option<i64>,
6720    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
6721    #[serde(rename = "confidence_score")]
6722    #[serde(skip_serializing_if = "Option::is_none")]
6723    pub confidence_score: Option<i64>,
6724    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
6725    #[serde(rename = "count")]
6726    #[serde(skip_serializing_if = "Option::is_none")]
6727    pub count: Option<i64>,
6728    #[doc = "Device\n\nAn addressable device, computer system or host from which evidence was collected.\n\nrequired"]
6729    #[serde(rename = "device")]
6730    #[serde(skip_serializing_if = "Option::is_none")]
6731    pub device: Option<Box<Device>>,
6732    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
6733    #[serde(rename = "disposition")]
6734    #[serde(skip_serializing_if = "Option::is_none")]
6735    pub disposition: Option<String>,
6736    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
6737    #[serde(rename = "disposition_id")]
6738    #[serde(skip_serializing_if = "Option::is_none")]
6739    pub disposition_id: Option<i64>,
6740    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
6741    #[serde(rename = "duration")]
6742    #[serde(skip_serializing_if = "Option::is_none")]
6743    pub duration: Option<i64>,
6744    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6745    #[serde(rename = "end_time")]
6746    #[serde(skip_serializing_if = "Option::is_none")]
6747    pub end_time: Option<i64>,
6748    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6749    #[serde(rename = "end_time_dt")]
6750    #[serde(skip_serializing_if = "Option::is_none")]
6751    pub end_time_dt: Option<String>,
6752    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
6753    #[serde(rename = "enrichments")]
6754    #[serde(skip_serializing_if = "Option::is_none")]
6755    pub enrichments: Option<Vec<Enrichment>>,
6756    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
6757    #[serde(rename = "firewall_rule")]
6758    #[serde(skip_serializing_if = "Option::is_none")]
6759    pub firewall_rule: Option<Box<FirewallRule>>,
6760    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
6761    #[serde(rename = "is_alert")]
6762    #[serde(skip_serializing_if = "Option::is_none")]
6763    pub is_alert: Option<bool>,
6764    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
6765    #[serde(rename = "malware")]
6766    #[serde(skip_serializing_if = "Option::is_none")]
6767    pub malware: Option<Vec<Malware>>,
6768    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
6769    #[serde(rename = "malware_scan_info")]
6770    #[serde(skip_serializing_if = "Option::is_none")]
6771    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
6772    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
6773    #[serde(rename = "message")]
6774    #[serde(skip_serializing_if = "Option::is_none")]
6775    pub message: Option<String>,
6776    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
6777    #[serde(rename = "metadata")]
6778    #[serde(skip_serializing_if = "Option::is_none")]
6779    pub metadata: Option<Box<Metadata>>,
6780    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
6781    #[serde(rename = "observables")]
6782    #[serde(skip_serializing_if = "Option::is_none")]
6783    pub observables: Option<Vec<Observable>>,
6784    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
6785    #[serde(rename = "osint")]
6786    #[serde(skip_serializing_if = "Option::is_none")]
6787    pub osint: Option<Vec<Osint>>,
6788    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
6789    #[serde(rename = "policy")]
6790    #[serde(skip_serializing_if = "Option::is_none")]
6791    pub policy: Option<Box<Policy>>,
6792    #[doc = "Query Evidence\n\nThe specific resulting evidence information that was queried or discovered based on the query type. Contains various child objects corresponding to the query_type_id values.\n\nrequired"]
6793    #[serde(rename = "query_evidence")]
6794    #[serde(skip_serializing_if = "Option::is_none")]
6795    pub query_evidence: Option<Box<QueryEvidence>>,
6796    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
6797    #[serde(rename = "query_info")]
6798    #[serde(skip_serializing_if = "Option::is_none")]
6799    pub query_info: Option<Box<QueryInfo>>,
6800    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
6801    #[serde(rename = "query_result")]
6802    #[serde(skip_serializing_if = "Option::is_none")]
6803    pub query_result: Option<String>,
6804    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
6805    #[serde(rename = "query_result_id")]
6806    #[serde(skip_serializing_if = "Option::is_none")]
6807    pub query_result_id: Option<i64>,
6808    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
6809    #[serde(rename = "raw_data")]
6810    #[serde(skip_serializing_if = "Option::is_none")]
6811    pub raw_data: Option<String>,
6812    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
6813    #[serde(rename = "raw_data_hash")]
6814    #[serde(skip_serializing_if = "Option::is_none")]
6815    pub raw_data_hash: Option<Box<Fingerprint>>,
6816    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
6817    #[serde(rename = "raw_data_size")]
6818    #[serde(skip_serializing_if = "Option::is_none")]
6819    pub raw_data_size: Option<i64>,
6820    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
6821    #[serde(rename = "risk_details")]
6822    #[serde(skip_serializing_if = "Option::is_none")]
6823    pub risk_details: Option<String>,
6824    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
6825    #[serde(rename = "risk_level")]
6826    #[serde(skip_serializing_if = "Option::is_none")]
6827    pub risk_level: Option<String>,
6828    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
6829    #[serde(rename = "risk_level_id")]
6830    #[serde(skip_serializing_if = "Option::is_none")]
6831    pub risk_level_id: Option<i64>,
6832    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
6833    #[serde(rename = "risk_score")]
6834    #[serde(skip_serializing_if = "Option::is_none")]
6835    pub risk_score: Option<i64>,
6836    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
6837    #[serde(rename = "severity")]
6838    #[serde(skip_serializing_if = "Option::is_none")]
6839    pub severity: Option<String>,
6840    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
6841    #[serde(rename = "severity_id")]
6842    #[serde(skip_serializing_if = "Option::is_none")]
6843    pub severity_id: Option<i64>,
6844    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
6845    #[serde(rename = "start_time")]
6846    #[serde(skip_serializing_if = "Option::is_none")]
6847    pub start_time: Option<i64>,
6848    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
6849    #[serde(rename = "start_time_dt")]
6850    #[serde(skip_serializing_if = "Option::is_none")]
6851    pub start_time_dt: Option<String>,
6852    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
6853    #[serde(rename = "status")]
6854    #[serde(skip_serializing_if = "Option::is_none")]
6855    pub status: Option<String>,
6856    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
6857    #[serde(rename = "status_code")]
6858    #[serde(skip_serializing_if = "Option::is_none")]
6859    pub status_code: Option<String>,
6860    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
6861    #[serde(rename = "status_detail")]
6862    #[serde(skip_serializing_if = "Option::is_none")]
6863    pub status_detail: Option<String>,
6864    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
6865    #[serde(rename = "status_id")]
6866    #[serde(skip_serializing_if = "Option::is_none")]
6867    pub status_id: Option<i64>,
6868    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
6869    #[serde(rename = "time")]
6870    #[serde(skip_serializing_if = "Option::is_none")]
6871    pub time: Option<i64>,
6872    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
6873    #[serde(rename = "time_dt")]
6874    #[serde(skip_serializing_if = "Option::is_none")]
6875    pub time_dt: Option<String>,
6876    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
6877    #[serde(rename = "timezone_offset")]
6878    #[serde(skip_serializing_if = "Option::is_none")]
6879    pub timezone_offset: Option<i64>,
6880    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
6881    #[serde(rename = "type_name")]
6882    #[serde(skip_serializing_if = "Option::is_none")]
6883    pub type_name: Option<String>,
6884    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
6885    #[serde(rename = "type_uid")]
6886    #[serde(skip_serializing_if = "Option::is_none")]
6887    pub type_uid: Option<i64>,
6888    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
6889    #[serde(rename = "unmapped")]
6890    #[serde(skip_serializing_if = "Option::is_none")]
6891    pub unmapped: Option<serde_json::Value>,
6892}
6893#[doc = "File System Activity\n\nFile System Activity events report when a process performs an action on a file or folder.\n\n[UID:1001] Category: system | Name: file_activity"]
6894#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
6895#[serde(default)]
6896#[non_exhaustive]
6897pub struct FileActivity {
6898    #[doc = "Access Mask\n\nThe access mask in a platform-native format.\n\noptional"]
6899    #[serde(rename = "access_mask")]
6900    #[serde(skip_serializing_if = "Option::is_none")]
6901    pub access_mask: Option<i64>,
6902    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
6903    #[serde(rename = "action")]
6904    #[serde(skip_serializing_if = "Option::is_none")]
6905    pub action: Option<String>,
6906    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
6907    #[serde(rename = "action_id")]
6908    #[serde(skip_serializing_if = "Option::is_none")]
6909    pub action_id: Option<i64>,
6910    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
6911    #[serde(rename = "activity_id")]
6912    #[serde(skip_serializing_if = "Option::is_none")]
6913    pub activity_id: Option<i64>,
6914    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
6915    #[serde(rename = "activity_name")]
6916    #[serde(skip_serializing_if = "Option::is_none")]
6917    pub activity_name: Option<String>,
6918    #[doc = "Actor\n\nThe actor that performed the activity on the <code>file</code> object\n\nrequired"]
6919    #[serde(rename = "actor")]
6920    #[serde(skip_serializing_if = "Option::is_none")]
6921    pub actor: Option<Box<Actor>>,
6922    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
6923    #[serde(rename = "api")]
6924    #[serde(skip_serializing_if = "Option::is_none")]
6925    pub api: Option<Box<Api>>,
6926    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
6927    #[serde(rename = "attacks")]
6928    #[serde(skip_serializing_if = "Option::is_none")]
6929    pub attacks: Option<Vec<Attack>>,
6930    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
6931    #[serde(rename = "authorizations")]
6932    #[serde(skip_serializing_if = "Option::is_none")]
6933    pub authorizations: Option<Vec<Authorization>>,
6934    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
6935    #[serde(rename = "category_name")]
6936    #[serde(skip_serializing_if = "Option::is_none")]
6937    pub category_name: Option<String>,
6938    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
6939    #[serde(rename = "category_uid")]
6940    #[serde(skip_serializing_if = "Option::is_none")]
6941    pub category_uid: Option<i64>,
6942    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>File System Activity</code>.\n\noptional"]
6943    #[serde(rename = "class_name")]
6944    #[serde(skip_serializing_if = "Option::is_none")]
6945    pub class_name: Option<String>,
6946    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
6947    #[serde(rename = "class_uid")]
6948    #[serde(skip_serializing_if = "Option::is_none")]
6949    pub class_uid: Option<i64>,
6950    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
6951    #[serde(rename = "cloud")]
6952    #[serde(skip_serializing_if = "Option::is_none")]
6953    pub cloud: Option<Box<Cloud>>,
6954    #[doc = "Component\n\n<p>The name or relative pathname of a sub-component of the data object, if applicable. </p>For example: <code>attachment.doc</code>, <code>attachment.zip/bad.doc</code>, or <code>part.mime/part.cab/part.uue/part.doc</code>.\n\nrecommended"]
6955    #[serde(rename = "component")]
6956    #[serde(skip_serializing_if = "Option::is_none")]
6957    pub component: Option<String>,
6958    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
6959    #[serde(rename = "confidence")]
6960    #[serde(skip_serializing_if = "Option::is_none")]
6961    pub confidence: Option<String>,
6962    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
6963    #[serde(rename = "confidence_id")]
6964    #[serde(skip_serializing_if = "Option::is_none")]
6965    pub confidence_id: Option<i64>,
6966    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
6967    #[serde(rename = "confidence_score")]
6968    #[serde(skip_serializing_if = "Option::is_none")]
6969    pub confidence_score: Option<i64>,
6970    #[doc = "Connection Identifier\n\nThe network connection identifier.\n\noptional"]
6971    #[serde(rename = "connection_uid")]
6972    #[serde(skip_serializing_if = "Option::is_none")]
6973    pub connection_uid: Option<String>,
6974    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
6975    #[serde(rename = "count")]
6976    #[serde(skip_serializing_if = "Option::is_none")]
6977    pub count: Option<i64>,
6978    #[doc = "Create Mask\n\nThe original Windows mask that is required to create the object.\n\nrecommended"]
6979    #[serde(rename = "create_mask")]
6980    #[serde(skip_serializing_if = "Option::is_none")]
6981    pub create_mask: Option<String>,
6982    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
6983    #[serde(rename = "device")]
6984    #[serde(skip_serializing_if = "Option::is_none")]
6985    pub device: Option<Box<Device>>,
6986    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
6987    #[serde(rename = "disposition")]
6988    #[serde(skip_serializing_if = "Option::is_none")]
6989    pub disposition: Option<String>,
6990    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
6991    #[serde(rename = "disposition_id")]
6992    #[serde(skip_serializing_if = "Option::is_none")]
6993    pub disposition_id: Option<i64>,
6994    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
6995    #[serde(rename = "duration")]
6996    #[serde(skip_serializing_if = "Option::is_none")]
6997    pub duration: Option<i64>,
6998    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
6999    #[serde(rename = "end_time")]
7000    #[serde(skip_serializing_if = "Option::is_none")]
7001    pub end_time: Option<i64>,
7002    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
7003    #[serde(rename = "end_time_dt")]
7004    #[serde(skip_serializing_if = "Option::is_none")]
7005    pub end_time_dt: Option<String>,
7006    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
7007    #[serde(rename = "enrichments")]
7008    #[serde(skip_serializing_if = "Option::is_none")]
7009    pub enrichments: Option<Vec<Enrichment>>,
7010    #[doc = "File\n\nThe file that is the target of the activity.\n\nrequired"]
7011    #[serde(rename = "file")]
7012    #[serde(skip_serializing_if = "Option::is_none")]
7013    pub file: Option<Box<File>>,
7014    #[doc = "File Diff\n\nFile content differences used for change detection. For example, a common use case is to identify itemized changes within INI or configuration/property setting values.\n\nrecommended"]
7015    #[serde(rename = "file_diff")]
7016    #[serde(skip_serializing_if = "Option::is_none")]
7017    pub file_diff: Option<String>,
7018    #[doc = "File Result\n\nThe resulting file object when the activity was allowed and successful.\n\nrecommended"]
7019    #[serde(rename = "file_result")]
7020    #[serde(skip_serializing_if = "Option::is_none")]
7021    pub file_result: Option<Box<File>>,
7022    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
7023    #[serde(rename = "firewall_rule")]
7024    #[serde(skip_serializing_if = "Option::is_none")]
7025    pub firewall_rule: Option<Box<FirewallRule>>,
7026    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
7027    #[serde(rename = "is_alert")]
7028    #[serde(skip_serializing_if = "Option::is_none")]
7029    pub is_alert: Option<bool>,
7030    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
7031    #[serde(rename = "malware")]
7032    #[serde(skip_serializing_if = "Option::is_none")]
7033    pub malware: Option<Vec<Malware>>,
7034    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
7035    #[serde(rename = "malware_scan_info")]
7036    #[serde(skip_serializing_if = "Option::is_none")]
7037    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
7038    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
7039    #[serde(rename = "message")]
7040    #[serde(skip_serializing_if = "Option::is_none")]
7041    pub message: Option<String>,
7042    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
7043    #[serde(rename = "metadata")]
7044    #[serde(skip_serializing_if = "Option::is_none")]
7045    pub metadata: Option<Box<Metadata>>,
7046    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
7047    #[serde(rename = "observables")]
7048    #[serde(skip_serializing_if = "Option::is_none")]
7049    pub observables: Option<Vec<Observable>>,
7050    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
7051    #[serde(rename = "osint")]
7052    #[serde(skip_serializing_if = "Option::is_none")]
7053    pub osint: Option<Vec<Osint>>,
7054    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
7055    #[serde(rename = "policy")]
7056    #[serde(skip_serializing_if = "Option::is_none")]
7057    pub policy: Option<Box<Policy>>,
7058    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
7059    #[serde(rename = "raw_data")]
7060    #[serde(skip_serializing_if = "Option::is_none")]
7061    pub raw_data: Option<String>,
7062    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
7063    #[serde(rename = "raw_data_hash")]
7064    #[serde(skip_serializing_if = "Option::is_none")]
7065    pub raw_data_hash: Option<Box<Fingerprint>>,
7066    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
7067    #[serde(rename = "raw_data_size")]
7068    #[serde(skip_serializing_if = "Option::is_none")]
7069    pub raw_data_size: Option<i64>,
7070    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
7071    #[serde(rename = "risk_details")]
7072    #[serde(skip_serializing_if = "Option::is_none")]
7073    pub risk_details: Option<String>,
7074    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
7075    #[serde(rename = "risk_level")]
7076    #[serde(skip_serializing_if = "Option::is_none")]
7077    pub risk_level: Option<String>,
7078    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
7079    #[serde(rename = "risk_level_id")]
7080    #[serde(skip_serializing_if = "Option::is_none")]
7081    pub risk_level_id: Option<i64>,
7082    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
7083    #[serde(rename = "risk_score")]
7084    #[serde(skip_serializing_if = "Option::is_none")]
7085    pub risk_score: Option<i64>,
7086    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
7087    #[serde(rename = "severity")]
7088    #[serde(skip_serializing_if = "Option::is_none")]
7089    pub severity: Option<String>,
7090    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
7091    #[serde(rename = "severity_id")]
7092    #[serde(skip_serializing_if = "Option::is_none")]
7093    pub severity_id: Option<i64>,
7094    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
7095    #[serde(rename = "start_time")]
7096    #[serde(skip_serializing_if = "Option::is_none")]
7097    pub start_time: Option<i64>,
7098    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
7099    #[serde(rename = "start_time_dt")]
7100    #[serde(skip_serializing_if = "Option::is_none")]
7101    pub start_time_dt: Option<String>,
7102    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
7103    #[serde(rename = "status")]
7104    #[serde(skip_serializing_if = "Option::is_none")]
7105    pub status: Option<String>,
7106    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
7107    #[serde(rename = "status_code")]
7108    #[serde(skip_serializing_if = "Option::is_none")]
7109    pub status_code: Option<String>,
7110    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
7111    #[serde(rename = "status_detail")]
7112    #[serde(skip_serializing_if = "Option::is_none")]
7113    pub status_detail: Option<String>,
7114    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
7115    #[serde(rename = "status_id")]
7116    #[serde(skip_serializing_if = "Option::is_none")]
7117    pub status_id: Option<i64>,
7118    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
7119    #[serde(rename = "time")]
7120    #[serde(skip_serializing_if = "Option::is_none")]
7121    pub time: Option<i64>,
7122    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
7123    #[serde(rename = "time_dt")]
7124    #[serde(skip_serializing_if = "Option::is_none")]
7125    pub time_dt: Option<String>,
7126    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
7127    #[serde(rename = "timezone_offset")]
7128    #[serde(skip_serializing_if = "Option::is_none")]
7129    pub timezone_offset: Option<i64>,
7130    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
7131    #[serde(rename = "type_name")]
7132    #[serde(skip_serializing_if = "Option::is_none")]
7133    pub type_name: Option<String>,
7134    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
7135    #[serde(rename = "type_uid")]
7136    #[serde(skip_serializing_if = "Option::is_none")]
7137    pub type_uid: Option<i64>,
7138    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
7139    #[serde(rename = "unmapped")]
7140    #[serde(skip_serializing_if = "Option::is_none")]
7141    pub unmapped: Option<serde_json::Value>,
7142}
7143#[doc = "File Hosting Activity\n\nFile Hosting Activity events report the actions taken by file management applications, including file sharing servers like Sharepoint and services such as Box, MS OneDrive, Google Drive, or network file share services.\n\n[UID:6006] Category: application | Name: file_hosting"]
7144#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
7145#[serde(default)]
7146#[non_exhaustive]
7147pub struct FileHosting {
7148    #[doc = "Access List\n\nThe list of requested access rights.\n\noptional"]
7149    #[serde(rename = "access_list")]
7150    #[serde(skip_serializing_if = "Option::is_none")]
7151    pub access_list: Option<Vec<String>>,
7152    #[doc = "Access Mask\n\nThe sum of hexadecimal values of requested access rights.\n\noptional"]
7153    #[serde(rename = "access_mask")]
7154    #[serde(skip_serializing_if = "Option::is_none")]
7155    pub access_mask: Option<i64>,
7156    #[doc = "Access Check Result\n\nThe list of access check results.\n\noptional"]
7157    #[serde(rename = "access_result")]
7158    #[serde(skip_serializing_if = "Option::is_none")]
7159    pub access_result: Option<serde_json::Value>,
7160    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
7161    #[serde(rename = "action")]
7162    #[serde(skip_serializing_if = "Option::is_none")]
7163    pub action: Option<String>,
7164    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
7165    #[serde(rename = "action_id")]
7166    #[serde(skip_serializing_if = "Option::is_none")]
7167    pub action_id: Option<i64>,
7168    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
7169    #[serde(rename = "activity_id")]
7170    #[serde(skip_serializing_if = "Option::is_none")]
7171    pub activity_id: Option<i64>,
7172    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
7173    #[serde(rename = "activity_name")]
7174    #[serde(skip_serializing_if = "Option::is_none")]
7175    pub activity_name: Option<String>,
7176    #[doc = "Actor\n\nThe actor that performed the activity on the target file.\n\nrequired"]
7177    #[serde(rename = "actor")]
7178    #[serde(skip_serializing_if = "Option::is_none")]
7179    pub actor: Option<Box<Actor>>,
7180    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
7181    #[serde(rename = "api")]
7182    #[serde(skip_serializing_if = "Option::is_none")]
7183    pub api: Option<Box<Api>>,
7184    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
7185    #[serde(rename = "attacks")]
7186    #[serde(skip_serializing_if = "Option::is_none")]
7187    pub attacks: Option<Vec<Attack>>,
7188    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
7189    #[serde(rename = "authorizations")]
7190    #[serde(skip_serializing_if = "Option::is_none")]
7191    pub authorizations: Option<Vec<Authorization>>,
7192    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Application Activity</code>.\n\noptional"]
7193    #[serde(rename = "category_name")]
7194    #[serde(skip_serializing_if = "Option::is_none")]
7195    pub category_name: Option<String>,
7196    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
7197    #[serde(rename = "category_uid")]
7198    #[serde(skip_serializing_if = "Option::is_none")]
7199    pub category_uid: Option<i64>,
7200    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>File Hosting Activity</code>.\n\noptional"]
7201    #[serde(rename = "class_name")]
7202    #[serde(skip_serializing_if = "Option::is_none")]
7203    pub class_name: Option<String>,
7204    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
7205    #[serde(rename = "class_uid")]
7206    #[serde(skip_serializing_if = "Option::is_none")]
7207    pub class_uid: Option<i64>,
7208    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
7209    #[serde(rename = "cloud")]
7210    #[serde(skip_serializing_if = "Option::is_none")]
7211    pub cloud: Option<Box<Cloud>>,
7212    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7213    #[serde(rename = "confidence")]
7214    #[serde(skip_serializing_if = "Option::is_none")]
7215    pub confidence: Option<String>,
7216    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
7217    #[serde(rename = "confidence_id")]
7218    #[serde(skip_serializing_if = "Option::is_none")]
7219    pub confidence_id: Option<i64>,
7220    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
7221    #[serde(rename = "confidence_score")]
7222    #[serde(skip_serializing_if = "Option::is_none")]
7223    pub confidence_score: Option<i64>,
7224    #[doc = "Connection Info\n\nThe network connection information.\n\noptional"]
7225    #[serde(rename = "connection_info")]
7226    #[serde(skip_serializing_if = "Option::is_none")]
7227    pub connection_info: Option<Box<NetworkConnectionInfo>>,
7228    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
7229    #[serde(rename = "count")]
7230    #[serde(skip_serializing_if = "Option::is_none")]
7231    pub count: Option<i64>,
7232    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
7233    #[serde(rename = "device")]
7234    #[serde(skip_serializing_if = "Option::is_none")]
7235    pub device: Option<Box<Device>>,
7236    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7237    #[serde(rename = "disposition")]
7238    #[serde(skip_serializing_if = "Option::is_none")]
7239    pub disposition: Option<String>,
7240    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
7241    #[serde(rename = "disposition_id")]
7242    #[serde(skip_serializing_if = "Option::is_none")]
7243    pub disposition_id: Option<i64>,
7244    #[doc = "Destination Endpoint\n\nThe endpoint that received the activity on the target file.\n\nrecommended"]
7245    #[serde(rename = "dst_endpoint")]
7246    #[serde(skip_serializing_if = "Option::is_none")]
7247    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
7248    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
7249    #[serde(rename = "duration")]
7250    #[serde(skip_serializing_if = "Option::is_none")]
7251    pub duration: Option<i64>,
7252    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
7253    #[serde(rename = "end_time")]
7254    #[serde(skip_serializing_if = "Option::is_none")]
7255    pub end_time: Option<i64>,
7256    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
7257    #[serde(rename = "end_time_dt")]
7258    #[serde(skip_serializing_if = "Option::is_none")]
7259    pub end_time_dt: Option<String>,
7260    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
7261    #[serde(rename = "enrichments")]
7262    #[serde(skip_serializing_if = "Option::is_none")]
7263    pub enrichments: Option<Vec<Enrichment>>,
7264    #[doc = "Expiration Time\n\nThe share expiration time.\n\noptional"]
7265    #[serde(rename = "expiration_time")]
7266    #[serde(skip_serializing_if = "Option::is_none")]
7267    pub expiration_time: Option<i64>,
7268    #[doc = "Expiration Time\n\nThe share expiration time.\n\noptional"]
7269    #[serde(rename = "expiration_time_dt")]
7270    #[serde(skip_serializing_if = "Option::is_none")]
7271    pub expiration_time_dt: Option<String>,
7272    #[doc = "File\n\nThe file that is the target of the activity.\n\nrequired"]
7273    #[serde(rename = "file")]
7274    #[serde(skip_serializing_if = "Option::is_none")]
7275    pub file: Option<Box<File>>,
7276    #[doc = "File Result\n\nThe resulting file object when the activity was allowed and successful.\n\noptional"]
7277    #[serde(rename = "file_result")]
7278    #[serde(skip_serializing_if = "Option::is_none")]
7279    pub file_result: Option<Box<File>>,
7280    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
7281    #[serde(rename = "firewall_rule")]
7282    #[serde(skip_serializing_if = "Option::is_none")]
7283    pub firewall_rule: Option<Box<FirewallRule>>,
7284    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\nrecommended"]
7285    #[serde(rename = "http_request")]
7286    #[serde(skip_serializing_if = "Option::is_none")]
7287    pub http_request: Option<Box<HttpRequest>>,
7288    #[doc = "HTTP Response\n\nDetails about the HTTP response, if available.\n\noptional"]
7289    #[serde(rename = "http_response")]
7290    #[serde(skip_serializing_if = "Option::is_none")]
7291    pub http_response: Option<Box<HttpResponse>>,
7292    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
7293    #[serde(rename = "is_alert")]
7294    #[serde(skip_serializing_if = "Option::is_none")]
7295    pub is_alert: Option<bool>,
7296    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
7297    #[serde(rename = "malware")]
7298    #[serde(skip_serializing_if = "Option::is_none")]
7299    pub malware: Option<Vec<Malware>>,
7300    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
7301    #[serde(rename = "malware_scan_info")]
7302    #[serde(skip_serializing_if = "Option::is_none")]
7303    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
7304    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
7305    #[serde(rename = "message")]
7306    #[serde(skip_serializing_if = "Option::is_none")]
7307    pub message: Option<String>,
7308    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
7309    #[serde(rename = "metadata")]
7310    #[serde(skip_serializing_if = "Option::is_none")]
7311    pub metadata: Option<Box<Metadata>>,
7312    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
7313    #[serde(rename = "observables")]
7314    #[serde(skip_serializing_if = "Option::is_none")]
7315    pub observables: Option<Vec<Observable>>,
7316    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
7317    #[serde(rename = "osint")]
7318    #[serde(skip_serializing_if = "Option::is_none")]
7319    pub osint: Option<Vec<Osint>>,
7320    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
7321    #[serde(rename = "policy")]
7322    #[serde(skip_serializing_if = "Option::is_none")]
7323    pub policy: Option<Box<Policy>>,
7324    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
7325    #[serde(rename = "raw_data")]
7326    #[serde(skip_serializing_if = "Option::is_none")]
7327    pub raw_data: Option<String>,
7328    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
7329    #[serde(rename = "raw_data_hash")]
7330    #[serde(skip_serializing_if = "Option::is_none")]
7331    pub raw_data_hash: Option<Box<Fingerprint>>,
7332    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
7333    #[serde(rename = "raw_data_size")]
7334    #[serde(skip_serializing_if = "Option::is_none")]
7335    pub raw_data_size: Option<i64>,
7336    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
7337    #[serde(rename = "risk_details")]
7338    #[serde(skip_serializing_if = "Option::is_none")]
7339    pub risk_details: Option<String>,
7340    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
7341    #[serde(rename = "risk_level")]
7342    #[serde(skip_serializing_if = "Option::is_none")]
7343    pub risk_level: Option<String>,
7344    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
7345    #[serde(rename = "risk_level_id")]
7346    #[serde(skip_serializing_if = "Option::is_none")]
7347    pub risk_level_id: Option<i64>,
7348    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
7349    #[serde(rename = "risk_score")]
7350    #[serde(skip_serializing_if = "Option::is_none")]
7351    pub risk_score: Option<i64>,
7352    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
7353    #[serde(rename = "severity")]
7354    #[serde(skip_serializing_if = "Option::is_none")]
7355    pub severity: Option<String>,
7356    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
7357    #[serde(rename = "severity_id")]
7358    #[serde(skip_serializing_if = "Option::is_none")]
7359    pub severity_id: Option<i64>,
7360    #[doc = "Share\n\nThe share name.\n\noptional"]
7361    #[serde(rename = "share")]
7362    #[serde(skip_serializing_if = "Option::is_none")]
7363    pub share: Option<String>,
7364    #[doc = "Share Type\n\nThe share type, normalized to the caption of the share_type_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7365    #[serde(rename = "share_type")]
7366    #[serde(skip_serializing_if = "Option::is_none")]
7367    pub share_type: Option<String>,
7368    #[doc = "Share Type ID\n\nThe normalized identifier of the share type.\n\noptional"]
7369    #[serde(rename = "share_type_id")]
7370    #[serde(skip_serializing_if = "Option::is_none")]
7371    pub share_type_id: Option<i64>,
7372    #[doc = "Source Endpoint\n\nThe endpoint that performed the activity on the target file.\n\nrequired"]
7373    #[serde(rename = "src_endpoint")]
7374    #[serde(skip_serializing_if = "Option::is_none")]
7375    pub src_endpoint: Option<Box<NetworkEndpoint>>,
7376    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
7377    #[serde(rename = "start_time")]
7378    #[serde(skip_serializing_if = "Option::is_none")]
7379    pub start_time: Option<i64>,
7380    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
7381    #[serde(rename = "start_time_dt")]
7382    #[serde(skip_serializing_if = "Option::is_none")]
7383    pub start_time_dt: Option<String>,
7384    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
7385    #[serde(rename = "status")]
7386    #[serde(skip_serializing_if = "Option::is_none")]
7387    pub status: Option<String>,
7388    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
7389    #[serde(rename = "status_code")]
7390    #[serde(skip_serializing_if = "Option::is_none")]
7391    pub status_code: Option<String>,
7392    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
7393    #[serde(rename = "status_detail")]
7394    #[serde(skip_serializing_if = "Option::is_none")]
7395    pub status_detail: Option<String>,
7396    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
7397    #[serde(rename = "status_id")]
7398    #[serde(skip_serializing_if = "Option::is_none")]
7399    pub status_id: Option<i64>,
7400    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
7401    #[serde(rename = "time")]
7402    #[serde(skip_serializing_if = "Option::is_none")]
7403    pub time: Option<i64>,
7404    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
7405    #[serde(rename = "time_dt")]
7406    #[serde(skip_serializing_if = "Option::is_none")]
7407    pub time_dt: Option<String>,
7408    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
7409    #[serde(rename = "timezone_offset")]
7410    #[serde(skip_serializing_if = "Option::is_none")]
7411    pub timezone_offset: Option<i64>,
7412    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
7413    #[serde(rename = "type_name")]
7414    #[serde(skip_serializing_if = "Option::is_none")]
7415    pub type_name: Option<String>,
7416    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
7417    #[serde(rename = "type_uid")]
7418    #[serde(skip_serializing_if = "Option::is_none")]
7419    pub type_uid: Option<i64>,
7420    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
7421    #[serde(rename = "unmapped")]
7422    #[serde(skip_serializing_if = "Option::is_none")]
7423    pub unmapped: Option<serde_json::Value>,
7424}
7425#[doc = "File Query\n\nFile Query events report information about files that are present on the system.\n\n[UID:5007] Category: discovery | Name: file_query"]
7426#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
7427#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
7428#[serde(default)]
7429#[non_exhaustive]
7430pub struct FileQuery {
7431    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
7432    #[serde(rename = "action")]
7433    #[serde(skip_serializing_if = "Option::is_none")]
7434    pub action: Option<String>,
7435    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
7436    #[serde(rename = "action_id")]
7437    #[serde(skip_serializing_if = "Option::is_none")]
7438    pub action_id: Option<i64>,
7439    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
7440    #[serde(rename = "activity_id")]
7441    #[serde(skip_serializing_if = "Option::is_none")]
7442    pub activity_id: Option<i64>,
7443    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
7444    #[serde(rename = "activity_name")]
7445    #[serde(skip_serializing_if = "Option::is_none")]
7446    pub activity_name: Option<String>,
7447    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
7448    #[serde(rename = "actor")]
7449    #[serde(skip_serializing_if = "Option::is_none")]
7450    pub actor: Option<Box<Actor>>,
7451    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
7452    #[serde(rename = "api")]
7453    #[serde(skip_serializing_if = "Option::is_none")]
7454    pub api: Option<Box<Api>>,
7455    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
7456    #[serde(rename = "attacks")]
7457    #[serde(skip_serializing_if = "Option::is_none")]
7458    pub attacks: Option<Vec<Attack>>,
7459    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
7460    #[serde(rename = "authorizations")]
7461    #[serde(skip_serializing_if = "Option::is_none")]
7462    pub authorizations: Option<Vec<Authorization>>,
7463    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
7464    #[serde(rename = "category_name")]
7465    #[serde(skip_serializing_if = "Option::is_none")]
7466    pub category_name: Option<String>,
7467    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
7468    #[serde(rename = "category_uid")]
7469    #[serde(skip_serializing_if = "Option::is_none")]
7470    pub category_uid: Option<i64>,
7471    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>File Query</code>.\n\noptional"]
7472    #[serde(rename = "class_name")]
7473    #[serde(skip_serializing_if = "Option::is_none")]
7474    pub class_name: Option<String>,
7475    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
7476    #[serde(rename = "class_uid")]
7477    #[serde(skip_serializing_if = "Option::is_none")]
7478    pub class_uid: Option<i64>,
7479    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
7480    #[serde(rename = "cloud")]
7481    #[serde(skip_serializing_if = "Option::is_none")]
7482    pub cloud: Option<Box<Cloud>>,
7483    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7484    #[serde(rename = "confidence")]
7485    #[serde(skip_serializing_if = "Option::is_none")]
7486    pub confidence: Option<String>,
7487    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
7488    #[serde(rename = "confidence_id")]
7489    #[serde(skip_serializing_if = "Option::is_none")]
7490    pub confidence_id: Option<i64>,
7491    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
7492    #[serde(rename = "confidence_score")]
7493    #[serde(skip_serializing_if = "Option::is_none")]
7494    pub confidence_score: Option<i64>,
7495    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
7496    #[serde(rename = "count")]
7497    #[serde(skip_serializing_if = "Option::is_none")]
7498    pub count: Option<i64>,
7499    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
7500    #[serde(rename = "device")]
7501    #[serde(skip_serializing_if = "Option::is_none")]
7502    pub device: Option<Box<Device>>,
7503    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7504    #[serde(rename = "disposition")]
7505    #[serde(skip_serializing_if = "Option::is_none")]
7506    pub disposition: Option<String>,
7507    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
7508    #[serde(rename = "disposition_id")]
7509    #[serde(skip_serializing_if = "Option::is_none")]
7510    pub disposition_id: Option<i64>,
7511    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
7512    #[serde(rename = "duration")]
7513    #[serde(skip_serializing_if = "Option::is_none")]
7514    pub duration: Option<i64>,
7515    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
7516    #[serde(rename = "end_time")]
7517    #[serde(skip_serializing_if = "Option::is_none")]
7518    pub end_time: Option<i64>,
7519    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
7520    #[serde(rename = "end_time_dt")]
7521    #[serde(skip_serializing_if = "Option::is_none")]
7522    pub end_time_dt: Option<String>,
7523    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
7524    #[serde(rename = "enrichments")]
7525    #[serde(skip_serializing_if = "Option::is_none")]
7526    pub enrichments: Option<Vec<Enrichment>>,
7527    #[doc = "File\n\nThe file that is the target of the query.\n\nrequired"]
7528    #[serde(rename = "file")]
7529    #[serde(skip_serializing_if = "Option::is_none")]
7530    pub file: Option<Box<File>>,
7531    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
7532    #[serde(rename = "firewall_rule")]
7533    #[serde(skip_serializing_if = "Option::is_none")]
7534    pub firewall_rule: Option<Box<FirewallRule>>,
7535    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
7536    #[serde(rename = "is_alert")]
7537    #[serde(skip_serializing_if = "Option::is_none")]
7538    pub is_alert: Option<bool>,
7539    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
7540    #[serde(rename = "malware")]
7541    #[serde(skip_serializing_if = "Option::is_none")]
7542    pub malware: Option<Vec<Malware>>,
7543    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
7544    #[serde(rename = "malware_scan_info")]
7545    #[serde(skip_serializing_if = "Option::is_none")]
7546    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
7547    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
7548    #[serde(rename = "message")]
7549    #[serde(skip_serializing_if = "Option::is_none")]
7550    pub message: Option<String>,
7551    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
7552    #[serde(rename = "metadata")]
7553    #[serde(skip_serializing_if = "Option::is_none")]
7554    pub metadata: Option<Box<Metadata>>,
7555    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
7556    #[serde(rename = "observables")]
7557    #[serde(skip_serializing_if = "Option::is_none")]
7558    pub observables: Option<Vec<Observable>>,
7559    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
7560    #[serde(rename = "osint")]
7561    #[serde(skip_serializing_if = "Option::is_none")]
7562    pub osint: Option<Vec<Osint>>,
7563    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
7564    #[serde(rename = "policy")]
7565    #[serde(skip_serializing_if = "Option::is_none")]
7566    pub policy: Option<Box<Policy>>,
7567    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
7568    #[serde(rename = "query_info")]
7569    #[serde(skip_serializing_if = "Option::is_none")]
7570    pub query_info: Option<Box<QueryInfo>>,
7571    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
7572    #[serde(rename = "query_result")]
7573    #[serde(skip_serializing_if = "Option::is_none")]
7574    pub query_result: Option<String>,
7575    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
7576    #[serde(rename = "query_result_id")]
7577    #[serde(skip_serializing_if = "Option::is_none")]
7578    pub query_result_id: Option<i64>,
7579    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
7580    #[serde(rename = "raw_data")]
7581    #[serde(skip_serializing_if = "Option::is_none")]
7582    pub raw_data: Option<String>,
7583    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
7584    #[serde(rename = "raw_data_hash")]
7585    #[serde(skip_serializing_if = "Option::is_none")]
7586    pub raw_data_hash: Option<Box<Fingerprint>>,
7587    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
7588    #[serde(rename = "raw_data_size")]
7589    #[serde(skip_serializing_if = "Option::is_none")]
7590    pub raw_data_size: Option<i64>,
7591    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
7592    #[serde(rename = "risk_details")]
7593    #[serde(skip_serializing_if = "Option::is_none")]
7594    pub risk_details: Option<String>,
7595    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
7596    #[serde(rename = "risk_level")]
7597    #[serde(skip_serializing_if = "Option::is_none")]
7598    pub risk_level: Option<String>,
7599    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
7600    #[serde(rename = "risk_level_id")]
7601    #[serde(skip_serializing_if = "Option::is_none")]
7602    pub risk_level_id: Option<i64>,
7603    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
7604    #[serde(rename = "risk_score")]
7605    #[serde(skip_serializing_if = "Option::is_none")]
7606    pub risk_score: Option<i64>,
7607    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
7608    #[serde(rename = "severity")]
7609    #[serde(skip_serializing_if = "Option::is_none")]
7610    pub severity: Option<String>,
7611    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
7612    #[serde(rename = "severity_id")]
7613    #[serde(skip_serializing_if = "Option::is_none")]
7614    pub severity_id: Option<i64>,
7615    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
7616    #[serde(rename = "start_time")]
7617    #[serde(skip_serializing_if = "Option::is_none")]
7618    pub start_time: Option<i64>,
7619    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
7620    #[serde(rename = "start_time_dt")]
7621    #[serde(skip_serializing_if = "Option::is_none")]
7622    pub start_time_dt: Option<String>,
7623    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
7624    #[serde(rename = "status")]
7625    #[serde(skip_serializing_if = "Option::is_none")]
7626    pub status: Option<String>,
7627    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
7628    #[serde(rename = "status_code")]
7629    #[serde(skip_serializing_if = "Option::is_none")]
7630    pub status_code: Option<String>,
7631    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
7632    #[serde(rename = "status_detail")]
7633    #[serde(skip_serializing_if = "Option::is_none")]
7634    pub status_detail: Option<String>,
7635    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
7636    #[serde(rename = "status_id")]
7637    #[serde(skip_serializing_if = "Option::is_none")]
7638    pub status_id: Option<i64>,
7639    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
7640    #[serde(rename = "time")]
7641    #[serde(skip_serializing_if = "Option::is_none")]
7642    pub time: Option<i64>,
7643    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
7644    #[serde(rename = "time_dt")]
7645    #[serde(skip_serializing_if = "Option::is_none")]
7646    pub time_dt: Option<String>,
7647    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
7648    #[serde(rename = "timezone_offset")]
7649    #[serde(skip_serializing_if = "Option::is_none")]
7650    pub timezone_offset: Option<i64>,
7651    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
7652    #[serde(rename = "type_name")]
7653    #[serde(skip_serializing_if = "Option::is_none")]
7654    pub type_name: Option<String>,
7655    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
7656    #[serde(rename = "type_uid")]
7657    #[serde(skip_serializing_if = "Option::is_none")]
7658    pub type_uid: Option<i64>,
7659    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
7660    #[serde(rename = "unmapped")]
7661    #[serde(skip_serializing_if = "Option::is_none")]
7662    pub unmapped: Option<serde_json::Value>,
7663}
7664#[doc = "File Remediation Activity\n\nFile Remediation Activity events report on attempts at remediating files. It follows the MITRE countermeasures defined by the D3FEND™ <a target='_blank' href='https://d3fend.mitre.org/'>Matrix</a>. Sub-techniques will include File, such as File Removal or Restore File.\n\n[UID:7002] Category: remediation | Name: file_remediation_activity"]
7665#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
7666#[serde(default)]
7667#[non_exhaustive]
7668pub struct FileRemediationActivity {
7669    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
7670    #[serde(rename = "action")]
7671    #[serde(skip_serializing_if = "Option::is_none")]
7672    pub action: Option<String>,
7673    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
7674    #[serde(rename = "action_id")]
7675    #[serde(skip_serializing_if = "Option::is_none")]
7676    pub action_id: Option<i64>,
7677    #[doc = "Activity ID\n\nMatches the MITRE D3FEND™ Tactic. Note: the Model and Detect Tactics are not supported as remediations by the OCSF Remediation event class.\n\nrequired"]
7678    #[serde(rename = "activity_id")]
7679    #[serde(skip_serializing_if = "Option::is_none")]
7680    pub activity_id: Option<i64>,
7681    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
7682    #[serde(rename = "activity_name")]
7683    #[serde(skip_serializing_if = "Option::is_none")]
7684    pub activity_name: Option<String>,
7685    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
7686    #[serde(rename = "actor")]
7687    #[serde(skip_serializing_if = "Option::is_none")]
7688    pub actor: Option<Box<Actor>>,
7689    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
7690    #[serde(rename = "api")]
7691    #[serde(skip_serializing_if = "Option::is_none")]
7692    pub api: Option<Box<Api>>,
7693    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
7694    #[serde(rename = "attacks")]
7695    #[serde(skip_serializing_if = "Option::is_none")]
7696    pub attacks: Option<Vec<Attack>>,
7697    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
7698    #[serde(rename = "authorizations")]
7699    #[serde(skip_serializing_if = "Option::is_none")]
7700    pub authorizations: Option<Vec<Authorization>>,
7701    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Remediation</code>.\n\noptional"]
7702    #[serde(rename = "category_name")]
7703    #[serde(skip_serializing_if = "Option::is_none")]
7704    pub category_name: Option<String>,
7705    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
7706    #[serde(rename = "category_uid")]
7707    #[serde(skip_serializing_if = "Option::is_none")]
7708    pub category_uid: Option<i64>,
7709    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>File Remediation Activity</code>.\n\noptional"]
7710    #[serde(rename = "class_name")]
7711    #[serde(skip_serializing_if = "Option::is_none")]
7712    pub class_name: Option<String>,
7713    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
7714    #[serde(rename = "class_uid")]
7715    #[serde(skip_serializing_if = "Option::is_none")]
7716    pub class_uid: Option<i64>,
7717    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
7718    #[serde(rename = "cloud")]
7719    #[serde(skip_serializing_if = "Option::is_none")]
7720    pub cloud: Option<Box<Cloud>>,
7721    #[doc = "Command UID\n\nThe unique identifier of the remediation command that pertains to this event.\n\nrequired"]
7722    #[serde(rename = "command_uid")]
7723    #[serde(skip_serializing_if = "Option::is_none")]
7724    pub command_uid: Option<String>,
7725    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7726    #[serde(rename = "confidence")]
7727    #[serde(skip_serializing_if = "Option::is_none")]
7728    pub confidence: Option<String>,
7729    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
7730    #[serde(rename = "confidence_id")]
7731    #[serde(skip_serializing_if = "Option::is_none")]
7732    pub confidence_id: Option<i64>,
7733    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
7734    #[serde(rename = "confidence_score")]
7735    #[serde(skip_serializing_if = "Option::is_none")]
7736    pub confidence_score: Option<i64>,
7737    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
7738    #[serde(rename = "count")]
7739    #[serde(skip_serializing_if = "Option::is_none")]
7740    pub count: Option<i64>,
7741    #[doc = "Countermeasures\n\nThe MITRE D3FEND™ Matrix Countermeasures associated with a remediation.\n\nrecommended"]
7742    #[serde(rename = "countermeasures")]
7743    #[serde(skip_serializing_if = "Option::is_none")]
7744    pub countermeasures: Option<Vec<D3fend>>,
7745    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
7746    #[serde(rename = "device")]
7747    #[serde(skip_serializing_if = "Option::is_none")]
7748    pub device: Option<Box<Device>>,
7749    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7750    #[serde(rename = "disposition")]
7751    #[serde(skip_serializing_if = "Option::is_none")]
7752    pub disposition: Option<String>,
7753    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
7754    #[serde(rename = "disposition_id")]
7755    #[serde(skip_serializing_if = "Option::is_none")]
7756    pub disposition_id: Option<i64>,
7757    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
7758    #[serde(rename = "duration")]
7759    #[serde(skip_serializing_if = "Option::is_none")]
7760    pub duration: Option<i64>,
7761    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
7762    #[serde(rename = "end_time")]
7763    #[serde(skip_serializing_if = "Option::is_none")]
7764    pub end_time: Option<i64>,
7765    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
7766    #[serde(rename = "end_time_dt")]
7767    #[serde(skip_serializing_if = "Option::is_none")]
7768    pub end_time_dt: Option<String>,
7769    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
7770    #[serde(rename = "enrichments")]
7771    #[serde(skip_serializing_if = "Option::is_none")]
7772    pub enrichments: Option<Vec<Enrichment>>,
7773    #[doc = "File\n\nThe file that pertains to the remediation event.\n\nrequired"]
7774    #[serde(rename = "file")]
7775    #[serde(skip_serializing_if = "Option::is_none")]
7776    pub file: Option<Box<File>>,
7777    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
7778    #[serde(rename = "firewall_rule")]
7779    #[serde(skip_serializing_if = "Option::is_none")]
7780    pub firewall_rule: Option<Box<FirewallRule>>,
7781    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
7782    #[serde(rename = "is_alert")]
7783    #[serde(skip_serializing_if = "Option::is_none")]
7784    pub is_alert: Option<bool>,
7785    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
7786    #[serde(rename = "malware")]
7787    #[serde(skip_serializing_if = "Option::is_none")]
7788    pub malware: Option<Vec<Malware>>,
7789    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
7790    #[serde(rename = "malware_scan_info")]
7791    #[serde(skip_serializing_if = "Option::is_none")]
7792    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
7793    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
7794    #[serde(rename = "message")]
7795    #[serde(skip_serializing_if = "Option::is_none")]
7796    pub message: Option<String>,
7797    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
7798    #[serde(rename = "metadata")]
7799    #[serde(skip_serializing_if = "Option::is_none")]
7800    pub metadata: Option<Box<Metadata>>,
7801    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
7802    #[serde(rename = "observables")]
7803    #[serde(skip_serializing_if = "Option::is_none")]
7804    pub observables: Option<Vec<Observable>>,
7805    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
7806    #[serde(rename = "osint")]
7807    #[serde(skip_serializing_if = "Option::is_none")]
7808    pub osint: Option<Vec<Osint>>,
7809    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
7810    #[serde(rename = "policy")]
7811    #[serde(skip_serializing_if = "Option::is_none")]
7812    pub policy: Option<Box<Policy>>,
7813    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
7814    #[serde(rename = "raw_data")]
7815    #[serde(skip_serializing_if = "Option::is_none")]
7816    pub raw_data: Option<String>,
7817    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
7818    #[serde(rename = "raw_data_hash")]
7819    #[serde(skip_serializing_if = "Option::is_none")]
7820    pub raw_data_hash: Option<Box<Fingerprint>>,
7821    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
7822    #[serde(rename = "raw_data_size")]
7823    #[serde(skip_serializing_if = "Option::is_none")]
7824    pub raw_data_size: Option<i64>,
7825    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
7826    #[serde(rename = "remediation")]
7827    #[serde(skip_serializing_if = "Option::is_none")]
7828    pub remediation: Option<Box<Remediation>>,
7829    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
7830    #[serde(rename = "risk_details")]
7831    #[serde(skip_serializing_if = "Option::is_none")]
7832    pub risk_details: Option<String>,
7833    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
7834    #[serde(rename = "risk_level")]
7835    #[serde(skip_serializing_if = "Option::is_none")]
7836    pub risk_level: Option<String>,
7837    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
7838    #[serde(rename = "risk_level_id")]
7839    #[serde(skip_serializing_if = "Option::is_none")]
7840    pub risk_level_id: Option<i64>,
7841    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
7842    #[serde(rename = "risk_score")]
7843    #[serde(skip_serializing_if = "Option::is_none")]
7844    pub risk_score: Option<i64>,
7845    #[doc = "Scan\n\nThe remediation scan that pertains to this event.\n\noptional"]
7846    #[serde(rename = "scan")]
7847    #[serde(skip_serializing_if = "Option::is_none")]
7848    pub scan: Option<Box<Scan>>,
7849    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
7850    #[serde(rename = "severity")]
7851    #[serde(skip_serializing_if = "Option::is_none")]
7852    pub severity: Option<String>,
7853    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
7854    #[serde(rename = "severity_id")]
7855    #[serde(skip_serializing_if = "Option::is_none")]
7856    pub severity_id: Option<i64>,
7857    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
7858    #[serde(rename = "start_time")]
7859    #[serde(skip_serializing_if = "Option::is_none")]
7860    pub start_time: Option<i64>,
7861    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
7862    #[serde(rename = "start_time_dt")]
7863    #[serde(skip_serializing_if = "Option::is_none")]
7864    pub start_time_dt: Option<String>,
7865    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
7866    #[serde(rename = "status")]
7867    #[serde(skip_serializing_if = "Option::is_none")]
7868    pub status: Option<String>,
7869    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
7870    #[serde(rename = "status_code")]
7871    #[serde(skip_serializing_if = "Option::is_none")]
7872    pub status_code: Option<String>,
7873    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
7874    #[serde(rename = "status_detail")]
7875    #[serde(skip_serializing_if = "Option::is_none")]
7876    pub status_detail: Option<String>,
7877    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
7878    #[serde(rename = "status_id")]
7879    #[serde(skip_serializing_if = "Option::is_none")]
7880    pub status_id: Option<i64>,
7881    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
7882    #[serde(rename = "time")]
7883    #[serde(skip_serializing_if = "Option::is_none")]
7884    pub time: Option<i64>,
7885    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
7886    #[serde(rename = "time_dt")]
7887    #[serde(skip_serializing_if = "Option::is_none")]
7888    pub time_dt: Option<String>,
7889    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
7890    #[serde(rename = "timezone_offset")]
7891    #[serde(skip_serializing_if = "Option::is_none")]
7892    pub timezone_offset: Option<i64>,
7893    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
7894    #[serde(rename = "type_name")]
7895    #[serde(skip_serializing_if = "Option::is_none")]
7896    pub type_name: Option<String>,
7897    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
7898    #[serde(rename = "type_uid")]
7899    #[serde(skip_serializing_if = "Option::is_none")]
7900    pub type_uid: Option<i64>,
7901    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
7902    #[serde(rename = "unmapped")]
7903    #[serde(skip_serializing_if = "Option::is_none")]
7904    pub unmapped: Option<serde_json::Value>,
7905}
7906#[doc = "Folder Query\n\nFolder Query events report information about folders that are present on the system.\n\n[UID:5008] Category: discovery | Name: folder_query"]
7907#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
7908#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
7909#[serde(default)]
7910#[non_exhaustive]
7911pub struct FolderQuery {
7912    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
7913    #[serde(rename = "action")]
7914    #[serde(skip_serializing_if = "Option::is_none")]
7915    pub action: Option<String>,
7916    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
7917    #[serde(rename = "action_id")]
7918    #[serde(skip_serializing_if = "Option::is_none")]
7919    pub action_id: Option<i64>,
7920    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
7921    #[serde(rename = "activity_id")]
7922    #[serde(skip_serializing_if = "Option::is_none")]
7923    pub activity_id: Option<i64>,
7924    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
7925    #[serde(rename = "activity_name")]
7926    #[serde(skip_serializing_if = "Option::is_none")]
7927    pub activity_name: Option<String>,
7928    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
7929    #[serde(rename = "actor")]
7930    #[serde(skip_serializing_if = "Option::is_none")]
7931    pub actor: Option<Box<Actor>>,
7932    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
7933    #[serde(rename = "api")]
7934    #[serde(skip_serializing_if = "Option::is_none")]
7935    pub api: Option<Box<Api>>,
7936    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
7937    #[serde(rename = "attacks")]
7938    #[serde(skip_serializing_if = "Option::is_none")]
7939    pub attacks: Option<Vec<Attack>>,
7940    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
7941    #[serde(rename = "authorizations")]
7942    #[serde(skip_serializing_if = "Option::is_none")]
7943    pub authorizations: Option<Vec<Authorization>>,
7944    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
7945    #[serde(rename = "category_name")]
7946    #[serde(skip_serializing_if = "Option::is_none")]
7947    pub category_name: Option<String>,
7948    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
7949    #[serde(rename = "category_uid")]
7950    #[serde(skip_serializing_if = "Option::is_none")]
7951    pub category_uid: Option<i64>,
7952    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Folder Query</code>.\n\noptional"]
7953    #[serde(rename = "class_name")]
7954    #[serde(skip_serializing_if = "Option::is_none")]
7955    pub class_name: Option<String>,
7956    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
7957    #[serde(rename = "class_uid")]
7958    #[serde(skip_serializing_if = "Option::is_none")]
7959    pub class_uid: Option<i64>,
7960    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
7961    #[serde(rename = "cloud")]
7962    #[serde(skip_serializing_if = "Option::is_none")]
7963    pub cloud: Option<Box<Cloud>>,
7964    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7965    #[serde(rename = "confidence")]
7966    #[serde(skip_serializing_if = "Option::is_none")]
7967    pub confidence: Option<String>,
7968    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
7969    #[serde(rename = "confidence_id")]
7970    #[serde(skip_serializing_if = "Option::is_none")]
7971    pub confidence_id: Option<i64>,
7972    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
7973    #[serde(rename = "confidence_score")]
7974    #[serde(skip_serializing_if = "Option::is_none")]
7975    pub confidence_score: Option<i64>,
7976    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
7977    #[serde(rename = "count")]
7978    #[serde(skip_serializing_if = "Option::is_none")]
7979    pub count: Option<i64>,
7980    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
7981    #[serde(rename = "device")]
7982    #[serde(skip_serializing_if = "Option::is_none")]
7983    pub device: Option<Box<Device>>,
7984    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
7985    #[serde(rename = "disposition")]
7986    #[serde(skip_serializing_if = "Option::is_none")]
7987    pub disposition: Option<String>,
7988    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
7989    #[serde(rename = "disposition_id")]
7990    #[serde(skip_serializing_if = "Option::is_none")]
7991    pub disposition_id: Option<i64>,
7992    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
7993    #[serde(rename = "duration")]
7994    #[serde(skip_serializing_if = "Option::is_none")]
7995    pub duration: Option<i64>,
7996    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
7997    #[serde(rename = "end_time")]
7998    #[serde(skip_serializing_if = "Option::is_none")]
7999    pub end_time: Option<i64>,
8000    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
8001    #[serde(rename = "end_time_dt")]
8002    #[serde(skip_serializing_if = "Option::is_none")]
8003    pub end_time_dt: Option<String>,
8004    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
8005    #[serde(rename = "enrichments")]
8006    #[serde(skip_serializing_if = "Option::is_none")]
8007    pub enrichments: Option<Vec<Enrichment>>,
8008    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
8009    #[serde(rename = "firewall_rule")]
8010    #[serde(skip_serializing_if = "Option::is_none")]
8011    pub firewall_rule: Option<Box<FirewallRule>>,
8012    #[doc = "Folder\n\nThe folder that is the target of the query.\n\nrequired"]
8013    #[serde(rename = "folder")]
8014    #[serde(skip_serializing_if = "Option::is_none")]
8015    pub folder: Option<Box<File>>,
8016    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
8017    #[serde(rename = "is_alert")]
8018    #[serde(skip_serializing_if = "Option::is_none")]
8019    pub is_alert: Option<bool>,
8020    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
8021    #[serde(rename = "malware")]
8022    #[serde(skip_serializing_if = "Option::is_none")]
8023    pub malware: Option<Vec<Malware>>,
8024    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
8025    #[serde(rename = "malware_scan_info")]
8026    #[serde(skip_serializing_if = "Option::is_none")]
8027    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
8028    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
8029    #[serde(rename = "message")]
8030    #[serde(skip_serializing_if = "Option::is_none")]
8031    pub message: Option<String>,
8032    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
8033    #[serde(rename = "metadata")]
8034    #[serde(skip_serializing_if = "Option::is_none")]
8035    pub metadata: Option<Box<Metadata>>,
8036    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
8037    #[serde(rename = "observables")]
8038    #[serde(skip_serializing_if = "Option::is_none")]
8039    pub observables: Option<Vec<Observable>>,
8040    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
8041    #[serde(rename = "osint")]
8042    #[serde(skip_serializing_if = "Option::is_none")]
8043    pub osint: Option<Vec<Osint>>,
8044    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
8045    #[serde(rename = "policy")]
8046    #[serde(skip_serializing_if = "Option::is_none")]
8047    pub policy: Option<Box<Policy>>,
8048    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
8049    #[serde(rename = "query_info")]
8050    #[serde(skip_serializing_if = "Option::is_none")]
8051    pub query_info: Option<Box<QueryInfo>>,
8052    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
8053    #[serde(rename = "query_result")]
8054    #[serde(skip_serializing_if = "Option::is_none")]
8055    pub query_result: Option<String>,
8056    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
8057    #[serde(rename = "query_result_id")]
8058    #[serde(skip_serializing_if = "Option::is_none")]
8059    pub query_result_id: Option<i64>,
8060    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
8061    #[serde(rename = "raw_data")]
8062    #[serde(skip_serializing_if = "Option::is_none")]
8063    pub raw_data: Option<String>,
8064    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
8065    #[serde(rename = "raw_data_hash")]
8066    #[serde(skip_serializing_if = "Option::is_none")]
8067    pub raw_data_hash: Option<Box<Fingerprint>>,
8068    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
8069    #[serde(rename = "raw_data_size")]
8070    #[serde(skip_serializing_if = "Option::is_none")]
8071    pub raw_data_size: Option<i64>,
8072    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
8073    #[serde(rename = "risk_details")]
8074    #[serde(skip_serializing_if = "Option::is_none")]
8075    pub risk_details: Option<String>,
8076    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
8077    #[serde(rename = "risk_level")]
8078    #[serde(skip_serializing_if = "Option::is_none")]
8079    pub risk_level: Option<String>,
8080    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
8081    #[serde(rename = "risk_level_id")]
8082    #[serde(skip_serializing_if = "Option::is_none")]
8083    pub risk_level_id: Option<i64>,
8084    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
8085    #[serde(rename = "risk_score")]
8086    #[serde(skip_serializing_if = "Option::is_none")]
8087    pub risk_score: Option<i64>,
8088    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
8089    #[serde(rename = "severity")]
8090    #[serde(skip_serializing_if = "Option::is_none")]
8091    pub severity: Option<String>,
8092    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
8093    #[serde(rename = "severity_id")]
8094    #[serde(skip_serializing_if = "Option::is_none")]
8095    pub severity_id: Option<i64>,
8096    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
8097    #[serde(rename = "start_time")]
8098    #[serde(skip_serializing_if = "Option::is_none")]
8099    pub start_time: Option<i64>,
8100    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
8101    #[serde(rename = "start_time_dt")]
8102    #[serde(skip_serializing_if = "Option::is_none")]
8103    pub start_time_dt: Option<String>,
8104    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
8105    #[serde(rename = "status")]
8106    #[serde(skip_serializing_if = "Option::is_none")]
8107    pub status: Option<String>,
8108    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
8109    #[serde(rename = "status_code")]
8110    #[serde(skip_serializing_if = "Option::is_none")]
8111    pub status_code: Option<String>,
8112    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
8113    #[serde(rename = "status_detail")]
8114    #[serde(skip_serializing_if = "Option::is_none")]
8115    pub status_detail: Option<String>,
8116    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
8117    #[serde(rename = "status_id")]
8118    #[serde(skip_serializing_if = "Option::is_none")]
8119    pub status_id: Option<i64>,
8120    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
8121    #[serde(rename = "time")]
8122    #[serde(skip_serializing_if = "Option::is_none")]
8123    pub time: Option<i64>,
8124    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
8125    #[serde(rename = "time_dt")]
8126    #[serde(skip_serializing_if = "Option::is_none")]
8127    pub time_dt: Option<String>,
8128    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
8129    #[serde(rename = "timezone_offset")]
8130    #[serde(skip_serializing_if = "Option::is_none")]
8131    pub timezone_offset: Option<i64>,
8132    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
8133    #[serde(rename = "type_name")]
8134    #[serde(skip_serializing_if = "Option::is_none")]
8135    pub type_name: Option<String>,
8136    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
8137    #[serde(rename = "type_uid")]
8138    #[serde(skip_serializing_if = "Option::is_none")]
8139    pub type_uid: Option<i64>,
8140    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
8141    #[serde(rename = "unmapped")]
8142    #[serde(skip_serializing_if = "Option::is_none")]
8143    pub unmapped: Option<serde_json::Value>,
8144}
8145#[doc = "FTP Activity\n\nFile Transfer Protocol (FTP) Activity events report file transfers between a server and a client as seen on the network.\n\n[UID:4008] Category: network | Name: ftp_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
8146#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
8147#[serde(default)]
8148#[non_exhaustive]
8149pub struct FtpActivity {
8150    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
8151    #[serde(rename = "action")]
8152    #[serde(skip_serializing_if = "Option::is_none")]
8153    pub action: Option<String>,
8154    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
8155    #[serde(rename = "action_id")]
8156    #[serde(skip_serializing_if = "Option::is_none")]
8157    pub action_id: Option<i64>,
8158    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
8159    #[serde(rename = "activity_id")]
8160    #[serde(skip_serializing_if = "Option::is_none")]
8161    pub activity_id: Option<i64>,
8162    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
8163    #[serde(rename = "activity_name")]
8164    #[serde(skip_serializing_if = "Option::is_none")]
8165    pub activity_name: Option<String>,
8166    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
8167    #[serde(rename = "actor")]
8168    #[serde(skip_serializing_if = "Option::is_none")]
8169    pub actor: Option<Box<Actor>>,
8170    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
8171    #[serde(rename = "api")]
8172    #[serde(skip_serializing_if = "Option::is_none")]
8173    pub api: Option<Box<Api>>,
8174    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
8175    #[serde(rename = "app_name")]
8176    #[serde(skip_serializing_if = "Option::is_none")]
8177    pub app_name: Option<String>,
8178    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
8179    #[serde(rename = "attacks")]
8180    #[serde(skip_serializing_if = "Option::is_none")]
8181    pub attacks: Option<Vec<Attack>>,
8182    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
8183    #[serde(rename = "authorizations")]
8184    #[serde(skip_serializing_if = "Option::is_none")]
8185    pub authorizations: Option<Vec<Authorization>>,
8186    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
8187    #[serde(rename = "category_name")]
8188    #[serde(skip_serializing_if = "Option::is_none")]
8189    pub category_name: Option<String>,
8190    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
8191    #[serde(rename = "category_uid")]
8192    #[serde(skip_serializing_if = "Option::is_none")]
8193    pub category_uid: Option<i64>,
8194    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>FTP Activity</code>.\n\noptional"]
8195    #[serde(rename = "class_name")]
8196    #[serde(skip_serializing_if = "Option::is_none")]
8197    pub class_name: Option<String>,
8198    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
8199    #[serde(rename = "class_uid")]
8200    #[serde(skip_serializing_if = "Option::is_none")]
8201    pub class_uid: Option<i64>,
8202    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
8203    #[serde(rename = "cloud")]
8204    #[serde(skip_serializing_if = "Option::is_none")]
8205    pub cloud: Option<Box<Cloud>>,
8206    #[doc = "Response Codes\n\nThe list of return codes to the FTP command.\n\nrecommended"]
8207    #[serde(rename = "codes")]
8208    #[serde(skip_serializing_if = "Option::is_none")]
8209    pub codes: Option<Vec<i64>>,
8210    #[doc = "Command\n\nThe FTP command.\n\nrecommended"]
8211    #[serde(rename = "command")]
8212    #[serde(skip_serializing_if = "Option::is_none")]
8213    pub command: Option<String>,
8214    #[doc = "Command Responses\n\nThe list of responses to the FTP command.\n\nrecommended"]
8215    #[serde(rename = "command_responses")]
8216    #[serde(skip_serializing_if = "Option::is_none")]
8217    pub command_responses: Option<Vec<String>>,
8218    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
8219    #[serde(rename = "confidence")]
8220    #[serde(skip_serializing_if = "Option::is_none")]
8221    pub confidence: Option<String>,
8222    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
8223    #[serde(rename = "confidence_id")]
8224    #[serde(skip_serializing_if = "Option::is_none")]
8225    pub confidence_id: Option<i64>,
8226    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
8227    #[serde(rename = "confidence_score")]
8228    #[serde(skip_serializing_if = "Option::is_none")]
8229    pub confidence_score: Option<i64>,
8230    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
8231    #[serde(rename = "connection_info")]
8232    #[serde(skip_serializing_if = "Option::is_none")]
8233    pub connection_info: Option<Box<NetworkConnectionInfo>>,
8234    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
8235    #[serde(rename = "count")]
8236    #[serde(skip_serializing_if = "Option::is_none")]
8237    pub count: Option<i64>,
8238    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
8239    #[serde(rename = "cumulative_traffic")]
8240    #[serde(skip_serializing_if = "Option::is_none")]
8241    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
8242    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
8243    #[serde(rename = "device")]
8244    #[serde(skip_serializing_if = "Option::is_none")]
8245    pub device: Option<Box<Device>>,
8246    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
8247    #[serde(rename = "disposition")]
8248    #[serde(skip_serializing_if = "Option::is_none")]
8249    pub disposition: Option<String>,
8250    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
8251    #[serde(rename = "disposition_id")]
8252    #[serde(skip_serializing_if = "Option::is_none")]
8253    pub disposition_id: Option<i64>,
8254    #[doc = "Destination Endpoint\n\nThe responder (server) in a network connection.\n\nrecommended"]
8255    #[serde(rename = "dst_endpoint")]
8256    #[serde(skip_serializing_if = "Option::is_none")]
8257    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
8258    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
8259    #[serde(rename = "duration")]
8260    #[serde(skip_serializing_if = "Option::is_none")]
8261    pub duration: Option<i64>,
8262    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
8263    #[serde(rename = "end_time")]
8264    #[serde(skip_serializing_if = "Option::is_none")]
8265    pub end_time: Option<i64>,
8266    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
8267    #[serde(rename = "end_time_dt")]
8268    #[serde(skip_serializing_if = "Option::is_none")]
8269    pub end_time_dt: Option<String>,
8270    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
8271    #[serde(rename = "enrichments")]
8272    #[serde(skip_serializing_if = "Option::is_none")]
8273    pub enrichments: Option<Vec<Enrichment>>,
8274    #[doc = "File\n\nThe file that is the target of the FTP activity.\n\noptional"]
8275    #[serde(rename = "file")]
8276    #[serde(skip_serializing_if = "Option::is_none")]
8277    pub file: Option<Box<File>>,
8278    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
8279    #[serde(rename = "firewall_rule")]
8280    #[serde(skip_serializing_if = "Option::is_none")]
8281    pub firewall_rule: Option<Box<FirewallRule>>,
8282    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
8283    #[serde(rename = "is_alert")]
8284    #[serde(skip_serializing_if = "Option::is_none")]
8285    pub is_alert: Option<bool>,
8286    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
8287    #[serde(rename = "ja4_fingerprint_list")]
8288    #[serde(skip_serializing_if = "Option::is_none")]
8289    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
8290    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
8291    #[serde(rename = "load_balancer")]
8292    #[serde(skip_serializing_if = "Option::is_none")]
8293    pub load_balancer: Option<Box<LoadBalancer>>,
8294    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
8295    #[serde(rename = "malware")]
8296    #[serde(skip_serializing_if = "Option::is_none")]
8297    pub malware: Option<Vec<Malware>>,
8298    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
8299    #[serde(rename = "malware_scan_info")]
8300    #[serde(skip_serializing_if = "Option::is_none")]
8301    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
8302    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
8303    #[serde(rename = "message")]
8304    #[serde(skip_serializing_if = "Option::is_none")]
8305    pub message: Option<String>,
8306    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
8307    #[serde(rename = "metadata")]
8308    #[serde(skip_serializing_if = "Option::is_none")]
8309    pub metadata: Option<Box<Metadata>>,
8310    #[doc = "Name\n\nThe name of the data affiliated with the command.\n\nrecommended"]
8311    #[serde(rename = "name")]
8312    #[serde(skip_serializing_if = "Option::is_none")]
8313    pub name: Option<String>,
8314    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
8315    #[serde(rename = "observables")]
8316    #[serde(skip_serializing_if = "Option::is_none")]
8317    pub observables: Option<Vec<Observable>>,
8318    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
8319    #[serde(rename = "observation_point")]
8320    #[serde(skip_serializing_if = "Option::is_none")]
8321    pub observation_point: Option<String>,
8322    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
8323    #[serde(rename = "observation_point_id")]
8324    #[serde(skip_serializing_if = "Option::is_none")]
8325    pub observation_point_id: Option<i64>,
8326    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
8327    #[serde(rename = "osint")]
8328    #[serde(skip_serializing_if = "Option::is_none")]
8329    pub osint: Option<Vec<Osint>>,
8330    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
8331    #[serde(rename = "policy")]
8332    #[serde(skip_serializing_if = "Option::is_none")]
8333    pub policy: Option<Box<Policy>>,
8334    #[doc = "Port\n\nThe dynamic port established for impending data transfers.\n\nrecommended"]
8335    #[serde(rename = "port")]
8336    #[serde(skip_serializing_if = "Option::is_none")]
8337    pub port: Option<i64>,
8338    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
8339    #[serde(rename = "proxy")]
8340    #[serde(skip_serializing_if = "Option::is_none")]
8341    pub proxy: Option<Box<NetworkProxy>>,
8342    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
8343    #[serde(rename = "proxy_connection_info")]
8344    #[serde(skip_serializing_if = "Option::is_none")]
8345    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
8346    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
8347    #[serde(rename = "proxy_endpoint")]
8348    #[serde(skip_serializing_if = "Option::is_none")]
8349    pub proxy_endpoint: Option<Box<NetworkProxy>>,
8350    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
8351    #[serde(rename = "proxy_http_request")]
8352    #[serde(skip_serializing_if = "Option::is_none")]
8353    pub proxy_http_request: Option<Box<HttpRequest>>,
8354    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
8355    #[serde(rename = "proxy_http_response")]
8356    #[serde(skip_serializing_if = "Option::is_none")]
8357    pub proxy_http_response: Option<Box<HttpResponse>>,
8358    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
8359    #[serde(rename = "proxy_tls")]
8360    #[serde(skip_serializing_if = "Option::is_none")]
8361    pub proxy_tls: Option<Box<Tls>>,
8362    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
8363    #[serde(rename = "proxy_traffic")]
8364    #[serde(skip_serializing_if = "Option::is_none")]
8365    pub proxy_traffic: Option<Box<NetworkTraffic>>,
8366    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
8367    #[serde(rename = "raw_data")]
8368    #[serde(skip_serializing_if = "Option::is_none")]
8369    pub raw_data: Option<String>,
8370    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
8371    #[serde(rename = "raw_data_hash")]
8372    #[serde(skip_serializing_if = "Option::is_none")]
8373    pub raw_data_hash: Option<Box<Fingerprint>>,
8374    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
8375    #[serde(rename = "raw_data_size")]
8376    #[serde(skip_serializing_if = "Option::is_none")]
8377    pub raw_data_size: Option<i64>,
8378    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
8379    #[serde(rename = "risk_details")]
8380    #[serde(skip_serializing_if = "Option::is_none")]
8381    pub risk_details: Option<String>,
8382    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
8383    #[serde(rename = "risk_level")]
8384    #[serde(skip_serializing_if = "Option::is_none")]
8385    pub risk_level: Option<String>,
8386    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
8387    #[serde(rename = "risk_level_id")]
8388    #[serde(skip_serializing_if = "Option::is_none")]
8389    pub risk_level_id: Option<i64>,
8390    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
8391    #[serde(rename = "risk_score")]
8392    #[serde(skip_serializing_if = "Option::is_none")]
8393    pub risk_score: Option<i64>,
8394    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
8395    #[serde(rename = "severity")]
8396    #[serde(skip_serializing_if = "Option::is_none")]
8397    pub severity: Option<String>,
8398    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
8399    #[serde(rename = "severity_id")]
8400    #[serde(skip_serializing_if = "Option::is_none")]
8401    pub severity_id: Option<i64>,
8402    #[doc = "Source Endpoint\n\nThe initiator (client) of the network connection.\n\nrecommended"]
8403    #[serde(rename = "src_endpoint")]
8404    #[serde(skip_serializing_if = "Option::is_none")]
8405    pub src_endpoint: Option<Box<NetworkEndpoint>>,
8406    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
8407    #[serde(rename = "start_time")]
8408    #[serde(skip_serializing_if = "Option::is_none")]
8409    pub start_time: Option<i64>,
8410    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
8411    #[serde(rename = "start_time_dt")]
8412    #[serde(skip_serializing_if = "Option::is_none")]
8413    pub start_time_dt: Option<String>,
8414    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
8415    #[serde(rename = "status")]
8416    #[serde(skip_serializing_if = "Option::is_none")]
8417    pub status: Option<String>,
8418    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
8419    #[serde(rename = "status_code")]
8420    #[serde(skip_serializing_if = "Option::is_none")]
8421    pub status_code: Option<String>,
8422    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
8423    #[serde(rename = "status_detail")]
8424    #[serde(skip_serializing_if = "Option::is_none")]
8425    pub status_detail: Option<String>,
8426    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
8427    #[serde(rename = "status_id")]
8428    #[serde(skip_serializing_if = "Option::is_none")]
8429    pub status_id: Option<i64>,
8430    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
8431    #[serde(rename = "time")]
8432    #[serde(skip_serializing_if = "Option::is_none")]
8433    pub time: Option<i64>,
8434    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
8435    #[serde(rename = "time_dt")]
8436    #[serde(skip_serializing_if = "Option::is_none")]
8437    pub time_dt: Option<String>,
8438    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
8439    #[serde(rename = "timezone_offset")]
8440    #[serde(skip_serializing_if = "Option::is_none")]
8441    pub timezone_offset: Option<i64>,
8442    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
8443    #[serde(rename = "tls")]
8444    #[serde(skip_serializing_if = "Option::is_none")]
8445    pub tls: Option<Box<Tls>>,
8446    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
8447    #[serde(rename = "traffic")]
8448    #[serde(skip_serializing_if = "Option::is_none")]
8449    pub traffic: Option<Box<NetworkTraffic>>,
8450    #[doc = "Type\n\nThe type of FTP network connection (e.g. active, passive).\n\nrecommended"]
8451    #[serde(rename = "type")]
8452    #[serde(skip_serializing_if = "Option::is_none")]
8453    pub r#type: Option<String>,
8454    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
8455    #[serde(rename = "type_name")]
8456    #[serde(skip_serializing_if = "Option::is_none")]
8457    pub type_name: Option<String>,
8458    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
8459    #[serde(rename = "type_uid")]
8460    #[serde(skip_serializing_if = "Option::is_none")]
8461    pub type_uid: Option<i64>,
8462    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
8463    #[serde(rename = "unmapped")]
8464    #[serde(skip_serializing_if = "Option::is_none")]
8465    pub unmapped: Option<serde_json::Value>,
8466}
8467#[doc = "Group Management\n\nGroup Management events report management updates to a group, including updates to membership and permissions.\n\n[UID:3006] Category: iam | Name: group_management"]
8468#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
8469#[serde(default)]
8470#[non_exhaustive]
8471pub struct GroupManagement {
8472    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
8473    #[serde(rename = "action")]
8474    #[serde(skip_serializing_if = "Option::is_none")]
8475    pub action: Option<String>,
8476    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
8477    #[serde(rename = "action_id")]
8478    #[serde(skip_serializing_if = "Option::is_none")]
8479    pub action_id: Option<i64>,
8480    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
8481    #[serde(rename = "activity_id")]
8482    #[serde(skip_serializing_if = "Option::is_none")]
8483    pub activity_id: Option<i64>,
8484    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
8485    #[serde(rename = "activity_name")]
8486    #[serde(skip_serializing_if = "Option::is_none")]
8487    pub activity_name: Option<String>,
8488    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrecommended"]
8489    #[serde(rename = "actor")]
8490    #[serde(skip_serializing_if = "Option::is_none")]
8491    pub actor: Option<Box<Actor>>,
8492    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
8493    #[serde(rename = "api")]
8494    #[serde(skip_serializing_if = "Option::is_none")]
8495    pub api: Option<Box<Api>>,
8496    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
8497    #[serde(rename = "attacks")]
8498    #[serde(skip_serializing_if = "Option::is_none")]
8499    pub attacks: Option<Vec<Attack>>,
8500    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
8501    #[serde(rename = "authorizations")]
8502    #[serde(skip_serializing_if = "Option::is_none")]
8503    pub authorizations: Option<Vec<Authorization>>,
8504    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Identity & Access Management</code>.\n\noptional"]
8505    #[serde(rename = "category_name")]
8506    #[serde(skip_serializing_if = "Option::is_none")]
8507    pub category_name: Option<String>,
8508    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
8509    #[serde(rename = "category_uid")]
8510    #[serde(skip_serializing_if = "Option::is_none")]
8511    pub category_uid: Option<i64>,
8512    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Group Management</code>.\n\noptional"]
8513    #[serde(rename = "class_name")]
8514    #[serde(skip_serializing_if = "Option::is_none")]
8515    pub class_name: Option<String>,
8516    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
8517    #[serde(rename = "class_uid")]
8518    #[serde(skip_serializing_if = "Option::is_none")]
8519    pub class_uid: Option<i64>,
8520    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
8521    #[serde(rename = "cloud")]
8522    #[serde(skip_serializing_if = "Option::is_none")]
8523    pub cloud: Option<Box<Cloud>>,
8524    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
8525    #[serde(rename = "confidence")]
8526    #[serde(skip_serializing_if = "Option::is_none")]
8527    pub confidence: Option<String>,
8528    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
8529    #[serde(rename = "confidence_id")]
8530    #[serde(skip_serializing_if = "Option::is_none")]
8531    pub confidence_id: Option<i64>,
8532    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
8533    #[serde(rename = "confidence_score")]
8534    #[serde(skip_serializing_if = "Option::is_none")]
8535    pub confidence_score: Option<i64>,
8536    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
8537    #[serde(rename = "count")]
8538    #[serde(skip_serializing_if = "Option::is_none")]
8539    pub count: Option<i64>,
8540    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
8541    #[serde(rename = "device")]
8542    #[serde(skip_serializing_if = "Option::is_none")]
8543    pub device: Option<Box<Device>>,
8544    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
8545    #[serde(rename = "disposition")]
8546    #[serde(skip_serializing_if = "Option::is_none")]
8547    pub disposition: Option<String>,
8548    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
8549    #[serde(rename = "disposition_id")]
8550    #[serde(skip_serializing_if = "Option::is_none")]
8551    pub disposition_id: Option<i64>,
8552    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
8553    #[serde(rename = "duration")]
8554    #[serde(skip_serializing_if = "Option::is_none")]
8555    pub duration: Option<i64>,
8556    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
8557    #[serde(rename = "end_time")]
8558    #[serde(skip_serializing_if = "Option::is_none")]
8559    pub end_time: Option<i64>,
8560    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
8561    #[serde(rename = "end_time_dt")]
8562    #[serde(skip_serializing_if = "Option::is_none")]
8563    pub end_time_dt: Option<String>,
8564    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
8565    #[serde(rename = "enrichments")]
8566    #[serde(skip_serializing_if = "Option::is_none")]
8567    pub enrichments: Option<Vec<Enrichment>>,
8568    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
8569    #[serde(rename = "firewall_rule")]
8570    #[serde(skip_serializing_if = "Option::is_none")]
8571    pub firewall_rule: Option<Box<FirewallRule>>,
8572    #[doc = "Group\n\nGroup that was the target of the event.\n\nrequired"]
8573    #[serde(rename = "group")]
8574    #[serde(skip_serializing_if = "Option::is_none")]
8575    pub group: Option<Box<Group>>,
8576    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\noptional"]
8577    #[serde(rename = "http_request")]
8578    #[serde(skip_serializing_if = "Option::is_none")]
8579    pub http_request: Option<Box<HttpRequest>>,
8580    #[doc = "HTTP Response\n\nDetails about the underlying HTTP response.\n\noptional"]
8581    #[serde(rename = "http_response")]
8582    #[serde(skip_serializing_if = "Option::is_none")]
8583    pub http_response: Option<Box<HttpResponse>>,
8584    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
8585    #[serde(rename = "is_alert")]
8586    #[serde(skip_serializing_if = "Option::is_none")]
8587    pub is_alert: Option<bool>,
8588    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
8589    #[serde(rename = "malware")]
8590    #[serde(skip_serializing_if = "Option::is_none")]
8591    pub malware: Option<Vec<Malware>>,
8592    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
8593    #[serde(rename = "malware_scan_info")]
8594    #[serde(skip_serializing_if = "Option::is_none")]
8595    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
8596    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
8597    #[serde(rename = "message")]
8598    #[serde(skip_serializing_if = "Option::is_none")]
8599    pub message: Option<String>,
8600    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
8601    #[serde(rename = "metadata")]
8602    #[serde(skip_serializing_if = "Option::is_none")]
8603    pub metadata: Option<Box<Metadata>>,
8604    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
8605    #[serde(rename = "observables")]
8606    #[serde(skip_serializing_if = "Option::is_none")]
8607    pub observables: Option<Vec<Observable>>,
8608    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
8609    #[serde(rename = "osint")]
8610    #[serde(skip_serializing_if = "Option::is_none")]
8611    pub osint: Option<Vec<Osint>>,
8612    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
8613    #[serde(rename = "policy")]
8614    #[serde(skip_serializing_if = "Option::is_none")]
8615    pub policy: Option<Box<Policy>>,
8616    #[doc = "Privileges\n\nA list of privileges assigned to the group.\n\nrecommended"]
8617    #[serde(rename = "privileges")]
8618    #[serde(skip_serializing_if = "Option::is_none")]
8619    pub privileges: Option<Vec<String>>,
8620    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
8621    #[serde(rename = "raw_data")]
8622    #[serde(skip_serializing_if = "Option::is_none")]
8623    pub raw_data: Option<String>,
8624    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
8625    #[serde(rename = "raw_data_hash")]
8626    #[serde(skip_serializing_if = "Option::is_none")]
8627    pub raw_data_hash: Option<Box<Fingerprint>>,
8628    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
8629    #[serde(rename = "raw_data_size")]
8630    #[serde(skip_serializing_if = "Option::is_none")]
8631    pub raw_data_size: Option<i64>,
8632    #[doc = "Resource\n\nResource that the privileges give access to.\n\nrecommended"]
8633    #[serde(rename = "resource")]
8634    #[serde(skip_serializing_if = "Option::is_none")]
8635    pub resource: Option<Box<ResourceDetails>>,
8636    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
8637    #[serde(rename = "risk_details")]
8638    #[serde(skip_serializing_if = "Option::is_none")]
8639    pub risk_details: Option<String>,
8640    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
8641    #[serde(rename = "risk_level")]
8642    #[serde(skip_serializing_if = "Option::is_none")]
8643    pub risk_level: Option<String>,
8644    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
8645    #[serde(rename = "risk_level_id")]
8646    #[serde(skip_serializing_if = "Option::is_none")]
8647    pub risk_level_id: Option<i64>,
8648    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
8649    #[serde(rename = "risk_score")]
8650    #[serde(skip_serializing_if = "Option::is_none")]
8651    pub risk_score: Option<i64>,
8652    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
8653    #[serde(rename = "severity")]
8654    #[serde(skip_serializing_if = "Option::is_none")]
8655    pub severity: Option<String>,
8656    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
8657    #[serde(rename = "severity_id")]
8658    #[serde(skip_serializing_if = "Option::is_none")]
8659    pub severity_id: Option<i64>,
8660    #[doc = "Source Endpoint\n\nDetails about the source of the IAM activity.\n\nrecommended"]
8661    #[serde(rename = "src_endpoint")]
8662    #[serde(skip_serializing_if = "Option::is_none")]
8663    pub src_endpoint: Option<Box<NetworkEndpoint>>,
8664    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
8665    #[serde(rename = "start_time")]
8666    #[serde(skip_serializing_if = "Option::is_none")]
8667    pub start_time: Option<i64>,
8668    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
8669    #[serde(rename = "start_time_dt")]
8670    #[serde(skip_serializing_if = "Option::is_none")]
8671    pub start_time_dt: Option<String>,
8672    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
8673    #[serde(rename = "status")]
8674    #[serde(skip_serializing_if = "Option::is_none")]
8675    pub status: Option<String>,
8676    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
8677    #[serde(rename = "status_code")]
8678    #[serde(skip_serializing_if = "Option::is_none")]
8679    pub status_code: Option<String>,
8680    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
8681    #[serde(rename = "status_detail")]
8682    #[serde(skip_serializing_if = "Option::is_none")]
8683    pub status_detail: Option<String>,
8684    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
8685    #[serde(rename = "status_id")]
8686    #[serde(skip_serializing_if = "Option::is_none")]
8687    pub status_id: Option<i64>,
8688    #[doc = "Subgroup\n\nA subgroup that was added to or removed from the group.\n\nrecommended"]
8689    #[serde(rename = "subgroup")]
8690    #[serde(skip_serializing_if = "Option::is_none")]
8691    pub subgroup: Option<Box<Group>>,
8692    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
8693    #[serde(rename = "time")]
8694    #[serde(skip_serializing_if = "Option::is_none")]
8695    pub time: Option<i64>,
8696    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
8697    #[serde(rename = "time_dt")]
8698    #[serde(skip_serializing_if = "Option::is_none")]
8699    pub time_dt: Option<String>,
8700    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
8701    #[serde(rename = "timezone_offset")]
8702    #[serde(skip_serializing_if = "Option::is_none")]
8703    pub timezone_offset: Option<i64>,
8704    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
8705    #[serde(rename = "type_name")]
8706    #[serde(skip_serializing_if = "Option::is_none")]
8707    pub type_name: Option<String>,
8708    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
8709    #[serde(rename = "type_uid")]
8710    #[serde(skip_serializing_if = "Option::is_none")]
8711    pub type_uid: Option<i64>,
8712    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
8713    #[serde(rename = "unmapped")]
8714    #[serde(skip_serializing_if = "Option::is_none")]
8715    pub unmapped: Option<serde_json::Value>,
8716    #[doc = "User\n\nA user that was added to or removed from the group.\n\nrecommended"]
8717    #[serde(rename = "user")]
8718    #[serde(skip_serializing_if = "Option::is_none")]
8719    pub user: Option<Box<User>>,
8720}
8721#[doc = "HTTP Activity\n\nHTTP Activity events report HTTP connection and traffic information.\n\n[UID:4002] Category: network | Name: http_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
8722#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
8723#[serde(default)]
8724#[non_exhaustive]
8725pub struct HttpActivity {
8726    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
8727    #[serde(rename = "action")]
8728    #[serde(skip_serializing_if = "Option::is_none")]
8729    pub action: Option<String>,
8730    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
8731    #[serde(rename = "action_id")]
8732    #[serde(skip_serializing_if = "Option::is_none")]
8733    pub action_id: Option<i64>,
8734    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
8735    #[serde(rename = "activity_id")]
8736    #[serde(skip_serializing_if = "Option::is_none")]
8737    pub activity_id: Option<i64>,
8738    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
8739    #[serde(rename = "activity_name")]
8740    #[serde(skip_serializing_if = "Option::is_none")]
8741    pub activity_name: Option<String>,
8742    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
8743    #[serde(rename = "actor")]
8744    #[serde(skip_serializing_if = "Option::is_none")]
8745    pub actor: Option<Box<Actor>>,
8746    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
8747    #[serde(rename = "api")]
8748    #[serde(skip_serializing_if = "Option::is_none")]
8749    pub api: Option<Box<Api>>,
8750    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
8751    #[serde(rename = "app_name")]
8752    #[serde(skip_serializing_if = "Option::is_none")]
8753    pub app_name: Option<String>,
8754    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
8755    #[serde(rename = "attacks")]
8756    #[serde(skip_serializing_if = "Option::is_none")]
8757    pub attacks: Option<Vec<Attack>>,
8758    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
8759    #[serde(rename = "authorizations")]
8760    #[serde(skip_serializing_if = "Option::is_none")]
8761    pub authorizations: Option<Vec<Authorization>>,
8762    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
8763    #[serde(rename = "category_name")]
8764    #[serde(skip_serializing_if = "Option::is_none")]
8765    pub category_name: Option<String>,
8766    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
8767    #[serde(rename = "category_uid")]
8768    #[serde(skip_serializing_if = "Option::is_none")]
8769    pub category_uid: Option<i64>,
8770    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>HTTP Activity</code>.\n\noptional"]
8771    #[serde(rename = "class_name")]
8772    #[serde(skip_serializing_if = "Option::is_none")]
8773    pub class_name: Option<String>,
8774    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
8775    #[serde(rename = "class_uid")]
8776    #[serde(skip_serializing_if = "Option::is_none")]
8777    pub class_uid: Option<i64>,
8778    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
8779    #[serde(rename = "cloud")]
8780    #[serde(skip_serializing_if = "Option::is_none")]
8781    pub cloud: Option<Box<Cloud>>,
8782    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
8783    #[serde(rename = "confidence")]
8784    #[serde(skip_serializing_if = "Option::is_none")]
8785    pub confidence: Option<String>,
8786    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
8787    #[serde(rename = "confidence_id")]
8788    #[serde(skip_serializing_if = "Option::is_none")]
8789    pub confidence_id: Option<i64>,
8790    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
8791    #[serde(rename = "confidence_score")]
8792    #[serde(skip_serializing_if = "Option::is_none")]
8793    pub confidence_score: Option<i64>,
8794    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
8795    #[serde(rename = "connection_info")]
8796    #[serde(skip_serializing_if = "Option::is_none")]
8797    pub connection_info: Option<Box<NetworkConnectionInfo>>,
8798    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
8799    #[serde(rename = "count")]
8800    #[serde(skip_serializing_if = "Option::is_none")]
8801    pub count: Option<i64>,
8802    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
8803    #[serde(rename = "cumulative_traffic")]
8804    #[serde(skip_serializing_if = "Option::is_none")]
8805    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
8806    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
8807    #[serde(rename = "device")]
8808    #[serde(skip_serializing_if = "Option::is_none")]
8809    pub device: Option<Box<Device>>,
8810    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
8811    #[serde(rename = "disposition")]
8812    #[serde(skip_serializing_if = "Option::is_none")]
8813    pub disposition: Option<String>,
8814    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
8815    #[serde(rename = "disposition_id")]
8816    #[serde(skip_serializing_if = "Option::is_none")]
8817    pub disposition_id: Option<i64>,
8818    #[doc = "Destination Endpoint\n\nThe responder (server) in a network connection.\n\nrecommended"]
8819    #[serde(rename = "dst_endpoint")]
8820    #[serde(skip_serializing_if = "Option::is_none")]
8821    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
8822    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
8823    #[serde(rename = "duration")]
8824    #[serde(skip_serializing_if = "Option::is_none")]
8825    pub duration: Option<i64>,
8826    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
8827    #[serde(rename = "end_time")]
8828    #[serde(skip_serializing_if = "Option::is_none")]
8829    pub end_time: Option<i64>,
8830    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
8831    #[serde(rename = "end_time_dt")]
8832    #[serde(skip_serializing_if = "Option::is_none")]
8833    pub end_time_dt: Option<String>,
8834    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
8835    #[serde(rename = "enrichments")]
8836    #[serde(skip_serializing_if = "Option::is_none")]
8837    pub enrichments: Option<Vec<Enrichment>>,
8838    #[doc = "File\n\nThe file that is the target of the HTTP activity.\n\noptional"]
8839    #[serde(rename = "file")]
8840    #[serde(skip_serializing_if = "Option::is_none")]
8841    pub file: Option<Box<File>>,
8842    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
8843    #[serde(rename = "firewall_rule")]
8844    #[serde(skip_serializing_if = "Option::is_none")]
8845    pub firewall_rule: Option<Box<FirewallRule>>,
8846    #[doc = "HTTP Cookies\n\nThe cookies object describes details about HTTP cookies\n\nrecommended"]
8847    #[serde(rename = "http_cookies")]
8848    #[serde(skip_serializing_if = "Option::is_none")]
8849    pub http_cookies: Option<Vec<HttpCookie>>,
8850    #[doc = "HTTP Request\n\nThe HTTP Request Object documents attributes of a request made to a web server.\n\nrecommended"]
8851    #[serde(rename = "http_request")]
8852    #[serde(skip_serializing_if = "Option::is_none")]
8853    pub http_request: Option<Box<HttpRequest>>,
8854    #[doc = "HTTP Response\n\nThe HTTP Response from a web server to a requester.\n\nrecommended"]
8855    #[serde(rename = "http_response")]
8856    #[serde(skip_serializing_if = "Option::is_none")]
8857    pub http_response: Option<Box<HttpResponse>>,
8858    #[doc = "HTTP Status\n\nThe Hypertext Transfer Protocol (HTTP) <a target='_blank' href='https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml'>status code</a> returned to the client.\n\nrecommended"]
8859    #[serde(rename = "http_status")]
8860    #[serde(skip_serializing_if = "Option::is_none")]
8861    pub http_status: Option<i64>,
8862    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
8863    #[serde(rename = "is_alert")]
8864    #[serde(skip_serializing_if = "Option::is_none")]
8865    pub is_alert: Option<bool>,
8866    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
8867    #[serde(rename = "ja4_fingerprint_list")]
8868    #[serde(skip_serializing_if = "Option::is_none")]
8869    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
8870    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
8871    #[serde(rename = "load_balancer")]
8872    #[serde(skip_serializing_if = "Option::is_none")]
8873    pub load_balancer: Option<Box<LoadBalancer>>,
8874    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
8875    #[serde(rename = "malware")]
8876    #[serde(skip_serializing_if = "Option::is_none")]
8877    pub malware: Option<Vec<Malware>>,
8878    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
8879    #[serde(rename = "malware_scan_info")]
8880    #[serde(skip_serializing_if = "Option::is_none")]
8881    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
8882    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
8883    #[serde(rename = "message")]
8884    #[serde(skip_serializing_if = "Option::is_none")]
8885    pub message: Option<String>,
8886    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
8887    #[serde(rename = "metadata")]
8888    #[serde(skip_serializing_if = "Option::is_none")]
8889    pub metadata: Option<Box<Metadata>>,
8890    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
8891    #[serde(rename = "observables")]
8892    #[serde(skip_serializing_if = "Option::is_none")]
8893    pub observables: Option<Vec<Observable>>,
8894    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
8895    #[serde(rename = "observation_point")]
8896    #[serde(skip_serializing_if = "Option::is_none")]
8897    pub observation_point: Option<String>,
8898    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
8899    #[serde(rename = "observation_point_id")]
8900    #[serde(skip_serializing_if = "Option::is_none")]
8901    pub observation_point_id: Option<i64>,
8902    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
8903    #[serde(rename = "osint")]
8904    #[serde(skip_serializing_if = "Option::is_none")]
8905    pub osint: Option<Vec<Osint>>,
8906    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
8907    #[serde(rename = "policy")]
8908    #[serde(skip_serializing_if = "Option::is_none")]
8909    pub policy: Option<Box<Policy>>,
8910    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
8911    #[serde(rename = "proxy")]
8912    #[serde(skip_serializing_if = "Option::is_none")]
8913    pub proxy: Option<Box<NetworkProxy>>,
8914    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
8915    #[serde(rename = "proxy_connection_info")]
8916    #[serde(skip_serializing_if = "Option::is_none")]
8917    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
8918    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
8919    #[serde(rename = "proxy_endpoint")]
8920    #[serde(skip_serializing_if = "Option::is_none")]
8921    pub proxy_endpoint: Option<Box<NetworkProxy>>,
8922    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
8923    #[serde(rename = "proxy_http_request")]
8924    #[serde(skip_serializing_if = "Option::is_none")]
8925    pub proxy_http_request: Option<Box<HttpRequest>>,
8926    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
8927    #[serde(rename = "proxy_http_response")]
8928    #[serde(skip_serializing_if = "Option::is_none")]
8929    pub proxy_http_response: Option<Box<HttpResponse>>,
8930    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
8931    #[serde(rename = "proxy_tls")]
8932    #[serde(skip_serializing_if = "Option::is_none")]
8933    pub proxy_tls: Option<Box<Tls>>,
8934    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
8935    #[serde(rename = "proxy_traffic")]
8936    #[serde(skip_serializing_if = "Option::is_none")]
8937    pub proxy_traffic: Option<Box<NetworkTraffic>>,
8938    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
8939    #[serde(rename = "raw_data")]
8940    #[serde(skip_serializing_if = "Option::is_none")]
8941    pub raw_data: Option<String>,
8942    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
8943    #[serde(rename = "raw_data_hash")]
8944    #[serde(skip_serializing_if = "Option::is_none")]
8945    pub raw_data_hash: Option<Box<Fingerprint>>,
8946    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
8947    #[serde(rename = "raw_data_size")]
8948    #[serde(skip_serializing_if = "Option::is_none")]
8949    pub raw_data_size: Option<i64>,
8950    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
8951    #[serde(rename = "risk_details")]
8952    #[serde(skip_serializing_if = "Option::is_none")]
8953    pub risk_details: Option<String>,
8954    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
8955    #[serde(rename = "risk_level")]
8956    #[serde(skip_serializing_if = "Option::is_none")]
8957    pub risk_level: Option<String>,
8958    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
8959    #[serde(rename = "risk_level_id")]
8960    #[serde(skip_serializing_if = "Option::is_none")]
8961    pub risk_level_id: Option<i64>,
8962    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
8963    #[serde(rename = "risk_score")]
8964    #[serde(skip_serializing_if = "Option::is_none")]
8965    pub risk_score: Option<i64>,
8966    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
8967    #[serde(rename = "severity")]
8968    #[serde(skip_serializing_if = "Option::is_none")]
8969    pub severity: Option<String>,
8970    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
8971    #[serde(rename = "severity_id")]
8972    #[serde(skip_serializing_if = "Option::is_none")]
8973    pub severity_id: Option<i64>,
8974    #[doc = "Source Endpoint\n\nThe initiator (client) of the network connection.\n\nrecommended"]
8975    #[serde(rename = "src_endpoint")]
8976    #[serde(skip_serializing_if = "Option::is_none")]
8977    pub src_endpoint: Option<Box<NetworkEndpoint>>,
8978    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
8979    #[serde(rename = "start_time")]
8980    #[serde(skip_serializing_if = "Option::is_none")]
8981    pub start_time: Option<i64>,
8982    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
8983    #[serde(rename = "start_time_dt")]
8984    #[serde(skip_serializing_if = "Option::is_none")]
8985    pub start_time_dt: Option<String>,
8986    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
8987    #[serde(rename = "status")]
8988    #[serde(skip_serializing_if = "Option::is_none")]
8989    pub status: Option<String>,
8990    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
8991    #[serde(rename = "status_code")]
8992    #[serde(skip_serializing_if = "Option::is_none")]
8993    pub status_code: Option<String>,
8994    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
8995    #[serde(rename = "status_detail")]
8996    #[serde(skip_serializing_if = "Option::is_none")]
8997    pub status_detail: Option<String>,
8998    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
8999    #[serde(rename = "status_id")]
9000    #[serde(skip_serializing_if = "Option::is_none")]
9001    pub status_id: Option<i64>,
9002    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
9003    #[serde(rename = "time")]
9004    #[serde(skip_serializing_if = "Option::is_none")]
9005    pub time: Option<i64>,
9006    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
9007    #[serde(rename = "time_dt")]
9008    #[serde(skip_serializing_if = "Option::is_none")]
9009    pub time_dt: Option<String>,
9010    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
9011    #[serde(rename = "timezone_offset")]
9012    #[serde(skip_serializing_if = "Option::is_none")]
9013    pub timezone_offset: Option<i64>,
9014    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
9015    #[serde(rename = "tls")]
9016    #[serde(skip_serializing_if = "Option::is_none")]
9017    pub tls: Option<Box<Tls>>,
9018    #[doc = "Trace\n\nThe trace object contains information about distributed traces which are critical to observability and describe how requests move through a system, capturing each step's timing and status.\n\nrecommended"]
9019    #[serde(rename = "trace")]
9020    #[serde(skip_serializing_if = "Option::is_none")]
9021    pub trace: Option<Box<Trace>>,
9022    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
9023    #[serde(rename = "traffic")]
9024    #[serde(skip_serializing_if = "Option::is_none")]
9025    pub traffic: Option<Box<NetworkTraffic>>,
9026    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
9027    #[serde(rename = "type_name")]
9028    #[serde(skip_serializing_if = "Option::is_none")]
9029    pub type_name: Option<String>,
9030    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
9031    #[serde(rename = "type_uid")]
9032    #[serde(skip_serializing_if = "Option::is_none")]
9033    pub type_uid: Option<i64>,
9034    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
9035    #[serde(rename = "unmapped")]
9036    #[serde(skip_serializing_if = "Option::is_none")]
9037    pub unmapped: Option<serde_json::Value>,
9038}
9039#[doc = "IAM Analysis Finding\n\nThis finding represents an IAM analysis result, which evaluates IAM policies, access patterns, and IAM configurations for potential security risks. The analysis can focus on either an identity (user, role, service account) or a resource to assess permissions, access patterns, and security posture within the IAM domain. <br><strong>Note:</strong> Use <code>permission_analysis_results</code> for identity-centric analysis (evaluating what an identity can do) and <code>access_analysis_result</code> for resource-centric analysis (evaluating who can access a resource). These complement each other for comprehensive IAM security assessment.<br><strong>Note:</strong> If the Finding is an incident, i.e. requires incident workflow, also apply the <code>incident</code> profile or aggregate this finding into an <code>Incident Finding</code>.\n\n[UID:2008] Category: findings | Name: iam_analysis_finding\n\n**Constraints:**\n* at_least_one: `[access_analysis_result`,`applications`,`identity_activity_metrics`,`permission_analysis_results]`\n"]
9040#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
9041#[serde(default)]
9042#[non_exhaustive]
9043pub struct IamAnalysisFinding {
9044    #[doc = "Access Analysis Result\n\nDescribes access relationships and pathways between identities, resources, focusing on who can access what and through which mechanisms. This evaluates access levels (read/write/admin), access types (direct, cross-account, public, federated), and the conditions under which access is granted. Use this for resource-centric security assessments such as external access discovery, public exposure analysis, etc.\n\noptional"]
9045    #[serde(rename = "access_analysis_result")]
9046    #[serde(skip_serializing_if = "Option::is_none")]
9047    pub access_analysis_result: Option<Box<AccessAnalysisResult>>,
9048    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
9049    #[serde(rename = "action")]
9050    #[serde(skip_serializing_if = "Option::is_none")]
9051    pub action: Option<String>,
9052    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
9053    #[serde(rename = "action_id")]
9054    #[serde(skip_serializing_if = "Option::is_none")]
9055    pub action_id: Option<i64>,
9056    #[doc = "Activity ID\n\nThe normalized identifier of the finding activity.\n\nrequired"]
9057    #[serde(rename = "activity_id")]
9058    #[serde(skip_serializing_if = "Option::is_none")]
9059    pub activity_id: Option<i64>,
9060    #[doc = "Activity\n\nThe finding activity name, as defined by the <code>activity_id</code>.\n\noptional"]
9061    #[serde(rename = "activity_name")]
9062    #[serde(skip_serializing_if = "Option::is_none")]
9063    pub activity_name: Option<String>,
9064    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
9065    #[serde(rename = "actor")]
9066    #[serde(skip_serializing_if = "Option::is_none")]
9067    pub actor: Option<Box<Actor>>,
9068    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
9069    #[serde(rename = "api")]
9070    #[serde(skip_serializing_if = "Option::is_none")]
9071    pub api: Option<Box<Api>>,
9072    #[doc = "Applications\n\nDetails about applications, services, or systems that are accessible based on the IAM analysis. For identity-centric analysis, this represents applications the identity can access. For resource-centric analysis, this represents applications that can access the resource.\n\nrecommended"]
9073    #[serde(rename = "applications")]
9074    #[serde(skip_serializing_if = "Option::is_none")]
9075    pub applications: Option<Vec<Application>>,
9076    #[doc = "Assignee\n\nThe details of the user assigned to an Incident.\n\noptional"]
9077    #[serde(rename = "assignee")]
9078    #[serde(skip_serializing_if = "Option::is_none")]
9079    pub assignee: Option<Box<User>>,
9080    #[doc = "Assignee Group\n\nThe details of the group assigned to an Incident.\n\noptional"]
9081    #[serde(rename = "assignee_group")]
9082    #[serde(skip_serializing_if = "Option::is_none")]
9083    pub assignee_group: Option<Box<Group>>,
9084    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
9085    #[serde(rename = "attacks")]
9086    #[serde(skip_serializing_if = "Option::is_none")]
9087    pub attacks: Option<Vec<Attack>>,
9088    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
9089    #[serde(rename = "authorizations")]
9090    #[serde(skip_serializing_if = "Option::is_none")]
9091    pub authorizations: Option<Vec<Authorization>>,
9092    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Findings</code>.\n\noptional"]
9093    #[serde(rename = "category_name")]
9094    #[serde(skip_serializing_if = "Option::is_none")]
9095    pub category_name: Option<String>,
9096    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
9097    #[serde(rename = "category_uid")]
9098    #[serde(skip_serializing_if = "Option::is_none")]
9099    pub category_uid: Option<i64>,
9100    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>IAM Analysis Finding</code>.\n\noptional"]
9101    #[serde(rename = "class_name")]
9102    #[serde(skip_serializing_if = "Option::is_none")]
9103    pub class_name: Option<String>,
9104    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
9105    #[serde(rename = "class_uid")]
9106    #[serde(skip_serializing_if = "Option::is_none")]
9107    pub class_uid: Option<i64>,
9108    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
9109    #[serde(rename = "cloud")]
9110    #[serde(skip_serializing_if = "Option::is_none")]
9111    pub cloud: Option<Box<Cloud>>,
9112    #[doc = "Comment\n\nA user provided comment about the finding.\n\noptional"]
9113    #[serde(rename = "comment")]
9114    #[serde(skip_serializing_if = "Option::is_none")]
9115    pub comment: Option<String>,
9116    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9117    #[serde(rename = "confidence")]
9118    #[serde(skip_serializing_if = "Option::is_none")]
9119    pub confidence: Option<String>,
9120    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
9121    #[serde(rename = "confidence_id")]
9122    #[serde(skip_serializing_if = "Option::is_none")]
9123    pub confidence_id: Option<i64>,
9124    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
9125    #[serde(rename = "confidence_score")]
9126    #[serde(skip_serializing_if = "Option::is_none")]
9127    pub confidence_score: Option<i64>,
9128    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
9129    #[serde(rename = "count")]
9130    #[serde(skip_serializing_if = "Option::is_none")]
9131    pub count: Option<i64>,
9132    #[doc = "Device\n\nDescribes the affected device/host. If applicable, it can be used in conjunction with <code>Resource(s)</code>. <p> e.g. Specific details about an AWS EC2 instance, that is affected by the Finding.</p>\n\noptional"]
9133    #[serde(rename = "device")]
9134    #[serde(skip_serializing_if = "Option::is_none")]
9135    pub device: Option<Box<Device>>,
9136    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9137    #[serde(rename = "disposition")]
9138    #[serde(skip_serializing_if = "Option::is_none")]
9139    pub disposition: Option<String>,
9140    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
9141    #[serde(rename = "disposition_id")]
9142    #[serde(skip_serializing_if = "Option::is_none")]
9143    pub disposition_id: Option<i64>,
9144    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
9145    #[serde(rename = "duration")]
9146    #[serde(skip_serializing_if = "Option::is_none")]
9147    pub duration: Option<i64>,
9148    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
9149    #[serde(rename = "end_time")]
9150    #[serde(skip_serializing_if = "Option::is_none")]
9151    pub end_time: Option<i64>,
9152    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
9153    #[serde(rename = "end_time_dt")]
9154    #[serde(skip_serializing_if = "Option::is_none")]
9155    pub end_time_dt: Option<String>,
9156    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
9157    #[serde(rename = "enrichments")]
9158    #[serde(skip_serializing_if = "Option::is_none")]
9159    pub enrichments: Option<Vec<Enrichment>>,
9160    #[doc = "Finding Information\n\nDescribes the supporting information about a generated finding.\n\nrequired"]
9161    #[serde(rename = "finding_info")]
9162    #[serde(skip_serializing_if = "Option::is_none")]
9163    pub finding_info: Option<Box<FindingInfo>>,
9164    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
9165    #[serde(rename = "firewall_rule")]
9166    #[serde(skip_serializing_if = "Option::is_none")]
9167    pub firewall_rule: Option<Box<FirewallRule>>,
9168    #[doc = "Identity Activity Metrics\n\nDescribes usage activity and other metrics of an Identity i.e. AWS IAM User, GCP IAM Principal, etc.\n\nrecommended"]
9169    #[serde(rename = "identity_activity_metrics")]
9170    #[serde(skip_serializing_if = "Option::is_none")]
9171    pub identity_activity_metrics: Option<Box<IdentityActivityMetrics>>,
9172    #[doc = "Impact\n\nThe impact , normalized to the caption of the impact_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
9173    #[serde(rename = "impact")]
9174    #[serde(skip_serializing_if = "Option::is_none")]
9175    pub impact: Option<String>,
9176    #[doc = "Impact ID\n\nThe normalized impact of the incident or finding. Per NIST, this is the magnitude of harm that can be expected to result from the consequences of unauthorized disclosure, modification, destruction, or loss of information or information system availability.\n\nrecommended"]
9177    #[serde(rename = "impact_id")]
9178    #[serde(skip_serializing_if = "Option::is_none")]
9179    pub impact_id: Option<i64>,
9180    #[doc = "Impact Score\n\nThe impact as an integer value of the finding, valid range 0-100.\n\nrecommended"]
9181    #[serde(rename = "impact_score")]
9182    #[serde(skip_serializing_if = "Option::is_none")]
9183    pub impact_score: Option<i64>,
9184    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
9185    #[serde(rename = "is_alert")]
9186    #[serde(skip_serializing_if = "Option::is_none")]
9187    pub is_alert: Option<bool>,
9188    #[doc = "Suspected Breach\n\nA determination based on analytics as to whether a potential breach was found.\n\noptional"]
9189    #[serde(rename = "is_suspected_breach")]
9190    #[serde(skip_serializing_if = "Option::is_none")]
9191    pub is_suspected_breach: Option<bool>,
9192    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
9193    #[serde(rename = "malware")]
9194    #[serde(skip_serializing_if = "Option::is_none")]
9195    pub malware: Option<Vec<Malware>>,
9196    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
9197    #[serde(rename = "malware_scan_info")]
9198    #[serde(skip_serializing_if = "Option::is_none")]
9199    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
9200    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
9201    #[serde(rename = "message")]
9202    #[serde(skip_serializing_if = "Option::is_none")]
9203    pub message: Option<String>,
9204    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
9205    #[serde(rename = "metadata")]
9206    #[serde(skip_serializing_if = "Option::is_none")]
9207    pub metadata: Option<Box<Metadata>>,
9208    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
9209    #[serde(rename = "observables")]
9210    #[serde(skip_serializing_if = "Option::is_none")]
9211    pub observables: Option<Vec<Observable>>,
9212    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
9213    #[serde(rename = "osint")]
9214    #[serde(skip_serializing_if = "Option::is_none")]
9215    pub osint: Option<Vec<Osint>>,
9216    #[doc = "Permission Analysis Results\n\nDescribes analysis results of permissions, policies directly associated with an identity (user, role, or service account). This evaluates what permissions an identity has been granted through attached policies, which privileges are actively used versus unused, and identifies potential over-privileged access. Use this for identity-centric security assessments such as privilege audits, dormant permission discovery, and least-privilege compliance analysis.\n\nrecommended"]
9217    #[serde(rename = "permission_analysis_results")]
9218    #[serde(skip_serializing_if = "Option::is_none")]
9219    pub permission_analysis_results: Option<Vec<PermissionAnalysisResult>>,
9220    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
9221    #[serde(rename = "policy")]
9222    #[serde(skip_serializing_if = "Option::is_none")]
9223    pub policy: Option<Box<Policy>>,
9224    #[doc = "Priority\n\nThe priority, normalized to the caption of the priority_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9225    #[serde(rename = "priority")]
9226    #[serde(skip_serializing_if = "Option::is_none")]
9227    pub priority: Option<String>,
9228    #[doc = "Priority ID\n\nThe normalized priority. Priority identifies the relative importance of the incident or finding. It is a measurement of urgency.\n\nrecommended"]
9229    #[serde(rename = "priority_id")]
9230    #[serde(skip_serializing_if = "Option::is_none")]
9231    pub priority_id: Option<i64>,
9232    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
9233    #[serde(rename = "raw_data")]
9234    #[serde(skip_serializing_if = "Option::is_none")]
9235    pub raw_data: Option<String>,
9236    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
9237    #[serde(rename = "raw_data_hash")]
9238    #[serde(skip_serializing_if = "Option::is_none")]
9239    pub raw_data_hash: Option<Box<Fingerprint>>,
9240    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
9241    #[serde(rename = "raw_data_size")]
9242    #[serde(skip_serializing_if = "Option::is_none")]
9243    pub raw_data_size: Option<i64>,
9244    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
9245    #[serde(rename = "remediation")]
9246    #[serde(skip_serializing_if = "Option::is_none")]
9247    pub remediation: Option<Box<Remediation>>,
9248    #[doc = "Resources Array\n\nDetails about resources involved in the IAM analysis. For identity-centric analysis, this represents resources the identity can access. For resource-centric analysis, this represents the resource being analyzed and related resources in the access chain.\n\nrecommended"]
9249    #[serde(rename = "resources")]
9250    #[serde(skip_serializing_if = "Option::is_none")]
9251    pub resources: Option<Vec<ResourceDetails>>,
9252    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
9253    #[serde(rename = "risk_details")]
9254    #[serde(skip_serializing_if = "Option::is_none")]
9255    pub risk_details: Option<String>,
9256    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
9257    #[serde(rename = "risk_level")]
9258    #[serde(skip_serializing_if = "Option::is_none")]
9259    pub risk_level: Option<String>,
9260    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
9261    #[serde(rename = "risk_level_id")]
9262    #[serde(skip_serializing_if = "Option::is_none")]
9263    pub risk_level_id: Option<i64>,
9264    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
9265    #[serde(rename = "risk_score")]
9266    #[serde(skip_serializing_if = "Option::is_none")]
9267    pub risk_score: Option<i64>,
9268    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
9269    #[serde(rename = "severity")]
9270    #[serde(skip_serializing_if = "Option::is_none")]
9271    pub severity: Option<String>,
9272    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
9273    #[serde(rename = "severity_id")]
9274    #[serde(skip_serializing_if = "Option::is_none")]
9275    pub severity_id: Option<i64>,
9276    #[doc = "Source URL\n\nA Url link used to access the original incident.\n\nrecommended"]
9277    #[serde(rename = "src_url")]
9278    #[serde(skip_serializing_if = "Option::is_none")]
9279    pub src_url: Option<String>,
9280    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
9281    #[serde(rename = "start_time")]
9282    #[serde(skip_serializing_if = "Option::is_none")]
9283    pub start_time: Option<i64>,
9284    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
9285    #[serde(rename = "start_time_dt")]
9286    #[serde(skip_serializing_if = "Option::is_none")]
9287    pub start_time_dt: Option<String>,
9288    #[doc = "Status\n\nThe normalized status of the Finding set by the consumer normalized to the caption of the status_id value. In the case of 'Other', it is defined by the source.\n\noptional"]
9289    #[serde(rename = "status")]
9290    #[serde(skip_serializing_if = "Option::is_none")]
9291    pub status: Option<String>,
9292    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
9293    #[serde(rename = "status_code")]
9294    #[serde(skip_serializing_if = "Option::is_none")]
9295    pub status_code: Option<String>,
9296    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
9297    #[serde(rename = "status_detail")]
9298    #[serde(skip_serializing_if = "Option::is_none")]
9299    pub status_detail: Option<String>,
9300    #[doc = "Status ID\n\nThe normalized status identifier of the Finding, set by the consumer.\n\nrecommended"]
9301    #[serde(rename = "status_id")]
9302    #[serde(skip_serializing_if = "Option::is_none")]
9303    pub status_id: Option<i64>,
9304    #[doc = "Ticket\n\nThe linked ticket in the ticketing system.\n\noptional"]
9305    #[serde(rename = "ticket")]
9306    #[serde(skip_serializing_if = "Option::is_none")]
9307    pub ticket: Option<Box<Ticket>>,
9308    #[doc = "Tickets\n\nThe associated ticket(s) in the ticketing system. Each ticket contains details like ticket ID, status, etc.\n\noptional"]
9309    #[serde(rename = "tickets")]
9310    #[serde(skip_serializing_if = "Option::is_none")]
9311    pub tickets: Option<Vec<Ticket>>,
9312    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
9313    #[serde(rename = "time")]
9314    #[serde(skip_serializing_if = "Option::is_none")]
9315    pub time: Option<i64>,
9316    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
9317    #[serde(rename = "time_dt")]
9318    #[serde(skip_serializing_if = "Option::is_none")]
9319    pub time_dt: Option<String>,
9320    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
9321    #[serde(rename = "timezone_offset")]
9322    #[serde(skip_serializing_if = "Option::is_none")]
9323    pub timezone_offset: Option<i64>,
9324    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
9325    #[serde(rename = "type_name")]
9326    #[serde(skip_serializing_if = "Option::is_none")]
9327    pub type_name: Option<String>,
9328    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
9329    #[serde(rename = "type_uid")]
9330    #[serde(skip_serializing_if = "Option::is_none")]
9331    pub type_uid: Option<i64>,
9332    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
9333    #[serde(rename = "unmapped")]
9334    #[serde(skip_serializing_if = "Option::is_none")]
9335    pub unmapped: Option<serde_json::Value>,
9336    #[doc = "User\n\nDetails about the identity (user, role, service account, or other principal) that is the subject of the IAM analysis. This provides context about the identity being evaluated for security risks and access patterns.\n\nrecommended"]
9337    #[serde(rename = "user")]
9338    #[serde(skip_serializing_if = "Option::is_none")]
9339    pub user: Option<Box<User>>,
9340    #[doc = "Vendor Attributes\n\nThe Vendor Attributes object can be used to represent values of attributes populated by the Vendor/Finding Provider. It can help distinguish between the vendor-provided values and consumer-updated values, of key attributes like <code>severity_id</code>.<br>The original finding producer should not populate this object. It should be populated by consuming systems that support data mutability.\n\noptional"]
9341    #[serde(rename = "vendor_attributes")]
9342    #[serde(skip_serializing_if = "Option::is_none")]
9343    pub vendor_attributes: Option<Box<VendorAttributes>>,
9344    #[doc = "Verdict\n\nThe verdict assigned to an Incident finding.\n\nrecommended"]
9345    #[serde(rename = "verdict")]
9346    #[serde(skip_serializing_if = "Option::is_none")]
9347    pub verdict: Option<String>,
9348    #[doc = "Verdict ID\n\nThe normalized verdict of an Incident.\n\nrecommended"]
9349    #[serde(rename = "verdict_id")]
9350    #[serde(skip_serializing_if = "Option::is_none")]
9351    pub verdict_id: Option<i64>,
9352}
9353#[doc = "Incident Finding\n\nAn Incident Finding reports the creation, update, or closure of security incidents as a result of detections and/or analytics. <br><strong>Note: </strong><code>Incident Finding</code> implicitly includes the <code>incident</code> profile and it should be added to the <code>metadata.profiles[]</code> array.\n\n[UID:2005] Category: findings | Name: incident_finding\n\n**Constraints:**\n* at_least_one: `[assignee`,`assignee_group]`\n"]
9354#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
9355#[serde(default)]
9356#[non_exhaustive]
9357pub struct IncidentFinding {
9358    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
9359    #[serde(rename = "action")]
9360    #[serde(skip_serializing_if = "Option::is_none")]
9361    pub action: Option<String>,
9362    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
9363    #[serde(rename = "action_id")]
9364    #[serde(skip_serializing_if = "Option::is_none")]
9365    pub action_id: Option<i64>,
9366    #[doc = "Activity ID\n\nThe normalized identifier of the Incident activity.\n\nrequired"]
9367    #[serde(rename = "activity_id")]
9368    #[serde(skip_serializing_if = "Option::is_none")]
9369    pub activity_id: Option<i64>,
9370    #[doc = "Activity\n\nThe Incident activity name, as defined by the <code>activity_id</code>.\n\noptional"]
9371    #[serde(rename = "activity_name")]
9372    #[serde(skip_serializing_if = "Option::is_none")]
9373    pub activity_name: Option<String>,
9374    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
9375    #[serde(rename = "actor")]
9376    #[serde(skip_serializing_if = "Option::is_none")]
9377    pub actor: Option<Box<Actor>>,
9378    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
9379    #[serde(rename = "api")]
9380    #[serde(skip_serializing_if = "Option::is_none")]
9381    pub api: Option<Box<Api>>,
9382    #[doc = "Assignee\n\nThe details of the user assigned to an Incident.\n\noptional"]
9383    #[serde(rename = "assignee")]
9384    #[serde(skip_serializing_if = "Option::is_none")]
9385    pub assignee: Option<Box<User>>,
9386    #[doc = "Assignee Group\n\nThe details of the group assigned to an Incident.\n\noptional"]
9387    #[serde(rename = "assignee_group")]
9388    #[serde(skip_serializing_if = "Option::is_none")]
9389    pub assignee_group: Option<Box<Group>>,
9390    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of <a target='_blank' href='https://attack.mitre.org'>MITRE ATT&CK®</a> objects describing the tactics, techniques & sub-techniques associated to the Incident.\n\noptional"]
9391    #[serde(rename = "attacks")]
9392    #[serde(skip_serializing_if = "Option::is_none")]
9393    pub attacks: Option<Vec<Attack>>,
9394    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
9395    #[serde(rename = "authorizations")]
9396    #[serde(skip_serializing_if = "Option::is_none")]
9397    pub authorizations: Option<Vec<Authorization>>,
9398    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Findings</code>.\n\noptional"]
9399    #[serde(rename = "category_name")]
9400    #[serde(skip_serializing_if = "Option::is_none")]
9401    pub category_name: Option<String>,
9402    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
9403    #[serde(rename = "category_uid")]
9404    #[serde(skip_serializing_if = "Option::is_none")]
9405    pub category_uid: Option<i64>,
9406    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Incident Finding</code>.\n\noptional"]
9407    #[serde(rename = "class_name")]
9408    #[serde(skip_serializing_if = "Option::is_none")]
9409    pub class_name: Option<String>,
9410    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
9411    #[serde(rename = "class_uid")]
9412    #[serde(skip_serializing_if = "Option::is_none")]
9413    pub class_uid: Option<i64>,
9414    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
9415    #[serde(rename = "cloud")]
9416    #[serde(skip_serializing_if = "Option::is_none")]
9417    pub cloud: Option<Box<Cloud>>,
9418    #[doc = "Comment\n\nAdditional user supplied details for updating or closing the incident.\n\noptional"]
9419    #[serde(rename = "comment")]
9420    #[serde(skip_serializing_if = "Option::is_none")]
9421    pub comment: Option<String>,
9422    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9423    #[serde(rename = "confidence")]
9424    #[serde(skip_serializing_if = "Option::is_none")]
9425    pub confidence: Option<String>,
9426    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
9427    #[serde(rename = "confidence_id")]
9428    #[serde(skip_serializing_if = "Option::is_none")]
9429    pub confidence_id: Option<i64>,
9430    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
9431    #[serde(rename = "confidence_score")]
9432    #[serde(skip_serializing_if = "Option::is_none")]
9433    pub confidence_score: Option<i64>,
9434    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
9435    #[serde(rename = "count")]
9436    #[serde(skip_serializing_if = "Option::is_none")]
9437    pub count: Option<i64>,
9438    #[doc = "Description\n\nThe short description of the Incident.\n\nrecommended"]
9439    #[serde(rename = "desc")]
9440    #[serde(skip_serializing_if = "Option::is_none")]
9441    pub desc: Option<String>,
9442    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
9443    #[serde(rename = "device")]
9444    #[serde(skip_serializing_if = "Option::is_none")]
9445    pub device: Option<Box<Device>>,
9446    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9447    #[serde(rename = "disposition")]
9448    #[serde(skip_serializing_if = "Option::is_none")]
9449    pub disposition: Option<String>,
9450    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
9451    #[serde(rename = "disposition_id")]
9452    #[serde(skip_serializing_if = "Option::is_none")]
9453    pub disposition_id: Option<i64>,
9454    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
9455    #[serde(rename = "duration")]
9456    #[serde(skip_serializing_if = "Option::is_none")]
9457    pub duration: Option<i64>,
9458    #[doc = "End Time\n\nThe time of the most recent event included in the incident.\n\noptional"]
9459    #[serde(rename = "end_time")]
9460    #[serde(skip_serializing_if = "Option::is_none")]
9461    pub end_time: Option<i64>,
9462    #[doc = "End Time\n\nThe time of the most recent event included in the incident.\n\noptional"]
9463    #[serde(rename = "end_time_dt")]
9464    #[serde(skip_serializing_if = "Option::is_none")]
9465    pub end_time_dt: Option<String>,
9466    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
9467    #[serde(rename = "enrichments")]
9468    #[serde(skip_serializing_if = "Option::is_none")]
9469    pub enrichments: Option<Vec<Enrichment>>,
9470    #[doc = "Finding Information List\n\nA list of <code>finding_info</code> objects associated to an incident.\n\nrequired"]
9471    #[serde(rename = "finding_info_list")]
9472    #[serde(skip_serializing_if = "Option::is_none")]
9473    pub finding_info_list: Option<Vec<FindingInfo>>,
9474    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
9475    #[serde(rename = "firewall_rule")]
9476    #[serde(skip_serializing_if = "Option::is_none")]
9477    pub firewall_rule: Option<Box<FirewallRule>>,
9478    #[doc = "Impact\n\nThe impact , normalized to the caption of the impact_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
9479    #[serde(rename = "impact")]
9480    #[serde(skip_serializing_if = "Option::is_none")]
9481    pub impact: Option<String>,
9482    #[doc = "Impact ID\n\nThe normalized impact of the incident or finding. Per NIST, this is the magnitude of harm that can be expected to result from the consequences of unauthorized disclosure, modification, destruction, or loss of information or information system availability.\n\nrecommended"]
9483    #[serde(rename = "impact_id")]
9484    #[serde(skip_serializing_if = "Option::is_none")]
9485    pub impact_id: Option<i64>,
9486    #[doc = "Impact Score\n\nThe impact as an integer value of the finding, valid range 0-100.\n\nrecommended"]
9487    #[serde(rename = "impact_score")]
9488    #[serde(skip_serializing_if = "Option::is_none")]
9489    pub impact_score: Option<i64>,
9490    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
9491    #[serde(rename = "is_alert")]
9492    #[serde(skip_serializing_if = "Option::is_none")]
9493    pub is_alert: Option<bool>,
9494    #[doc = "Suspected Breach\n\nA determination based on analytics as to whether a potential breach was found.\n\noptional"]
9495    #[serde(rename = "is_suspected_breach")]
9496    #[serde(skip_serializing_if = "Option::is_none")]
9497    pub is_suspected_breach: Option<bool>,
9498    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
9499    #[serde(rename = "malware")]
9500    #[serde(skip_serializing_if = "Option::is_none")]
9501    pub malware: Option<Vec<Malware>>,
9502    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
9503    #[serde(rename = "malware_scan_info")]
9504    #[serde(skip_serializing_if = "Option::is_none")]
9505    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
9506    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
9507    #[serde(rename = "message")]
9508    #[serde(skip_serializing_if = "Option::is_none")]
9509    pub message: Option<String>,
9510    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
9511    #[serde(rename = "metadata")]
9512    #[serde(skip_serializing_if = "Option::is_none")]
9513    pub metadata: Option<Box<Metadata>>,
9514    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
9515    #[serde(rename = "observables")]
9516    #[serde(skip_serializing_if = "Option::is_none")]
9517    pub observables: Option<Vec<Observable>>,
9518    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
9519    #[serde(rename = "osint")]
9520    #[serde(skip_serializing_if = "Option::is_none")]
9521    pub osint: Option<Vec<Osint>>,
9522    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
9523    #[serde(rename = "policy")]
9524    #[serde(skip_serializing_if = "Option::is_none")]
9525    pub policy: Option<Box<Policy>>,
9526    #[doc = "Priority\n\nThe priority, normalized to the caption of the priority_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9527    #[serde(rename = "priority")]
9528    #[serde(skip_serializing_if = "Option::is_none")]
9529    pub priority: Option<String>,
9530    #[doc = "Priority ID\n\nThe normalized priority. Priority identifies the relative importance of the incident or finding. It is a measurement of urgency.\n\nrecommended"]
9531    #[serde(rename = "priority_id")]
9532    #[serde(skip_serializing_if = "Option::is_none")]
9533    pub priority_id: Option<i64>,
9534    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
9535    #[serde(rename = "raw_data")]
9536    #[serde(skip_serializing_if = "Option::is_none")]
9537    pub raw_data: Option<String>,
9538    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
9539    #[serde(rename = "raw_data_hash")]
9540    #[serde(skip_serializing_if = "Option::is_none")]
9541    pub raw_data_hash: Option<Box<Fingerprint>>,
9542    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
9543    #[serde(rename = "raw_data_size")]
9544    #[serde(skip_serializing_if = "Option::is_none")]
9545    pub raw_data_size: Option<i64>,
9546    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
9547    #[serde(rename = "risk_details")]
9548    #[serde(skip_serializing_if = "Option::is_none")]
9549    pub risk_details: Option<String>,
9550    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
9551    #[serde(rename = "risk_level")]
9552    #[serde(skip_serializing_if = "Option::is_none")]
9553    pub risk_level: Option<String>,
9554    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
9555    #[serde(rename = "risk_level_id")]
9556    #[serde(skip_serializing_if = "Option::is_none")]
9557    pub risk_level_id: Option<i64>,
9558    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
9559    #[serde(rename = "risk_score")]
9560    #[serde(skip_serializing_if = "Option::is_none")]
9561    pub risk_score: Option<i64>,
9562    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
9563    #[serde(rename = "severity")]
9564    #[serde(skip_serializing_if = "Option::is_none")]
9565    pub severity: Option<String>,
9566    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
9567    #[serde(rename = "severity_id")]
9568    #[serde(skip_serializing_if = "Option::is_none")]
9569    pub severity_id: Option<i64>,
9570    #[doc = "Source URL\n\nA Url link used to access the original incident.\n\nrecommended"]
9571    #[serde(rename = "src_url")]
9572    #[serde(skip_serializing_if = "Option::is_none")]
9573    pub src_url: Option<String>,
9574    #[doc = "Start Time\n\nThe time of the least recent event included in the incident.\n\noptional"]
9575    #[serde(rename = "start_time")]
9576    #[serde(skip_serializing_if = "Option::is_none")]
9577    pub start_time: Option<i64>,
9578    #[doc = "Start Time\n\nThe time of the least recent event included in the incident.\n\noptional"]
9579    #[serde(rename = "start_time_dt")]
9580    #[serde(skip_serializing_if = "Option::is_none")]
9581    pub start_time_dt: Option<String>,
9582    #[doc = "Status\n\nThe normalized status of the Incident normalized to the caption of the status_id value. In the case of 'Other', it is defined by the source.\n\nrecommended"]
9583    #[serde(rename = "status")]
9584    #[serde(skip_serializing_if = "Option::is_none")]
9585    pub status: Option<String>,
9586    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
9587    #[serde(rename = "status_code")]
9588    #[serde(skip_serializing_if = "Option::is_none")]
9589    pub status_code: Option<String>,
9590    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
9591    #[serde(rename = "status_detail")]
9592    #[serde(skip_serializing_if = "Option::is_none")]
9593    pub status_detail: Option<String>,
9594    #[doc = "Status ID\n\nThe normalized status identifier of the Incident.\n\nrequired"]
9595    #[serde(rename = "status_id")]
9596    #[serde(skip_serializing_if = "Option::is_none")]
9597    pub status_id: Option<i64>,
9598    #[doc = "Ticket\n\nThe linked ticket in the ticketing system.\n\noptional"]
9599    #[serde(rename = "ticket")]
9600    #[serde(skip_serializing_if = "Option::is_none")]
9601    pub ticket: Option<Box<Ticket>>,
9602    #[doc = "Tickets\n\nThe associated ticket(s) in the ticketing system. Each ticket contains details like ticket ID, status, etc.\n\noptional"]
9603    #[serde(rename = "tickets")]
9604    #[serde(skip_serializing_if = "Option::is_none")]
9605    pub tickets: Option<Vec<Ticket>>,
9606    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
9607    #[serde(rename = "time")]
9608    #[serde(skip_serializing_if = "Option::is_none")]
9609    pub time: Option<i64>,
9610    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
9611    #[serde(rename = "time_dt")]
9612    #[serde(skip_serializing_if = "Option::is_none")]
9613    pub time_dt: Option<String>,
9614    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
9615    #[serde(rename = "timezone_offset")]
9616    #[serde(skip_serializing_if = "Option::is_none")]
9617    pub timezone_offset: Option<i64>,
9618    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
9619    #[serde(rename = "type_name")]
9620    #[serde(skip_serializing_if = "Option::is_none")]
9621    pub type_name: Option<String>,
9622    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
9623    #[serde(rename = "type_uid")]
9624    #[serde(skip_serializing_if = "Option::is_none")]
9625    pub type_uid: Option<i64>,
9626    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
9627    #[serde(rename = "unmapped")]
9628    #[serde(skip_serializing_if = "Option::is_none")]
9629    pub unmapped: Option<serde_json::Value>,
9630    #[doc = "Vendor Attributes\n\nThe Vendor Attributes object can be used to represent values of attributes populated by the Vendor/Finding Provider. It can help distinguish between the vendor-provided values and consumer-updated values, of key attributes like <code>severity_id</code>.<br>The original finding producer should not populate this object. It should be populated by consuming systems that support data mutability.\n\noptional"]
9631    #[serde(rename = "vendor_attributes")]
9632    #[serde(skip_serializing_if = "Option::is_none")]
9633    pub vendor_attributes: Option<Box<VendorAttributes>>,
9634    #[doc = "Verdict\n\nThe verdict assigned to an Incident finding.\n\nrecommended"]
9635    #[serde(rename = "verdict")]
9636    #[serde(skip_serializing_if = "Option::is_none")]
9637    pub verdict: Option<String>,
9638    #[doc = "Verdict ID\n\nThe normalized verdict of an Incident.\n\nrecommended"]
9639    #[serde(rename = "verdict_id")]
9640    #[serde(skip_serializing_if = "Option::is_none")]
9641    pub verdict_id: Option<i64>,
9642}
9643#[doc = "Device Inventory Info\n\nDevice Inventory Info events report device inventory data that is either logged or proactively collected. For example, when collecting device information from a CMDB or running a network sweep of connected devices.\n\n[UID:5001] Category: discovery | Name: inventory_info"]
9644#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
9645#[serde(default)]
9646#[non_exhaustive]
9647pub struct InventoryInfo {
9648    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
9649    #[serde(rename = "action")]
9650    #[serde(skip_serializing_if = "Option::is_none")]
9651    pub action: Option<String>,
9652    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
9653    #[serde(rename = "action_id")]
9654    #[serde(skip_serializing_if = "Option::is_none")]
9655    pub action_id: Option<i64>,
9656    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
9657    #[serde(rename = "activity_id")]
9658    #[serde(skip_serializing_if = "Option::is_none")]
9659    pub activity_id: Option<i64>,
9660    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
9661    #[serde(rename = "activity_name")]
9662    #[serde(skip_serializing_if = "Option::is_none")]
9663    pub activity_name: Option<String>,
9664    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
9665    #[serde(rename = "actor")]
9666    #[serde(skip_serializing_if = "Option::is_none")]
9667    pub actor: Option<Box<Actor>>,
9668    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
9669    #[serde(rename = "api")]
9670    #[serde(skip_serializing_if = "Option::is_none")]
9671    pub api: Option<Box<Api>>,
9672    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
9673    #[serde(rename = "attacks")]
9674    #[serde(skip_serializing_if = "Option::is_none")]
9675    pub attacks: Option<Vec<Attack>>,
9676    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
9677    #[serde(rename = "authorizations")]
9678    #[serde(skip_serializing_if = "Option::is_none")]
9679    pub authorizations: Option<Vec<Authorization>>,
9680    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
9681    #[serde(rename = "category_name")]
9682    #[serde(skip_serializing_if = "Option::is_none")]
9683    pub category_name: Option<String>,
9684    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
9685    #[serde(rename = "category_uid")]
9686    #[serde(skip_serializing_if = "Option::is_none")]
9687    pub category_uid: Option<i64>,
9688    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Device Inventory Info</code>.\n\noptional"]
9689    #[serde(rename = "class_name")]
9690    #[serde(skip_serializing_if = "Option::is_none")]
9691    pub class_name: Option<String>,
9692    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
9693    #[serde(rename = "class_uid")]
9694    #[serde(skip_serializing_if = "Option::is_none")]
9695    pub class_uid: Option<i64>,
9696    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
9697    #[serde(rename = "cloud")]
9698    #[serde(skip_serializing_if = "Option::is_none")]
9699    pub cloud: Option<Box<Cloud>>,
9700    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9701    #[serde(rename = "confidence")]
9702    #[serde(skip_serializing_if = "Option::is_none")]
9703    pub confidence: Option<String>,
9704    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
9705    #[serde(rename = "confidence_id")]
9706    #[serde(skip_serializing_if = "Option::is_none")]
9707    pub confidence_id: Option<i64>,
9708    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
9709    #[serde(rename = "confidence_score")]
9710    #[serde(skip_serializing_if = "Option::is_none")]
9711    pub confidence_score: Option<i64>,
9712    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
9713    #[serde(rename = "count")]
9714    #[serde(skip_serializing_if = "Option::is_none")]
9715    pub count: Option<i64>,
9716    #[doc = "Device\n\nThe device that is being discovered by an inventory process.\n\nrequired"]
9717    #[serde(rename = "device")]
9718    #[serde(skip_serializing_if = "Option::is_none")]
9719    pub device: Option<Box<Device>>,
9720    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9721    #[serde(rename = "disposition")]
9722    #[serde(skip_serializing_if = "Option::is_none")]
9723    pub disposition: Option<String>,
9724    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
9725    #[serde(rename = "disposition_id")]
9726    #[serde(skip_serializing_if = "Option::is_none")]
9727    pub disposition_id: Option<i64>,
9728    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
9729    #[serde(rename = "duration")]
9730    #[serde(skip_serializing_if = "Option::is_none")]
9731    pub duration: Option<i64>,
9732    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
9733    #[serde(rename = "end_time")]
9734    #[serde(skip_serializing_if = "Option::is_none")]
9735    pub end_time: Option<i64>,
9736    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
9737    #[serde(rename = "end_time_dt")]
9738    #[serde(skip_serializing_if = "Option::is_none")]
9739    pub end_time_dt: Option<String>,
9740    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
9741    #[serde(rename = "enrichments")]
9742    #[serde(skip_serializing_if = "Option::is_none")]
9743    pub enrichments: Option<Vec<Enrichment>>,
9744    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
9745    #[serde(rename = "firewall_rule")]
9746    #[serde(skip_serializing_if = "Option::is_none")]
9747    pub firewall_rule: Option<Box<FirewallRule>>,
9748    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
9749    #[serde(rename = "is_alert")]
9750    #[serde(skip_serializing_if = "Option::is_none")]
9751    pub is_alert: Option<bool>,
9752    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
9753    #[serde(rename = "malware")]
9754    #[serde(skip_serializing_if = "Option::is_none")]
9755    pub malware: Option<Vec<Malware>>,
9756    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
9757    #[serde(rename = "malware_scan_info")]
9758    #[serde(skip_serializing_if = "Option::is_none")]
9759    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
9760    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
9761    #[serde(rename = "message")]
9762    #[serde(skip_serializing_if = "Option::is_none")]
9763    pub message: Option<String>,
9764    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
9765    #[serde(rename = "metadata")]
9766    #[serde(skip_serializing_if = "Option::is_none")]
9767    pub metadata: Option<Box<Metadata>>,
9768    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
9769    #[serde(rename = "observables")]
9770    #[serde(skip_serializing_if = "Option::is_none")]
9771    pub observables: Option<Vec<Observable>>,
9772    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
9773    #[serde(rename = "osint")]
9774    #[serde(skip_serializing_if = "Option::is_none")]
9775    pub osint: Option<Vec<Osint>>,
9776    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
9777    #[serde(rename = "policy")]
9778    #[serde(skip_serializing_if = "Option::is_none")]
9779    pub policy: Option<Box<Policy>>,
9780    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
9781    #[serde(rename = "raw_data")]
9782    #[serde(skip_serializing_if = "Option::is_none")]
9783    pub raw_data: Option<String>,
9784    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
9785    #[serde(rename = "raw_data_hash")]
9786    #[serde(skip_serializing_if = "Option::is_none")]
9787    pub raw_data_hash: Option<Box<Fingerprint>>,
9788    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
9789    #[serde(rename = "raw_data_size")]
9790    #[serde(skip_serializing_if = "Option::is_none")]
9791    pub raw_data_size: Option<i64>,
9792    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
9793    #[serde(rename = "risk_details")]
9794    #[serde(skip_serializing_if = "Option::is_none")]
9795    pub risk_details: Option<String>,
9796    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
9797    #[serde(rename = "risk_level")]
9798    #[serde(skip_serializing_if = "Option::is_none")]
9799    pub risk_level: Option<String>,
9800    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
9801    #[serde(rename = "risk_level_id")]
9802    #[serde(skip_serializing_if = "Option::is_none")]
9803    pub risk_level_id: Option<i64>,
9804    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
9805    #[serde(rename = "risk_score")]
9806    #[serde(skip_serializing_if = "Option::is_none")]
9807    pub risk_score: Option<i64>,
9808    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
9809    #[serde(rename = "severity")]
9810    #[serde(skip_serializing_if = "Option::is_none")]
9811    pub severity: Option<String>,
9812    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
9813    #[serde(rename = "severity_id")]
9814    #[serde(skip_serializing_if = "Option::is_none")]
9815    pub severity_id: Option<i64>,
9816    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
9817    #[serde(rename = "start_time")]
9818    #[serde(skip_serializing_if = "Option::is_none")]
9819    pub start_time: Option<i64>,
9820    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
9821    #[serde(rename = "start_time_dt")]
9822    #[serde(skip_serializing_if = "Option::is_none")]
9823    pub start_time_dt: Option<String>,
9824    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
9825    #[serde(rename = "status")]
9826    #[serde(skip_serializing_if = "Option::is_none")]
9827    pub status: Option<String>,
9828    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
9829    #[serde(rename = "status_code")]
9830    #[serde(skip_serializing_if = "Option::is_none")]
9831    pub status_code: Option<String>,
9832    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
9833    #[serde(rename = "status_detail")]
9834    #[serde(skip_serializing_if = "Option::is_none")]
9835    pub status_detail: Option<String>,
9836    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
9837    #[serde(rename = "status_id")]
9838    #[serde(skip_serializing_if = "Option::is_none")]
9839    pub status_id: Option<i64>,
9840    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
9841    #[serde(rename = "time")]
9842    #[serde(skip_serializing_if = "Option::is_none")]
9843    pub time: Option<i64>,
9844    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
9845    #[serde(rename = "time_dt")]
9846    #[serde(skip_serializing_if = "Option::is_none")]
9847    pub time_dt: Option<String>,
9848    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
9849    #[serde(rename = "timezone_offset")]
9850    #[serde(skip_serializing_if = "Option::is_none")]
9851    pub timezone_offset: Option<i64>,
9852    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
9853    #[serde(rename = "type_name")]
9854    #[serde(skip_serializing_if = "Option::is_none")]
9855    pub type_name: Option<String>,
9856    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
9857    #[serde(rename = "type_uid")]
9858    #[serde(skip_serializing_if = "Option::is_none")]
9859    pub type_uid: Option<i64>,
9860    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
9861    #[serde(rename = "unmapped")]
9862    #[serde(skip_serializing_if = "Option::is_none")]
9863    pub unmapped: Option<serde_json::Value>,
9864}
9865#[doc = "Job Query\n\nJob Query events report information about scheduled jobs.\n\n[UID:5010] Category: discovery | Name: job_query"]
9866#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
9867#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
9868#[serde(default)]
9869#[non_exhaustive]
9870pub struct JobQuery {
9871    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
9872    #[serde(rename = "action")]
9873    #[serde(skip_serializing_if = "Option::is_none")]
9874    pub action: Option<String>,
9875    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
9876    #[serde(rename = "action_id")]
9877    #[serde(skip_serializing_if = "Option::is_none")]
9878    pub action_id: Option<i64>,
9879    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
9880    #[serde(rename = "activity_id")]
9881    #[serde(skip_serializing_if = "Option::is_none")]
9882    pub activity_id: Option<i64>,
9883    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
9884    #[serde(rename = "activity_name")]
9885    #[serde(skip_serializing_if = "Option::is_none")]
9886    pub activity_name: Option<String>,
9887    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
9888    #[serde(rename = "actor")]
9889    #[serde(skip_serializing_if = "Option::is_none")]
9890    pub actor: Option<Box<Actor>>,
9891    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
9892    #[serde(rename = "api")]
9893    #[serde(skip_serializing_if = "Option::is_none")]
9894    pub api: Option<Box<Api>>,
9895    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
9896    #[serde(rename = "attacks")]
9897    #[serde(skip_serializing_if = "Option::is_none")]
9898    pub attacks: Option<Vec<Attack>>,
9899    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
9900    #[serde(rename = "authorizations")]
9901    #[serde(skip_serializing_if = "Option::is_none")]
9902    pub authorizations: Option<Vec<Authorization>>,
9903    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
9904    #[serde(rename = "category_name")]
9905    #[serde(skip_serializing_if = "Option::is_none")]
9906    pub category_name: Option<String>,
9907    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
9908    #[serde(rename = "category_uid")]
9909    #[serde(skip_serializing_if = "Option::is_none")]
9910    pub category_uid: Option<i64>,
9911    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Job Query</code>.\n\noptional"]
9912    #[serde(rename = "class_name")]
9913    #[serde(skip_serializing_if = "Option::is_none")]
9914    pub class_name: Option<String>,
9915    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
9916    #[serde(rename = "class_uid")]
9917    #[serde(skip_serializing_if = "Option::is_none")]
9918    pub class_uid: Option<i64>,
9919    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
9920    #[serde(rename = "cloud")]
9921    #[serde(skip_serializing_if = "Option::is_none")]
9922    pub cloud: Option<Box<Cloud>>,
9923    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9924    #[serde(rename = "confidence")]
9925    #[serde(skip_serializing_if = "Option::is_none")]
9926    pub confidence: Option<String>,
9927    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
9928    #[serde(rename = "confidence_id")]
9929    #[serde(skip_serializing_if = "Option::is_none")]
9930    pub confidence_id: Option<i64>,
9931    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
9932    #[serde(rename = "confidence_score")]
9933    #[serde(skip_serializing_if = "Option::is_none")]
9934    pub confidence_score: Option<i64>,
9935    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
9936    #[serde(rename = "count")]
9937    #[serde(skip_serializing_if = "Option::is_none")]
9938    pub count: Option<i64>,
9939    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
9940    #[serde(rename = "device")]
9941    #[serde(skip_serializing_if = "Option::is_none")]
9942    pub device: Option<Box<Device>>,
9943    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
9944    #[serde(rename = "disposition")]
9945    #[serde(skip_serializing_if = "Option::is_none")]
9946    pub disposition: Option<String>,
9947    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
9948    #[serde(rename = "disposition_id")]
9949    #[serde(skip_serializing_if = "Option::is_none")]
9950    pub disposition_id: Option<i64>,
9951    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
9952    #[serde(rename = "duration")]
9953    #[serde(skip_serializing_if = "Option::is_none")]
9954    pub duration: Option<i64>,
9955    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
9956    #[serde(rename = "end_time")]
9957    #[serde(skip_serializing_if = "Option::is_none")]
9958    pub end_time: Option<i64>,
9959    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
9960    #[serde(rename = "end_time_dt")]
9961    #[serde(skip_serializing_if = "Option::is_none")]
9962    pub end_time_dt: Option<String>,
9963    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
9964    #[serde(rename = "enrichments")]
9965    #[serde(skip_serializing_if = "Option::is_none")]
9966    pub enrichments: Option<Vec<Enrichment>>,
9967    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
9968    #[serde(rename = "firewall_rule")]
9969    #[serde(skip_serializing_if = "Option::is_none")]
9970    pub firewall_rule: Option<Box<FirewallRule>>,
9971    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
9972    #[serde(rename = "is_alert")]
9973    #[serde(skip_serializing_if = "Option::is_none")]
9974    pub is_alert: Option<bool>,
9975    #[doc = "Job\n\nThe job object that pertains to the event.\n\nrequired"]
9976    #[serde(rename = "job")]
9977    #[serde(skip_serializing_if = "Option::is_none")]
9978    pub job: Option<Box<Job>>,
9979    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
9980    #[serde(rename = "malware")]
9981    #[serde(skip_serializing_if = "Option::is_none")]
9982    pub malware: Option<Vec<Malware>>,
9983    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
9984    #[serde(rename = "malware_scan_info")]
9985    #[serde(skip_serializing_if = "Option::is_none")]
9986    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
9987    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
9988    #[serde(rename = "message")]
9989    #[serde(skip_serializing_if = "Option::is_none")]
9990    pub message: Option<String>,
9991    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
9992    #[serde(rename = "metadata")]
9993    #[serde(skip_serializing_if = "Option::is_none")]
9994    pub metadata: Option<Box<Metadata>>,
9995    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
9996    #[serde(rename = "observables")]
9997    #[serde(skip_serializing_if = "Option::is_none")]
9998    pub observables: Option<Vec<Observable>>,
9999    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
10000    #[serde(rename = "osint")]
10001    #[serde(skip_serializing_if = "Option::is_none")]
10002    pub osint: Option<Vec<Osint>>,
10003    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
10004    #[serde(rename = "policy")]
10005    #[serde(skip_serializing_if = "Option::is_none")]
10006    pub policy: Option<Box<Policy>>,
10007    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
10008    #[serde(rename = "query_info")]
10009    #[serde(skip_serializing_if = "Option::is_none")]
10010    pub query_info: Option<Box<QueryInfo>>,
10011    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
10012    #[serde(rename = "query_result")]
10013    #[serde(skip_serializing_if = "Option::is_none")]
10014    pub query_result: Option<String>,
10015    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
10016    #[serde(rename = "query_result_id")]
10017    #[serde(skip_serializing_if = "Option::is_none")]
10018    pub query_result_id: Option<i64>,
10019    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
10020    #[serde(rename = "raw_data")]
10021    #[serde(skip_serializing_if = "Option::is_none")]
10022    pub raw_data: Option<String>,
10023    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
10024    #[serde(rename = "raw_data_hash")]
10025    #[serde(skip_serializing_if = "Option::is_none")]
10026    pub raw_data_hash: Option<Box<Fingerprint>>,
10027    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
10028    #[serde(rename = "raw_data_size")]
10029    #[serde(skip_serializing_if = "Option::is_none")]
10030    pub raw_data_size: Option<i64>,
10031    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
10032    #[serde(rename = "risk_details")]
10033    #[serde(skip_serializing_if = "Option::is_none")]
10034    pub risk_details: Option<String>,
10035    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
10036    #[serde(rename = "risk_level")]
10037    #[serde(skip_serializing_if = "Option::is_none")]
10038    pub risk_level: Option<String>,
10039    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
10040    #[serde(rename = "risk_level_id")]
10041    #[serde(skip_serializing_if = "Option::is_none")]
10042    pub risk_level_id: Option<i64>,
10043    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
10044    #[serde(rename = "risk_score")]
10045    #[serde(skip_serializing_if = "Option::is_none")]
10046    pub risk_score: Option<i64>,
10047    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
10048    #[serde(rename = "severity")]
10049    #[serde(skip_serializing_if = "Option::is_none")]
10050    pub severity: Option<String>,
10051    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
10052    #[serde(rename = "severity_id")]
10053    #[serde(skip_serializing_if = "Option::is_none")]
10054    pub severity_id: Option<i64>,
10055    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10056    #[serde(rename = "start_time")]
10057    #[serde(skip_serializing_if = "Option::is_none")]
10058    pub start_time: Option<i64>,
10059    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10060    #[serde(rename = "start_time_dt")]
10061    #[serde(skip_serializing_if = "Option::is_none")]
10062    pub start_time_dt: Option<String>,
10063    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
10064    #[serde(rename = "status")]
10065    #[serde(skip_serializing_if = "Option::is_none")]
10066    pub status: Option<String>,
10067    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
10068    #[serde(rename = "status_code")]
10069    #[serde(skip_serializing_if = "Option::is_none")]
10070    pub status_code: Option<String>,
10071    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
10072    #[serde(rename = "status_detail")]
10073    #[serde(skip_serializing_if = "Option::is_none")]
10074    pub status_detail: Option<String>,
10075    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
10076    #[serde(rename = "status_id")]
10077    #[serde(skip_serializing_if = "Option::is_none")]
10078    pub status_id: Option<i64>,
10079    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
10080    #[serde(rename = "time")]
10081    #[serde(skip_serializing_if = "Option::is_none")]
10082    pub time: Option<i64>,
10083    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
10084    #[serde(rename = "time_dt")]
10085    #[serde(skip_serializing_if = "Option::is_none")]
10086    pub time_dt: Option<String>,
10087    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
10088    #[serde(rename = "timezone_offset")]
10089    #[serde(skip_serializing_if = "Option::is_none")]
10090    pub timezone_offset: Option<i64>,
10091    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
10092    #[serde(rename = "type_name")]
10093    #[serde(skip_serializing_if = "Option::is_none")]
10094    pub type_name: Option<String>,
10095    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
10096    #[serde(rename = "type_uid")]
10097    #[serde(skip_serializing_if = "Option::is_none")]
10098    pub type_uid: Option<i64>,
10099    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
10100    #[serde(rename = "unmapped")]
10101    #[serde(skip_serializing_if = "Option::is_none")]
10102    pub unmapped: Option<serde_json::Value>,
10103}
10104#[doc = "Kernel Activity\n\nKernel Activity events report when an process creates, reads, or deletes a kernel resource.\n\n[UID:1003] Category: system | Name: kernel_activity"]
10105#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
10106#[serde(default)]
10107#[non_exhaustive]
10108pub struct KernelActivity {
10109    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
10110    #[serde(rename = "action")]
10111    #[serde(skip_serializing_if = "Option::is_none")]
10112    pub action: Option<String>,
10113    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
10114    #[serde(rename = "action_id")]
10115    #[serde(skip_serializing_if = "Option::is_none")]
10116    pub action_id: Option<i64>,
10117    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
10118    #[serde(rename = "activity_id")]
10119    #[serde(skip_serializing_if = "Option::is_none")]
10120    pub activity_id: Option<i64>,
10121    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
10122    #[serde(rename = "activity_name")]
10123    #[serde(skip_serializing_if = "Option::is_none")]
10124    pub activity_name: Option<String>,
10125    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrequired"]
10126    #[serde(rename = "actor")]
10127    #[serde(skip_serializing_if = "Option::is_none")]
10128    pub actor: Option<Box<Actor>>,
10129    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
10130    #[serde(rename = "api")]
10131    #[serde(skip_serializing_if = "Option::is_none")]
10132    pub api: Option<Box<Api>>,
10133    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
10134    #[serde(rename = "attacks")]
10135    #[serde(skip_serializing_if = "Option::is_none")]
10136    pub attacks: Option<Vec<Attack>>,
10137    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
10138    #[serde(rename = "authorizations")]
10139    #[serde(skip_serializing_if = "Option::is_none")]
10140    pub authorizations: Option<Vec<Authorization>>,
10141    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
10142    #[serde(rename = "category_name")]
10143    #[serde(skip_serializing_if = "Option::is_none")]
10144    pub category_name: Option<String>,
10145    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
10146    #[serde(rename = "category_uid")]
10147    #[serde(skip_serializing_if = "Option::is_none")]
10148    pub category_uid: Option<i64>,
10149    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Kernel Activity</code>.\n\noptional"]
10150    #[serde(rename = "class_name")]
10151    #[serde(skip_serializing_if = "Option::is_none")]
10152    pub class_name: Option<String>,
10153    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
10154    #[serde(rename = "class_uid")]
10155    #[serde(skip_serializing_if = "Option::is_none")]
10156    pub class_uid: Option<i64>,
10157    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
10158    #[serde(rename = "cloud")]
10159    #[serde(skip_serializing_if = "Option::is_none")]
10160    pub cloud: Option<Box<Cloud>>,
10161    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
10162    #[serde(rename = "confidence")]
10163    #[serde(skip_serializing_if = "Option::is_none")]
10164    pub confidence: Option<String>,
10165    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
10166    #[serde(rename = "confidence_id")]
10167    #[serde(skip_serializing_if = "Option::is_none")]
10168    pub confidence_id: Option<i64>,
10169    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
10170    #[serde(rename = "confidence_score")]
10171    #[serde(skip_serializing_if = "Option::is_none")]
10172    pub confidence_score: Option<i64>,
10173    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
10174    #[serde(rename = "count")]
10175    #[serde(skip_serializing_if = "Option::is_none")]
10176    pub count: Option<i64>,
10177    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
10178    #[serde(rename = "device")]
10179    #[serde(skip_serializing_if = "Option::is_none")]
10180    pub device: Option<Box<Device>>,
10181    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
10182    #[serde(rename = "disposition")]
10183    #[serde(skip_serializing_if = "Option::is_none")]
10184    pub disposition: Option<String>,
10185    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
10186    #[serde(rename = "disposition_id")]
10187    #[serde(skip_serializing_if = "Option::is_none")]
10188    pub disposition_id: Option<i64>,
10189    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
10190    #[serde(rename = "duration")]
10191    #[serde(skip_serializing_if = "Option::is_none")]
10192    pub duration: Option<i64>,
10193    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
10194    #[serde(rename = "end_time")]
10195    #[serde(skip_serializing_if = "Option::is_none")]
10196    pub end_time: Option<i64>,
10197    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
10198    #[serde(rename = "end_time_dt")]
10199    #[serde(skip_serializing_if = "Option::is_none")]
10200    pub end_time_dt: Option<String>,
10201    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
10202    #[serde(rename = "enrichments")]
10203    #[serde(skip_serializing_if = "Option::is_none")]
10204    pub enrichments: Option<Vec<Enrichment>>,
10205    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
10206    #[serde(rename = "firewall_rule")]
10207    #[serde(skip_serializing_if = "Option::is_none")]
10208    pub firewall_rule: Option<Box<FirewallRule>>,
10209    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
10210    #[serde(rename = "is_alert")]
10211    #[serde(skip_serializing_if = "Option::is_none")]
10212    pub is_alert: Option<bool>,
10213    #[doc = "Kernel\n\nThe target kernel resource.\n\nrequired"]
10214    #[serde(rename = "kernel")]
10215    #[serde(skip_serializing_if = "Option::is_none")]
10216    pub kernel: Option<Box<Kernel>>,
10217    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
10218    #[serde(rename = "malware")]
10219    #[serde(skip_serializing_if = "Option::is_none")]
10220    pub malware: Option<Vec<Malware>>,
10221    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
10222    #[serde(rename = "malware_scan_info")]
10223    #[serde(skip_serializing_if = "Option::is_none")]
10224    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
10225    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
10226    #[serde(rename = "message")]
10227    #[serde(skip_serializing_if = "Option::is_none")]
10228    pub message: Option<String>,
10229    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
10230    #[serde(rename = "metadata")]
10231    #[serde(skip_serializing_if = "Option::is_none")]
10232    pub metadata: Option<Box<Metadata>>,
10233    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
10234    #[serde(rename = "observables")]
10235    #[serde(skip_serializing_if = "Option::is_none")]
10236    pub observables: Option<Vec<Observable>>,
10237    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
10238    #[serde(rename = "osint")]
10239    #[serde(skip_serializing_if = "Option::is_none")]
10240    pub osint: Option<Vec<Osint>>,
10241    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
10242    #[serde(rename = "policy")]
10243    #[serde(skip_serializing_if = "Option::is_none")]
10244    pub policy: Option<Box<Policy>>,
10245    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
10246    #[serde(rename = "raw_data")]
10247    #[serde(skip_serializing_if = "Option::is_none")]
10248    pub raw_data: Option<String>,
10249    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
10250    #[serde(rename = "raw_data_hash")]
10251    #[serde(skip_serializing_if = "Option::is_none")]
10252    pub raw_data_hash: Option<Box<Fingerprint>>,
10253    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
10254    #[serde(rename = "raw_data_size")]
10255    #[serde(skip_serializing_if = "Option::is_none")]
10256    pub raw_data_size: Option<i64>,
10257    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
10258    #[serde(rename = "risk_details")]
10259    #[serde(skip_serializing_if = "Option::is_none")]
10260    pub risk_details: Option<String>,
10261    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
10262    #[serde(rename = "risk_level")]
10263    #[serde(skip_serializing_if = "Option::is_none")]
10264    pub risk_level: Option<String>,
10265    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
10266    #[serde(rename = "risk_level_id")]
10267    #[serde(skip_serializing_if = "Option::is_none")]
10268    pub risk_level_id: Option<i64>,
10269    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
10270    #[serde(rename = "risk_score")]
10271    #[serde(skip_serializing_if = "Option::is_none")]
10272    pub risk_score: Option<i64>,
10273    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
10274    #[serde(rename = "severity")]
10275    #[serde(skip_serializing_if = "Option::is_none")]
10276    pub severity: Option<String>,
10277    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
10278    #[serde(rename = "severity_id")]
10279    #[serde(skip_serializing_if = "Option::is_none")]
10280    pub severity_id: Option<i64>,
10281    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10282    #[serde(rename = "start_time")]
10283    #[serde(skip_serializing_if = "Option::is_none")]
10284    pub start_time: Option<i64>,
10285    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10286    #[serde(rename = "start_time_dt")]
10287    #[serde(skip_serializing_if = "Option::is_none")]
10288    pub start_time_dt: Option<String>,
10289    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
10290    #[serde(rename = "status")]
10291    #[serde(skip_serializing_if = "Option::is_none")]
10292    pub status: Option<String>,
10293    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
10294    #[serde(rename = "status_code")]
10295    #[serde(skip_serializing_if = "Option::is_none")]
10296    pub status_code: Option<String>,
10297    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
10298    #[serde(rename = "status_detail")]
10299    #[serde(skip_serializing_if = "Option::is_none")]
10300    pub status_detail: Option<String>,
10301    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
10302    #[serde(rename = "status_id")]
10303    #[serde(skip_serializing_if = "Option::is_none")]
10304    pub status_id: Option<i64>,
10305    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
10306    #[serde(rename = "time")]
10307    #[serde(skip_serializing_if = "Option::is_none")]
10308    pub time: Option<i64>,
10309    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
10310    #[serde(rename = "time_dt")]
10311    #[serde(skip_serializing_if = "Option::is_none")]
10312    pub time_dt: Option<String>,
10313    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
10314    #[serde(rename = "timezone_offset")]
10315    #[serde(skip_serializing_if = "Option::is_none")]
10316    pub timezone_offset: Option<i64>,
10317    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
10318    #[serde(rename = "type_name")]
10319    #[serde(skip_serializing_if = "Option::is_none")]
10320    pub type_name: Option<String>,
10321    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
10322    #[serde(rename = "type_uid")]
10323    #[serde(skip_serializing_if = "Option::is_none")]
10324    pub type_uid: Option<i64>,
10325    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
10326    #[serde(rename = "unmapped")]
10327    #[serde(skip_serializing_if = "Option::is_none")]
10328    pub unmapped: Option<serde_json::Value>,
10329}
10330#[doc = "Kernel Extension Activity\n\nKernel Extension events report when a driver/extension is loaded or unloaded into the kernel\n\n[UID:1002] Category: system | Name: kernel_extension_activity"]
10331#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
10332#[serde(default)]
10333#[non_exhaustive]
10334pub struct KernelExtensionActivity {
10335    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
10336    #[serde(rename = "action")]
10337    #[serde(skip_serializing_if = "Option::is_none")]
10338    pub action: Option<String>,
10339    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
10340    #[serde(rename = "action_id")]
10341    #[serde(skip_serializing_if = "Option::is_none")]
10342    pub action_id: Option<i64>,
10343    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
10344    #[serde(rename = "activity_id")]
10345    #[serde(skip_serializing_if = "Option::is_none")]
10346    pub activity_id: Option<i64>,
10347    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
10348    #[serde(rename = "activity_name")]
10349    #[serde(skip_serializing_if = "Option::is_none")]
10350    pub activity_name: Option<String>,
10351    #[doc = "Actor\n\nThe actor process that loaded or unloaded the driver/extension.\n\nrequired"]
10352    #[serde(rename = "actor")]
10353    #[serde(skip_serializing_if = "Option::is_none")]
10354    pub actor: Option<Box<Actor>>,
10355    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
10356    #[serde(rename = "api")]
10357    #[serde(skip_serializing_if = "Option::is_none")]
10358    pub api: Option<Box<Api>>,
10359    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
10360    #[serde(rename = "attacks")]
10361    #[serde(skip_serializing_if = "Option::is_none")]
10362    pub attacks: Option<Vec<Attack>>,
10363    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
10364    #[serde(rename = "authorizations")]
10365    #[serde(skip_serializing_if = "Option::is_none")]
10366    pub authorizations: Option<Vec<Authorization>>,
10367    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
10368    #[serde(rename = "category_name")]
10369    #[serde(skip_serializing_if = "Option::is_none")]
10370    pub category_name: Option<String>,
10371    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
10372    #[serde(rename = "category_uid")]
10373    #[serde(skip_serializing_if = "Option::is_none")]
10374    pub category_uid: Option<i64>,
10375    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Kernel Extension Activity</code>.\n\noptional"]
10376    #[serde(rename = "class_name")]
10377    #[serde(skip_serializing_if = "Option::is_none")]
10378    pub class_name: Option<String>,
10379    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
10380    #[serde(rename = "class_uid")]
10381    #[serde(skip_serializing_if = "Option::is_none")]
10382    pub class_uid: Option<i64>,
10383    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
10384    #[serde(rename = "cloud")]
10385    #[serde(skip_serializing_if = "Option::is_none")]
10386    pub cloud: Option<Box<Cloud>>,
10387    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
10388    #[serde(rename = "confidence")]
10389    #[serde(skip_serializing_if = "Option::is_none")]
10390    pub confidence: Option<String>,
10391    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
10392    #[serde(rename = "confidence_id")]
10393    #[serde(skip_serializing_if = "Option::is_none")]
10394    pub confidence_id: Option<i64>,
10395    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
10396    #[serde(rename = "confidence_score")]
10397    #[serde(skip_serializing_if = "Option::is_none")]
10398    pub confidence_score: Option<i64>,
10399    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
10400    #[serde(rename = "count")]
10401    #[serde(skip_serializing_if = "Option::is_none")]
10402    pub count: Option<i64>,
10403    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
10404    #[serde(rename = "device")]
10405    #[serde(skip_serializing_if = "Option::is_none")]
10406    pub device: Option<Box<Device>>,
10407    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
10408    #[serde(rename = "disposition")]
10409    #[serde(skip_serializing_if = "Option::is_none")]
10410    pub disposition: Option<String>,
10411    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
10412    #[serde(rename = "disposition_id")]
10413    #[serde(skip_serializing_if = "Option::is_none")]
10414    pub disposition_id: Option<i64>,
10415    #[doc = "Kernel Driver\n\nThe driver that was loaded/unloaded into the kernel\n\nrequired"]
10416    #[serde(rename = "driver")]
10417    #[serde(skip_serializing_if = "Option::is_none")]
10418    pub driver: Option<Box<KernelDriver>>,
10419    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
10420    #[serde(rename = "duration")]
10421    #[serde(skip_serializing_if = "Option::is_none")]
10422    pub duration: Option<i64>,
10423    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
10424    #[serde(rename = "end_time")]
10425    #[serde(skip_serializing_if = "Option::is_none")]
10426    pub end_time: Option<i64>,
10427    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
10428    #[serde(rename = "end_time_dt")]
10429    #[serde(skip_serializing_if = "Option::is_none")]
10430    pub end_time_dt: Option<String>,
10431    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
10432    #[serde(rename = "enrichments")]
10433    #[serde(skip_serializing_if = "Option::is_none")]
10434    pub enrichments: Option<Vec<Enrichment>>,
10435    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
10436    #[serde(rename = "firewall_rule")]
10437    #[serde(skip_serializing_if = "Option::is_none")]
10438    pub firewall_rule: Option<Box<FirewallRule>>,
10439    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
10440    #[serde(rename = "is_alert")]
10441    #[serde(skip_serializing_if = "Option::is_none")]
10442    pub is_alert: Option<bool>,
10443    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
10444    #[serde(rename = "malware")]
10445    #[serde(skip_serializing_if = "Option::is_none")]
10446    pub malware: Option<Vec<Malware>>,
10447    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
10448    #[serde(rename = "malware_scan_info")]
10449    #[serde(skip_serializing_if = "Option::is_none")]
10450    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
10451    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
10452    #[serde(rename = "message")]
10453    #[serde(skip_serializing_if = "Option::is_none")]
10454    pub message: Option<String>,
10455    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
10456    #[serde(rename = "metadata")]
10457    #[serde(skip_serializing_if = "Option::is_none")]
10458    pub metadata: Option<Box<Metadata>>,
10459    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
10460    #[serde(rename = "observables")]
10461    #[serde(skip_serializing_if = "Option::is_none")]
10462    pub observables: Option<Vec<Observable>>,
10463    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
10464    #[serde(rename = "osint")]
10465    #[serde(skip_serializing_if = "Option::is_none")]
10466    pub osint: Option<Vec<Osint>>,
10467    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
10468    #[serde(rename = "policy")]
10469    #[serde(skip_serializing_if = "Option::is_none")]
10470    pub policy: Option<Box<Policy>>,
10471    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
10472    #[serde(rename = "raw_data")]
10473    #[serde(skip_serializing_if = "Option::is_none")]
10474    pub raw_data: Option<String>,
10475    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
10476    #[serde(rename = "raw_data_hash")]
10477    #[serde(skip_serializing_if = "Option::is_none")]
10478    pub raw_data_hash: Option<Box<Fingerprint>>,
10479    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
10480    #[serde(rename = "raw_data_size")]
10481    #[serde(skip_serializing_if = "Option::is_none")]
10482    pub raw_data_size: Option<i64>,
10483    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
10484    #[serde(rename = "risk_details")]
10485    #[serde(skip_serializing_if = "Option::is_none")]
10486    pub risk_details: Option<String>,
10487    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
10488    #[serde(rename = "risk_level")]
10489    #[serde(skip_serializing_if = "Option::is_none")]
10490    pub risk_level: Option<String>,
10491    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
10492    #[serde(rename = "risk_level_id")]
10493    #[serde(skip_serializing_if = "Option::is_none")]
10494    pub risk_level_id: Option<i64>,
10495    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
10496    #[serde(rename = "risk_score")]
10497    #[serde(skip_serializing_if = "Option::is_none")]
10498    pub risk_score: Option<i64>,
10499    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
10500    #[serde(rename = "severity")]
10501    #[serde(skip_serializing_if = "Option::is_none")]
10502    pub severity: Option<String>,
10503    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
10504    #[serde(rename = "severity_id")]
10505    #[serde(skip_serializing_if = "Option::is_none")]
10506    pub severity_id: Option<i64>,
10507    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10508    #[serde(rename = "start_time")]
10509    #[serde(skip_serializing_if = "Option::is_none")]
10510    pub start_time: Option<i64>,
10511    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10512    #[serde(rename = "start_time_dt")]
10513    #[serde(skip_serializing_if = "Option::is_none")]
10514    pub start_time_dt: Option<String>,
10515    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
10516    #[serde(rename = "status")]
10517    #[serde(skip_serializing_if = "Option::is_none")]
10518    pub status: Option<String>,
10519    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
10520    #[serde(rename = "status_code")]
10521    #[serde(skip_serializing_if = "Option::is_none")]
10522    pub status_code: Option<String>,
10523    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
10524    #[serde(rename = "status_detail")]
10525    #[serde(skip_serializing_if = "Option::is_none")]
10526    pub status_detail: Option<String>,
10527    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
10528    #[serde(rename = "status_id")]
10529    #[serde(skip_serializing_if = "Option::is_none")]
10530    pub status_id: Option<i64>,
10531    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
10532    #[serde(rename = "time")]
10533    #[serde(skip_serializing_if = "Option::is_none")]
10534    pub time: Option<i64>,
10535    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
10536    #[serde(rename = "time_dt")]
10537    #[serde(skip_serializing_if = "Option::is_none")]
10538    pub time_dt: Option<String>,
10539    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
10540    #[serde(rename = "timezone_offset")]
10541    #[serde(skip_serializing_if = "Option::is_none")]
10542    pub timezone_offset: Option<i64>,
10543    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
10544    #[serde(rename = "type_name")]
10545    #[serde(skip_serializing_if = "Option::is_none")]
10546    pub type_name: Option<String>,
10547    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
10548    #[serde(rename = "type_uid")]
10549    #[serde(skip_serializing_if = "Option::is_none")]
10550    pub type_uid: Option<i64>,
10551    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
10552    #[serde(rename = "unmapped")]
10553    #[serde(skip_serializing_if = "Option::is_none")]
10554    pub unmapped: Option<serde_json::Value>,
10555}
10556#[doc = "Kernel Object Query\n\nKernel Object Query events report information about discovered kernel resources.\n\n[UID:5006] Category: discovery | Name: kernel_object_query"]
10557#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
10558#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
10559#[serde(default)]
10560#[non_exhaustive]
10561pub struct KernelObjectQuery {
10562    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
10563    #[serde(rename = "action")]
10564    #[serde(skip_serializing_if = "Option::is_none")]
10565    pub action: Option<String>,
10566    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
10567    #[serde(rename = "action_id")]
10568    #[serde(skip_serializing_if = "Option::is_none")]
10569    pub action_id: Option<i64>,
10570    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
10571    #[serde(rename = "activity_id")]
10572    #[serde(skip_serializing_if = "Option::is_none")]
10573    pub activity_id: Option<i64>,
10574    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
10575    #[serde(rename = "activity_name")]
10576    #[serde(skip_serializing_if = "Option::is_none")]
10577    pub activity_name: Option<String>,
10578    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
10579    #[serde(rename = "actor")]
10580    #[serde(skip_serializing_if = "Option::is_none")]
10581    pub actor: Option<Box<Actor>>,
10582    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
10583    #[serde(rename = "api")]
10584    #[serde(skip_serializing_if = "Option::is_none")]
10585    pub api: Option<Box<Api>>,
10586    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
10587    #[serde(rename = "attacks")]
10588    #[serde(skip_serializing_if = "Option::is_none")]
10589    pub attacks: Option<Vec<Attack>>,
10590    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
10591    #[serde(rename = "authorizations")]
10592    #[serde(skip_serializing_if = "Option::is_none")]
10593    pub authorizations: Option<Vec<Authorization>>,
10594    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
10595    #[serde(rename = "category_name")]
10596    #[serde(skip_serializing_if = "Option::is_none")]
10597    pub category_name: Option<String>,
10598    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
10599    #[serde(rename = "category_uid")]
10600    #[serde(skip_serializing_if = "Option::is_none")]
10601    pub category_uid: Option<i64>,
10602    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Kernel Object Query</code>.\n\noptional"]
10603    #[serde(rename = "class_name")]
10604    #[serde(skip_serializing_if = "Option::is_none")]
10605    pub class_name: Option<String>,
10606    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
10607    #[serde(rename = "class_uid")]
10608    #[serde(skip_serializing_if = "Option::is_none")]
10609    pub class_uid: Option<i64>,
10610    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
10611    #[serde(rename = "cloud")]
10612    #[serde(skip_serializing_if = "Option::is_none")]
10613    pub cloud: Option<Box<Cloud>>,
10614    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
10615    #[serde(rename = "confidence")]
10616    #[serde(skip_serializing_if = "Option::is_none")]
10617    pub confidence: Option<String>,
10618    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
10619    #[serde(rename = "confidence_id")]
10620    #[serde(skip_serializing_if = "Option::is_none")]
10621    pub confidence_id: Option<i64>,
10622    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
10623    #[serde(rename = "confidence_score")]
10624    #[serde(skip_serializing_if = "Option::is_none")]
10625    pub confidence_score: Option<i64>,
10626    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
10627    #[serde(rename = "count")]
10628    #[serde(skip_serializing_if = "Option::is_none")]
10629    pub count: Option<i64>,
10630    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
10631    #[serde(rename = "device")]
10632    #[serde(skip_serializing_if = "Option::is_none")]
10633    pub device: Option<Box<Device>>,
10634    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
10635    #[serde(rename = "disposition")]
10636    #[serde(skip_serializing_if = "Option::is_none")]
10637    pub disposition: Option<String>,
10638    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
10639    #[serde(rename = "disposition_id")]
10640    #[serde(skip_serializing_if = "Option::is_none")]
10641    pub disposition_id: Option<i64>,
10642    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
10643    #[serde(rename = "duration")]
10644    #[serde(skip_serializing_if = "Option::is_none")]
10645    pub duration: Option<i64>,
10646    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
10647    #[serde(rename = "end_time")]
10648    #[serde(skip_serializing_if = "Option::is_none")]
10649    pub end_time: Option<i64>,
10650    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
10651    #[serde(rename = "end_time_dt")]
10652    #[serde(skip_serializing_if = "Option::is_none")]
10653    pub end_time_dt: Option<String>,
10654    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
10655    #[serde(rename = "enrichments")]
10656    #[serde(skip_serializing_if = "Option::is_none")]
10657    pub enrichments: Option<Vec<Enrichment>>,
10658    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
10659    #[serde(rename = "firewall_rule")]
10660    #[serde(skip_serializing_if = "Option::is_none")]
10661    pub firewall_rule: Option<Box<FirewallRule>>,
10662    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
10663    #[serde(rename = "is_alert")]
10664    #[serde(skip_serializing_if = "Option::is_none")]
10665    pub is_alert: Option<bool>,
10666    #[doc = "Kernel\n\nThe kernel object that pertains to the event.\n\nrequired"]
10667    #[serde(rename = "kernel")]
10668    #[serde(skip_serializing_if = "Option::is_none")]
10669    pub kernel: Option<Box<Kernel>>,
10670    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
10671    #[serde(rename = "malware")]
10672    #[serde(skip_serializing_if = "Option::is_none")]
10673    pub malware: Option<Vec<Malware>>,
10674    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
10675    #[serde(rename = "malware_scan_info")]
10676    #[serde(skip_serializing_if = "Option::is_none")]
10677    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
10678    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
10679    #[serde(rename = "message")]
10680    #[serde(skip_serializing_if = "Option::is_none")]
10681    pub message: Option<String>,
10682    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
10683    #[serde(rename = "metadata")]
10684    #[serde(skip_serializing_if = "Option::is_none")]
10685    pub metadata: Option<Box<Metadata>>,
10686    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
10687    #[serde(rename = "observables")]
10688    #[serde(skip_serializing_if = "Option::is_none")]
10689    pub observables: Option<Vec<Observable>>,
10690    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
10691    #[serde(rename = "osint")]
10692    #[serde(skip_serializing_if = "Option::is_none")]
10693    pub osint: Option<Vec<Osint>>,
10694    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
10695    #[serde(rename = "policy")]
10696    #[serde(skip_serializing_if = "Option::is_none")]
10697    pub policy: Option<Box<Policy>>,
10698    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
10699    #[serde(rename = "query_info")]
10700    #[serde(skip_serializing_if = "Option::is_none")]
10701    pub query_info: Option<Box<QueryInfo>>,
10702    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
10703    #[serde(rename = "query_result")]
10704    #[serde(skip_serializing_if = "Option::is_none")]
10705    pub query_result: Option<String>,
10706    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
10707    #[serde(rename = "query_result_id")]
10708    #[serde(skip_serializing_if = "Option::is_none")]
10709    pub query_result_id: Option<i64>,
10710    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
10711    #[serde(rename = "raw_data")]
10712    #[serde(skip_serializing_if = "Option::is_none")]
10713    pub raw_data: Option<String>,
10714    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
10715    #[serde(rename = "raw_data_hash")]
10716    #[serde(skip_serializing_if = "Option::is_none")]
10717    pub raw_data_hash: Option<Box<Fingerprint>>,
10718    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
10719    #[serde(rename = "raw_data_size")]
10720    #[serde(skip_serializing_if = "Option::is_none")]
10721    pub raw_data_size: Option<i64>,
10722    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
10723    #[serde(rename = "risk_details")]
10724    #[serde(skip_serializing_if = "Option::is_none")]
10725    pub risk_details: Option<String>,
10726    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
10727    #[serde(rename = "risk_level")]
10728    #[serde(skip_serializing_if = "Option::is_none")]
10729    pub risk_level: Option<String>,
10730    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
10731    #[serde(rename = "risk_level_id")]
10732    #[serde(skip_serializing_if = "Option::is_none")]
10733    pub risk_level_id: Option<i64>,
10734    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
10735    #[serde(rename = "risk_score")]
10736    #[serde(skip_serializing_if = "Option::is_none")]
10737    pub risk_score: Option<i64>,
10738    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
10739    #[serde(rename = "severity")]
10740    #[serde(skip_serializing_if = "Option::is_none")]
10741    pub severity: Option<String>,
10742    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
10743    #[serde(rename = "severity_id")]
10744    #[serde(skip_serializing_if = "Option::is_none")]
10745    pub severity_id: Option<i64>,
10746    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10747    #[serde(rename = "start_time")]
10748    #[serde(skip_serializing_if = "Option::is_none")]
10749    pub start_time: Option<i64>,
10750    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10751    #[serde(rename = "start_time_dt")]
10752    #[serde(skip_serializing_if = "Option::is_none")]
10753    pub start_time_dt: Option<String>,
10754    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
10755    #[serde(rename = "status")]
10756    #[serde(skip_serializing_if = "Option::is_none")]
10757    pub status: Option<String>,
10758    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
10759    #[serde(rename = "status_code")]
10760    #[serde(skip_serializing_if = "Option::is_none")]
10761    pub status_code: Option<String>,
10762    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
10763    #[serde(rename = "status_detail")]
10764    #[serde(skip_serializing_if = "Option::is_none")]
10765    pub status_detail: Option<String>,
10766    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
10767    #[serde(rename = "status_id")]
10768    #[serde(skip_serializing_if = "Option::is_none")]
10769    pub status_id: Option<i64>,
10770    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
10771    #[serde(rename = "time")]
10772    #[serde(skip_serializing_if = "Option::is_none")]
10773    pub time: Option<i64>,
10774    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
10775    #[serde(rename = "time_dt")]
10776    #[serde(skip_serializing_if = "Option::is_none")]
10777    pub time_dt: Option<String>,
10778    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
10779    #[serde(rename = "timezone_offset")]
10780    #[serde(skip_serializing_if = "Option::is_none")]
10781    pub timezone_offset: Option<i64>,
10782    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
10783    #[serde(rename = "type_name")]
10784    #[serde(skip_serializing_if = "Option::is_none")]
10785    pub type_name: Option<String>,
10786    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
10787    #[serde(rename = "type_uid")]
10788    #[serde(skip_serializing_if = "Option::is_none")]
10789    pub type_uid: Option<i64>,
10790    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
10791    #[serde(rename = "unmapped")]
10792    #[serde(skip_serializing_if = "Option::is_none")]
10793    pub unmapped: Option<serde_json::Value>,
10794}
10795#[doc = "Memory Activity\n\nMemory Activity events report when a process has memory allocated, read/modified, or other manipulation activities - such as a buffer overflow or turning off data execution protection (DEP).\n\n[UID:1004] Category: system | Name: memory_activity"]
10796#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
10797#[serde(default)]
10798#[non_exhaustive]
10799pub struct MemoryActivity {
10800    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
10801    #[serde(rename = "action")]
10802    #[serde(skip_serializing_if = "Option::is_none")]
10803    pub action: Option<String>,
10804    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
10805    #[serde(rename = "action_id")]
10806    #[serde(skip_serializing_if = "Option::is_none")]
10807    pub action_id: Option<i64>,
10808    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
10809    #[serde(rename = "activity_id")]
10810    #[serde(skip_serializing_if = "Option::is_none")]
10811    pub activity_id: Option<i64>,
10812    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
10813    #[serde(rename = "activity_name")]
10814    #[serde(skip_serializing_if = "Option::is_none")]
10815    pub activity_name: Option<String>,
10816    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrequired"]
10817    #[serde(rename = "actor")]
10818    #[serde(skip_serializing_if = "Option::is_none")]
10819    pub actor: Option<Box<Actor>>,
10820    #[doc = "Actual Permissions\n\nThe permissions that were granted to access memory.\n\nrecommended"]
10821    #[serde(rename = "actual_permissions")]
10822    #[serde(skip_serializing_if = "Option::is_none")]
10823    pub actual_permissions: Option<i64>,
10824    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
10825    #[serde(rename = "api")]
10826    #[serde(skip_serializing_if = "Option::is_none")]
10827    pub api: Option<Box<Api>>,
10828    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
10829    #[serde(rename = "attacks")]
10830    #[serde(skip_serializing_if = "Option::is_none")]
10831    pub attacks: Option<Vec<Attack>>,
10832    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
10833    #[serde(rename = "authorizations")]
10834    #[serde(skip_serializing_if = "Option::is_none")]
10835    pub authorizations: Option<Vec<Authorization>>,
10836    #[doc = "Base Address\n\nThe memory address that was access or requested.\n\nrecommended"]
10837    #[serde(rename = "base_address")]
10838    #[serde(skip_serializing_if = "Option::is_none")]
10839    pub base_address: Option<String>,
10840    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
10841    #[serde(rename = "category_name")]
10842    #[serde(skip_serializing_if = "Option::is_none")]
10843    pub category_name: Option<String>,
10844    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
10845    #[serde(rename = "category_uid")]
10846    #[serde(skip_serializing_if = "Option::is_none")]
10847    pub category_uid: Option<i64>,
10848    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Memory Activity</code>.\n\noptional"]
10849    #[serde(rename = "class_name")]
10850    #[serde(skip_serializing_if = "Option::is_none")]
10851    pub class_name: Option<String>,
10852    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
10853    #[serde(rename = "class_uid")]
10854    #[serde(skip_serializing_if = "Option::is_none")]
10855    pub class_uid: Option<i64>,
10856    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
10857    #[serde(rename = "cloud")]
10858    #[serde(skip_serializing_if = "Option::is_none")]
10859    pub cloud: Option<Box<Cloud>>,
10860    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
10861    #[serde(rename = "confidence")]
10862    #[serde(skip_serializing_if = "Option::is_none")]
10863    pub confidence: Option<String>,
10864    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
10865    #[serde(rename = "confidence_id")]
10866    #[serde(skip_serializing_if = "Option::is_none")]
10867    pub confidence_id: Option<i64>,
10868    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
10869    #[serde(rename = "confidence_score")]
10870    #[serde(skip_serializing_if = "Option::is_none")]
10871    pub confidence_score: Option<i64>,
10872    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
10873    #[serde(rename = "count")]
10874    #[serde(skip_serializing_if = "Option::is_none")]
10875    pub count: Option<i64>,
10876    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
10877    #[serde(rename = "device")]
10878    #[serde(skip_serializing_if = "Option::is_none")]
10879    pub device: Option<Box<Device>>,
10880    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
10881    #[serde(rename = "disposition")]
10882    #[serde(skip_serializing_if = "Option::is_none")]
10883    pub disposition: Option<String>,
10884    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
10885    #[serde(rename = "disposition_id")]
10886    #[serde(skip_serializing_if = "Option::is_none")]
10887    pub disposition_id: Option<i64>,
10888    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
10889    #[serde(rename = "duration")]
10890    #[serde(skip_serializing_if = "Option::is_none")]
10891    pub duration: Option<i64>,
10892    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
10893    #[serde(rename = "end_time")]
10894    #[serde(skip_serializing_if = "Option::is_none")]
10895    pub end_time: Option<i64>,
10896    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
10897    #[serde(rename = "end_time_dt")]
10898    #[serde(skip_serializing_if = "Option::is_none")]
10899    pub end_time_dt: Option<String>,
10900    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
10901    #[serde(rename = "enrichments")]
10902    #[serde(skip_serializing_if = "Option::is_none")]
10903    pub enrichments: Option<Vec<Enrichment>>,
10904    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
10905    #[serde(rename = "firewall_rule")]
10906    #[serde(skip_serializing_if = "Option::is_none")]
10907    pub firewall_rule: Option<Box<FirewallRule>>,
10908    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
10909    #[serde(rename = "is_alert")]
10910    #[serde(skip_serializing_if = "Option::is_none")]
10911    pub is_alert: Option<bool>,
10912    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
10913    #[serde(rename = "malware")]
10914    #[serde(skip_serializing_if = "Option::is_none")]
10915    pub malware: Option<Vec<Malware>>,
10916    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
10917    #[serde(rename = "malware_scan_info")]
10918    #[serde(skip_serializing_if = "Option::is_none")]
10919    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
10920    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
10921    #[serde(rename = "message")]
10922    #[serde(skip_serializing_if = "Option::is_none")]
10923    pub message: Option<String>,
10924    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
10925    #[serde(rename = "metadata")]
10926    #[serde(skip_serializing_if = "Option::is_none")]
10927    pub metadata: Option<Box<Metadata>>,
10928    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
10929    #[serde(rename = "observables")]
10930    #[serde(skip_serializing_if = "Option::is_none")]
10931    pub observables: Option<Vec<Observable>>,
10932    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
10933    #[serde(rename = "osint")]
10934    #[serde(skip_serializing_if = "Option::is_none")]
10935    pub osint: Option<Vec<Osint>>,
10936    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
10937    #[serde(rename = "policy")]
10938    #[serde(skip_serializing_if = "Option::is_none")]
10939    pub policy: Option<Box<Policy>>,
10940    #[doc = "Process\n\nThe process that had memory allocated, read/written, or had other manipulation activities performed on it.\n\nrequired"]
10941    #[serde(rename = "process")]
10942    #[serde(skip_serializing_if = "Option::is_none")]
10943    pub process: Option<Box<Process>>,
10944    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
10945    #[serde(rename = "raw_data")]
10946    #[serde(skip_serializing_if = "Option::is_none")]
10947    pub raw_data: Option<String>,
10948    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
10949    #[serde(rename = "raw_data_hash")]
10950    #[serde(skip_serializing_if = "Option::is_none")]
10951    pub raw_data_hash: Option<Box<Fingerprint>>,
10952    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
10953    #[serde(rename = "raw_data_size")]
10954    #[serde(skip_serializing_if = "Option::is_none")]
10955    pub raw_data_size: Option<i64>,
10956    #[doc = "Requested Permissions\n\nThe permissions mask that was requested to access memory.\n\nrecommended"]
10957    #[serde(rename = "requested_permissions")]
10958    #[serde(skip_serializing_if = "Option::is_none")]
10959    pub requested_permissions: Option<i64>,
10960    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
10961    #[serde(rename = "risk_details")]
10962    #[serde(skip_serializing_if = "Option::is_none")]
10963    pub risk_details: Option<String>,
10964    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
10965    #[serde(rename = "risk_level")]
10966    #[serde(skip_serializing_if = "Option::is_none")]
10967    pub risk_level: Option<String>,
10968    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
10969    #[serde(rename = "risk_level_id")]
10970    #[serde(skip_serializing_if = "Option::is_none")]
10971    pub risk_level_id: Option<i64>,
10972    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
10973    #[serde(rename = "risk_score")]
10974    #[serde(skip_serializing_if = "Option::is_none")]
10975    pub risk_score: Option<i64>,
10976    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
10977    #[serde(rename = "severity")]
10978    #[serde(skip_serializing_if = "Option::is_none")]
10979    pub severity: Option<String>,
10980    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
10981    #[serde(rename = "severity_id")]
10982    #[serde(skip_serializing_if = "Option::is_none")]
10983    pub severity_id: Option<i64>,
10984    #[doc = "Size\n\nThe memory size that was access or requested.\n\nrecommended"]
10985    #[serde(rename = "size")]
10986    #[serde(skip_serializing_if = "Option::is_none")]
10987    pub size: Option<i64>,
10988    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10989    #[serde(rename = "start_time")]
10990    #[serde(skip_serializing_if = "Option::is_none")]
10991    pub start_time: Option<i64>,
10992    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
10993    #[serde(rename = "start_time_dt")]
10994    #[serde(skip_serializing_if = "Option::is_none")]
10995    pub start_time_dt: Option<String>,
10996    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
10997    #[serde(rename = "status")]
10998    #[serde(skip_serializing_if = "Option::is_none")]
10999    pub status: Option<String>,
11000    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
11001    #[serde(rename = "status_code")]
11002    #[serde(skip_serializing_if = "Option::is_none")]
11003    pub status_code: Option<String>,
11004    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
11005    #[serde(rename = "status_detail")]
11006    #[serde(skip_serializing_if = "Option::is_none")]
11007    pub status_detail: Option<String>,
11008    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
11009    #[serde(rename = "status_id")]
11010    #[serde(skip_serializing_if = "Option::is_none")]
11011    pub status_id: Option<i64>,
11012    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
11013    #[serde(rename = "time")]
11014    #[serde(skip_serializing_if = "Option::is_none")]
11015    pub time: Option<i64>,
11016    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
11017    #[serde(rename = "time_dt")]
11018    #[serde(skip_serializing_if = "Option::is_none")]
11019    pub time_dt: Option<String>,
11020    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
11021    #[serde(rename = "timezone_offset")]
11022    #[serde(skip_serializing_if = "Option::is_none")]
11023    pub timezone_offset: Option<i64>,
11024    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
11025    #[serde(rename = "type_name")]
11026    #[serde(skip_serializing_if = "Option::is_none")]
11027    pub type_name: Option<String>,
11028    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
11029    #[serde(rename = "type_uid")]
11030    #[serde(skip_serializing_if = "Option::is_none")]
11031    pub type_uid: Option<i64>,
11032    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
11033    #[serde(rename = "unmapped")]
11034    #[serde(skip_serializing_if = "Option::is_none")]
11035    pub unmapped: Option<serde_json::Value>,
11036}
11037#[doc = "Module Activity\n\nModule Activity events report when an endpoint process acts on a <code>module</code>.\n\n[UID:1005] Category: system | Name: module_activity"]
11038#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
11039#[serde(default)]
11040#[non_exhaustive]
11041pub struct ModuleActivity {
11042    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
11043    #[serde(rename = "action")]
11044    #[serde(skip_serializing_if = "Option::is_none")]
11045    pub action: Option<String>,
11046    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
11047    #[serde(rename = "action_id")]
11048    #[serde(skip_serializing_if = "Option::is_none")]
11049    pub action_id: Option<i64>,
11050    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
11051    #[serde(rename = "activity_id")]
11052    #[serde(skip_serializing_if = "Option::is_none")]
11053    pub activity_id: Option<i64>,
11054    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
11055    #[serde(rename = "activity_name")]
11056    #[serde(skip_serializing_if = "Option::is_none")]
11057    pub activity_name: Option<String>,
11058    #[doc = "Actor\n\nThe actor that performed the activity on the target <code>module</code>. For example, the process that loaded a module into memory.\n\nrequired"]
11059    #[serde(rename = "actor")]
11060    #[serde(skip_serializing_if = "Option::is_none")]
11061    pub actor: Option<Box<Actor>>,
11062    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
11063    #[serde(rename = "api")]
11064    #[serde(skip_serializing_if = "Option::is_none")]
11065    pub api: Option<Box<Api>>,
11066    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
11067    #[serde(rename = "attacks")]
11068    #[serde(skip_serializing_if = "Option::is_none")]
11069    pub attacks: Option<Vec<Attack>>,
11070    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
11071    #[serde(rename = "authorizations")]
11072    #[serde(skip_serializing_if = "Option::is_none")]
11073    pub authorizations: Option<Vec<Authorization>>,
11074    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
11075    #[serde(rename = "category_name")]
11076    #[serde(skip_serializing_if = "Option::is_none")]
11077    pub category_name: Option<String>,
11078    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
11079    #[serde(rename = "category_uid")]
11080    #[serde(skip_serializing_if = "Option::is_none")]
11081    pub category_uid: Option<i64>,
11082    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Module Activity</code>.\n\noptional"]
11083    #[serde(rename = "class_name")]
11084    #[serde(skip_serializing_if = "Option::is_none")]
11085    pub class_name: Option<String>,
11086    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
11087    #[serde(rename = "class_uid")]
11088    #[serde(skip_serializing_if = "Option::is_none")]
11089    pub class_uid: Option<i64>,
11090    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
11091    #[serde(rename = "cloud")]
11092    #[serde(skip_serializing_if = "Option::is_none")]
11093    pub cloud: Option<Box<Cloud>>,
11094    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
11095    #[serde(rename = "confidence")]
11096    #[serde(skip_serializing_if = "Option::is_none")]
11097    pub confidence: Option<String>,
11098    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
11099    #[serde(rename = "confidence_id")]
11100    #[serde(skip_serializing_if = "Option::is_none")]
11101    pub confidence_id: Option<i64>,
11102    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
11103    #[serde(rename = "confidence_score")]
11104    #[serde(skip_serializing_if = "Option::is_none")]
11105    pub confidence_score: Option<i64>,
11106    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
11107    #[serde(rename = "count")]
11108    #[serde(skip_serializing_if = "Option::is_none")]
11109    pub count: Option<i64>,
11110    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
11111    #[serde(rename = "device")]
11112    #[serde(skip_serializing_if = "Option::is_none")]
11113    pub device: Option<Box<Device>>,
11114    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
11115    #[serde(rename = "disposition")]
11116    #[serde(skip_serializing_if = "Option::is_none")]
11117    pub disposition: Option<String>,
11118    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
11119    #[serde(rename = "disposition_id")]
11120    #[serde(skip_serializing_if = "Option::is_none")]
11121    pub disposition_id: Option<i64>,
11122    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
11123    #[serde(rename = "duration")]
11124    #[serde(skip_serializing_if = "Option::is_none")]
11125    pub duration: Option<i64>,
11126    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
11127    #[serde(rename = "end_time")]
11128    #[serde(skip_serializing_if = "Option::is_none")]
11129    pub end_time: Option<i64>,
11130    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
11131    #[serde(rename = "end_time_dt")]
11132    #[serde(skip_serializing_if = "Option::is_none")]
11133    pub end_time_dt: Option<String>,
11134    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
11135    #[serde(rename = "enrichments")]
11136    #[serde(skip_serializing_if = "Option::is_none")]
11137    pub enrichments: Option<Vec<Enrichment>>,
11138    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
11139    #[serde(rename = "firewall_rule")]
11140    #[serde(skip_serializing_if = "Option::is_none")]
11141    pub firewall_rule: Option<Box<FirewallRule>>,
11142    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
11143    #[serde(rename = "is_alert")]
11144    #[serde(skip_serializing_if = "Option::is_none")]
11145    pub is_alert: Option<bool>,
11146    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
11147    #[serde(rename = "malware")]
11148    #[serde(skip_serializing_if = "Option::is_none")]
11149    pub malware: Option<Vec<Malware>>,
11150    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
11151    #[serde(rename = "malware_scan_info")]
11152    #[serde(skip_serializing_if = "Option::is_none")]
11153    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
11154    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
11155    #[serde(rename = "message")]
11156    #[serde(skip_serializing_if = "Option::is_none")]
11157    pub message: Option<String>,
11158    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
11159    #[serde(rename = "metadata")]
11160    #[serde(skip_serializing_if = "Option::is_none")]
11161    pub metadata: Option<Box<Metadata>>,
11162    #[doc = "Module\n\nThe module that was loaded, unloaded, or invoked.\n\nrequired"]
11163    #[serde(rename = "module")]
11164    #[serde(skip_serializing_if = "Option::is_none")]
11165    pub module: Option<Box<Module>>,
11166    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
11167    #[serde(rename = "observables")]
11168    #[serde(skip_serializing_if = "Option::is_none")]
11169    pub observables: Option<Vec<Observable>>,
11170    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
11171    #[serde(rename = "osint")]
11172    #[serde(skip_serializing_if = "Option::is_none")]
11173    pub osint: Option<Vec<Osint>>,
11174    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
11175    #[serde(rename = "policy")]
11176    #[serde(skip_serializing_if = "Option::is_none")]
11177    pub policy: Option<Box<Policy>>,
11178    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
11179    #[serde(rename = "raw_data")]
11180    #[serde(skip_serializing_if = "Option::is_none")]
11181    pub raw_data: Option<String>,
11182    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
11183    #[serde(rename = "raw_data_hash")]
11184    #[serde(skip_serializing_if = "Option::is_none")]
11185    pub raw_data_hash: Option<Box<Fingerprint>>,
11186    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
11187    #[serde(rename = "raw_data_size")]
11188    #[serde(skip_serializing_if = "Option::is_none")]
11189    pub raw_data_size: Option<i64>,
11190    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
11191    #[serde(rename = "risk_details")]
11192    #[serde(skip_serializing_if = "Option::is_none")]
11193    pub risk_details: Option<String>,
11194    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
11195    #[serde(rename = "risk_level")]
11196    #[serde(skip_serializing_if = "Option::is_none")]
11197    pub risk_level: Option<String>,
11198    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
11199    #[serde(rename = "risk_level_id")]
11200    #[serde(skip_serializing_if = "Option::is_none")]
11201    pub risk_level_id: Option<i64>,
11202    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
11203    #[serde(rename = "risk_score")]
11204    #[serde(skip_serializing_if = "Option::is_none")]
11205    pub risk_score: Option<i64>,
11206    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
11207    #[serde(rename = "severity")]
11208    #[serde(skip_serializing_if = "Option::is_none")]
11209    pub severity: Option<String>,
11210    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
11211    #[serde(rename = "severity_id")]
11212    #[serde(skip_serializing_if = "Option::is_none")]
11213    pub severity_id: Option<i64>,
11214    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
11215    #[serde(rename = "start_time")]
11216    #[serde(skip_serializing_if = "Option::is_none")]
11217    pub start_time: Option<i64>,
11218    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
11219    #[serde(rename = "start_time_dt")]
11220    #[serde(skip_serializing_if = "Option::is_none")]
11221    pub start_time_dt: Option<String>,
11222    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
11223    #[serde(rename = "status")]
11224    #[serde(skip_serializing_if = "Option::is_none")]
11225    pub status: Option<String>,
11226    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
11227    #[serde(rename = "status_code")]
11228    #[serde(skip_serializing_if = "Option::is_none")]
11229    pub status_code: Option<String>,
11230    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
11231    #[serde(rename = "status_detail")]
11232    #[serde(skip_serializing_if = "Option::is_none")]
11233    pub status_detail: Option<String>,
11234    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
11235    #[serde(rename = "status_id")]
11236    #[serde(skip_serializing_if = "Option::is_none")]
11237    pub status_id: Option<i64>,
11238    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
11239    #[serde(rename = "time")]
11240    #[serde(skip_serializing_if = "Option::is_none")]
11241    pub time: Option<i64>,
11242    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
11243    #[serde(rename = "time_dt")]
11244    #[serde(skip_serializing_if = "Option::is_none")]
11245    pub time_dt: Option<String>,
11246    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
11247    #[serde(rename = "timezone_offset")]
11248    #[serde(skip_serializing_if = "Option::is_none")]
11249    pub timezone_offset: Option<i64>,
11250    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
11251    #[serde(rename = "type_name")]
11252    #[serde(skip_serializing_if = "Option::is_none")]
11253    pub type_name: Option<String>,
11254    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
11255    #[serde(rename = "type_uid")]
11256    #[serde(skip_serializing_if = "Option::is_none")]
11257    pub type_uid: Option<i64>,
11258    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
11259    #[serde(rename = "unmapped")]
11260    #[serde(skip_serializing_if = "Option::is_none")]
11261    pub unmapped: Option<serde_json::Value>,
11262}
11263#[doc = "Module Query\n\nModule Query events report information about loaded modules.\n\n[UID:5011] Category: discovery | Name: module_query"]
11264#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
11265#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
11266#[serde(default)]
11267#[non_exhaustive]
11268pub struct ModuleQuery {
11269    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
11270    #[serde(rename = "action")]
11271    #[serde(skip_serializing_if = "Option::is_none")]
11272    pub action: Option<String>,
11273    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
11274    #[serde(rename = "action_id")]
11275    #[serde(skip_serializing_if = "Option::is_none")]
11276    pub action_id: Option<i64>,
11277    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
11278    #[serde(rename = "activity_id")]
11279    #[serde(skip_serializing_if = "Option::is_none")]
11280    pub activity_id: Option<i64>,
11281    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
11282    #[serde(rename = "activity_name")]
11283    #[serde(skip_serializing_if = "Option::is_none")]
11284    pub activity_name: Option<String>,
11285    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
11286    #[serde(rename = "actor")]
11287    #[serde(skip_serializing_if = "Option::is_none")]
11288    pub actor: Option<Box<Actor>>,
11289    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
11290    #[serde(rename = "api")]
11291    #[serde(skip_serializing_if = "Option::is_none")]
11292    pub api: Option<Box<Api>>,
11293    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
11294    #[serde(rename = "attacks")]
11295    #[serde(skip_serializing_if = "Option::is_none")]
11296    pub attacks: Option<Vec<Attack>>,
11297    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
11298    #[serde(rename = "authorizations")]
11299    #[serde(skip_serializing_if = "Option::is_none")]
11300    pub authorizations: Option<Vec<Authorization>>,
11301    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
11302    #[serde(rename = "category_name")]
11303    #[serde(skip_serializing_if = "Option::is_none")]
11304    pub category_name: Option<String>,
11305    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
11306    #[serde(rename = "category_uid")]
11307    #[serde(skip_serializing_if = "Option::is_none")]
11308    pub category_uid: Option<i64>,
11309    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Module Query</code>.\n\noptional"]
11310    #[serde(rename = "class_name")]
11311    #[serde(skip_serializing_if = "Option::is_none")]
11312    pub class_name: Option<String>,
11313    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
11314    #[serde(rename = "class_uid")]
11315    #[serde(skip_serializing_if = "Option::is_none")]
11316    pub class_uid: Option<i64>,
11317    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
11318    #[serde(rename = "cloud")]
11319    #[serde(skip_serializing_if = "Option::is_none")]
11320    pub cloud: Option<Box<Cloud>>,
11321    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
11322    #[serde(rename = "confidence")]
11323    #[serde(skip_serializing_if = "Option::is_none")]
11324    pub confidence: Option<String>,
11325    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
11326    #[serde(rename = "confidence_id")]
11327    #[serde(skip_serializing_if = "Option::is_none")]
11328    pub confidence_id: Option<i64>,
11329    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
11330    #[serde(rename = "confidence_score")]
11331    #[serde(skip_serializing_if = "Option::is_none")]
11332    pub confidence_score: Option<i64>,
11333    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
11334    #[serde(rename = "count")]
11335    #[serde(skip_serializing_if = "Option::is_none")]
11336    pub count: Option<i64>,
11337    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
11338    #[serde(rename = "device")]
11339    #[serde(skip_serializing_if = "Option::is_none")]
11340    pub device: Option<Box<Device>>,
11341    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
11342    #[serde(rename = "disposition")]
11343    #[serde(skip_serializing_if = "Option::is_none")]
11344    pub disposition: Option<String>,
11345    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
11346    #[serde(rename = "disposition_id")]
11347    #[serde(skip_serializing_if = "Option::is_none")]
11348    pub disposition_id: Option<i64>,
11349    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
11350    #[serde(rename = "duration")]
11351    #[serde(skip_serializing_if = "Option::is_none")]
11352    pub duration: Option<i64>,
11353    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
11354    #[serde(rename = "end_time")]
11355    #[serde(skip_serializing_if = "Option::is_none")]
11356    pub end_time: Option<i64>,
11357    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
11358    #[serde(rename = "end_time_dt")]
11359    #[serde(skip_serializing_if = "Option::is_none")]
11360    pub end_time_dt: Option<String>,
11361    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
11362    #[serde(rename = "enrichments")]
11363    #[serde(skip_serializing_if = "Option::is_none")]
11364    pub enrichments: Option<Vec<Enrichment>>,
11365    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
11366    #[serde(rename = "firewall_rule")]
11367    #[serde(skip_serializing_if = "Option::is_none")]
11368    pub firewall_rule: Option<Box<FirewallRule>>,
11369    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
11370    #[serde(rename = "is_alert")]
11371    #[serde(skip_serializing_if = "Option::is_none")]
11372    pub is_alert: Option<bool>,
11373    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
11374    #[serde(rename = "malware")]
11375    #[serde(skip_serializing_if = "Option::is_none")]
11376    pub malware: Option<Vec<Malware>>,
11377    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
11378    #[serde(rename = "malware_scan_info")]
11379    #[serde(skip_serializing_if = "Option::is_none")]
11380    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
11381    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
11382    #[serde(rename = "message")]
11383    #[serde(skip_serializing_if = "Option::is_none")]
11384    pub message: Option<String>,
11385    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
11386    #[serde(rename = "metadata")]
11387    #[serde(skip_serializing_if = "Option::is_none")]
11388    pub metadata: Option<Box<Metadata>>,
11389    #[doc = "Module\n\nThe module that pertains to the event.\n\nrequired"]
11390    #[serde(rename = "module")]
11391    #[serde(skip_serializing_if = "Option::is_none")]
11392    pub module: Option<Box<Module>>,
11393    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
11394    #[serde(rename = "observables")]
11395    #[serde(skip_serializing_if = "Option::is_none")]
11396    pub observables: Option<Vec<Observable>>,
11397    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
11398    #[serde(rename = "osint")]
11399    #[serde(skip_serializing_if = "Option::is_none")]
11400    pub osint: Option<Vec<Osint>>,
11401    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
11402    #[serde(rename = "policy")]
11403    #[serde(skip_serializing_if = "Option::is_none")]
11404    pub policy: Option<Box<Policy>>,
11405    #[doc = "Process\n\nThe process that loaded the module.\n\nrequired"]
11406    #[serde(rename = "process")]
11407    #[serde(skip_serializing_if = "Option::is_none")]
11408    pub process: Option<Box<Process>>,
11409    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
11410    #[serde(rename = "query_info")]
11411    #[serde(skip_serializing_if = "Option::is_none")]
11412    pub query_info: Option<Box<QueryInfo>>,
11413    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
11414    #[serde(rename = "query_result")]
11415    #[serde(skip_serializing_if = "Option::is_none")]
11416    pub query_result: Option<String>,
11417    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
11418    #[serde(rename = "query_result_id")]
11419    #[serde(skip_serializing_if = "Option::is_none")]
11420    pub query_result_id: Option<i64>,
11421    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
11422    #[serde(rename = "raw_data")]
11423    #[serde(skip_serializing_if = "Option::is_none")]
11424    pub raw_data: Option<String>,
11425    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
11426    #[serde(rename = "raw_data_hash")]
11427    #[serde(skip_serializing_if = "Option::is_none")]
11428    pub raw_data_hash: Option<Box<Fingerprint>>,
11429    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
11430    #[serde(rename = "raw_data_size")]
11431    #[serde(skip_serializing_if = "Option::is_none")]
11432    pub raw_data_size: Option<i64>,
11433    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
11434    #[serde(rename = "risk_details")]
11435    #[serde(skip_serializing_if = "Option::is_none")]
11436    pub risk_details: Option<String>,
11437    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
11438    #[serde(rename = "risk_level")]
11439    #[serde(skip_serializing_if = "Option::is_none")]
11440    pub risk_level: Option<String>,
11441    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
11442    #[serde(rename = "risk_level_id")]
11443    #[serde(skip_serializing_if = "Option::is_none")]
11444    pub risk_level_id: Option<i64>,
11445    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
11446    #[serde(rename = "risk_score")]
11447    #[serde(skip_serializing_if = "Option::is_none")]
11448    pub risk_score: Option<i64>,
11449    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
11450    #[serde(rename = "severity")]
11451    #[serde(skip_serializing_if = "Option::is_none")]
11452    pub severity: Option<String>,
11453    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
11454    #[serde(rename = "severity_id")]
11455    #[serde(skip_serializing_if = "Option::is_none")]
11456    pub severity_id: Option<i64>,
11457    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
11458    #[serde(rename = "start_time")]
11459    #[serde(skip_serializing_if = "Option::is_none")]
11460    pub start_time: Option<i64>,
11461    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
11462    #[serde(rename = "start_time_dt")]
11463    #[serde(skip_serializing_if = "Option::is_none")]
11464    pub start_time_dt: Option<String>,
11465    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
11466    #[serde(rename = "status")]
11467    #[serde(skip_serializing_if = "Option::is_none")]
11468    pub status: Option<String>,
11469    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
11470    #[serde(rename = "status_code")]
11471    #[serde(skip_serializing_if = "Option::is_none")]
11472    pub status_code: Option<String>,
11473    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
11474    #[serde(rename = "status_detail")]
11475    #[serde(skip_serializing_if = "Option::is_none")]
11476    pub status_detail: Option<String>,
11477    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
11478    #[serde(rename = "status_id")]
11479    #[serde(skip_serializing_if = "Option::is_none")]
11480    pub status_id: Option<i64>,
11481    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
11482    #[serde(rename = "time")]
11483    #[serde(skip_serializing_if = "Option::is_none")]
11484    pub time: Option<i64>,
11485    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
11486    #[serde(rename = "time_dt")]
11487    #[serde(skip_serializing_if = "Option::is_none")]
11488    pub time_dt: Option<String>,
11489    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
11490    #[serde(rename = "timezone_offset")]
11491    #[serde(skip_serializing_if = "Option::is_none")]
11492    pub timezone_offset: Option<i64>,
11493    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
11494    #[serde(rename = "type_name")]
11495    #[serde(skip_serializing_if = "Option::is_none")]
11496    pub type_name: Option<String>,
11497    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
11498    #[serde(rename = "type_uid")]
11499    #[serde(skip_serializing_if = "Option::is_none")]
11500    pub type_uid: Option<i64>,
11501    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
11502    #[serde(rename = "unmapped")]
11503    #[serde(skip_serializing_if = "Option::is_none")]
11504    pub unmapped: Option<serde_json::Value>,
11505}
11506#[doc = "Network Activity\n\nNetwork Activity events report network connection and traffic activity.\n\n[UID:4001] Category: network | Name: network_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
11507#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
11508#[serde(default)]
11509#[non_exhaustive]
11510pub struct NetworkActivity {
11511    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
11512    #[serde(rename = "action")]
11513    #[serde(skip_serializing_if = "Option::is_none")]
11514    pub action: Option<String>,
11515    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
11516    #[serde(rename = "action_id")]
11517    #[serde(skip_serializing_if = "Option::is_none")]
11518    pub action_id: Option<i64>,
11519    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
11520    #[serde(rename = "activity_id")]
11521    #[serde(skip_serializing_if = "Option::is_none")]
11522    pub activity_id: Option<i64>,
11523    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
11524    #[serde(rename = "activity_name")]
11525    #[serde(skip_serializing_if = "Option::is_none")]
11526    pub activity_name: Option<String>,
11527    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
11528    #[serde(rename = "actor")]
11529    #[serde(skip_serializing_if = "Option::is_none")]
11530    pub actor: Option<Box<Actor>>,
11531    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
11532    #[serde(rename = "api")]
11533    #[serde(skip_serializing_if = "Option::is_none")]
11534    pub api: Option<Box<Api>>,
11535    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
11536    #[serde(rename = "app_name")]
11537    #[serde(skip_serializing_if = "Option::is_none")]
11538    pub app_name: Option<String>,
11539    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
11540    #[serde(rename = "attacks")]
11541    #[serde(skip_serializing_if = "Option::is_none")]
11542    pub attacks: Option<Vec<Attack>>,
11543    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
11544    #[serde(rename = "authorizations")]
11545    #[serde(skip_serializing_if = "Option::is_none")]
11546    pub authorizations: Option<Vec<Authorization>>,
11547    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
11548    #[serde(rename = "category_name")]
11549    #[serde(skip_serializing_if = "Option::is_none")]
11550    pub category_name: Option<String>,
11551    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
11552    #[serde(rename = "category_uid")]
11553    #[serde(skip_serializing_if = "Option::is_none")]
11554    pub category_uid: Option<i64>,
11555    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Network Activity</code>.\n\noptional"]
11556    #[serde(rename = "class_name")]
11557    #[serde(skip_serializing_if = "Option::is_none")]
11558    pub class_name: Option<String>,
11559    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
11560    #[serde(rename = "class_uid")]
11561    #[serde(skip_serializing_if = "Option::is_none")]
11562    pub class_uid: Option<i64>,
11563    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
11564    #[serde(rename = "cloud")]
11565    #[serde(skip_serializing_if = "Option::is_none")]
11566    pub cloud: Option<Box<Cloud>>,
11567    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
11568    #[serde(rename = "confidence")]
11569    #[serde(skip_serializing_if = "Option::is_none")]
11570    pub confidence: Option<String>,
11571    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
11572    #[serde(rename = "confidence_id")]
11573    #[serde(skip_serializing_if = "Option::is_none")]
11574    pub confidence_id: Option<i64>,
11575    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
11576    #[serde(rename = "confidence_score")]
11577    #[serde(skip_serializing_if = "Option::is_none")]
11578    pub confidence_score: Option<i64>,
11579    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
11580    #[serde(rename = "connection_info")]
11581    #[serde(skip_serializing_if = "Option::is_none")]
11582    pub connection_info: Option<Box<NetworkConnectionInfo>>,
11583    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
11584    #[serde(rename = "count")]
11585    #[serde(skip_serializing_if = "Option::is_none")]
11586    pub count: Option<i64>,
11587    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
11588    #[serde(rename = "cumulative_traffic")]
11589    #[serde(skip_serializing_if = "Option::is_none")]
11590    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
11591    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
11592    #[serde(rename = "device")]
11593    #[serde(skip_serializing_if = "Option::is_none")]
11594    pub device: Option<Box<Device>>,
11595    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
11596    #[serde(rename = "disposition")]
11597    #[serde(skip_serializing_if = "Option::is_none")]
11598    pub disposition: Option<String>,
11599    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
11600    #[serde(rename = "disposition_id")]
11601    #[serde(skip_serializing_if = "Option::is_none")]
11602    pub disposition_id: Option<i64>,
11603    #[doc = "Destination Endpoint\n\nThe responder of the network connection. In some contexts an event source cannot correctly identify the responder. Refer to <code>is_src_dst_assignment_known</code> for certainty.\n\nrecommended"]
11604    #[serde(rename = "dst_endpoint")]
11605    #[serde(skip_serializing_if = "Option::is_none")]
11606    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
11607    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
11608    #[serde(rename = "duration")]
11609    #[serde(skip_serializing_if = "Option::is_none")]
11610    pub duration: Option<i64>,
11611    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
11612    #[serde(rename = "end_time")]
11613    #[serde(skip_serializing_if = "Option::is_none")]
11614    pub end_time: Option<i64>,
11615    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
11616    #[serde(rename = "end_time_dt")]
11617    #[serde(skip_serializing_if = "Option::is_none")]
11618    pub end_time_dt: Option<String>,
11619    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
11620    #[serde(rename = "enrichments")]
11621    #[serde(skip_serializing_if = "Option::is_none")]
11622    pub enrichments: Option<Vec<Enrichment>>,
11623    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
11624    #[serde(rename = "firewall_rule")]
11625    #[serde(skip_serializing_if = "Option::is_none")]
11626    pub firewall_rule: Option<Box<FirewallRule>>,
11627    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
11628    #[serde(rename = "is_alert")]
11629    #[serde(skip_serializing_if = "Option::is_none")]
11630    pub is_alert: Option<bool>,
11631    #[doc = "Source/Destination Assignment Known\n\n<code>true</code> denotes that <code>src_endpoint</code> and <code>dst_endpoint</code> correctly identify the initiator and responder respectively. <code>false</code> denotes that the event source has arbitrarily assigned one peer to <code>src_endpoint</code> and the other to <code>dst_endpoint</code>, in other words that initiator and responder are not being asserted. This can occur, for example, when the event source is a network appliance that has not observed the initiation of a given connection. In the absence of this attribute, interpretation of the initiator and responder is implementation-specific.\n\nrecommended"]
11632    #[serde(rename = "is_src_dst_assignment_known")]
11633    #[serde(skip_serializing_if = "Option::is_none")]
11634    pub is_src_dst_assignment_known: Option<bool>,
11635    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
11636    #[serde(rename = "ja4_fingerprint_list")]
11637    #[serde(skip_serializing_if = "Option::is_none")]
11638    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
11639    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
11640    #[serde(rename = "load_balancer")]
11641    #[serde(skip_serializing_if = "Option::is_none")]
11642    pub load_balancer: Option<Box<LoadBalancer>>,
11643    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
11644    #[serde(rename = "malware")]
11645    #[serde(skip_serializing_if = "Option::is_none")]
11646    pub malware: Option<Vec<Malware>>,
11647    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
11648    #[serde(rename = "malware_scan_info")]
11649    #[serde(skip_serializing_if = "Option::is_none")]
11650    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
11651    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
11652    #[serde(rename = "message")]
11653    #[serde(skip_serializing_if = "Option::is_none")]
11654    pub message: Option<String>,
11655    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
11656    #[serde(rename = "metadata")]
11657    #[serde(skip_serializing_if = "Option::is_none")]
11658    pub metadata: Option<Box<Metadata>>,
11659    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
11660    #[serde(rename = "observables")]
11661    #[serde(skip_serializing_if = "Option::is_none")]
11662    pub observables: Option<Vec<Observable>>,
11663    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
11664    #[serde(rename = "observation_point")]
11665    #[serde(skip_serializing_if = "Option::is_none")]
11666    pub observation_point: Option<String>,
11667    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
11668    #[serde(rename = "observation_point_id")]
11669    #[serde(skip_serializing_if = "Option::is_none")]
11670    pub observation_point_id: Option<i64>,
11671    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
11672    #[serde(rename = "osint")]
11673    #[serde(skip_serializing_if = "Option::is_none")]
11674    pub osint: Option<Vec<Osint>>,
11675    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
11676    #[serde(rename = "policy")]
11677    #[serde(skip_serializing_if = "Option::is_none")]
11678    pub policy: Option<Box<Policy>>,
11679    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
11680    #[serde(rename = "proxy")]
11681    #[serde(skip_serializing_if = "Option::is_none")]
11682    pub proxy: Option<Box<NetworkProxy>>,
11683    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
11684    #[serde(rename = "proxy_connection_info")]
11685    #[serde(skip_serializing_if = "Option::is_none")]
11686    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
11687    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
11688    #[serde(rename = "proxy_endpoint")]
11689    #[serde(skip_serializing_if = "Option::is_none")]
11690    pub proxy_endpoint: Option<Box<NetworkProxy>>,
11691    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
11692    #[serde(rename = "proxy_http_request")]
11693    #[serde(skip_serializing_if = "Option::is_none")]
11694    pub proxy_http_request: Option<Box<HttpRequest>>,
11695    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
11696    #[serde(rename = "proxy_http_response")]
11697    #[serde(skip_serializing_if = "Option::is_none")]
11698    pub proxy_http_response: Option<Box<HttpResponse>>,
11699    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
11700    #[serde(rename = "proxy_tls")]
11701    #[serde(skip_serializing_if = "Option::is_none")]
11702    pub proxy_tls: Option<Box<Tls>>,
11703    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
11704    #[serde(rename = "proxy_traffic")]
11705    #[serde(skip_serializing_if = "Option::is_none")]
11706    pub proxy_traffic: Option<Box<NetworkTraffic>>,
11707    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
11708    #[serde(rename = "raw_data")]
11709    #[serde(skip_serializing_if = "Option::is_none")]
11710    pub raw_data: Option<String>,
11711    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
11712    #[serde(rename = "raw_data_hash")]
11713    #[serde(skip_serializing_if = "Option::is_none")]
11714    pub raw_data_hash: Option<Box<Fingerprint>>,
11715    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
11716    #[serde(rename = "raw_data_size")]
11717    #[serde(skip_serializing_if = "Option::is_none")]
11718    pub raw_data_size: Option<i64>,
11719    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
11720    #[serde(rename = "risk_details")]
11721    #[serde(skip_serializing_if = "Option::is_none")]
11722    pub risk_details: Option<String>,
11723    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
11724    #[serde(rename = "risk_level")]
11725    #[serde(skip_serializing_if = "Option::is_none")]
11726    pub risk_level: Option<String>,
11727    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
11728    #[serde(rename = "risk_level_id")]
11729    #[serde(skip_serializing_if = "Option::is_none")]
11730    pub risk_level_id: Option<i64>,
11731    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
11732    #[serde(rename = "risk_score")]
11733    #[serde(skip_serializing_if = "Option::is_none")]
11734    pub risk_score: Option<i64>,
11735    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
11736    #[serde(rename = "severity")]
11737    #[serde(skip_serializing_if = "Option::is_none")]
11738    pub severity: Option<String>,
11739    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
11740    #[serde(rename = "severity_id")]
11741    #[serde(skip_serializing_if = "Option::is_none")]
11742    pub severity_id: Option<i64>,
11743    #[doc = "Source Endpoint\n\n The initiator of the network connection. In some contexts an event source cannot correctly identify the initiator. Refer to <code>is_src_dst_assignment_known</code> for certainty.\n\nrecommended"]
11744    #[serde(rename = "src_endpoint")]
11745    #[serde(skip_serializing_if = "Option::is_none")]
11746    pub src_endpoint: Option<Box<NetworkEndpoint>>,
11747    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
11748    #[serde(rename = "start_time")]
11749    #[serde(skip_serializing_if = "Option::is_none")]
11750    pub start_time: Option<i64>,
11751    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
11752    #[serde(rename = "start_time_dt")]
11753    #[serde(skip_serializing_if = "Option::is_none")]
11754    pub start_time_dt: Option<String>,
11755    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
11756    #[serde(rename = "status")]
11757    #[serde(skip_serializing_if = "Option::is_none")]
11758    pub status: Option<String>,
11759    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
11760    #[serde(rename = "status_code")]
11761    #[serde(skip_serializing_if = "Option::is_none")]
11762    pub status_code: Option<String>,
11763    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
11764    #[serde(rename = "status_detail")]
11765    #[serde(skip_serializing_if = "Option::is_none")]
11766    pub status_detail: Option<String>,
11767    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
11768    #[serde(rename = "status_id")]
11769    #[serde(skip_serializing_if = "Option::is_none")]
11770    pub status_id: Option<i64>,
11771    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
11772    #[serde(rename = "time")]
11773    #[serde(skip_serializing_if = "Option::is_none")]
11774    pub time: Option<i64>,
11775    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
11776    #[serde(rename = "time_dt")]
11777    #[serde(skip_serializing_if = "Option::is_none")]
11778    pub time_dt: Option<String>,
11779    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
11780    #[serde(rename = "timezone_offset")]
11781    #[serde(skip_serializing_if = "Option::is_none")]
11782    pub timezone_offset: Option<i64>,
11783    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
11784    #[serde(rename = "tls")]
11785    #[serde(skip_serializing_if = "Option::is_none")]
11786    pub tls: Option<Box<Tls>>,
11787    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
11788    #[serde(rename = "traffic")]
11789    #[serde(skip_serializing_if = "Option::is_none")]
11790    pub traffic: Option<Box<NetworkTraffic>>,
11791    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
11792    #[serde(rename = "type_name")]
11793    #[serde(skip_serializing_if = "Option::is_none")]
11794    pub type_name: Option<String>,
11795    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
11796    #[serde(rename = "type_uid")]
11797    #[serde(skip_serializing_if = "Option::is_none")]
11798    pub type_uid: Option<i64>,
11799    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
11800    #[serde(rename = "unmapped")]
11801    #[serde(skip_serializing_if = "Option::is_none")]
11802    pub unmapped: Option<serde_json::Value>,
11803    #[doc = "URL\n\nThe URL details relevant to the network traffic.\n\nrecommended"]
11804    #[serde(rename = "url")]
11805    #[serde(skip_serializing_if = "Option::is_none")]
11806    pub url: Option<Box<Url>>,
11807}
11808#[doc = "Network Connection Query\n\nNetwork Connection Query events report information about active network connections.\n\n[UID:5012] Category: discovery | Name: network_connection_query"]
11809#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
11810#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
11811#[serde(default)]
11812#[non_exhaustive]
11813pub struct NetworkConnectionQuery {
11814    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
11815    #[serde(rename = "action")]
11816    #[serde(skip_serializing_if = "Option::is_none")]
11817    pub action: Option<String>,
11818    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
11819    #[serde(rename = "action_id")]
11820    #[serde(skip_serializing_if = "Option::is_none")]
11821    pub action_id: Option<i64>,
11822    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
11823    #[serde(rename = "activity_id")]
11824    #[serde(skip_serializing_if = "Option::is_none")]
11825    pub activity_id: Option<i64>,
11826    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
11827    #[serde(rename = "activity_name")]
11828    #[serde(skip_serializing_if = "Option::is_none")]
11829    pub activity_name: Option<String>,
11830    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
11831    #[serde(rename = "actor")]
11832    #[serde(skip_serializing_if = "Option::is_none")]
11833    pub actor: Option<Box<Actor>>,
11834    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
11835    #[serde(rename = "api")]
11836    #[serde(skip_serializing_if = "Option::is_none")]
11837    pub api: Option<Box<Api>>,
11838    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
11839    #[serde(rename = "attacks")]
11840    #[serde(skip_serializing_if = "Option::is_none")]
11841    pub attacks: Option<Vec<Attack>>,
11842    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
11843    #[serde(rename = "authorizations")]
11844    #[serde(skip_serializing_if = "Option::is_none")]
11845    pub authorizations: Option<Vec<Authorization>>,
11846    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
11847    #[serde(rename = "category_name")]
11848    #[serde(skip_serializing_if = "Option::is_none")]
11849    pub category_name: Option<String>,
11850    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
11851    #[serde(rename = "category_uid")]
11852    #[serde(skip_serializing_if = "Option::is_none")]
11853    pub category_uid: Option<i64>,
11854    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Network Connection Query</code>.\n\noptional"]
11855    #[serde(rename = "class_name")]
11856    #[serde(skip_serializing_if = "Option::is_none")]
11857    pub class_name: Option<String>,
11858    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
11859    #[serde(rename = "class_uid")]
11860    #[serde(skip_serializing_if = "Option::is_none")]
11861    pub class_uid: Option<i64>,
11862    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
11863    #[serde(rename = "cloud")]
11864    #[serde(skip_serializing_if = "Option::is_none")]
11865    pub cloud: Option<Box<Cloud>>,
11866    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
11867    #[serde(rename = "confidence")]
11868    #[serde(skip_serializing_if = "Option::is_none")]
11869    pub confidence: Option<String>,
11870    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
11871    #[serde(rename = "confidence_id")]
11872    #[serde(skip_serializing_if = "Option::is_none")]
11873    pub confidence_id: Option<i64>,
11874    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
11875    #[serde(rename = "confidence_score")]
11876    #[serde(skip_serializing_if = "Option::is_none")]
11877    pub confidence_score: Option<i64>,
11878    #[doc = "Connection Info\n\nThe network connection information.\n\nrequired"]
11879    #[serde(rename = "connection_info")]
11880    #[serde(skip_serializing_if = "Option::is_none")]
11881    pub connection_info: Option<Box<NetworkConnectionInfo>>,
11882    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
11883    #[serde(rename = "count")]
11884    #[serde(skip_serializing_if = "Option::is_none")]
11885    pub count: Option<i64>,
11886    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
11887    #[serde(rename = "device")]
11888    #[serde(skip_serializing_if = "Option::is_none")]
11889    pub device: Option<Box<Device>>,
11890    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
11891    #[serde(rename = "disposition")]
11892    #[serde(skip_serializing_if = "Option::is_none")]
11893    pub disposition: Option<String>,
11894    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
11895    #[serde(rename = "disposition_id")]
11896    #[serde(skip_serializing_if = "Option::is_none")]
11897    pub disposition_id: Option<i64>,
11898    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
11899    #[serde(rename = "duration")]
11900    #[serde(skip_serializing_if = "Option::is_none")]
11901    pub duration: Option<i64>,
11902    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
11903    #[serde(rename = "end_time")]
11904    #[serde(skip_serializing_if = "Option::is_none")]
11905    pub end_time: Option<i64>,
11906    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
11907    #[serde(rename = "end_time_dt")]
11908    #[serde(skip_serializing_if = "Option::is_none")]
11909    pub end_time_dt: Option<String>,
11910    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
11911    #[serde(rename = "enrichments")]
11912    #[serde(skip_serializing_if = "Option::is_none")]
11913    pub enrichments: Option<Vec<Enrichment>>,
11914    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
11915    #[serde(rename = "firewall_rule")]
11916    #[serde(skip_serializing_if = "Option::is_none")]
11917    pub firewall_rule: Option<Box<FirewallRule>>,
11918    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
11919    #[serde(rename = "is_alert")]
11920    #[serde(skip_serializing_if = "Option::is_none")]
11921    pub is_alert: Option<bool>,
11922    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
11923    #[serde(rename = "malware")]
11924    #[serde(skip_serializing_if = "Option::is_none")]
11925    pub malware: Option<Vec<Malware>>,
11926    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
11927    #[serde(rename = "malware_scan_info")]
11928    #[serde(skip_serializing_if = "Option::is_none")]
11929    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
11930    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
11931    #[serde(rename = "message")]
11932    #[serde(skip_serializing_if = "Option::is_none")]
11933    pub message: Option<String>,
11934    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
11935    #[serde(rename = "metadata")]
11936    #[serde(skip_serializing_if = "Option::is_none")]
11937    pub metadata: Option<Box<Metadata>>,
11938    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
11939    #[serde(rename = "observables")]
11940    #[serde(skip_serializing_if = "Option::is_none")]
11941    pub observables: Option<Vec<Observable>>,
11942    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
11943    #[serde(rename = "osint")]
11944    #[serde(skip_serializing_if = "Option::is_none")]
11945    pub osint: Option<Vec<Osint>>,
11946    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
11947    #[serde(rename = "policy")]
11948    #[serde(skip_serializing_if = "Option::is_none")]
11949    pub policy: Option<Box<Policy>>,
11950    #[doc = "Process\n\nThe process that owns the socket.\n\nrequired"]
11951    #[serde(rename = "process")]
11952    #[serde(skip_serializing_if = "Option::is_none")]
11953    pub process: Option<Box<Process>>,
11954    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
11955    #[serde(rename = "query_info")]
11956    #[serde(skip_serializing_if = "Option::is_none")]
11957    pub query_info: Option<Box<QueryInfo>>,
11958    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
11959    #[serde(rename = "query_result")]
11960    #[serde(skip_serializing_if = "Option::is_none")]
11961    pub query_result: Option<String>,
11962    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
11963    #[serde(rename = "query_result_id")]
11964    #[serde(skip_serializing_if = "Option::is_none")]
11965    pub query_result_id: Option<i64>,
11966    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
11967    #[serde(rename = "raw_data")]
11968    #[serde(skip_serializing_if = "Option::is_none")]
11969    pub raw_data: Option<String>,
11970    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
11971    #[serde(rename = "raw_data_hash")]
11972    #[serde(skip_serializing_if = "Option::is_none")]
11973    pub raw_data_hash: Option<Box<Fingerprint>>,
11974    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
11975    #[serde(rename = "raw_data_size")]
11976    #[serde(skip_serializing_if = "Option::is_none")]
11977    pub raw_data_size: Option<i64>,
11978    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
11979    #[serde(rename = "risk_details")]
11980    #[serde(skip_serializing_if = "Option::is_none")]
11981    pub risk_details: Option<String>,
11982    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
11983    #[serde(rename = "risk_level")]
11984    #[serde(skip_serializing_if = "Option::is_none")]
11985    pub risk_level: Option<String>,
11986    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
11987    #[serde(rename = "risk_level_id")]
11988    #[serde(skip_serializing_if = "Option::is_none")]
11989    pub risk_level_id: Option<i64>,
11990    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
11991    #[serde(rename = "risk_score")]
11992    #[serde(skip_serializing_if = "Option::is_none")]
11993    pub risk_score: Option<i64>,
11994    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
11995    #[serde(rename = "severity")]
11996    #[serde(skip_serializing_if = "Option::is_none")]
11997    pub severity: Option<String>,
11998    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
11999    #[serde(rename = "severity_id")]
12000    #[serde(skip_serializing_if = "Option::is_none")]
12001    pub severity_id: Option<i64>,
12002    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
12003    #[serde(rename = "start_time")]
12004    #[serde(skip_serializing_if = "Option::is_none")]
12005    pub start_time: Option<i64>,
12006    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
12007    #[serde(rename = "start_time_dt")]
12008    #[serde(skip_serializing_if = "Option::is_none")]
12009    pub start_time_dt: Option<String>,
12010    #[doc = "State\n\nThe state of the socket, normalized to the caption of the state_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
12011    #[serde(rename = "state")]
12012    #[serde(skip_serializing_if = "Option::is_none")]
12013    pub state: Option<String>,
12014    #[doc = "State ID\n\nThe state of the socket.\n\nrequired"]
12015    #[serde(rename = "state_id")]
12016    #[serde(skip_serializing_if = "Option::is_none")]
12017    pub state_id: Option<i64>,
12018    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
12019    #[serde(rename = "status")]
12020    #[serde(skip_serializing_if = "Option::is_none")]
12021    pub status: Option<String>,
12022    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
12023    #[serde(rename = "status_code")]
12024    #[serde(skip_serializing_if = "Option::is_none")]
12025    pub status_code: Option<String>,
12026    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
12027    #[serde(rename = "status_detail")]
12028    #[serde(skip_serializing_if = "Option::is_none")]
12029    pub status_detail: Option<String>,
12030    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
12031    #[serde(rename = "status_id")]
12032    #[serde(skip_serializing_if = "Option::is_none")]
12033    pub status_id: Option<i64>,
12034    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
12035    #[serde(rename = "time")]
12036    #[serde(skip_serializing_if = "Option::is_none")]
12037    pub time: Option<i64>,
12038    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
12039    #[serde(rename = "time_dt")]
12040    #[serde(skip_serializing_if = "Option::is_none")]
12041    pub time_dt: Option<String>,
12042    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
12043    #[serde(rename = "timezone_offset")]
12044    #[serde(skip_serializing_if = "Option::is_none")]
12045    pub timezone_offset: Option<i64>,
12046    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
12047    #[serde(rename = "type_name")]
12048    #[serde(skip_serializing_if = "Option::is_none")]
12049    pub type_name: Option<String>,
12050    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
12051    #[serde(rename = "type_uid")]
12052    #[serde(skip_serializing_if = "Option::is_none")]
12053    pub type_uid: Option<i64>,
12054    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
12055    #[serde(rename = "unmapped")]
12056    #[serde(skip_serializing_if = "Option::is_none")]
12057    pub unmapped: Option<serde_json::Value>,
12058}
12059#[doc = "Network File Activity\n\nNetwork File Activity events report file activities traversing the network, including file storage services such as Box, MS OneDrive, or Google Drive.\n\n[UID:4010] Category: network | Name: network_file_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
12060#[deprecated(
12061    note = "Use the new class: <code>'File Hosting Activity' in the 'Application'  category.</code> (Since 1.1.0)"
12062)]
12063#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
12064#[serde(default)]
12065#[non_exhaustive]
12066pub struct NetworkFileActivity {
12067    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
12068    #[serde(rename = "action")]
12069    #[serde(skip_serializing_if = "Option::is_none")]
12070    pub action: Option<String>,
12071    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
12072    #[serde(rename = "action_id")]
12073    #[serde(skip_serializing_if = "Option::is_none")]
12074    pub action_id: Option<i64>,
12075    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
12076    #[serde(rename = "activity_id")]
12077    #[serde(skip_serializing_if = "Option::is_none")]
12078    pub activity_id: Option<i64>,
12079    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
12080    #[serde(rename = "activity_name")]
12081    #[serde(skip_serializing_if = "Option::is_none")]
12082    pub activity_name: Option<String>,
12083    #[doc = "Actor\n\nThe actor that performed the activity on the target file.\n\nrequired"]
12084    #[serde(rename = "actor")]
12085    #[serde(skip_serializing_if = "Option::is_none")]
12086    pub actor: Option<Box<Actor>>,
12087    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
12088    #[serde(rename = "api")]
12089    #[serde(skip_serializing_if = "Option::is_none")]
12090    pub api: Option<Box<Api>>,
12091    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
12092    #[serde(rename = "app_name")]
12093    #[serde(skip_serializing_if = "Option::is_none")]
12094    pub app_name: Option<String>,
12095    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
12096    #[serde(rename = "attacks")]
12097    #[serde(skip_serializing_if = "Option::is_none")]
12098    pub attacks: Option<Vec<Attack>>,
12099    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
12100    #[serde(rename = "authorizations")]
12101    #[serde(skip_serializing_if = "Option::is_none")]
12102    pub authorizations: Option<Vec<Authorization>>,
12103    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
12104    #[serde(rename = "category_name")]
12105    #[serde(skip_serializing_if = "Option::is_none")]
12106    pub category_name: Option<String>,
12107    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
12108    #[serde(rename = "category_uid")]
12109    #[serde(skip_serializing_if = "Option::is_none")]
12110    pub category_uid: Option<i64>,
12111    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Network File Activity</code>.\n\noptional"]
12112    #[serde(rename = "class_name")]
12113    #[serde(skip_serializing_if = "Option::is_none")]
12114    pub class_name: Option<String>,
12115    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
12116    #[serde(rename = "class_uid")]
12117    #[serde(skip_serializing_if = "Option::is_none")]
12118    pub class_uid: Option<i64>,
12119    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
12120    #[serde(rename = "cloud")]
12121    #[serde(skip_serializing_if = "Option::is_none")]
12122    pub cloud: Option<Box<Cloud>>,
12123    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
12124    #[serde(rename = "confidence")]
12125    #[serde(skip_serializing_if = "Option::is_none")]
12126    pub confidence: Option<String>,
12127    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
12128    #[serde(rename = "confidence_id")]
12129    #[serde(skip_serializing_if = "Option::is_none")]
12130    pub confidence_id: Option<i64>,
12131    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
12132    #[serde(rename = "confidence_score")]
12133    #[serde(skip_serializing_if = "Option::is_none")]
12134    pub confidence_score: Option<i64>,
12135    #[doc = "Connection Info\n\nThe network connection information.\n\noptional"]
12136    #[serde(rename = "connection_info")]
12137    #[serde(skip_serializing_if = "Option::is_none")]
12138    pub connection_info: Option<Box<NetworkConnectionInfo>>,
12139    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
12140    #[serde(rename = "count")]
12141    #[serde(skip_serializing_if = "Option::is_none")]
12142    pub count: Option<i64>,
12143    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
12144    #[serde(rename = "cumulative_traffic")]
12145    #[serde(skip_serializing_if = "Option::is_none")]
12146    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
12147    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
12148    #[serde(rename = "device")]
12149    #[serde(skip_serializing_if = "Option::is_none")]
12150    pub device: Option<Box<Device>>,
12151    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
12152    #[serde(rename = "disposition")]
12153    #[serde(skip_serializing_if = "Option::is_none")]
12154    pub disposition: Option<String>,
12155    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
12156    #[serde(rename = "disposition_id")]
12157    #[serde(skip_serializing_if = "Option::is_none")]
12158    pub disposition_id: Option<i64>,
12159    #[doc = "Destination Endpoint\n\nThe endpoint that received the activity on the target file.\n\nrecommended"]
12160    #[serde(rename = "dst_endpoint")]
12161    #[serde(skip_serializing_if = "Option::is_none")]
12162    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
12163    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
12164    #[serde(rename = "duration")]
12165    #[serde(skip_serializing_if = "Option::is_none")]
12166    pub duration: Option<i64>,
12167    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
12168    #[serde(rename = "end_time")]
12169    #[serde(skip_serializing_if = "Option::is_none")]
12170    pub end_time: Option<i64>,
12171    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
12172    #[serde(rename = "end_time_dt")]
12173    #[serde(skip_serializing_if = "Option::is_none")]
12174    pub end_time_dt: Option<String>,
12175    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
12176    #[serde(rename = "enrichments")]
12177    #[serde(skip_serializing_if = "Option::is_none")]
12178    pub enrichments: Option<Vec<Enrichment>>,
12179    #[doc = "Expiration Time\n\nThe share expiration time.\n\noptional"]
12180    #[serde(rename = "expiration_time")]
12181    #[serde(skip_serializing_if = "Option::is_none")]
12182    pub expiration_time: Option<i64>,
12183    #[doc = "Expiration Time\n\nThe share expiration time.\n\noptional"]
12184    #[serde(rename = "expiration_time_dt")]
12185    #[serde(skip_serializing_if = "Option::is_none")]
12186    pub expiration_time_dt: Option<String>,
12187    #[doc = "File\n\nThe file that is the target of the activity.\n\nrequired"]
12188    #[serde(rename = "file")]
12189    #[serde(skip_serializing_if = "Option::is_none")]
12190    pub file: Option<Box<File>>,
12191    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
12192    #[serde(rename = "firewall_rule")]
12193    #[serde(skip_serializing_if = "Option::is_none")]
12194    pub firewall_rule: Option<Box<FirewallRule>>,
12195    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
12196    #[serde(rename = "is_alert")]
12197    #[serde(skip_serializing_if = "Option::is_none")]
12198    pub is_alert: Option<bool>,
12199    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
12200    #[serde(rename = "ja4_fingerprint_list")]
12201    #[serde(skip_serializing_if = "Option::is_none")]
12202    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
12203    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
12204    #[serde(rename = "load_balancer")]
12205    #[serde(skip_serializing_if = "Option::is_none")]
12206    pub load_balancer: Option<Box<LoadBalancer>>,
12207    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
12208    #[serde(rename = "malware")]
12209    #[serde(skip_serializing_if = "Option::is_none")]
12210    pub malware: Option<Vec<Malware>>,
12211    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
12212    #[serde(rename = "malware_scan_info")]
12213    #[serde(skip_serializing_if = "Option::is_none")]
12214    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
12215    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
12216    #[serde(rename = "message")]
12217    #[serde(skip_serializing_if = "Option::is_none")]
12218    pub message: Option<String>,
12219    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
12220    #[serde(rename = "metadata")]
12221    #[serde(skip_serializing_if = "Option::is_none")]
12222    pub metadata: Option<Box<Metadata>>,
12223    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
12224    #[serde(rename = "observables")]
12225    #[serde(skip_serializing_if = "Option::is_none")]
12226    pub observables: Option<Vec<Observable>>,
12227    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
12228    #[serde(rename = "observation_point")]
12229    #[serde(skip_serializing_if = "Option::is_none")]
12230    pub observation_point: Option<String>,
12231    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
12232    #[serde(rename = "observation_point_id")]
12233    #[serde(skip_serializing_if = "Option::is_none")]
12234    pub observation_point_id: Option<i64>,
12235    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
12236    #[serde(rename = "osint")]
12237    #[serde(skip_serializing_if = "Option::is_none")]
12238    pub osint: Option<Vec<Osint>>,
12239    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
12240    #[serde(rename = "policy")]
12241    #[serde(skip_serializing_if = "Option::is_none")]
12242    pub policy: Option<Box<Policy>>,
12243    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
12244    #[serde(rename = "proxy")]
12245    #[serde(skip_serializing_if = "Option::is_none")]
12246    pub proxy: Option<Box<NetworkProxy>>,
12247    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
12248    #[serde(rename = "proxy_connection_info")]
12249    #[serde(skip_serializing_if = "Option::is_none")]
12250    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
12251    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
12252    #[serde(rename = "proxy_endpoint")]
12253    #[serde(skip_serializing_if = "Option::is_none")]
12254    pub proxy_endpoint: Option<Box<NetworkProxy>>,
12255    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
12256    #[serde(rename = "proxy_http_request")]
12257    #[serde(skip_serializing_if = "Option::is_none")]
12258    pub proxy_http_request: Option<Box<HttpRequest>>,
12259    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
12260    #[serde(rename = "proxy_http_response")]
12261    #[serde(skip_serializing_if = "Option::is_none")]
12262    pub proxy_http_response: Option<Box<HttpResponse>>,
12263    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
12264    #[serde(rename = "proxy_tls")]
12265    #[serde(skip_serializing_if = "Option::is_none")]
12266    pub proxy_tls: Option<Box<Tls>>,
12267    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
12268    #[serde(rename = "proxy_traffic")]
12269    #[serde(skip_serializing_if = "Option::is_none")]
12270    pub proxy_traffic: Option<Box<NetworkTraffic>>,
12271    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
12272    #[serde(rename = "raw_data")]
12273    #[serde(skip_serializing_if = "Option::is_none")]
12274    pub raw_data: Option<String>,
12275    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
12276    #[serde(rename = "raw_data_hash")]
12277    #[serde(skip_serializing_if = "Option::is_none")]
12278    pub raw_data_hash: Option<Box<Fingerprint>>,
12279    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
12280    #[serde(rename = "raw_data_size")]
12281    #[serde(skip_serializing_if = "Option::is_none")]
12282    pub raw_data_size: Option<i64>,
12283    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
12284    #[serde(rename = "risk_details")]
12285    #[serde(skip_serializing_if = "Option::is_none")]
12286    pub risk_details: Option<String>,
12287    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
12288    #[serde(rename = "risk_level")]
12289    #[serde(skip_serializing_if = "Option::is_none")]
12290    pub risk_level: Option<String>,
12291    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
12292    #[serde(rename = "risk_level_id")]
12293    #[serde(skip_serializing_if = "Option::is_none")]
12294    pub risk_level_id: Option<i64>,
12295    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
12296    #[serde(rename = "risk_score")]
12297    #[serde(skip_serializing_if = "Option::is_none")]
12298    pub risk_score: Option<i64>,
12299    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
12300    #[serde(rename = "severity")]
12301    #[serde(skip_serializing_if = "Option::is_none")]
12302    pub severity: Option<String>,
12303    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
12304    #[serde(rename = "severity_id")]
12305    #[serde(skip_serializing_if = "Option::is_none")]
12306    pub severity_id: Option<i64>,
12307    #[doc = "Source Endpoint\n\nThe endpoint that performed the activity on the target file.\n\nrequired"]
12308    #[serde(rename = "src_endpoint")]
12309    #[serde(skip_serializing_if = "Option::is_none")]
12310    pub src_endpoint: Option<Box<NetworkEndpoint>>,
12311    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
12312    #[serde(rename = "start_time")]
12313    #[serde(skip_serializing_if = "Option::is_none")]
12314    pub start_time: Option<i64>,
12315    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
12316    #[serde(rename = "start_time_dt")]
12317    #[serde(skip_serializing_if = "Option::is_none")]
12318    pub start_time_dt: Option<String>,
12319    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
12320    #[serde(rename = "status")]
12321    #[serde(skip_serializing_if = "Option::is_none")]
12322    pub status: Option<String>,
12323    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
12324    #[serde(rename = "status_code")]
12325    #[serde(skip_serializing_if = "Option::is_none")]
12326    pub status_code: Option<String>,
12327    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
12328    #[serde(rename = "status_detail")]
12329    #[serde(skip_serializing_if = "Option::is_none")]
12330    pub status_detail: Option<String>,
12331    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
12332    #[serde(rename = "status_id")]
12333    #[serde(skip_serializing_if = "Option::is_none")]
12334    pub status_id: Option<i64>,
12335    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
12336    #[serde(rename = "time")]
12337    #[serde(skip_serializing_if = "Option::is_none")]
12338    pub time: Option<i64>,
12339    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
12340    #[serde(rename = "time_dt")]
12341    #[serde(skip_serializing_if = "Option::is_none")]
12342    pub time_dt: Option<String>,
12343    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
12344    #[serde(rename = "timezone_offset")]
12345    #[serde(skip_serializing_if = "Option::is_none")]
12346    pub timezone_offset: Option<i64>,
12347    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
12348    #[serde(rename = "tls")]
12349    #[serde(skip_serializing_if = "Option::is_none")]
12350    pub tls: Option<Box<Tls>>,
12351    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
12352    #[serde(rename = "traffic")]
12353    #[serde(skip_serializing_if = "Option::is_none")]
12354    pub traffic: Option<Box<NetworkTraffic>>,
12355    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
12356    #[serde(rename = "type_name")]
12357    #[serde(skip_serializing_if = "Option::is_none")]
12358    pub type_name: Option<String>,
12359    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
12360    #[serde(rename = "type_uid")]
12361    #[serde(skip_serializing_if = "Option::is_none")]
12362    pub type_uid: Option<i64>,
12363    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
12364    #[serde(rename = "unmapped")]
12365    #[serde(skip_serializing_if = "Option::is_none")]
12366    pub unmapped: Option<serde_json::Value>,
12367}
12368#[doc = "Network Remediation Activity\n\nNetwork Remediation Activity events report on attempts at remediating computer networks. It follows the MITRE countermeasures defined by the D3FEND™ <a target='_blank' href='https://d3fend.mitre.org/'>Matrix</a>. Techniques and Sub-techniques will include Network, such as Network Isolation or Network Traffic Filtering.\n\n[UID:7004] Category: remediation | Name: network_remediation_activity"]
12369#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
12370#[serde(default)]
12371#[non_exhaustive]
12372pub struct NetworkRemediationActivity {
12373    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
12374    #[serde(rename = "action")]
12375    #[serde(skip_serializing_if = "Option::is_none")]
12376    pub action: Option<String>,
12377    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
12378    #[serde(rename = "action_id")]
12379    #[serde(skip_serializing_if = "Option::is_none")]
12380    pub action_id: Option<i64>,
12381    #[doc = "Activity ID\n\nMatches the MITRE D3FEND™ Tactic. Note: the Model and Detect Tactics are not supported as remediations by the OCSF Remediation event class.\n\nrequired"]
12382    #[serde(rename = "activity_id")]
12383    #[serde(skip_serializing_if = "Option::is_none")]
12384    pub activity_id: Option<i64>,
12385    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
12386    #[serde(rename = "activity_name")]
12387    #[serde(skip_serializing_if = "Option::is_none")]
12388    pub activity_name: Option<String>,
12389    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
12390    #[serde(rename = "actor")]
12391    #[serde(skip_serializing_if = "Option::is_none")]
12392    pub actor: Option<Box<Actor>>,
12393    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
12394    #[serde(rename = "api")]
12395    #[serde(skip_serializing_if = "Option::is_none")]
12396    pub api: Option<Box<Api>>,
12397    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
12398    #[serde(rename = "attacks")]
12399    #[serde(skip_serializing_if = "Option::is_none")]
12400    pub attacks: Option<Vec<Attack>>,
12401    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
12402    #[serde(rename = "authorizations")]
12403    #[serde(skip_serializing_if = "Option::is_none")]
12404    pub authorizations: Option<Vec<Authorization>>,
12405    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Remediation</code>.\n\noptional"]
12406    #[serde(rename = "category_name")]
12407    #[serde(skip_serializing_if = "Option::is_none")]
12408    pub category_name: Option<String>,
12409    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
12410    #[serde(rename = "category_uid")]
12411    #[serde(skip_serializing_if = "Option::is_none")]
12412    pub category_uid: Option<i64>,
12413    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Network Remediation Activity</code>.\n\noptional"]
12414    #[serde(rename = "class_name")]
12415    #[serde(skip_serializing_if = "Option::is_none")]
12416    pub class_name: Option<String>,
12417    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
12418    #[serde(rename = "class_uid")]
12419    #[serde(skip_serializing_if = "Option::is_none")]
12420    pub class_uid: Option<i64>,
12421    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
12422    #[serde(rename = "cloud")]
12423    #[serde(skip_serializing_if = "Option::is_none")]
12424    pub cloud: Option<Box<Cloud>>,
12425    #[doc = "Command UID\n\nThe unique identifier of the remediation command that pertains to this event.\n\nrequired"]
12426    #[serde(rename = "command_uid")]
12427    #[serde(skip_serializing_if = "Option::is_none")]
12428    pub command_uid: Option<String>,
12429    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
12430    #[serde(rename = "confidence")]
12431    #[serde(skip_serializing_if = "Option::is_none")]
12432    pub confidence: Option<String>,
12433    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
12434    #[serde(rename = "confidence_id")]
12435    #[serde(skip_serializing_if = "Option::is_none")]
12436    pub confidence_id: Option<i64>,
12437    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
12438    #[serde(rename = "confidence_score")]
12439    #[serde(skip_serializing_if = "Option::is_none")]
12440    pub confidence_score: Option<i64>,
12441    #[doc = "Connection Info\n\nThe network connection that pertains to the remediation event.\n\nrequired"]
12442    #[serde(rename = "connection_info")]
12443    #[serde(skip_serializing_if = "Option::is_none")]
12444    pub connection_info: Option<Box<NetworkConnectionInfo>>,
12445    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
12446    #[serde(rename = "count")]
12447    #[serde(skip_serializing_if = "Option::is_none")]
12448    pub count: Option<i64>,
12449    #[doc = "Countermeasures\n\nThe MITRE D3FEND™ Matrix Countermeasures associated with a remediation.\n\nrecommended"]
12450    #[serde(rename = "countermeasures")]
12451    #[serde(skip_serializing_if = "Option::is_none")]
12452    pub countermeasures: Option<Vec<D3fend>>,
12453    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
12454    #[serde(rename = "device")]
12455    #[serde(skip_serializing_if = "Option::is_none")]
12456    pub device: Option<Box<Device>>,
12457    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
12458    #[serde(rename = "disposition")]
12459    #[serde(skip_serializing_if = "Option::is_none")]
12460    pub disposition: Option<String>,
12461    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
12462    #[serde(rename = "disposition_id")]
12463    #[serde(skip_serializing_if = "Option::is_none")]
12464    pub disposition_id: Option<i64>,
12465    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
12466    #[serde(rename = "duration")]
12467    #[serde(skip_serializing_if = "Option::is_none")]
12468    pub duration: Option<i64>,
12469    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
12470    #[serde(rename = "end_time")]
12471    #[serde(skip_serializing_if = "Option::is_none")]
12472    pub end_time: Option<i64>,
12473    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
12474    #[serde(rename = "end_time_dt")]
12475    #[serde(skip_serializing_if = "Option::is_none")]
12476    pub end_time_dt: Option<String>,
12477    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
12478    #[serde(rename = "enrichments")]
12479    #[serde(skip_serializing_if = "Option::is_none")]
12480    pub enrichments: Option<Vec<Enrichment>>,
12481    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
12482    #[serde(rename = "firewall_rule")]
12483    #[serde(skip_serializing_if = "Option::is_none")]
12484    pub firewall_rule: Option<Box<FirewallRule>>,
12485    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
12486    #[serde(rename = "is_alert")]
12487    #[serde(skip_serializing_if = "Option::is_none")]
12488    pub is_alert: Option<bool>,
12489    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
12490    #[serde(rename = "malware")]
12491    #[serde(skip_serializing_if = "Option::is_none")]
12492    pub malware: Option<Vec<Malware>>,
12493    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
12494    #[serde(rename = "malware_scan_info")]
12495    #[serde(skip_serializing_if = "Option::is_none")]
12496    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
12497    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
12498    #[serde(rename = "message")]
12499    #[serde(skip_serializing_if = "Option::is_none")]
12500    pub message: Option<String>,
12501    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
12502    #[serde(rename = "metadata")]
12503    #[serde(skip_serializing_if = "Option::is_none")]
12504    pub metadata: Option<Box<Metadata>>,
12505    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
12506    #[serde(rename = "observables")]
12507    #[serde(skip_serializing_if = "Option::is_none")]
12508    pub observables: Option<Vec<Observable>>,
12509    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
12510    #[serde(rename = "osint")]
12511    #[serde(skip_serializing_if = "Option::is_none")]
12512    pub osint: Option<Vec<Osint>>,
12513    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
12514    #[serde(rename = "policy")]
12515    #[serde(skip_serializing_if = "Option::is_none")]
12516    pub policy: Option<Box<Policy>>,
12517    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
12518    #[serde(rename = "raw_data")]
12519    #[serde(skip_serializing_if = "Option::is_none")]
12520    pub raw_data: Option<String>,
12521    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
12522    #[serde(rename = "raw_data_hash")]
12523    #[serde(skip_serializing_if = "Option::is_none")]
12524    pub raw_data_hash: Option<Box<Fingerprint>>,
12525    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
12526    #[serde(rename = "raw_data_size")]
12527    #[serde(skip_serializing_if = "Option::is_none")]
12528    pub raw_data_size: Option<i64>,
12529    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
12530    #[serde(rename = "remediation")]
12531    #[serde(skip_serializing_if = "Option::is_none")]
12532    pub remediation: Option<Box<Remediation>>,
12533    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
12534    #[serde(rename = "risk_details")]
12535    #[serde(skip_serializing_if = "Option::is_none")]
12536    pub risk_details: Option<String>,
12537    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
12538    #[serde(rename = "risk_level")]
12539    #[serde(skip_serializing_if = "Option::is_none")]
12540    pub risk_level: Option<String>,
12541    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
12542    #[serde(rename = "risk_level_id")]
12543    #[serde(skip_serializing_if = "Option::is_none")]
12544    pub risk_level_id: Option<i64>,
12545    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
12546    #[serde(rename = "risk_score")]
12547    #[serde(skip_serializing_if = "Option::is_none")]
12548    pub risk_score: Option<i64>,
12549    #[doc = "Scan\n\nThe remediation scan that pertains to this event.\n\noptional"]
12550    #[serde(rename = "scan")]
12551    #[serde(skip_serializing_if = "Option::is_none")]
12552    pub scan: Option<Box<Scan>>,
12553    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
12554    #[serde(rename = "severity")]
12555    #[serde(skip_serializing_if = "Option::is_none")]
12556    pub severity: Option<String>,
12557    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
12558    #[serde(rename = "severity_id")]
12559    #[serde(skip_serializing_if = "Option::is_none")]
12560    pub severity_id: Option<i64>,
12561    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
12562    #[serde(rename = "start_time")]
12563    #[serde(skip_serializing_if = "Option::is_none")]
12564    pub start_time: Option<i64>,
12565    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
12566    #[serde(rename = "start_time_dt")]
12567    #[serde(skip_serializing_if = "Option::is_none")]
12568    pub start_time_dt: Option<String>,
12569    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
12570    #[serde(rename = "status")]
12571    #[serde(skip_serializing_if = "Option::is_none")]
12572    pub status: Option<String>,
12573    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
12574    #[serde(rename = "status_code")]
12575    #[serde(skip_serializing_if = "Option::is_none")]
12576    pub status_code: Option<String>,
12577    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
12578    #[serde(rename = "status_detail")]
12579    #[serde(skip_serializing_if = "Option::is_none")]
12580    pub status_detail: Option<String>,
12581    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
12582    #[serde(rename = "status_id")]
12583    #[serde(skip_serializing_if = "Option::is_none")]
12584    pub status_id: Option<i64>,
12585    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
12586    #[serde(rename = "time")]
12587    #[serde(skip_serializing_if = "Option::is_none")]
12588    pub time: Option<i64>,
12589    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
12590    #[serde(rename = "time_dt")]
12591    #[serde(skip_serializing_if = "Option::is_none")]
12592    pub time_dt: Option<String>,
12593    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
12594    #[serde(rename = "timezone_offset")]
12595    #[serde(skip_serializing_if = "Option::is_none")]
12596    pub timezone_offset: Option<i64>,
12597    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
12598    #[serde(rename = "type_name")]
12599    #[serde(skip_serializing_if = "Option::is_none")]
12600    pub type_name: Option<String>,
12601    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
12602    #[serde(rename = "type_uid")]
12603    #[serde(skip_serializing_if = "Option::is_none")]
12604    pub type_uid: Option<i64>,
12605    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
12606    #[serde(rename = "unmapped")]
12607    #[serde(skip_serializing_if = "Option::is_none")]
12608    pub unmapped: Option<serde_json::Value>,
12609}
12610#[doc = "Networks Query\n\nNetworks Query events report information about network adapters.\n\n[UID:5013] Category: discovery | Name: networks_query"]
12611#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
12612#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
12613#[serde(default)]
12614#[non_exhaustive]
12615pub struct NetworksQuery {
12616    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
12617    #[serde(rename = "action")]
12618    #[serde(skip_serializing_if = "Option::is_none")]
12619    pub action: Option<String>,
12620    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
12621    #[serde(rename = "action_id")]
12622    #[serde(skip_serializing_if = "Option::is_none")]
12623    pub action_id: Option<i64>,
12624    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
12625    #[serde(rename = "activity_id")]
12626    #[serde(skip_serializing_if = "Option::is_none")]
12627    pub activity_id: Option<i64>,
12628    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
12629    #[serde(rename = "activity_name")]
12630    #[serde(skip_serializing_if = "Option::is_none")]
12631    pub activity_name: Option<String>,
12632    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
12633    #[serde(rename = "actor")]
12634    #[serde(skip_serializing_if = "Option::is_none")]
12635    pub actor: Option<Box<Actor>>,
12636    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
12637    #[serde(rename = "api")]
12638    #[serde(skip_serializing_if = "Option::is_none")]
12639    pub api: Option<Box<Api>>,
12640    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
12641    #[serde(rename = "attacks")]
12642    #[serde(skip_serializing_if = "Option::is_none")]
12643    pub attacks: Option<Vec<Attack>>,
12644    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
12645    #[serde(rename = "authorizations")]
12646    #[serde(skip_serializing_if = "Option::is_none")]
12647    pub authorizations: Option<Vec<Authorization>>,
12648    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
12649    #[serde(rename = "category_name")]
12650    #[serde(skip_serializing_if = "Option::is_none")]
12651    pub category_name: Option<String>,
12652    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
12653    #[serde(rename = "category_uid")]
12654    #[serde(skip_serializing_if = "Option::is_none")]
12655    pub category_uid: Option<i64>,
12656    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Networks Query</code>.\n\noptional"]
12657    #[serde(rename = "class_name")]
12658    #[serde(skip_serializing_if = "Option::is_none")]
12659    pub class_name: Option<String>,
12660    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
12661    #[serde(rename = "class_uid")]
12662    #[serde(skip_serializing_if = "Option::is_none")]
12663    pub class_uid: Option<i64>,
12664    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
12665    #[serde(rename = "cloud")]
12666    #[serde(skip_serializing_if = "Option::is_none")]
12667    pub cloud: Option<Box<Cloud>>,
12668    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
12669    #[serde(rename = "confidence")]
12670    #[serde(skip_serializing_if = "Option::is_none")]
12671    pub confidence: Option<String>,
12672    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
12673    #[serde(rename = "confidence_id")]
12674    #[serde(skip_serializing_if = "Option::is_none")]
12675    pub confidence_id: Option<i64>,
12676    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
12677    #[serde(rename = "confidence_score")]
12678    #[serde(skip_serializing_if = "Option::is_none")]
12679    pub confidence_score: Option<i64>,
12680    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
12681    #[serde(rename = "count")]
12682    #[serde(skip_serializing_if = "Option::is_none")]
12683    pub count: Option<i64>,
12684    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
12685    #[serde(rename = "device")]
12686    #[serde(skip_serializing_if = "Option::is_none")]
12687    pub device: Option<Box<Device>>,
12688    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
12689    #[serde(rename = "disposition")]
12690    #[serde(skip_serializing_if = "Option::is_none")]
12691    pub disposition: Option<String>,
12692    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
12693    #[serde(rename = "disposition_id")]
12694    #[serde(skip_serializing_if = "Option::is_none")]
12695    pub disposition_id: Option<i64>,
12696    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
12697    #[serde(rename = "duration")]
12698    #[serde(skip_serializing_if = "Option::is_none")]
12699    pub duration: Option<i64>,
12700    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
12701    #[serde(rename = "end_time")]
12702    #[serde(skip_serializing_if = "Option::is_none")]
12703    pub end_time: Option<i64>,
12704    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
12705    #[serde(rename = "end_time_dt")]
12706    #[serde(skip_serializing_if = "Option::is_none")]
12707    pub end_time_dt: Option<String>,
12708    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
12709    #[serde(rename = "enrichments")]
12710    #[serde(skip_serializing_if = "Option::is_none")]
12711    pub enrichments: Option<Vec<Enrichment>>,
12712    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
12713    #[serde(rename = "firewall_rule")]
12714    #[serde(skip_serializing_if = "Option::is_none")]
12715    pub firewall_rule: Option<Box<FirewallRule>>,
12716    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
12717    #[serde(rename = "is_alert")]
12718    #[serde(skip_serializing_if = "Option::is_none")]
12719    pub is_alert: Option<bool>,
12720    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
12721    #[serde(rename = "malware")]
12722    #[serde(skip_serializing_if = "Option::is_none")]
12723    pub malware: Option<Vec<Malware>>,
12724    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
12725    #[serde(rename = "malware_scan_info")]
12726    #[serde(skip_serializing_if = "Option::is_none")]
12727    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
12728    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
12729    #[serde(rename = "message")]
12730    #[serde(skip_serializing_if = "Option::is_none")]
12731    pub message: Option<String>,
12732    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
12733    #[serde(rename = "metadata")]
12734    #[serde(skip_serializing_if = "Option::is_none")]
12735    pub metadata: Option<Box<Metadata>>,
12736    #[doc = "Network Interfaces\n\nThe physical or virtual network interfaces that are associated with the device, one for each unique MAC address/IP address/hostname/name combination.<p><b>Note:</b> The first element of the array is the network information that pertains to the event.</p>\n\nrequired"]
12737    #[serde(rename = "network_interfaces")]
12738    #[serde(skip_serializing_if = "Option::is_none")]
12739    pub network_interfaces: Option<Vec<NetworkInterface>>,
12740    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
12741    #[serde(rename = "observables")]
12742    #[serde(skip_serializing_if = "Option::is_none")]
12743    pub observables: Option<Vec<Observable>>,
12744    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
12745    #[serde(rename = "osint")]
12746    #[serde(skip_serializing_if = "Option::is_none")]
12747    pub osint: Option<Vec<Osint>>,
12748    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
12749    #[serde(rename = "policy")]
12750    #[serde(skip_serializing_if = "Option::is_none")]
12751    pub policy: Option<Box<Policy>>,
12752    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
12753    #[serde(rename = "query_info")]
12754    #[serde(skip_serializing_if = "Option::is_none")]
12755    pub query_info: Option<Box<QueryInfo>>,
12756    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
12757    #[serde(rename = "query_result")]
12758    #[serde(skip_serializing_if = "Option::is_none")]
12759    pub query_result: Option<String>,
12760    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
12761    #[serde(rename = "query_result_id")]
12762    #[serde(skip_serializing_if = "Option::is_none")]
12763    pub query_result_id: Option<i64>,
12764    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
12765    #[serde(rename = "raw_data")]
12766    #[serde(skip_serializing_if = "Option::is_none")]
12767    pub raw_data: Option<String>,
12768    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
12769    #[serde(rename = "raw_data_hash")]
12770    #[serde(skip_serializing_if = "Option::is_none")]
12771    pub raw_data_hash: Option<Box<Fingerprint>>,
12772    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
12773    #[serde(rename = "raw_data_size")]
12774    #[serde(skip_serializing_if = "Option::is_none")]
12775    pub raw_data_size: Option<i64>,
12776    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
12777    #[serde(rename = "risk_details")]
12778    #[serde(skip_serializing_if = "Option::is_none")]
12779    pub risk_details: Option<String>,
12780    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
12781    #[serde(rename = "risk_level")]
12782    #[serde(skip_serializing_if = "Option::is_none")]
12783    pub risk_level: Option<String>,
12784    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
12785    #[serde(rename = "risk_level_id")]
12786    #[serde(skip_serializing_if = "Option::is_none")]
12787    pub risk_level_id: Option<i64>,
12788    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
12789    #[serde(rename = "risk_score")]
12790    #[serde(skip_serializing_if = "Option::is_none")]
12791    pub risk_score: Option<i64>,
12792    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
12793    #[serde(rename = "severity")]
12794    #[serde(skip_serializing_if = "Option::is_none")]
12795    pub severity: Option<String>,
12796    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
12797    #[serde(rename = "severity_id")]
12798    #[serde(skip_serializing_if = "Option::is_none")]
12799    pub severity_id: Option<i64>,
12800    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
12801    #[serde(rename = "start_time")]
12802    #[serde(skip_serializing_if = "Option::is_none")]
12803    pub start_time: Option<i64>,
12804    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
12805    #[serde(rename = "start_time_dt")]
12806    #[serde(skip_serializing_if = "Option::is_none")]
12807    pub start_time_dt: Option<String>,
12808    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
12809    #[serde(rename = "status")]
12810    #[serde(skip_serializing_if = "Option::is_none")]
12811    pub status: Option<String>,
12812    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
12813    #[serde(rename = "status_code")]
12814    #[serde(skip_serializing_if = "Option::is_none")]
12815    pub status_code: Option<String>,
12816    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
12817    #[serde(rename = "status_detail")]
12818    #[serde(skip_serializing_if = "Option::is_none")]
12819    pub status_detail: Option<String>,
12820    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
12821    #[serde(rename = "status_id")]
12822    #[serde(skip_serializing_if = "Option::is_none")]
12823    pub status_id: Option<i64>,
12824    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
12825    #[serde(rename = "time")]
12826    #[serde(skip_serializing_if = "Option::is_none")]
12827    pub time: Option<i64>,
12828    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
12829    #[serde(rename = "time_dt")]
12830    #[serde(skip_serializing_if = "Option::is_none")]
12831    pub time_dt: Option<String>,
12832    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
12833    #[serde(rename = "timezone_offset")]
12834    #[serde(skip_serializing_if = "Option::is_none")]
12835    pub timezone_offset: Option<i64>,
12836    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
12837    #[serde(rename = "type_name")]
12838    #[serde(skip_serializing_if = "Option::is_none")]
12839    pub type_name: Option<String>,
12840    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
12841    #[serde(rename = "type_uid")]
12842    #[serde(skip_serializing_if = "Option::is_none")]
12843    pub type_uid: Option<i64>,
12844    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
12845    #[serde(rename = "unmapped")]
12846    #[serde(skip_serializing_if = "Option::is_none")]
12847    pub unmapped: Option<serde_json::Value>,
12848}
12849#[doc = "NTP Activity\n\nThe Network Time Protocol (NTP) Activity events report instances of remote clients synchronizing their clocks with an NTP server, as observed on the network.\n\n[UID:4013] Category: network | Name: ntp_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
12850#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
12851#[serde(default)]
12852#[non_exhaustive]
12853pub struct NtpActivity {
12854    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
12855    #[serde(rename = "action")]
12856    #[serde(skip_serializing_if = "Option::is_none")]
12857    pub action: Option<String>,
12858    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
12859    #[serde(rename = "action_id")]
12860    #[serde(skip_serializing_if = "Option::is_none")]
12861    pub action_id: Option<i64>,
12862    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
12863    #[serde(rename = "activity_id")]
12864    #[serde(skip_serializing_if = "Option::is_none")]
12865    pub activity_id: Option<i64>,
12866    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
12867    #[serde(rename = "activity_name")]
12868    #[serde(skip_serializing_if = "Option::is_none")]
12869    pub activity_name: Option<String>,
12870    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
12871    #[serde(rename = "actor")]
12872    #[serde(skip_serializing_if = "Option::is_none")]
12873    pub actor: Option<Box<Actor>>,
12874    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
12875    #[serde(rename = "api")]
12876    #[serde(skip_serializing_if = "Option::is_none")]
12877    pub api: Option<Box<Api>>,
12878    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
12879    #[serde(rename = "app_name")]
12880    #[serde(skip_serializing_if = "Option::is_none")]
12881    pub app_name: Option<String>,
12882    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
12883    #[serde(rename = "attacks")]
12884    #[serde(skip_serializing_if = "Option::is_none")]
12885    pub attacks: Option<Vec<Attack>>,
12886    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
12887    #[serde(rename = "authorizations")]
12888    #[serde(skip_serializing_if = "Option::is_none")]
12889    pub authorizations: Option<Vec<Authorization>>,
12890    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
12891    #[serde(rename = "category_name")]
12892    #[serde(skip_serializing_if = "Option::is_none")]
12893    pub category_name: Option<String>,
12894    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
12895    #[serde(rename = "category_uid")]
12896    #[serde(skip_serializing_if = "Option::is_none")]
12897    pub category_uid: Option<i64>,
12898    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>NTP Activity</code>.\n\noptional"]
12899    #[serde(rename = "class_name")]
12900    #[serde(skip_serializing_if = "Option::is_none")]
12901    pub class_name: Option<String>,
12902    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
12903    #[serde(rename = "class_uid")]
12904    #[serde(skip_serializing_if = "Option::is_none")]
12905    pub class_uid: Option<i64>,
12906    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
12907    #[serde(rename = "cloud")]
12908    #[serde(skip_serializing_if = "Option::is_none")]
12909    pub cloud: Option<Box<Cloud>>,
12910    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
12911    #[serde(rename = "confidence")]
12912    #[serde(skip_serializing_if = "Option::is_none")]
12913    pub confidence: Option<String>,
12914    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
12915    #[serde(rename = "confidence_id")]
12916    #[serde(skip_serializing_if = "Option::is_none")]
12917    pub confidence_id: Option<i64>,
12918    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
12919    #[serde(rename = "confidence_score")]
12920    #[serde(skip_serializing_if = "Option::is_none")]
12921    pub confidence_score: Option<i64>,
12922    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
12923    #[serde(rename = "connection_info")]
12924    #[serde(skip_serializing_if = "Option::is_none")]
12925    pub connection_info: Option<Box<NetworkConnectionInfo>>,
12926    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
12927    #[serde(rename = "count")]
12928    #[serde(skip_serializing_if = "Option::is_none")]
12929    pub count: Option<i64>,
12930    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
12931    #[serde(rename = "cumulative_traffic")]
12932    #[serde(skip_serializing_if = "Option::is_none")]
12933    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
12934    #[doc = "Root Delay\n\nThe total round-trip delay to the reference clock in milliseconds.\n\nrecommended"]
12935    #[serde(rename = "delay")]
12936    #[serde(skip_serializing_if = "Option::is_none")]
12937    pub delay: Option<i64>,
12938    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
12939    #[serde(rename = "device")]
12940    #[serde(skip_serializing_if = "Option::is_none")]
12941    pub device: Option<Box<Device>>,
12942    #[doc = "Root Dispersion\n\nThe dispersion in the NTP protocol is the estimated time error or uncertainty relative to the reference clock in milliseconds.\n\nrecommended"]
12943    #[serde(rename = "dispersion")]
12944    #[serde(skip_serializing_if = "Option::is_none")]
12945    pub dispersion: Option<i64>,
12946    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
12947    #[serde(rename = "disposition")]
12948    #[serde(skip_serializing_if = "Option::is_none")]
12949    pub disposition: Option<String>,
12950    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
12951    #[serde(rename = "disposition_id")]
12952    #[serde(skip_serializing_if = "Option::is_none")]
12953    pub disposition_id: Option<i64>,
12954    #[doc = "Destination Endpoint\n\nThe responder (server) in a network connection.\n\nrecommended"]
12955    #[serde(rename = "dst_endpoint")]
12956    #[serde(skip_serializing_if = "Option::is_none")]
12957    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
12958    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
12959    #[serde(rename = "duration")]
12960    #[serde(skip_serializing_if = "Option::is_none")]
12961    pub duration: Option<i64>,
12962    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
12963    #[serde(rename = "end_time")]
12964    #[serde(skip_serializing_if = "Option::is_none")]
12965    pub end_time: Option<i64>,
12966    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
12967    #[serde(rename = "end_time_dt")]
12968    #[serde(skip_serializing_if = "Option::is_none")]
12969    pub end_time_dt: Option<String>,
12970    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
12971    #[serde(rename = "enrichments")]
12972    #[serde(skip_serializing_if = "Option::is_none")]
12973    pub enrichments: Option<Vec<Enrichment>>,
12974    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
12975    #[serde(rename = "firewall_rule")]
12976    #[serde(skip_serializing_if = "Option::is_none")]
12977    pub firewall_rule: Option<Box<FirewallRule>>,
12978    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
12979    #[serde(rename = "is_alert")]
12980    #[serde(skip_serializing_if = "Option::is_none")]
12981    pub is_alert: Option<bool>,
12982    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
12983    #[serde(rename = "ja4_fingerprint_list")]
12984    #[serde(skip_serializing_if = "Option::is_none")]
12985    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
12986    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
12987    #[serde(rename = "load_balancer")]
12988    #[serde(skip_serializing_if = "Option::is_none")]
12989    pub load_balancer: Option<Box<LoadBalancer>>,
12990    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
12991    #[serde(rename = "malware")]
12992    #[serde(skip_serializing_if = "Option::is_none")]
12993    pub malware: Option<Vec<Malware>>,
12994    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
12995    #[serde(rename = "malware_scan_info")]
12996    #[serde(skip_serializing_if = "Option::is_none")]
12997    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
12998    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
12999    #[serde(rename = "message")]
13000    #[serde(skip_serializing_if = "Option::is_none")]
13001    pub message: Option<String>,
13002    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
13003    #[serde(rename = "metadata")]
13004    #[serde(skip_serializing_if = "Option::is_none")]
13005    pub metadata: Option<Box<Metadata>>,
13006    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
13007    #[serde(rename = "observables")]
13008    #[serde(skip_serializing_if = "Option::is_none")]
13009    pub observables: Option<Vec<Observable>>,
13010    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
13011    #[serde(rename = "observation_point")]
13012    #[serde(skip_serializing_if = "Option::is_none")]
13013    pub observation_point: Option<String>,
13014    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
13015    #[serde(rename = "observation_point_id")]
13016    #[serde(skip_serializing_if = "Option::is_none")]
13017    pub observation_point_id: Option<i64>,
13018    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
13019    #[serde(rename = "osint")]
13020    #[serde(skip_serializing_if = "Option::is_none")]
13021    pub osint: Option<Vec<Osint>>,
13022    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
13023    #[serde(rename = "policy")]
13024    #[serde(skip_serializing_if = "Option::is_none")]
13025    pub policy: Option<Box<Policy>>,
13026    #[doc = "Precision\n\nThe NTP precision quantifies a clock's accuracy and stability in log2 seconds, as defined in RFC-5905.\n\nrecommended"]
13027    #[serde(rename = "precision")]
13028    #[serde(skip_serializing_if = "Option::is_none")]
13029    pub precision: Option<i64>,
13030    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
13031    #[serde(rename = "proxy")]
13032    #[serde(skip_serializing_if = "Option::is_none")]
13033    pub proxy: Option<Box<NetworkProxy>>,
13034    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
13035    #[serde(rename = "proxy_connection_info")]
13036    #[serde(skip_serializing_if = "Option::is_none")]
13037    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
13038    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
13039    #[serde(rename = "proxy_endpoint")]
13040    #[serde(skip_serializing_if = "Option::is_none")]
13041    pub proxy_endpoint: Option<Box<NetworkProxy>>,
13042    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
13043    #[serde(rename = "proxy_http_request")]
13044    #[serde(skip_serializing_if = "Option::is_none")]
13045    pub proxy_http_request: Option<Box<HttpRequest>>,
13046    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
13047    #[serde(rename = "proxy_http_response")]
13048    #[serde(skip_serializing_if = "Option::is_none")]
13049    pub proxy_http_response: Option<Box<HttpResponse>>,
13050    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
13051    #[serde(rename = "proxy_tls")]
13052    #[serde(skip_serializing_if = "Option::is_none")]
13053    pub proxy_tls: Option<Box<Tls>>,
13054    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
13055    #[serde(rename = "proxy_traffic")]
13056    #[serde(skip_serializing_if = "Option::is_none")]
13057    pub proxy_traffic: Option<Box<NetworkTraffic>>,
13058    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
13059    #[serde(rename = "raw_data")]
13060    #[serde(skip_serializing_if = "Option::is_none")]
13061    pub raw_data: Option<String>,
13062    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
13063    #[serde(rename = "raw_data_hash")]
13064    #[serde(skip_serializing_if = "Option::is_none")]
13065    pub raw_data_hash: Option<Box<Fingerprint>>,
13066    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
13067    #[serde(rename = "raw_data_size")]
13068    #[serde(skip_serializing_if = "Option::is_none")]
13069    pub raw_data_size: Option<i64>,
13070    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
13071    #[serde(rename = "risk_details")]
13072    #[serde(skip_serializing_if = "Option::is_none")]
13073    pub risk_details: Option<String>,
13074    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
13075    #[serde(rename = "risk_level")]
13076    #[serde(skip_serializing_if = "Option::is_none")]
13077    pub risk_level: Option<String>,
13078    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
13079    #[serde(rename = "risk_level_id")]
13080    #[serde(skip_serializing_if = "Option::is_none")]
13081    pub risk_level_id: Option<i64>,
13082    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
13083    #[serde(rename = "risk_score")]
13084    #[serde(skip_serializing_if = "Option::is_none")]
13085    pub risk_score: Option<i64>,
13086    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
13087    #[serde(rename = "severity")]
13088    #[serde(skip_serializing_if = "Option::is_none")]
13089    pub severity: Option<String>,
13090    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
13091    #[serde(rename = "severity_id")]
13092    #[serde(skip_serializing_if = "Option::is_none")]
13093    pub severity_id: Option<i64>,
13094    #[doc = "Source Endpoint\n\nThe initiator (client) of the network connection.\n\nrecommended"]
13095    #[serde(rename = "src_endpoint")]
13096    #[serde(skip_serializing_if = "Option::is_none")]
13097    pub src_endpoint: Option<Box<NetworkEndpoint>>,
13098    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
13099    #[serde(rename = "start_time")]
13100    #[serde(skip_serializing_if = "Option::is_none")]
13101    pub start_time: Option<i64>,
13102    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
13103    #[serde(rename = "start_time_dt")]
13104    #[serde(skip_serializing_if = "Option::is_none")]
13105    pub start_time_dt: Option<String>,
13106    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
13107    #[serde(rename = "status")]
13108    #[serde(skip_serializing_if = "Option::is_none")]
13109    pub status: Option<String>,
13110    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
13111    #[serde(rename = "status_code")]
13112    #[serde(skip_serializing_if = "Option::is_none")]
13113    pub status_code: Option<String>,
13114    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
13115    #[serde(rename = "status_detail")]
13116    #[serde(skip_serializing_if = "Option::is_none")]
13117    pub status_detail: Option<String>,
13118    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
13119    #[serde(rename = "status_id")]
13120    #[serde(skip_serializing_if = "Option::is_none")]
13121    pub status_id: Option<i64>,
13122    #[doc = "Stratum\n\nThe stratum level of the NTP server's time source, normalized to the caption of the stratum_id value.\n\nrecommended"]
13123    #[serde(rename = "stratum")]
13124    #[serde(skip_serializing_if = "Option::is_none")]
13125    pub stratum: Option<String>,
13126    #[doc = "Stratum ID\n\nThe normalized identifier of the stratum level, as defined in <a target='_blank' href='https://www.rfc-editor.org/rfc/rfc5905.html'>RFC-5905</a>.\n\nrecommended"]
13127    #[serde(rename = "stratum_id")]
13128    #[serde(skip_serializing_if = "Option::is_none")]
13129    pub stratum_id: Option<i64>,
13130    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
13131    #[serde(rename = "time")]
13132    #[serde(skip_serializing_if = "Option::is_none")]
13133    pub time: Option<i64>,
13134    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
13135    #[serde(rename = "time_dt")]
13136    #[serde(skip_serializing_if = "Option::is_none")]
13137    pub time_dt: Option<String>,
13138    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
13139    #[serde(rename = "timezone_offset")]
13140    #[serde(skip_serializing_if = "Option::is_none")]
13141    pub timezone_offset: Option<i64>,
13142    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
13143    #[serde(rename = "tls")]
13144    #[serde(skip_serializing_if = "Option::is_none")]
13145    pub tls: Option<Box<Tls>>,
13146    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
13147    #[serde(rename = "traffic")]
13148    #[serde(skip_serializing_if = "Option::is_none")]
13149    pub traffic: Option<Box<NetworkTraffic>>,
13150    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
13151    #[serde(rename = "type_name")]
13152    #[serde(skip_serializing_if = "Option::is_none")]
13153    pub type_name: Option<String>,
13154    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
13155    #[serde(rename = "type_uid")]
13156    #[serde(skip_serializing_if = "Option::is_none")]
13157    pub type_uid: Option<i64>,
13158    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
13159    #[serde(rename = "unmapped")]
13160    #[serde(skip_serializing_if = "Option::is_none")]
13161    pub unmapped: Option<serde_json::Value>,
13162    #[doc = "Version\n\nThe version number of the NTP protocol.\n\nrequired"]
13163    #[serde(rename = "version")]
13164    #[serde(skip_serializing_if = "Option::is_none")]
13165    pub version: Option<String>,
13166}
13167#[doc = "OSINT Inventory Info\n\nOSINT Inventory Info events report open source intelligence or threat intelligence inventory data that is either logged or proactively collected. For example, when collecting OSINT information from Threat Intelligence Platforms (TIPs) or Extended Detection and Response (XDR) platforms, or collecting data from OSINT or other generic threat intelligence and enrichment feeds such as APIs and datastores.\n\n[UID:5021] Category: discovery | Name: osint_inventory_info"]
13168#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
13169#[serde(default)]
13170#[non_exhaustive]
13171pub struct OsintInventoryInfo {
13172    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
13173    #[serde(rename = "action")]
13174    #[serde(skip_serializing_if = "Option::is_none")]
13175    pub action: Option<String>,
13176    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
13177    #[serde(rename = "action_id")]
13178    #[serde(skip_serializing_if = "Option::is_none")]
13179    pub action_id: Option<i64>,
13180    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
13181    #[serde(rename = "activity_id")]
13182    #[serde(skip_serializing_if = "Option::is_none")]
13183    pub activity_id: Option<i64>,
13184    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
13185    #[serde(rename = "activity_name")]
13186    #[serde(skip_serializing_if = "Option::is_none")]
13187    pub activity_name: Option<String>,
13188    #[doc = "Actor\n\nThe actor describes the process that was the source of the inventory activity. In the case of OSINT inventory data, that could be a particular process or script that is run to scrape the OSINT or threat intelligence data. For example, it could be a Python process that runs to pull data from a MISP or Shodan API.\n\noptional"]
13189    #[serde(rename = "actor")]
13190    #[serde(skip_serializing_if = "Option::is_none")]
13191    pub actor: Option<Box<Actor>>,
13192    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
13193    #[serde(rename = "api")]
13194    #[serde(skip_serializing_if = "Option::is_none")]
13195    pub api: Option<Box<Api>>,
13196    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
13197    #[serde(rename = "attacks")]
13198    #[serde(skip_serializing_if = "Option::is_none")]
13199    pub attacks: Option<Vec<Attack>>,
13200    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
13201    #[serde(rename = "authorizations")]
13202    #[serde(skip_serializing_if = "Option::is_none")]
13203    pub authorizations: Option<Vec<Authorization>>,
13204    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
13205    #[serde(rename = "category_name")]
13206    #[serde(skip_serializing_if = "Option::is_none")]
13207    pub category_name: Option<String>,
13208    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
13209    #[serde(rename = "category_uid")]
13210    #[serde(skip_serializing_if = "Option::is_none")]
13211    pub category_uid: Option<i64>,
13212    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>OSINT Inventory Info</code>.\n\noptional"]
13213    #[serde(rename = "class_name")]
13214    #[serde(skip_serializing_if = "Option::is_none")]
13215    pub class_name: Option<String>,
13216    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
13217    #[serde(rename = "class_uid")]
13218    #[serde(skip_serializing_if = "Option::is_none")]
13219    pub class_uid: Option<i64>,
13220    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
13221    #[serde(rename = "cloud")]
13222    #[serde(skip_serializing_if = "Option::is_none")]
13223    pub cloud: Option<Box<Cloud>>,
13224    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
13225    #[serde(rename = "confidence")]
13226    #[serde(skip_serializing_if = "Option::is_none")]
13227    pub confidence: Option<String>,
13228    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
13229    #[serde(rename = "confidence_id")]
13230    #[serde(skip_serializing_if = "Option::is_none")]
13231    pub confidence_id: Option<i64>,
13232    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
13233    #[serde(rename = "confidence_score")]
13234    #[serde(skip_serializing_if = "Option::is_none")]
13235    pub confidence_score: Option<i64>,
13236    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
13237    #[serde(rename = "count")]
13238    #[serde(skip_serializing_if = "Option::is_none")]
13239    pub count: Option<i64>,
13240    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
13241    #[serde(rename = "device")]
13242    #[serde(skip_serializing_if = "Option::is_none")]
13243    pub device: Option<Box<Device>>,
13244    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
13245    #[serde(rename = "disposition")]
13246    #[serde(skip_serializing_if = "Option::is_none")]
13247    pub disposition: Option<String>,
13248    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
13249    #[serde(rename = "disposition_id")]
13250    #[serde(skip_serializing_if = "Option::is_none")]
13251    pub disposition_id: Option<i64>,
13252    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
13253    #[serde(rename = "duration")]
13254    #[serde(skip_serializing_if = "Option::is_none")]
13255    pub duration: Option<i64>,
13256    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
13257    #[serde(rename = "end_time")]
13258    #[serde(skip_serializing_if = "Option::is_none")]
13259    pub end_time: Option<i64>,
13260    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
13261    #[serde(rename = "end_time_dt")]
13262    #[serde(skip_serializing_if = "Option::is_none")]
13263    pub end_time_dt: Option<String>,
13264    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
13265    #[serde(rename = "enrichments")]
13266    #[serde(skip_serializing_if = "Option::is_none")]
13267    pub enrichments: Option<Vec<Enrichment>>,
13268    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
13269    #[serde(rename = "firewall_rule")]
13270    #[serde(skip_serializing_if = "Option::is_none")]
13271    pub firewall_rule: Option<Box<FirewallRule>>,
13272    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
13273    #[serde(rename = "is_alert")]
13274    #[serde(skip_serializing_if = "Option::is_none")]
13275    pub is_alert: Option<bool>,
13276    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
13277    #[serde(rename = "malware")]
13278    #[serde(skip_serializing_if = "Option::is_none")]
13279    pub malware: Option<Vec<Malware>>,
13280    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
13281    #[serde(rename = "malware_scan_info")]
13282    #[serde(skip_serializing_if = "Option::is_none")]
13283    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
13284    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
13285    #[serde(rename = "message")]
13286    #[serde(skip_serializing_if = "Option::is_none")]
13287    pub message: Option<String>,
13288    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
13289    #[serde(rename = "metadata")]
13290    #[serde(skip_serializing_if = "Option::is_none")]
13291    pub metadata: Option<Box<Metadata>>,
13292    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
13293    #[serde(rename = "observables")]
13294    #[serde(skip_serializing_if = "Option::is_none")]
13295    pub observables: Option<Vec<Observable>>,
13296    #[doc = "OSINT\n\nThe OSINT that is being discovered by an inventory process.\n\nrequired"]
13297    #[serde(rename = "osint")]
13298    #[serde(skip_serializing_if = "Option::is_none")]
13299    pub osint: Option<Vec<Osint>>,
13300    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
13301    #[serde(rename = "policy")]
13302    #[serde(skip_serializing_if = "Option::is_none")]
13303    pub policy: Option<Box<Policy>>,
13304    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
13305    #[serde(rename = "raw_data")]
13306    #[serde(skip_serializing_if = "Option::is_none")]
13307    pub raw_data: Option<String>,
13308    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
13309    #[serde(rename = "raw_data_hash")]
13310    #[serde(skip_serializing_if = "Option::is_none")]
13311    pub raw_data_hash: Option<Box<Fingerprint>>,
13312    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
13313    #[serde(rename = "raw_data_size")]
13314    #[serde(skip_serializing_if = "Option::is_none")]
13315    pub raw_data_size: Option<i64>,
13316    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
13317    #[serde(rename = "risk_details")]
13318    #[serde(skip_serializing_if = "Option::is_none")]
13319    pub risk_details: Option<String>,
13320    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
13321    #[serde(rename = "risk_level")]
13322    #[serde(skip_serializing_if = "Option::is_none")]
13323    pub risk_level: Option<String>,
13324    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
13325    #[serde(rename = "risk_level_id")]
13326    #[serde(skip_serializing_if = "Option::is_none")]
13327    pub risk_level_id: Option<i64>,
13328    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
13329    #[serde(rename = "risk_score")]
13330    #[serde(skip_serializing_if = "Option::is_none")]
13331    pub risk_score: Option<i64>,
13332    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
13333    #[serde(rename = "severity")]
13334    #[serde(skip_serializing_if = "Option::is_none")]
13335    pub severity: Option<String>,
13336    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
13337    #[serde(rename = "severity_id")]
13338    #[serde(skip_serializing_if = "Option::is_none")]
13339    pub severity_id: Option<i64>,
13340    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
13341    #[serde(rename = "start_time")]
13342    #[serde(skip_serializing_if = "Option::is_none")]
13343    pub start_time: Option<i64>,
13344    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
13345    #[serde(rename = "start_time_dt")]
13346    #[serde(skip_serializing_if = "Option::is_none")]
13347    pub start_time_dt: Option<String>,
13348    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
13349    #[serde(rename = "status")]
13350    #[serde(skip_serializing_if = "Option::is_none")]
13351    pub status: Option<String>,
13352    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
13353    #[serde(rename = "status_code")]
13354    #[serde(skip_serializing_if = "Option::is_none")]
13355    pub status_code: Option<String>,
13356    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
13357    #[serde(rename = "status_detail")]
13358    #[serde(skip_serializing_if = "Option::is_none")]
13359    pub status_detail: Option<String>,
13360    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
13361    #[serde(rename = "status_id")]
13362    #[serde(skip_serializing_if = "Option::is_none")]
13363    pub status_id: Option<i64>,
13364    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
13365    #[serde(rename = "time")]
13366    #[serde(skip_serializing_if = "Option::is_none")]
13367    pub time: Option<i64>,
13368    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
13369    #[serde(rename = "time_dt")]
13370    #[serde(skip_serializing_if = "Option::is_none")]
13371    pub time_dt: Option<String>,
13372    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
13373    #[serde(rename = "timezone_offset")]
13374    #[serde(skip_serializing_if = "Option::is_none")]
13375    pub timezone_offset: Option<i64>,
13376    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
13377    #[serde(rename = "type_name")]
13378    #[serde(skip_serializing_if = "Option::is_none")]
13379    pub type_name: Option<String>,
13380    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
13381    #[serde(rename = "type_uid")]
13382    #[serde(skip_serializing_if = "Option::is_none")]
13383    pub type_uid: Option<i64>,
13384    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
13385    #[serde(rename = "unmapped")]
13386    #[serde(skip_serializing_if = "Option::is_none")]
13387    pub unmapped: Option<serde_json::Value>,
13388}
13389#[doc = "Operating System Patch State\n\nOperating System Patch State reports the installation of an OS patch to a device and any associated knowledgebase articles.\n\n[UID:5004] Category: discovery | Name: patch_state\n\n**Constraints:**\n* at_least_one: `[device.os.sp_name`,`device.os.sp_ver`,`device.os.version]`\n"]
13390#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
13391#[serde(default)]
13392#[non_exhaustive]
13393pub struct PatchState {
13394    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
13395    #[serde(rename = "action")]
13396    #[serde(skip_serializing_if = "Option::is_none")]
13397    pub action: Option<String>,
13398    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
13399    #[serde(rename = "action_id")]
13400    #[serde(skip_serializing_if = "Option::is_none")]
13401    pub action_id: Option<i64>,
13402    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
13403    #[serde(rename = "activity_id")]
13404    #[serde(skip_serializing_if = "Option::is_none")]
13405    pub activity_id: Option<i64>,
13406    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
13407    #[serde(rename = "activity_name")]
13408    #[serde(skip_serializing_if = "Option::is_none")]
13409    pub activity_name: Option<String>,
13410    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
13411    #[serde(rename = "actor")]
13412    #[serde(skip_serializing_if = "Option::is_none")]
13413    pub actor: Option<Box<Actor>>,
13414    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
13415    #[serde(rename = "api")]
13416    #[serde(skip_serializing_if = "Option::is_none")]
13417    pub api: Option<Box<Api>>,
13418    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
13419    #[serde(rename = "attacks")]
13420    #[serde(skip_serializing_if = "Option::is_none")]
13421    pub attacks: Option<Vec<Attack>>,
13422    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
13423    #[serde(rename = "authorizations")]
13424    #[serde(skip_serializing_if = "Option::is_none")]
13425    pub authorizations: Option<Vec<Authorization>>,
13426    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
13427    #[serde(rename = "category_name")]
13428    #[serde(skip_serializing_if = "Option::is_none")]
13429    pub category_name: Option<String>,
13430    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
13431    #[serde(rename = "category_uid")]
13432    #[serde(skip_serializing_if = "Option::is_none")]
13433    pub category_uid: Option<i64>,
13434    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Operating System Patch State</code>.\n\noptional"]
13435    #[serde(rename = "class_name")]
13436    #[serde(skip_serializing_if = "Option::is_none")]
13437    pub class_name: Option<String>,
13438    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
13439    #[serde(rename = "class_uid")]
13440    #[serde(skip_serializing_if = "Option::is_none")]
13441    pub class_uid: Option<i64>,
13442    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
13443    #[serde(rename = "cloud")]
13444    #[serde(skip_serializing_if = "Option::is_none")]
13445    pub cloud: Option<Box<Cloud>>,
13446    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
13447    #[serde(rename = "confidence")]
13448    #[serde(skip_serializing_if = "Option::is_none")]
13449    pub confidence: Option<String>,
13450    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
13451    #[serde(rename = "confidence_id")]
13452    #[serde(skip_serializing_if = "Option::is_none")]
13453    pub confidence_id: Option<i64>,
13454    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
13455    #[serde(rename = "confidence_score")]
13456    #[serde(skip_serializing_if = "Option::is_none")]
13457    pub confidence_score: Option<i64>,
13458    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
13459    #[serde(rename = "count")]
13460    #[serde(skip_serializing_if = "Option::is_none")]
13461    pub count: Option<i64>,
13462    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
13463    #[serde(rename = "device")]
13464    #[serde(skip_serializing_if = "Option::is_none")]
13465    pub device: Option<Box<Device>>,
13466    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
13467    #[serde(rename = "disposition")]
13468    #[serde(skip_serializing_if = "Option::is_none")]
13469    pub disposition: Option<String>,
13470    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
13471    #[serde(rename = "disposition_id")]
13472    #[serde(skip_serializing_if = "Option::is_none")]
13473    pub disposition_id: Option<i64>,
13474    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
13475    #[serde(rename = "duration")]
13476    #[serde(skip_serializing_if = "Option::is_none")]
13477    pub duration: Option<i64>,
13478    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
13479    #[serde(rename = "end_time")]
13480    #[serde(skip_serializing_if = "Option::is_none")]
13481    pub end_time: Option<i64>,
13482    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
13483    #[serde(rename = "end_time_dt")]
13484    #[serde(skip_serializing_if = "Option::is_none")]
13485    pub end_time_dt: Option<String>,
13486    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
13487    #[serde(rename = "enrichments")]
13488    #[serde(skip_serializing_if = "Option::is_none")]
13489    pub enrichments: Option<Vec<Enrichment>>,
13490    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
13491    #[serde(rename = "firewall_rule")]
13492    #[serde(skip_serializing_if = "Option::is_none")]
13493    pub firewall_rule: Option<Box<FirewallRule>>,
13494    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
13495    #[serde(rename = "is_alert")]
13496    #[serde(skip_serializing_if = "Option::is_none")]
13497    pub is_alert: Option<bool>,
13498    #[doc = "Knowledgebase Articles\n\nA list of KB articles or patches related to an endpoint. A KB Article contains metadata that describes the patch or an update.\n\nrecommended"]
13499    #[serde(rename = "kb_article_list")]
13500    #[serde(skip_serializing_if = "Option::is_none")]
13501    pub kb_article_list: Option<Vec<KbArticle>>,
13502    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
13503    #[serde(rename = "malware")]
13504    #[serde(skip_serializing_if = "Option::is_none")]
13505    pub malware: Option<Vec<Malware>>,
13506    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
13507    #[serde(rename = "malware_scan_info")]
13508    #[serde(skip_serializing_if = "Option::is_none")]
13509    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
13510    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
13511    #[serde(rename = "message")]
13512    #[serde(skip_serializing_if = "Option::is_none")]
13513    pub message: Option<String>,
13514    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
13515    #[serde(rename = "metadata")]
13516    #[serde(skip_serializing_if = "Option::is_none")]
13517    pub metadata: Option<Box<Metadata>>,
13518    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
13519    #[serde(rename = "observables")]
13520    #[serde(skip_serializing_if = "Option::is_none")]
13521    pub observables: Option<Vec<Observable>>,
13522    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
13523    #[serde(rename = "osint")]
13524    #[serde(skip_serializing_if = "Option::is_none")]
13525    pub osint: Option<Vec<Osint>>,
13526    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
13527    #[serde(rename = "policy")]
13528    #[serde(skip_serializing_if = "Option::is_none")]
13529    pub policy: Option<Box<Policy>>,
13530    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
13531    #[serde(rename = "raw_data")]
13532    #[serde(skip_serializing_if = "Option::is_none")]
13533    pub raw_data: Option<String>,
13534    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
13535    #[serde(rename = "raw_data_hash")]
13536    #[serde(skip_serializing_if = "Option::is_none")]
13537    pub raw_data_hash: Option<Box<Fingerprint>>,
13538    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
13539    #[serde(rename = "raw_data_size")]
13540    #[serde(skip_serializing_if = "Option::is_none")]
13541    pub raw_data_size: Option<i64>,
13542    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
13543    #[serde(rename = "risk_details")]
13544    #[serde(skip_serializing_if = "Option::is_none")]
13545    pub risk_details: Option<String>,
13546    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
13547    #[serde(rename = "risk_level")]
13548    #[serde(skip_serializing_if = "Option::is_none")]
13549    pub risk_level: Option<String>,
13550    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
13551    #[serde(rename = "risk_level_id")]
13552    #[serde(skip_serializing_if = "Option::is_none")]
13553    pub risk_level_id: Option<i64>,
13554    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
13555    #[serde(rename = "risk_score")]
13556    #[serde(skip_serializing_if = "Option::is_none")]
13557    pub risk_score: Option<i64>,
13558    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
13559    #[serde(rename = "severity")]
13560    #[serde(skip_serializing_if = "Option::is_none")]
13561    pub severity: Option<String>,
13562    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
13563    #[serde(rename = "severity_id")]
13564    #[serde(skip_serializing_if = "Option::is_none")]
13565    pub severity_id: Option<i64>,
13566    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
13567    #[serde(rename = "start_time")]
13568    #[serde(skip_serializing_if = "Option::is_none")]
13569    pub start_time: Option<i64>,
13570    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
13571    #[serde(rename = "start_time_dt")]
13572    #[serde(skip_serializing_if = "Option::is_none")]
13573    pub start_time_dt: Option<String>,
13574    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
13575    #[serde(rename = "status")]
13576    #[serde(skip_serializing_if = "Option::is_none")]
13577    pub status: Option<String>,
13578    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
13579    #[serde(rename = "status_code")]
13580    #[serde(skip_serializing_if = "Option::is_none")]
13581    pub status_code: Option<String>,
13582    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
13583    #[serde(rename = "status_detail")]
13584    #[serde(skip_serializing_if = "Option::is_none")]
13585    pub status_detail: Option<String>,
13586    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
13587    #[serde(rename = "status_id")]
13588    #[serde(skip_serializing_if = "Option::is_none")]
13589    pub status_id: Option<i64>,
13590    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
13591    #[serde(rename = "time")]
13592    #[serde(skip_serializing_if = "Option::is_none")]
13593    pub time: Option<i64>,
13594    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
13595    #[serde(rename = "time_dt")]
13596    #[serde(skip_serializing_if = "Option::is_none")]
13597    pub time_dt: Option<String>,
13598    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
13599    #[serde(rename = "timezone_offset")]
13600    #[serde(skip_serializing_if = "Option::is_none")]
13601    pub timezone_offset: Option<i64>,
13602    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
13603    #[serde(rename = "type_name")]
13604    #[serde(skip_serializing_if = "Option::is_none")]
13605    pub type_name: Option<String>,
13606    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
13607    #[serde(rename = "type_uid")]
13608    #[serde(skip_serializing_if = "Option::is_none")]
13609    pub type_uid: Option<i64>,
13610    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
13611    #[serde(rename = "unmapped")]
13612    #[serde(skip_serializing_if = "Option::is_none")]
13613    pub unmapped: Option<serde_json::Value>,
13614}
13615#[doc = "Peripheral Activity\n\nPeripheral Activity events log a system's interactions with external, connectable, and detachable hardware. These events provide visibility into the external devices connected to and used by a system.\n\n[UID:1010] Category: system | Name: peripheral_activity"]
13616#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
13617#[serde(default)]
13618#[non_exhaustive]
13619pub struct PeripheralActivity {
13620    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
13621    #[serde(rename = "action")]
13622    #[serde(skip_serializing_if = "Option::is_none")]
13623    pub action: Option<String>,
13624    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
13625    #[serde(rename = "action_id")]
13626    #[serde(skip_serializing_if = "Option::is_none")]
13627    pub action_id: Option<i64>,
13628    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
13629    #[serde(rename = "activity_id")]
13630    #[serde(skip_serializing_if = "Option::is_none")]
13631    pub activity_id: Option<i64>,
13632    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
13633    #[serde(rename = "activity_name")]
13634    #[serde(skip_serializing_if = "Option::is_none")]
13635    pub activity_name: Option<String>,
13636    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrequired"]
13637    #[serde(rename = "actor")]
13638    #[serde(skip_serializing_if = "Option::is_none")]
13639    pub actor: Option<Box<Actor>>,
13640    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
13641    #[serde(rename = "api")]
13642    #[serde(skip_serializing_if = "Option::is_none")]
13643    pub api: Option<Box<Api>>,
13644    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
13645    #[serde(rename = "attacks")]
13646    #[serde(skip_serializing_if = "Option::is_none")]
13647    pub attacks: Option<Vec<Attack>>,
13648    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
13649    #[serde(rename = "authorizations")]
13650    #[serde(skip_serializing_if = "Option::is_none")]
13651    pub authorizations: Option<Vec<Authorization>>,
13652    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
13653    #[serde(rename = "category_name")]
13654    #[serde(skip_serializing_if = "Option::is_none")]
13655    pub category_name: Option<String>,
13656    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
13657    #[serde(rename = "category_uid")]
13658    #[serde(skip_serializing_if = "Option::is_none")]
13659    pub category_uid: Option<i64>,
13660    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Peripheral Activity</code>.\n\noptional"]
13661    #[serde(rename = "class_name")]
13662    #[serde(skip_serializing_if = "Option::is_none")]
13663    pub class_name: Option<String>,
13664    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
13665    #[serde(rename = "class_uid")]
13666    #[serde(skip_serializing_if = "Option::is_none")]
13667    pub class_uid: Option<i64>,
13668    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
13669    #[serde(rename = "cloud")]
13670    #[serde(skip_serializing_if = "Option::is_none")]
13671    pub cloud: Option<Box<Cloud>>,
13672    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
13673    #[serde(rename = "confidence")]
13674    #[serde(skip_serializing_if = "Option::is_none")]
13675    pub confidence: Option<String>,
13676    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
13677    #[serde(rename = "confidence_id")]
13678    #[serde(skip_serializing_if = "Option::is_none")]
13679    pub confidence_id: Option<i64>,
13680    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
13681    #[serde(rename = "confidence_score")]
13682    #[serde(skip_serializing_if = "Option::is_none")]
13683    pub confidence_score: Option<i64>,
13684    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
13685    #[serde(rename = "count")]
13686    #[serde(skip_serializing_if = "Option::is_none")]
13687    pub count: Option<i64>,
13688    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
13689    #[serde(rename = "device")]
13690    #[serde(skip_serializing_if = "Option::is_none")]
13691    pub device: Option<Box<Device>>,
13692    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
13693    #[serde(rename = "disposition")]
13694    #[serde(skip_serializing_if = "Option::is_none")]
13695    pub disposition: Option<String>,
13696    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
13697    #[serde(rename = "disposition_id")]
13698    #[serde(skip_serializing_if = "Option::is_none")]
13699    pub disposition_id: Option<i64>,
13700    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
13701    #[serde(rename = "duration")]
13702    #[serde(skip_serializing_if = "Option::is_none")]
13703    pub duration: Option<i64>,
13704    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
13705    #[serde(rename = "end_time")]
13706    #[serde(skip_serializing_if = "Option::is_none")]
13707    pub end_time: Option<i64>,
13708    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
13709    #[serde(rename = "end_time_dt")]
13710    #[serde(skip_serializing_if = "Option::is_none")]
13711    pub end_time_dt: Option<String>,
13712    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
13713    #[serde(rename = "enrichments")]
13714    #[serde(skip_serializing_if = "Option::is_none")]
13715    pub enrichments: Option<Vec<Enrichment>>,
13716    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
13717    #[serde(rename = "firewall_rule")]
13718    #[serde(skip_serializing_if = "Option::is_none")]
13719    pub firewall_rule: Option<Box<FirewallRule>>,
13720    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
13721    #[serde(rename = "is_alert")]
13722    #[serde(skip_serializing_if = "Option::is_none")]
13723    pub is_alert: Option<bool>,
13724    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
13725    #[serde(rename = "malware")]
13726    #[serde(skip_serializing_if = "Option::is_none")]
13727    pub malware: Option<Vec<Malware>>,
13728    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
13729    #[serde(rename = "malware_scan_info")]
13730    #[serde(skip_serializing_if = "Option::is_none")]
13731    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
13732    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
13733    #[serde(rename = "message")]
13734    #[serde(skip_serializing_if = "Option::is_none")]
13735    pub message: Option<String>,
13736    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
13737    #[serde(rename = "metadata")]
13738    #[serde(skip_serializing_if = "Option::is_none")]
13739    pub metadata: Option<Box<Metadata>>,
13740    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
13741    #[serde(rename = "observables")]
13742    #[serde(skip_serializing_if = "Option::is_none")]
13743    pub observables: Option<Vec<Observable>>,
13744    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
13745    #[serde(rename = "osint")]
13746    #[serde(skip_serializing_if = "Option::is_none")]
13747    pub osint: Option<Vec<Osint>>,
13748    #[doc = "Peripheral Device\n\nThe peripheral device that is the subject of the activity.\n\nrequired"]
13749    #[serde(rename = "peripheral_device")]
13750    #[serde(skip_serializing_if = "Option::is_none")]
13751    pub peripheral_device: Option<Box<PeripheralDevice>>,
13752    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
13753    #[serde(rename = "policy")]
13754    #[serde(skip_serializing_if = "Option::is_none")]
13755    pub policy: Option<Box<Policy>>,
13756    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
13757    #[serde(rename = "raw_data")]
13758    #[serde(skip_serializing_if = "Option::is_none")]
13759    pub raw_data: Option<String>,
13760    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
13761    #[serde(rename = "raw_data_hash")]
13762    #[serde(skip_serializing_if = "Option::is_none")]
13763    pub raw_data_hash: Option<Box<Fingerprint>>,
13764    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
13765    #[serde(rename = "raw_data_size")]
13766    #[serde(skip_serializing_if = "Option::is_none")]
13767    pub raw_data_size: Option<i64>,
13768    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
13769    #[serde(rename = "risk_details")]
13770    #[serde(skip_serializing_if = "Option::is_none")]
13771    pub risk_details: Option<String>,
13772    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
13773    #[serde(rename = "risk_level")]
13774    #[serde(skip_serializing_if = "Option::is_none")]
13775    pub risk_level: Option<String>,
13776    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
13777    #[serde(rename = "risk_level_id")]
13778    #[serde(skip_serializing_if = "Option::is_none")]
13779    pub risk_level_id: Option<i64>,
13780    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
13781    #[serde(rename = "risk_score")]
13782    #[serde(skip_serializing_if = "Option::is_none")]
13783    pub risk_score: Option<i64>,
13784    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
13785    #[serde(rename = "severity")]
13786    #[serde(skip_serializing_if = "Option::is_none")]
13787    pub severity: Option<String>,
13788    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
13789    #[serde(rename = "severity_id")]
13790    #[serde(skip_serializing_if = "Option::is_none")]
13791    pub severity_id: Option<i64>,
13792    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
13793    #[serde(rename = "start_time")]
13794    #[serde(skip_serializing_if = "Option::is_none")]
13795    pub start_time: Option<i64>,
13796    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
13797    #[serde(rename = "start_time_dt")]
13798    #[serde(skip_serializing_if = "Option::is_none")]
13799    pub start_time_dt: Option<String>,
13800    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
13801    #[serde(rename = "status")]
13802    #[serde(skip_serializing_if = "Option::is_none")]
13803    pub status: Option<String>,
13804    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
13805    #[serde(rename = "status_code")]
13806    #[serde(skip_serializing_if = "Option::is_none")]
13807    pub status_code: Option<String>,
13808    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
13809    #[serde(rename = "status_detail")]
13810    #[serde(skip_serializing_if = "Option::is_none")]
13811    pub status_detail: Option<String>,
13812    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
13813    #[serde(rename = "status_id")]
13814    #[serde(skip_serializing_if = "Option::is_none")]
13815    pub status_id: Option<i64>,
13816    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
13817    #[serde(rename = "time")]
13818    #[serde(skip_serializing_if = "Option::is_none")]
13819    pub time: Option<i64>,
13820    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
13821    #[serde(rename = "time_dt")]
13822    #[serde(skip_serializing_if = "Option::is_none")]
13823    pub time_dt: Option<String>,
13824    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
13825    #[serde(rename = "timezone_offset")]
13826    #[serde(skip_serializing_if = "Option::is_none")]
13827    pub timezone_offset: Option<i64>,
13828    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
13829    #[serde(rename = "type_name")]
13830    #[serde(skip_serializing_if = "Option::is_none")]
13831    pub type_name: Option<String>,
13832    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
13833    #[serde(rename = "type_uid")]
13834    #[serde(skip_serializing_if = "Option::is_none")]
13835    pub type_uid: Option<i64>,
13836    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
13837    #[serde(rename = "unmapped")]
13838    #[serde(skip_serializing_if = "Option::is_none")]
13839    pub unmapped: Option<serde_json::Value>,
13840}
13841#[doc = "Peripheral Device Query\n\nPeripheral Device Query events report information about peripheral devices.\n\n[UID:5014] Category: discovery | Name: peripheral_device_query"]
13842#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
13843#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
13844#[serde(default)]
13845#[non_exhaustive]
13846pub struct PeripheralDeviceQuery {
13847    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
13848    #[serde(rename = "action")]
13849    #[serde(skip_serializing_if = "Option::is_none")]
13850    pub action: Option<String>,
13851    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
13852    #[serde(rename = "action_id")]
13853    #[serde(skip_serializing_if = "Option::is_none")]
13854    pub action_id: Option<i64>,
13855    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
13856    #[serde(rename = "activity_id")]
13857    #[serde(skip_serializing_if = "Option::is_none")]
13858    pub activity_id: Option<i64>,
13859    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
13860    #[serde(rename = "activity_name")]
13861    #[serde(skip_serializing_if = "Option::is_none")]
13862    pub activity_name: Option<String>,
13863    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
13864    #[serde(rename = "actor")]
13865    #[serde(skip_serializing_if = "Option::is_none")]
13866    pub actor: Option<Box<Actor>>,
13867    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
13868    #[serde(rename = "api")]
13869    #[serde(skip_serializing_if = "Option::is_none")]
13870    pub api: Option<Box<Api>>,
13871    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
13872    #[serde(rename = "attacks")]
13873    #[serde(skip_serializing_if = "Option::is_none")]
13874    pub attacks: Option<Vec<Attack>>,
13875    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
13876    #[serde(rename = "authorizations")]
13877    #[serde(skip_serializing_if = "Option::is_none")]
13878    pub authorizations: Option<Vec<Authorization>>,
13879    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
13880    #[serde(rename = "category_name")]
13881    #[serde(skip_serializing_if = "Option::is_none")]
13882    pub category_name: Option<String>,
13883    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
13884    #[serde(rename = "category_uid")]
13885    #[serde(skip_serializing_if = "Option::is_none")]
13886    pub category_uid: Option<i64>,
13887    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Peripheral Device Query</code>.\n\noptional"]
13888    #[serde(rename = "class_name")]
13889    #[serde(skip_serializing_if = "Option::is_none")]
13890    pub class_name: Option<String>,
13891    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
13892    #[serde(rename = "class_uid")]
13893    #[serde(skip_serializing_if = "Option::is_none")]
13894    pub class_uid: Option<i64>,
13895    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
13896    #[serde(rename = "cloud")]
13897    #[serde(skip_serializing_if = "Option::is_none")]
13898    pub cloud: Option<Box<Cloud>>,
13899    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
13900    #[serde(rename = "confidence")]
13901    #[serde(skip_serializing_if = "Option::is_none")]
13902    pub confidence: Option<String>,
13903    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
13904    #[serde(rename = "confidence_id")]
13905    #[serde(skip_serializing_if = "Option::is_none")]
13906    pub confidence_id: Option<i64>,
13907    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
13908    #[serde(rename = "confidence_score")]
13909    #[serde(skip_serializing_if = "Option::is_none")]
13910    pub confidence_score: Option<i64>,
13911    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
13912    #[serde(rename = "count")]
13913    #[serde(skip_serializing_if = "Option::is_none")]
13914    pub count: Option<i64>,
13915    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
13916    #[serde(rename = "device")]
13917    #[serde(skip_serializing_if = "Option::is_none")]
13918    pub device: Option<Box<Device>>,
13919    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
13920    #[serde(rename = "disposition")]
13921    #[serde(skip_serializing_if = "Option::is_none")]
13922    pub disposition: Option<String>,
13923    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
13924    #[serde(rename = "disposition_id")]
13925    #[serde(skip_serializing_if = "Option::is_none")]
13926    pub disposition_id: Option<i64>,
13927    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
13928    #[serde(rename = "duration")]
13929    #[serde(skip_serializing_if = "Option::is_none")]
13930    pub duration: Option<i64>,
13931    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
13932    #[serde(rename = "end_time")]
13933    #[serde(skip_serializing_if = "Option::is_none")]
13934    pub end_time: Option<i64>,
13935    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
13936    #[serde(rename = "end_time_dt")]
13937    #[serde(skip_serializing_if = "Option::is_none")]
13938    pub end_time_dt: Option<String>,
13939    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
13940    #[serde(rename = "enrichments")]
13941    #[serde(skip_serializing_if = "Option::is_none")]
13942    pub enrichments: Option<Vec<Enrichment>>,
13943    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
13944    #[serde(rename = "firewall_rule")]
13945    #[serde(skip_serializing_if = "Option::is_none")]
13946    pub firewall_rule: Option<Box<FirewallRule>>,
13947    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
13948    #[serde(rename = "is_alert")]
13949    #[serde(skip_serializing_if = "Option::is_none")]
13950    pub is_alert: Option<bool>,
13951    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
13952    #[serde(rename = "malware")]
13953    #[serde(skip_serializing_if = "Option::is_none")]
13954    pub malware: Option<Vec<Malware>>,
13955    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
13956    #[serde(rename = "malware_scan_info")]
13957    #[serde(skip_serializing_if = "Option::is_none")]
13958    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
13959    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
13960    #[serde(rename = "message")]
13961    #[serde(skip_serializing_if = "Option::is_none")]
13962    pub message: Option<String>,
13963    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
13964    #[serde(rename = "metadata")]
13965    #[serde(skip_serializing_if = "Option::is_none")]
13966    pub metadata: Option<Box<Metadata>>,
13967    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
13968    #[serde(rename = "observables")]
13969    #[serde(skip_serializing_if = "Option::is_none")]
13970    pub observables: Option<Vec<Observable>>,
13971    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
13972    #[serde(rename = "osint")]
13973    #[serde(skip_serializing_if = "Option::is_none")]
13974    pub osint: Option<Vec<Osint>>,
13975    #[doc = "Peripheral Device\n\nThe peripheral device that triggered the event.\n\nrequired"]
13976    #[serde(rename = "peripheral_device")]
13977    #[serde(skip_serializing_if = "Option::is_none")]
13978    pub peripheral_device: Option<Box<PeripheralDevice>>,
13979    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
13980    #[serde(rename = "policy")]
13981    #[serde(skip_serializing_if = "Option::is_none")]
13982    pub policy: Option<Box<Policy>>,
13983    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
13984    #[serde(rename = "query_info")]
13985    #[serde(skip_serializing_if = "Option::is_none")]
13986    pub query_info: Option<Box<QueryInfo>>,
13987    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
13988    #[serde(rename = "query_result")]
13989    #[serde(skip_serializing_if = "Option::is_none")]
13990    pub query_result: Option<String>,
13991    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
13992    #[serde(rename = "query_result_id")]
13993    #[serde(skip_serializing_if = "Option::is_none")]
13994    pub query_result_id: Option<i64>,
13995    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
13996    #[serde(rename = "raw_data")]
13997    #[serde(skip_serializing_if = "Option::is_none")]
13998    pub raw_data: Option<String>,
13999    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
14000    #[serde(rename = "raw_data_hash")]
14001    #[serde(skip_serializing_if = "Option::is_none")]
14002    pub raw_data_hash: Option<Box<Fingerprint>>,
14003    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
14004    #[serde(rename = "raw_data_size")]
14005    #[serde(skip_serializing_if = "Option::is_none")]
14006    pub raw_data_size: Option<i64>,
14007    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
14008    #[serde(rename = "risk_details")]
14009    #[serde(skip_serializing_if = "Option::is_none")]
14010    pub risk_details: Option<String>,
14011    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
14012    #[serde(rename = "risk_level")]
14013    #[serde(skip_serializing_if = "Option::is_none")]
14014    pub risk_level: Option<String>,
14015    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
14016    #[serde(rename = "risk_level_id")]
14017    #[serde(skip_serializing_if = "Option::is_none")]
14018    pub risk_level_id: Option<i64>,
14019    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
14020    #[serde(rename = "risk_score")]
14021    #[serde(skip_serializing_if = "Option::is_none")]
14022    pub risk_score: Option<i64>,
14023    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
14024    #[serde(rename = "severity")]
14025    #[serde(skip_serializing_if = "Option::is_none")]
14026    pub severity: Option<String>,
14027    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
14028    #[serde(rename = "severity_id")]
14029    #[serde(skip_serializing_if = "Option::is_none")]
14030    pub severity_id: Option<i64>,
14031    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
14032    #[serde(rename = "start_time")]
14033    #[serde(skip_serializing_if = "Option::is_none")]
14034    pub start_time: Option<i64>,
14035    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
14036    #[serde(rename = "start_time_dt")]
14037    #[serde(skip_serializing_if = "Option::is_none")]
14038    pub start_time_dt: Option<String>,
14039    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
14040    #[serde(rename = "status")]
14041    #[serde(skip_serializing_if = "Option::is_none")]
14042    pub status: Option<String>,
14043    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
14044    #[serde(rename = "status_code")]
14045    #[serde(skip_serializing_if = "Option::is_none")]
14046    pub status_code: Option<String>,
14047    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
14048    #[serde(rename = "status_detail")]
14049    #[serde(skip_serializing_if = "Option::is_none")]
14050    pub status_detail: Option<String>,
14051    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
14052    #[serde(rename = "status_id")]
14053    #[serde(skip_serializing_if = "Option::is_none")]
14054    pub status_id: Option<i64>,
14055    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
14056    #[serde(rename = "time")]
14057    #[serde(skip_serializing_if = "Option::is_none")]
14058    pub time: Option<i64>,
14059    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
14060    #[serde(rename = "time_dt")]
14061    #[serde(skip_serializing_if = "Option::is_none")]
14062    pub time_dt: Option<String>,
14063    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
14064    #[serde(rename = "timezone_offset")]
14065    #[serde(skip_serializing_if = "Option::is_none")]
14066    pub timezone_offset: Option<i64>,
14067    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
14068    #[serde(rename = "type_name")]
14069    #[serde(skip_serializing_if = "Option::is_none")]
14070    pub type_name: Option<String>,
14071    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
14072    #[serde(rename = "type_uid")]
14073    #[serde(skip_serializing_if = "Option::is_none")]
14074    pub type_uid: Option<i64>,
14075    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
14076    #[serde(rename = "unmapped")]
14077    #[serde(skip_serializing_if = "Option::is_none")]
14078    pub unmapped: Option<serde_json::Value>,
14079}
14080#[doc = "Process Activity\n\nProcess Activity events report when a process launches, injects, opens or terminates another process, successful or otherwise.\n\n[UID:1007] Category: system | Name: process_activity"]
14081#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
14082#[serde(default)]
14083#[non_exhaustive]
14084pub struct ProcessActivity {
14085    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
14086    #[serde(rename = "action")]
14087    #[serde(skip_serializing_if = "Option::is_none")]
14088    pub action: Option<String>,
14089    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
14090    #[serde(rename = "action_id")]
14091    #[serde(skip_serializing_if = "Option::is_none")]
14092    pub action_id: Option<i64>,
14093    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
14094    #[serde(rename = "activity_id")]
14095    #[serde(skip_serializing_if = "Option::is_none")]
14096    pub activity_id: Option<i64>,
14097    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
14098    #[serde(rename = "activity_name")]
14099    #[serde(skip_serializing_if = "Option::is_none")]
14100    pub activity_name: Option<String>,
14101    #[doc = "Actor\n\nThe actor that performed the activity on the target <code>process</code>. For example, the process that started a new process or injected code into another process.\n\nrequired"]
14102    #[serde(rename = "actor")]
14103    #[serde(skip_serializing_if = "Option::is_none")]
14104    pub actor: Option<Box<Actor>>,
14105    #[doc = "Actual Permissions\n\nThe permissions that were granted to the process in a platform-native format.\n\nrecommended"]
14106    #[serde(rename = "actual_permissions")]
14107    #[serde(skip_serializing_if = "Option::is_none")]
14108    pub actual_permissions: Option<i64>,
14109    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
14110    #[serde(rename = "api")]
14111    #[serde(skip_serializing_if = "Option::is_none")]
14112    pub api: Option<Box<Api>>,
14113    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
14114    #[serde(rename = "attacks")]
14115    #[serde(skip_serializing_if = "Option::is_none")]
14116    pub attacks: Option<Vec<Attack>>,
14117    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
14118    #[serde(rename = "authorizations")]
14119    #[serde(skip_serializing_if = "Option::is_none")]
14120    pub authorizations: Option<Vec<Authorization>>,
14121    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
14122    #[serde(rename = "category_name")]
14123    #[serde(skip_serializing_if = "Option::is_none")]
14124    pub category_name: Option<String>,
14125    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
14126    #[serde(rename = "category_uid")]
14127    #[serde(skip_serializing_if = "Option::is_none")]
14128    pub category_uid: Option<i64>,
14129    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Process Activity</code>.\n\noptional"]
14130    #[serde(rename = "class_name")]
14131    #[serde(skip_serializing_if = "Option::is_none")]
14132    pub class_name: Option<String>,
14133    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
14134    #[serde(rename = "class_uid")]
14135    #[serde(skip_serializing_if = "Option::is_none")]
14136    pub class_uid: Option<i64>,
14137    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
14138    #[serde(rename = "cloud")]
14139    #[serde(skip_serializing_if = "Option::is_none")]
14140    pub cloud: Option<Box<Cloud>>,
14141    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
14142    #[serde(rename = "confidence")]
14143    #[serde(skip_serializing_if = "Option::is_none")]
14144    pub confidence: Option<String>,
14145    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
14146    #[serde(rename = "confidence_id")]
14147    #[serde(skip_serializing_if = "Option::is_none")]
14148    pub confidence_id: Option<i64>,
14149    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
14150    #[serde(rename = "confidence_score")]
14151    #[serde(skip_serializing_if = "Option::is_none")]
14152    pub confidence_score: Option<i64>,
14153    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
14154    #[serde(rename = "count")]
14155    #[serde(skip_serializing_if = "Option::is_none")]
14156    pub count: Option<i64>,
14157    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
14158    #[serde(rename = "device")]
14159    #[serde(skip_serializing_if = "Option::is_none")]
14160    pub device: Option<Box<Device>>,
14161    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
14162    #[serde(rename = "disposition")]
14163    #[serde(skip_serializing_if = "Option::is_none")]
14164    pub disposition: Option<String>,
14165    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
14166    #[serde(rename = "disposition_id")]
14167    #[serde(skip_serializing_if = "Option::is_none")]
14168    pub disposition_id: Option<i64>,
14169    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
14170    #[serde(rename = "duration")]
14171    #[serde(skip_serializing_if = "Option::is_none")]
14172    pub duration: Option<i64>,
14173    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
14174    #[serde(rename = "end_time")]
14175    #[serde(skip_serializing_if = "Option::is_none")]
14176    pub end_time: Option<i64>,
14177    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
14178    #[serde(rename = "end_time_dt")]
14179    #[serde(skip_serializing_if = "Option::is_none")]
14180    pub end_time_dt: Option<String>,
14181    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
14182    #[serde(rename = "enrichments")]
14183    #[serde(skip_serializing_if = "Option::is_none")]
14184    pub enrichments: Option<Vec<Enrichment>>,
14185    #[doc = "Exit Code\n\nThe exit code reported by a process when it terminates. The convention is that zero indicates success and any non-zero exit code indicates that some error occurred.\n\nrecommended"]
14186    #[serde(rename = "exit_code")]
14187    #[serde(skip_serializing_if = "Option::is_none")]
14188    pub exit_code: Option<i64>,
14189    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
14190    #[serde(rename = "firewall_rule")]
14191    #[serde(skip_serializing_if = "Option::is_none")]
14192    pub firewall_rule: Option<Box<FirewallRule>>,
14193    #[doc = "Injection Type\n\nThe process injection method, normalized to the caption of the injection_type_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
14194    #[serde(rename = "injection_type")]
14195    #[serde(skip_serializing_if = "Option::is_none")]
14196    pub injection_type: Option<String>,
14197    #[doc = "Injection Type ID\n\nThe normalized identifier of the process injection method.\n\nrecommended"]
14198    #[serde(rename = "injection_type_id")]
14199    #[serde(skip_serializing_if = "Option::is_none")]
14200    pub injection_type_id: Option<i64>,
14201    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
14202    #[serde(rename = "is_alert")]
14203    #[serde(skip_serializing_if = "Option::is_none")]
14204    pub is_alert: Option<bool>,
14205    #[doc = "Launch Type\n\nThe specific type of <code>Launch</code> activity, normalized to the caption of the <code>launch_type_id</code> value. In the case of <code>Other</code> it is defined by the event source.\n\nrecommended"]
14206    #[serde(rename = "launch_type")]
14207    #[serde(skip_serializing_if = "Option::is_none")]
14208    pub launch_type: Option<String>,
14209    #[doc = "Launch Type ID\n\nThe normalized identifier for the specific type of <code>Launch</code> activity.\n\nrecommended"]
14210    #[serde(rename = "launch_type_id")]
14211    #[serde(skip_serializing_if = "Option::is_none")]
14212    pub launch_type_id: Option<i64>,
14213    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
14214    #[serde(rename = "malware")]
14215    #[serde(skip_serializing_if = "Option::is_none")]
14216    pub malware: Option<Vec<Malware>>,
14217    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
14218    #[serde(rename = "malware_scan_info")]
14219    #[serde(skip_serializing_if = "Option::is_none")]
14220    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
14221    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
14222    #[serde(rename = "message")]
14223    #[serde(skip_serializing_if = "Option::is_none")]
14224    pub message: Option<String>,
14225    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
14226    #[serde(rename = "metadata")]
14227    #[serde(skip_serializing_if = "Option::is_none")]
14228    pub metadata: Option<Box<Metadata>>,
14229    #[doc = "Module\n\nThe module that was injected by the actor process.\n\nrecommended"]
14230    #[serde(rename = "module")]
14231    #[serde(skip_serializing_if = "Option::is_none")]
14232    pub module: Option<Box<Module>>,
14233    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
14234    #[serde(rename = "observables")]
14235    #[serde(skip_serializing_if = "Option::is_none")]
14236    pub observables: Option<Vec<Observable>>,
14237    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
14238    #[serde(rename = "osint")]
14239    #[serde(skip_serializing_if = "Option::is_none")]
14240    pub osint: Option<Vec<Osint>>,
14241    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
14242    #[serde(rename = "policy")]
14243    #[serde(skip_serializing_if = "Option::is_none")]
14244    pub policy: Option<Box<Policy>>,
14245    #[doc = "Process\n\nThe process that was launched, injected into, opened, or terminated.\n\nrequired"]
14246    #[serde(rename = "process")]
14247    #[serde(skip_serializing_if = "Option::is_none")]
14248    pub process: Option<Box<Process>>,
14249    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
14250    #[serde(rename = "raw_data")]
14251    #[serde(skip_serializing_if = "Option::is_none")]
14252    pub raw_data: Option<String>,
14253    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
14254    #[serde(rename = "raw_data_hash")]
14255    #[serde(skip_serializing_if = "Option::is_none")]
14256    pub raw_data_hash: Option<Box<Fingerprint>>,
14257    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
14258    #[serde(rename = "raw_data_size")]
14259    #[serde(skip_serializing_if = "Option::is_none")]
14260    pub raw_data_size: Option<i64>,
14261    #[doc = "Requested Permissions\n\nThe permissions mask that was requested by the process.\n\nrecommended"]
14262    #[serde(rename = "requested_permissions")]
14263    #[serde(skip_serializing_if = "Option::is_none")]
14264    pub requested_permissions: Option<i64>,
14265    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
14266    #[serde(rename = "risk_details")]
14267    #[serde(skip_serializing_if = "Option::is_none")]
14268    pub risk_details: Option<String>,
14269    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
14270    #[serde(rename = "risk_level")]
14271    #[serde(skip_serializing_if = "Option::is_none")]
14272    pub risk_level: Option<String>,
14273    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
14274    #[serde(rename = "risk_level_id")]
14275    #[serde(skip_serializing_if = "Option::is_none")]
14276    pub risk_level_id: Option<i64>,
14277    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
14278    #[serde(rename = "risk_score")]
14279    #[serde(skip_serializing_if = "Option::is_none")]
14280    pub risk_score: Option<i64>,
14281    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
14282    #[serde(rename = "severity")]
14283    #[serde(skip_serializing_if = "Option::is_none")]
14284    pub severity: Option<String>,
14285    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
14286    #[serde(rename = "severity_id")]
14287    #[serde(skip_serializing_if = "Option::is_none")]
14288    pub severity_id: Option<i64>,
14289    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
14290    #[serde(rename = "start_time")]
14291    #[serde(skip_serializing_if = "Option::is_none")]
14292    pub start_time: Option<i64>,
14293    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
14294    #[serde(rename = "start_time_dt")]
14295    #[serde(skip_serializing_if = "Option::is_none")]
14296    pub start_time_dt: Option<String>,
14297    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
14298    #[serde(rename = "status")]
14299    #[serde(skip_serializing_if = "Option::is_none")]
14300    pub status: Option<String>,
14301    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
14302    #[serde(rename = "status_code")]
14303    #[serde(skip_serializing_if = "Option::is_none")]
14304    pub status_code: Option<String>,
14305    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
14306    #[serde(rename = "status_detail")]
14307    #[serde(skip_serializing_if = "Option::is_none")]
14308    pub status_detail: Option<String>,
14309    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
14310    #[serde(rename = "status_id")]
14311    #[serde(skip_serializing_if = "Option::is_none")]
14312    pub status_id: Option<i64>,
14313    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
14314    #[serde(rename = "time")]
14315    #[serde(skip_serializing_if = "Option::is_none")]
14316    pub time: Option<i64>,
14317    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
14318    #[serde(rename = "time_dt")]
14319    #[serde(skip_serializing_if = "Option::is_none")]
14320    pub time_dt: Option<String>,
14321    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
14322    #[serde(rename = "timezone_offset")]
14323    #[serde(skip_serializing_if = "Option::is_none")]
14324    pub timezone_offset: Option<i64>,
14325    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
14326    #[serde(rename = "type_name")]
14327    #[serde(skip_serializing_if = "Option::is_none")]
14328    pub type_name: Option<String>,
14329    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
14330    #[serde(rename = "type_uid")]
14331    #[serde(skip_serializing_if = "Option::is_none")]
14332    pub type_uid: Option<i64>,
14333    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
14334    #[serde(rename = "unmapped")]
14335    #[serde(skip_serializing_if = "Option::is_none")]
14336    pub unmapped: Option<serde_json::Value>,
14337}
14338#[doc = "Process Query\n\nProcess Query events report information about running processes.\n\n[UID:5015] Category: discovery | Name: process_query"]
14339#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
14340#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
14341#[serde(default)]
14342#[non_exhaustive]
14343pub struct ProcessQuery {
14344    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
14345    #[serde(rename = "action")]
14346    #[serde(skip_serializing_if = "Option::is_none")]
14347    pub action: Option<String>,
14348    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
14349    #[serde(rename = "action_id")]
14350    #[serde(skip_serializing_if = "Option::is_none")]
14351    pub action_id: Option<i64>,
14352    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
14353    #[serde(rename = "activity_id")]
14354    #[serde(skip_serializing_if = "Option::is_none")]
14355    pub activity_id: Option<i64>,
14356    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
14357    #[serde(rename = "activity_name")]
14358    #[serde(skip_serializing_if = "Option::is_none")]
14359    pub activity_name: Option<String>,
14360    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
14361    #[serde(rename = "actor")]
14362    #[serde(skip_serializing_if = "Option::is_none")]
14363    pub actor: Option<Box<Actor>>,
14364    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
14365    #[serde(rename = "api")]
14366    #[serde(skip_serializing_if = "Option::is_none")]
14367    pub api: Option<Box<Api>>,
14368    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
14369    #[serde(rename = "attacks")]
14370    #[serde(skip_serializing_if = "Option::is_none")]
14371    pub attacks: Option<Vec<Attack>>,
14372    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
14373    #[serde(rename = "authorizations")]
14374    #[serde(skip_serializing_if = "Option::is_none")]
14375    pub authorizations: Option<Vec<Authorization>>,
14376    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
14377    #[serde(rename = "category_name")]
14378    #[serde(skip_serializing_if = "Option::is_none")]
14379    pub category_name: Option<String>,
14380    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
14381    #[serde(rename = "category_uid")]
14382    #[serde(skip_serializing_if = "Option::is_none")]
14383    pub category_uid: Option<i64>,
14384    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Process Query</code>.\n\noptional"]
14385    #[serde(rename = "class_name")]
14386    #[serde(skip_serializing_if = "Option::is_none")]
14387    pub class_name: Option<String>,
14388    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
14389    #[serde(rename = "class_uid")]
14390    #[serde(skip_serializing_if = "Option::is_none")]
14391    pub class_uid: Option<i64>,
14392    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
14393    #[serde(rename = "cloud")]
14394    #[serde(skip_serializing_if = "Option::is_none")]
14395    pub cloud: Option<Box<Cloud>>,
14396    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
14397    #[serde(rename = "confidence")]
14398    #[serde(skip_serializing_if = "Option::is_none")]
14399    pub confidence: Option<String>,
14400    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
14401    #[serde(rename = "confidence_id")]
14402    #[serde(skip_serializing_if = "Option::is_none")]
14403    pub confidence_id: Option<i64>,
14404    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
14405    #[serde(rename = "confidence_score")]
14406    #[serde(skip_serializing_if = "Option::is_none")]
14407    pub confidence_score: Option<i64>,
14408    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
14409    #[serde(rename = "count")]
14410    #[serde(skip_serializing_if = "Option::is_none")]
14411    pub count: Option<i64>,
14412    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
14413    #[serde(rename = "device")]
14414    #[serde(skip_serializing_if = "Option::is_none")]
14415    pub device: Option<Box<Device>>,
14416    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
14417    #[serde(rename = "disposition")]
14418    #[serde(skip_serializing_if = "Option::is_none")]
14419    pub disposition: Option<String>,
14420    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
14421    #[serde(rename = "disposition_id")]
14422    #[serde(skip_serializing_if = "Option::is_none")]
14423    pub disposition_id: Option<i64>,
14424    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
14425    #[serde(rename = "duration")]
14426    #[serde(skip_serializing_if = "Option::is_none")]
14427    pub duration: Option<i64>,
14428    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
14429    #[serde(rename = "end_time")]
14430    #[serde(skip_serializing_if = "Option::is_none")]
14431    pub end_time: Option<i64>,
14432    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
14433    #[serde(rename = "end_time_dt")]
14434    #[serde(skip_serializing_if = "Option::is_none")]
14435    pub end_time_dt: Option<String>,
14436    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
14437    #[serde(rename = "enrichments")]
14438    #[serde(skip_serializing_if = "Option::is_none")]
14439    pub enrichments: Option<Vec<Enrichment>>,
14440    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
14441    #[serde(rename = "firewall_rule")]
14442    #[serde(skip_serializing_if = "Option::is_none")]
14443    pub firewall_rule: Option<Box<FirewallRule>>,
14444    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
14445    #[serde(rename = "is_alert")]
14446    #[serde(skip_serializing_if = "Option::is_none")]
14447    pub is_alert: Option<bool>,
14448    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
14449    #[serde(rename = "malware")]
14450    #[serde(skip_serializing_if = "Option::is_none")]
14451    pub malware: Option<Vec<Malware>>,
14452    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
14453    #[serde(rename = "malware_scan_info")]
14454    #[serde(skip_serializing_if = "Option::is_none")]
14455    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
14456    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
14457    #[serde(rename = "message")]
14458    #[serde(skip_serializing_if = "Option::is_none")]
14459    pub message: Option<String>,
14460    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
14461    #[serde(rename = "metadata")]
14462    #[serde(skip_serializing_if = "Option::is_none")]
14463    pub metadata: Option<Box<Metadata>>,
14464    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
14465    #[serde(rename = "observables")]
14466    #[serde(skip_serializing_if = "Option::is_none")]
14467    pub observables: Option<Vec<Observable>>,
14468    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
14469    #[serde(rename = "osint")]
14470    #[serde(skip_serializing_if = "Option::is_none")]
14471    pub osint: Option<Vec<Osint>>,
14472    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
14473    #[serde(rename = "policy")]
14474    #[serde(skip_serializing_if = "Option::is_none")]
14475    pub policy: Option<Box<Policy>>,
14476    #[doc = "Process\n\nThe process object.\n\nrequired"]
14477    #[serde(rename = "process")]
14478    #[serde(skip_serializing_if = "Option::is_none")]
14479    pub process: Option<Box<Process>>,
14480    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
14481    #[serde(rename = "query_info")]
14482    #[serde(skip_serializing_if = "Option::is_none")]
14483    pub query_info: Option<Box<QueryInfo>>,
14484    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
14485    #[serde(rename = "query_result")]
14486    #[serde(skip_serializing_if = "Option::is_none")]
14487    pub query_result: Option<String>,
14488    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
14489    #[serde(rename = "query_result_id")]
14490    #[serde(skip_serializing_if = "Option::is_none")]
14491    pub query_result_id: Option<i64>,
14492    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
14493    #[serde(rename = "raw_data")]
14494    #[serde(skip_serializing_if = "Option::is_none")]
14495    pub raw_data: Option<String>,
14496    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
14497    #[serde(rename = "raw_data_hash")]
14498    #[serde(skip_serializing_if = "Option::is_none")]
14499    pub raw_data_hash: Option<Box<Fingerprint>>,
14500    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
14501    #[serde(rename = "raw_data_size")]
14502    #[serde(skip_serializing_if = "Option::is_none")]
14503    pub raw_data_size: Option<i64>,
14504    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
14505    #[serde(rename = "risk_details")]
14506    #[serde(skip_serializing_if = "Option::is_none")]
14507    pub risk_details: Option<String>,
14508    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
14509    #[serde(rename = "risk_level")]
14510    #[serde(skip_serializing_if = "Option::is_none")]
14511    pub risk_level: Option<String>,
14512    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
14513    #[serde(rename = "risk_level_id")]
14514    #[serde(skip_serializing_if = "Option::is_none")]
14515    pub risk_level_id: Option<i64>,
14516    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
14517    #[serde(rename = "risk_score")]
14518    #[serde(skip_serializing_if = "Option::is_none")]
14519    pub risk_score: Option<i64>,
14520    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
14521    #[serde(rename = "severity")]
14522    #[serde(skip_serializing_if = "Option::is_none")]
14523    pub severity: Option<String>,
14524    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
14525    #[serde(rename = "severity_id")]
14526    #[serde(skip_serializing_if = "Option::is_none")]
14527    pub severity_id: Option<i64>,
14528    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
14529    #[serde(rename = "start_time")]
14530    #[serde(skip_serializing_if = "Option::is_none")]
14531    pub start_time: Option<i64>,
14532    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
14533    #[serde(rename = "start_time_dt")]
14534    #[serde(skip_serializing_if = "Option::is_none")]
14535    pub start_time_dt: Option<String>,
14536    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
14537    #[serde(rename = "status")]
14538    #[serde(skip_serializing_if = "Option::is_none")]
14539    pub status: Option<String>,
14540    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
14541    #[serde(rename = "status_code")]
14542    #[serde(skip_serializing_if = "Option::is_none")]
14543    pub status_code: Option<String>,
14544    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
14545    #[serde(rename = "status_detail")]
14546    #[serde(skip_serializing_if = "Option::is_none")]
14547    pub status_detail: Option<String>,
14548    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
14549    #[serde(rename = "status_id")]
14550    #[serde(skip_serializing_if = "Option::is_none")]
14551    pub status_id: Option<i64>,
14552    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
14553    #[serde(rename = "time")]
14554    #[serde(skip_serializing_if = "Option::is_none")]
14555    pub time: Option<i64>,
14556    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
14557    #[serde(rename = "time_dt")]
14558    #[serde(skip_serializing_if = "Option::is_none")]
14559    pub time_dt: Option<String>,
14560    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
14561    #[serde(rename = "timezone_offset")]
14562    #[serde(skip_serializing_if = "Option::is_none")]
14563    pub timezone_offset: Option<i64>,
14564    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
14565    #[serde(rename = "type_name")]
14566    #[serde(skip_serializing_if = "Option::is_none")]
14567    pub type_name: Option<String>,
14568    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
14569    #[serde(rename = "type_uid")]
14570    #[serde(skip_serializing_if = "Option::is_none")]
14571    pub type_uid: Option<i64>,
14572    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
14573    #[serde(rename = "unmapped")]
14574    #[serde(skip_serializing_if = "Option::is_none")]
14575    pub unmapped: Option<serde_json::Value>,
14576}
14577#[doc = "Process Remediation Activity\n\nProcess Remediation Activity events report on attempts at remediating processes. It follows the MITRE countermeasures defined by the D3FEND™ <a target='_blank' href='https://d3fend.mitre.org/'>Matrix</a>. Sub-techniques will include Process, such as Process Termination or Kernel-based Process Isolation.\n\n[UID:7003] Category: remediation | Name: process_remediation_activity"]
14578#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
14579#[serde(default)]
14580#[non_exhaustive]
14581pub struct ProcessRemediationActivity {
14582    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
14583    #[serde(rename = "action")]
14584    #[serde(skip_serializing_if = "Option::is_none")]
14585    pub action: Option<String>,
14586    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
14587    #[serde(rename = "action_id")]
14588    #[serde(skip_serializing_if = "Option::is_none")]
14589    pub action_id: Option<i64>,
14590    #[doc = "Activity ID\n\nMatches the MITRE D3FEND™ Tactic. Note: the Model and Detect Tactics are not supported as remediations by the OCSF Remediation event class.\n\nrequired"]
14591    #[serde(rename = "activity_id")]
14592    #[serde(skip_serializing_if = "Option::is_none")]
14593    pub activity_id: Option<i64>,
14594    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
14595    #[serde(rename = "activity_name")]
14596    #[serde(skip_serializing_if = "Option::is_none")]
14597    pub activity_name: Option<String>,
14598    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
14599    #[serde(rename = "actor")]
14600    #[serde(skip_serializing_if = "Option::is_none")]
14601    pub actor: Option<Box<Actor>>,
14602    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
14603    #[serde(rename = "api")]
14604    #[serde(skip_serializing_if = "Option::is_none")]
14605    pub api: Option<Box<Api>>,
14606    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
14607    #[serde(rename = "attacks")]
14608    #[serde(skip_serializing_if = "Option::is_none")]
14609    pub attacks: Option<Vec<Attack>>,
14610    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
14611    #[serde(rename = "authorizations")]
14612    #[serde(skip_serializing_if = "Option::is_none")]
14613    pub authorizations: Option<Vec<Authorization>>,
14614    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Remediation</code>.\n\noptional"]
14615    #[serde(rename = "category_name")]
14616    #[serde(skip_serializing_if = "Option::is_none")]
14617    pub category_name: Option<String>,
14618    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
14619    #[serde(rename = "category_uid")]
14620    #[serde(skip_serializing_if = "Option::is_none")]
14621    pub category_uid: Option<i64>,
14622    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Process Remediation Activity</code>.\n\noptional"]
14623    #[serde(rename = "class_name")]
14624    #[serde(skip_serializing_if = "Option::is_none")]
14625    pub class_name: Option<String>,
14626    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
14627    #[serde(rename = "class_uid")]
14628    #[serde(skip_serializing_if = "Option::is_none")]
14629    pub class_uid: Option<i64>,
14630    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
14631    #[serde(rename = "cloud")]
14632    #[serde(skip_serializing_if = "Option::is_none")]
14633    pub cloud: Option<Box<Cloud>>,
14634    #[doc = "Command UID\n\nThe unique identifier of the remediation command that pertains to this event.\n\nrequired"]
14635    #[serde(rename = "command_uid")]
14636    #[serde(skip_serializing_if = "Option::is_none")]
14637    pub command_uid: Option<String>,
14638    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
14639    #[serde(rename = "confidence")]
14640    #[serde(skip_serializing_if = "Option::is_none")]
14641    pub confidence: Option<String>,
14642    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
14643    #[serde(rename = "confidence_id")]
14644    #[serde(skip_serializing_if = "Option::is_none")]
14645    pub confidence_id: Option<i64>,
14646    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
14647    #[serde(rename = "confidence_score")]
14648    #[serde(skip_serializing_if = "Option::is_none")]
14649    pub confidence_score: Option<i64>,
14650    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
14651    #[serde(rename = "count")]
14652    #[serde(skip_serializing_if = "Option::is_none")]
14653    pub count: Option<i64>,
14654    #[doc = "Countermeasures\n\nThe MITRE D3FEND™ Matrix Countermeasures associated with a remediation.\n\nrecommended"]
14655    #[serde(rename = "countermeasures")]
14656    #[serde(skip_serializing_if = "Option::is_none")]
14657    pub countermeasures: Option<Vec<D3fend>>,
14658    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
14659    #[serde(rename = "device")]
14660    #[serde(skip_serializing_if = "Option::is_none")]
14661    pub device: Option<Box<Device>>,
14662    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
14663    #[serde(rename = "disposition")]
14664    #[serde(skip_serializing_if = "Option::is_none")]
14665    pub disposition: Option<String>,
14666    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
14667    #[serde(rename = "disposition_id")]
14668    #[serde(skip_serializing_if = "Option::is_none")]
14669    pub disposition_id: Option<i64>,
14670    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
14671    #[serde(rename = "duration")]
14672    #[serde(skip_serializing_if = "Option::is_none")]
14673    pub duration: Option<i64>,
14674    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
14675    #[serde(rename = "end_time")]
14676    #[serde(skip_serializing_if = "Option::is_none")]
14677    pub end_time: Option<i64>,
14678    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
14679    #[serde(rename = "end_time_dt")]
14680    #[serde(skip_serializing_if = "Option::is_none")]
14681    pub end_time_dt: Option<String>,
14682    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
14683    #[serde(rename = "enrichments")]
14684    #[serde(skip_serializing_if = "Option::is_none")]
14685    pub enrichments: Option<Vec<Enrichment>>,
14686    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
14687    #[serde(rename = "firewall_rule")]
14688    #[serde(skip_serializing_if = "Option::is_none")]
14689    pub firewall_rule: Option<Box<FirewallRule>>,
14690    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
14691    #[serde(rename = "is_alert")]
14692    #[serde(skip_serializing_if = "Option::is_none")]
14693    pub is_alert: Option<bool>,
14694    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
14695    #[serde(rename = "malware")]
14696    #[serde(skip_serializing_if = "Option::is_none")]
14697    pub malware: Option<Vec<Malware>>,
14698    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
14699    #[serde(rename = "malware_scan_info")]
14700    #[serde(skip_serializing_if = "Option::is_none")]
14701    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
14702    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
14703    #[serde(rename = "message")]
14704    #[serde(skip_serializing_if = "Option::is_none")]
14705    pub message: Option<String>,
14706    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
14707    #[serde(rename = "metadata")]
14708    #[serde(skip_serializing_if = "Option::is_none")]
14709    pub metadata: Option<Box<Metadata>>,
14710    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
14711    #[serde(rename = "observables")]
14712    #[serde(skip_serializing_if = "Option::is_none")]
14713    pub observables: Option<Vec<Observable>>,
14714    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
14715    #[serde(rename = "osint")]
14716    #[serde(skip_serializing_if = "Option::is_none")]
14717    pub osint: Option<Vec<Osint>>,
14718    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
14719    #[serde(rename = "policy")]
14720    #[serde(skip_serializing_if = "Option::is_none")]
14721    pub policy: Option<Box<Policy>>,
14722    #[doc = "Process\n\nThe process that pertains to the remediation event.\n\nrequired"]
14723    #[serde(rename = "process")]
14724    #[serde(skip_serializing_if = "Option::is_none")]
14725    pub process: Option<Box<Process>>,
14726    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
14727    #[serde(rename = "raw_data")]
14728    #[serde(skip_serializing_if = "Option::is_none")]
14729    pub raw_data: Option<String>,
14730    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
14731    #[serde(rename = "raw_data_hash")]
14732    #[serde(skip_serializing_if = "Option::is_none")]
14733    pub raw_data_hash: Option<Box<Fingerprint>>,
14734    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
14735    #[serde(rename = "raw_data_size")]
14736    #[serde(skip_serializing_if = "Option::is_none")]
14737    pub raw_data_size: Option<i64>,
14738    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
14739    #[serde(rename = "remediation")]
14740    #[serde(skip_serializing_if = "Option::is_none")]
14741    pub remediation: Option<Box<Remediation>>,
14742    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
14743    #[serde(rename = "risk_details")]
14744    #[serde(skip_serializing_if = "Option::is_none")]
14745    pub risk_details: Option<String>,
14746    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
14747    #[serde(rename = "risk_level")]
14748    #[serde(skip_serializing_if = "Option::is_none")]
14749    pub risk_level: Option<String>,
14750    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
14751    #[serde(rename = "risk_level_id")]
14752    #[serde(skip_serializing_if = "Option::is_none")]
14753    pub risk_level_id: Option<i64>,
14754    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
14755    #[serde(rename = "risk_score")]
14756    #[serde(skip_serializing_if = "Option::is_none")]
14757    pub risk_score: Option<i64>,
14758    #[doc = "Scan\n\nThe remediation scan that pertains to this event.\n\noptional"]
14759    #[serde(rename = "scan")]
14760    #[serde(skip_serializing_if = "Option::is_none")]
14761    pub scan: Option<Box<Scan>>,
14762    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
14763    #[serde(rename = "severity")]
14764    #[serde(skip_serializing_if = "Option::is_none")]
14765    pub severity: Option<String>,
14766    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
14767    #[serde(rename = "severity_id")]
14768    #[serde(skip_serializing_if = "Option::is_none")]
14769    pub severity_id: Option<i64>,
14770    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
14771    #[serde(rename = "start_time")]
14772    #[serde(skip_serializing_if = "Option::is_none")]
14773    pub start_time: Option<i64>,
14774    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
14775    #[serde(rename = "start_time_dt")]
14776    #[serde(skip_serializing_if = "Option::is_none")]
14777    pub start_time_dt: Option<String>,
14778    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
14779    #[serde(rename = "status")]
14780    #[serde(skip_serializing_if = "Option::is_none")]
14781    pub status: Option<String>,
14782    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
14783    #[serde(rename = "status_code")]
14784    #[serde(skip_serializing_if = "Option::is_none")]
14785    pub status_code: Option<String>,
14786    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
14787    #[serde(rename = "status_detail")]
14788    #[serde(skip_serializing_if = "Option::is_none")]
14789    pub status_detail: Option<String>,
14790    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
14791    #[serde(rename = "status_id")]
14792    #[serde(skip_serializing_if = "Option::is_none")]
14793    pub status_id: Option<i64>,
14794    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
14795    #[serde(rename = "time")]
14796    #[serde(skip_serializing_if = "Option::is_none")]
14797    pub time: Option<i64>,
14798    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
14799    #[serde(rename = "time_dt")]
14800    #[serde(skip_serializing_if = "Option::is_none")]
14801    pub time_dt: Option<String>,
14802    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
14803    #[serde(rename = "timezone_offset")]
14804    #[serde(skip_serializing_if = "Option::is_none")]
14805    pub timezone_offset: Option<i64>,
14806    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
14807    #[serde(rename = "type_name")]
14808    #[serde(skip_serializing_if = "Option::is_none")]
14809    pub type_name: Option<String>,
14810    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
14811    #[serde(rename = "type_uid")]
14812    #[serde(skip_serializing_if = "Option::is_none")]
14813    pub type_uid: Option<i64>,
14814    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
14815    #[serde(rename = "unmapped")]
14816    #[serde(skip_serializing_if = "Option::is_none")]
14817    pub unmapped: Option<serde_json::Value>,
14818}
14819#[doc = "RDP Activity\n\nRemote Desktop Protocol (RDP) Activity events report post-authentication remote client connections between clients and servers over the network.\n\n[UID:4005] Category: network | Name: rdp_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
14820#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
14821#[serde(default)]
14822#[non_exhaustive]
14823pub struct RdpActivity {
14824    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
14825    #[serde(rename = "action")]
14826    #[serde(skip_serializing_if = "Option::is_none")]
14827    pub action: Option<String>,
14828    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
14829    #[serde(rename = "action_id")]
14830    #[serde(skip_serializing_if = "Option::is_none")]
14831    pub action_id: Option<i64>,
14832    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
14833    #[serde(rename = "activity_id")]
14834    #[serde(skip_serializing_if = "Option::is_none")]
14835    pub activity_id: Option<i64>,
14836    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
14837    #[serde(rename = "activity_name")]
14838    #[serde(skip_serializing_if = "Option::is_none")]
14839    pub activity_name: Option<String>,
14840    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
14841    #[serde(rename = "actor")]
14842    #[serde(skip_serializing_if = "Option::is_none")]
14843    pub actor: Option<Box<Actor>>,
14844    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
14845    #[serde(rename = "api")]
14846    #[serde(skip_serializing_if = "Option::is_none")]
14847    pub api: Option<Box<Api>>,
14848    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
14849    #[serde(rename = "app_name")]
14850    #[serde(skip_serializing_if = "Option::is_none")]
14851    pub app_name: Option<String>,
14852    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
14853    #[serde(rename = "attacks")]
14854    #[serde(skip_serializing_if = "Option::is_none")]
14855    pub attacks: Option<Vec<Attack>>,
14856    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
14857    #[serde(rename = "authorizations")]
14858    #[serde(skip_serializing_if = "Option::is_none")]
14859    pub authorizations: Option<Vec<Authorization>>,
14860    #[doc = "Capabilities\n\nA list of RDP capabilities.\n\noptional"]
14861    #[serde(rename = "capabilities")]
14862    #[serde(skip_serializing_if = "Option::is_none")]
14863    pub capabilities: Option<Vec<String>>,
14864    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
14865    #[serde(rename = "category_name")]
14866    #[serde(skip_serializing_if = "Option::is_none")]
14867    pub category_name: Option<String>,
14868    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
14869    #[serde(rename = "category_uid")]
14870    #[serde(skip_serializing_if = "Option::is_none")]
14871    pub category_uid: Option<i64>,
14872    #[doc = "Certificate Chain\n\nThe list of observed certificates in an RDP TLS connection.\n\nrecommended"]
14873    #[serde(rename = "certificate_chain")]
14874    #[serde(skip_serializing_if = "Option::is_none")]
14875    pub certificate_chain: Option<Vec<String>>,
14876    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>RDP Activity</code>.\n\noptional"]
14877    #[serde(rename = "class_name")]
14878    #[serde(skip_serializing_if = "Option::is_none")]
14879    pub class_name: Option<String>,
14880    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
14881    #[serde(rename = "class_uid")]
14882    #[serde(skip_serializing_if = "Option::is_none")]
14883    pub class_uid: Option<i64>,
14884    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
14885    #[serde(rename = "cloud")]
14886    #[serde(skip_serializing_if = "Option::is_none")]
14887    pub cloud: Option<Box<Cloud>>,
14888    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
14889    #[serde(rename = "confidence")]
14890    #[serde(skip_serializing_if = "Option::is_none")]
14891    pub confidence: Option<String>,
14892    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
14893    #[serde(rename = "confidence_id")]
14894    #[serde(skip_serializing_if = "Option::is_none")]
14895    pub confidence_id: Option<i64>,
14896    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
14897    #[serde(rename = "confidence_score")]
14898    #[serde(skip_serializing_if = "Option::is_none")]
14899    pub confidence_score: Option<i64>,
14900    #[doc = "Connection Info\n\nThe remote desktop connection details, either connection-based or connectionless.\n\nrecommended"]
14901    #[serde(rename = "connection_info")]
14902    #[serde(skip_serializing_if = "Option::is_none")]
14903    pub connection_info: Option<Box<NetworkConnectionInfo>>,
14904    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
14905    #[serde(rename = "count")]
14906    #[serde(skip_serializing_if = "Option::is_none")]
14907    pub count: Option<i64>,
14908    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
14909    #[serde(rename = "cumulative_traffic")]
14910    #[serde(skip_serializing_if = "Option::is_none")]
14911    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
14912    #[doc = "Device\n\nThe device instigating the RDP connection.\n\noptional"]
14913    #[serde(rename = "device")]
14914    #[serde(skip_serializing_if = "Option::is_none")]
14915    pub device: Option<Box<Device>>,
14916    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
14917    #[serde(rename = "disposition")]
14918    #[serde(skip_serializing_if = "Option::is_none")]
14919    pub disposition: Option<String>,
14920    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
14921    #[serde(rename = "disposition_id")]
14922    #[serde(skip_serializing_if = "Option::is_none")]
14923    pub disposition_id: Option<i64>,
14924    #[doc = "Destination Endpoint\n\nThe responder (server) in a network connection.\n\nrecommended"]
14925    #[serde(rename = "dst_endpoint")]
14926    #[serde(skip_serializing_if = "Option::is_none")]
14927    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
14928    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
14929    #[serde(rename = "duration")]
14930    #[serde(skip_serializing_if = "Option::is_none")]
14931    pub duration: Option<i64>,
14932    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
14933    #[serde(rename = "end_time")]
14934    #[serde(skip_serializing_if = "Option::is_none")]
14935    pub end_time: Option<i64>,
14936    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
14937    #[serde(rename = "end_time_dt")]
14938    #[serde(skip_serializing_if = "Option::is_none")]
14939    pub end_time_dt: Option<String>,
14940    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
14941    #[serde(rename = "enrichments")]
14942    #[serde(skip_serializing_if = "Option::is_none")]
14943    pub enrichments: Option<Vec<Enrichment>>,
14944    #[doc = "File\n\nThe file that is the target of the RDP activity.\n\noptional"]
14945    #[serde(rename = "file")]
14946    #[serde(skip_serializing_if = "Option::is_none")]
14947    pub file: Option<Box<File>>,
14948    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
14949    #[serde(rename = "firewall_rule")]
14950    #[serde(skip_serializing_if = "Option::is_none")]
14951    pub firewall_rule: Option<Box<FirewallRule>>,
14952    #[doc = "Identifier Cookie\n\nThe client identifier cookie during client/server exchange.\n\noptional"]
14953    #[serde(rename = "identifier_cookie")]
14954    #[serde(skip_serializing_if = "Option::is_none")]
14955    pub identifier_cookie: Option<String>,
14956    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
14957    #[serde(rename = "is_alert")]
14958    #[serde(skip_serializing_if = "Option::is_none")]
14959    pub is_alert: Option<bool>,
14960    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
14961    #[serde(rename = "ja4_fingerprint_list")]
14962    #[serde(skip_serializing_if = "Option::is_none")]
14963    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
14964    #[doc = "Keyboard Information\n\nThe keyboard detailed information.\n\noptional"]
14965    #[serde(rename = "keyboard_info")]
14966    #[serde(skip_serializing_if = "Option::is_none")]
14967    pub keyboard_info: Option<Box<KeyboardInfo>>,
14968    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
14969    #[serde(rename = "load_balancer")]
14970    #[serde(skip_serializing_if = "Option::is_none")]
14971    pub load_balancer: Option<Box<LoadBalancer>>,
14972    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
14973    #[serde(rename = "malware")]
14974    #[serde(skip_serializing_if = "Option::is_none")]
14975    pub malware: Option<Vec<Malware>>,
14976    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
14977    #[serde(rename = "malware_scan_info")]
14978    #[serde(skip_serializing_if = "Option::is_none")]
14979    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
14980    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
14981    #[serde(rename = "message")]
14982    #[serde(skip_serializing_if = "Option::is_none")]
14983    pub message: Option<String>,
14984    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
14985    #[serde(rename = "metadata")]
14986    #[serde(skip_serializing_if = "Option::is_none")]
14987    pub metadata: Option<Box<Metadata>>,
14988    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
14989    #[serde(rename = "observables")]
14990    #[serde(skip_serializing_if = "Option::is_none")]
14991    pub observables: Option<Vec<Observable>>,
14992    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
14993    #[serde(rename = "observation_point")]
14994    #[serde(skip_serializing_if = "Option::is_none")]
14995    pub observation_point: Option<String>,
14996    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
14997    #[serde(rename = "observation_point_id")]
14998    #[serde(skip_serializing_if = "Option::is_none")]
14999    pub observation_point_id: Option<i64>,
15000    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
15001    #[serde(rename = "osint")]
15002    #[serde(skip_serializing_if = "Option::is_none")]
15003    pub osint: Option<Vec<Osint>>,
15004    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
15005    #[serde(rename = "policy")]
15006    #[serde(skip_serializing_if = "Option::is_none")]
15007    pub policy: Option<Box<Policy>>,
15008    #[doc = "RDP Version\n\nThe Remote Desktop Protocol version.\n\nrecommended"]
15009    #[serde(rename = "protocol_ver")]
15010    #[serde(skip_serializing_if = "Option::is_none")]
15011    pub protocol_ver: Option<String>,
15012    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
15013    #[serde(rename = "proxy")]
15014    #[serde(skip_serializing_if = "Option::is_none")]
15015    pub proxy: Option<Box<NetworkProxy>>,
15016    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
15017    #[serde(rename = "proxy_connection_info")]
15018    #[serde(skip_serializing_if = "Option::is_none")]
15019    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
15020    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
15021    #[serde(rename = "proxy_endpoint")]
15022    #[serde(skip_serializing_if = "Option::is_none")]
15023    pub proxy_endpoint: Option<Box<NetworkProxy>>,
15024    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
15025    #[serde(rename = "proxy_http_request")]
15026    #[serde(skip_serializing_if = "Option::is_none")]
15027    pub proxy_http_request: Option<Box<HttpRequest>>,
15028    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
15029    #[serde(rename = "proxy_http_response")]
15030    #[serde(skip_serializing_if = "Option::is_none")]
15031    pub proxy_http_response: Option<Box<HttpResponse>>,
15032    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
15033    #[serde(rename = "proxy_tls")]
15034    #[serde(skip_serializing_if = "Option::is_none")]
15035    pub proxy_tls: Option<Box<Tls>>,
15036    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
15037    #[serde(rename = "proxy_traffic")]
15038    #[serde(skip_serializing_if = "Option::is_none")]
15039    pub proxy_traffic: Option<Box<NetworkTraffic>>,
15040    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
15041    #[serde(rename = "raw_data")]
15042    #[serde(skip_serializing_if = "Option::is_none")]
15043    pub raw_data: Option<String>,
15044    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
15045    #[serde(rename = "raw_data_hash")]
15046    #[serde(skip_serializing_if = "Option::is_none")]
15047    pub raw_data_hash: Option<Box<Fingerprint>>,
15048    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
15049    #[serde(rename = "raw_data_size")]
15050    #[serde(skip_serializing_if = "Option::is_none")]
15051    pub raw_data_size: Option<i64>,
15052    #[doc = "Remote Display\n\nThe remote display affiliated with the event\n\noptional"]
15053    #[serde(rename = "remote_display")]
15054    #[serde(skip_serializing_if = "Option::is_none")]
15055    pub remote_display: Option<Box<Display>>,
15056    #[doc = "API Request Details\n\nThe client request in an RDP network connection.\n\nrecommended"]
15057    #[serde(rename = "request")]
15058    #[serde(skip_serializing_if = "Option::is_none")]
15059    pub request: Option<Box<Request>>,
15060    #[doc = "API Response Details\n\nThe server response in an RDP network connection.\n\nrecommended"]
15061    #[serde(rename = "response")]
15062    #[serde(skip_serializing_if = "Option::is_none")]
15063    pub response: Option<Box<Response>>,
15064    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
15065    #[serde(rename = "risk_details")]
15066    #[serde(skip_serializing_if = "Option::is_none")]
15067    pub risk_details: Option<String>,
15068    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
15069    #[serde(rename = "risk_level")]
15070    #[serde(skip_serializing_if = "Option::is_none")]
15071    pub risk_level: Option<String>,
15072    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
15073    #[serde(rename = "risk_level_id")]
15074    #[serde(skip_serializing_if = "Option::is_none")]
15075    pub risk_level_id: Option<i64>,
15076    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
15077    #[serde(rename = "risk_score")]
15078    #[serde(skip_serializing_if = "Option::is_none")]
15079    pub risk_score: Option<i64>,
15080    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
15081    #[serde(rename = "severity")]
15082    #[serde(skip_serializing_if = "Option::is_none")]
15083    pub severity: Option<String>,
15084    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
15085    #[serde(rename = "severity_id")]
15086    #[serde(skip_serializing_if = "Option::is_none")]
15087    pub severity_id: Option<i64>,
15088    #[doc = "Source Endpoint\n\nThe initiator (client) of the network connection.\n\nrecommended"]
15089    #[serde(rename = "src_endpoint")]
15090    #[serde(skip_serializing_if = "Option::is_none")]
15091    pub src_endpoint: Option<Box<NetworkEndpoint>>,
15092    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
15093    #[serde(rename = "start_time")]
15094    #[serde(skip_serializing_if = "Option::is_none")]
15095    pub start_time: Option<i64>,
15096    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
15097    #[serde(rename = "start_time_dt")]
15098    #[serde(skip_serializing_if = "Option::is_none")]
15099    pub start_time_dt: Option<String>,
15100    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
15101    #[serde(rename = "status")]
15102    #[serde(skip_serializing_if = "Option::is_none")]
15103    pub status: Option<String>,
15104    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
15105    #[serde(rename = "status_code")]
15106    #[serde(skip_serializing_if = "Option::is_none")]
15107    pub status_code: Option<String>,
15108    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
15109    #[serde(rename = "status_detail")]
15110    #[serde(skip_serializing_if = "Option::is_none")]
15111    pub status_detail: Option<String>,
15112    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
15113    #[serde(rename = "status_id")]
15114    #[serde(skip_serializing_if = "Option::is_none")]
15115    pub status_id: Option<i64>,
15116    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
15117    #[serde(rename = "time")]
15118    #[serde(skip_serializing_if = "Option::is_none")]
15119    pub time: Option<i64>,
15120    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
15121    #[serde(rename = "time_dt")]
15122    #[serde(skip_serializing_if = "Option::is_none")]
15123    pub time_dt: Option<String>,
15124    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
15125    #[serde(rename = "timezone_offset")]
15126    #[serde(skip_serializing_if = "Option::is_none")]
15127    pub timezone_offset: Option<i64>,
15128    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
15129    #[serde(rename = "tls")]
15130    #[serde(skip_serializing_if = "Option::is_none")]
15131    pub tls: Option<Box<Tls>>,
15132    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
15133    #[serde(rename = "traffic")]
15134    #[serde(skip_serializing_if = "Option::is_none")]
15135    pub traffic: Option<Box<NetworkTraffic>>,
15136    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
15137    #[serde(rename = "type_name")]
15138    #[serde(skip_serializing_if = "Option::is_none")]
15139    pub type_name: Option<String>,
15140    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
15141    #[serde(rename = "type_uid")]
15142    #[serde(skip_serializing_if = "Option::is_none")]
15143    pub type_uid: Option<i64>,
15144    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
15145    #[serde(rename = "unmapped")]
15146    #[serde(skip_serializing_if = "Option::is_none")]
15147    pub unmapped: Option<serde_json::Value>,
15148    #[doc = "User\n\nThe target user associated with the RDP activity.\n\nrecommended"]
15149    #[serde(rename = "user")]
15150    #[serde(skip_serializing_if = "Option::is_none")]
15151    pub user: Option<Box<User>>,
15152}
15153#[doc = "Remediation Activity\n\nRemediation Activity events report on attempts at remediating a compromised device or computer network. It follows the MITRE countermeasures defined by the D3FEND™ <a target='_blank' href='https://d3fend.mitre.org/'>Matrix</a>.\n\n[UID:7001] Category: remediation | Name: remediation_activity"]
15154#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
15155#[serde(default)]
15156#[non_exhaustive]
15157pub struct RemediationActivity {
15158    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
15159    #[serde(rename = "action")]
15160    #[serde(skip_serializing_if = "Option::is_none")]
15161    pub action: Option<String>,
15162    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
15163    #[serde(rename = "action_id")]
15164    #[serde(skip_serializing_if = "Option::is_none")]
15165    pub action_id: Option<i64>,
15166    #[doc = "Activity ID\n\nMatches the MITRE D3FEND™ Tactic. Note: the Model and Detect Tactics are not supported as remediations by the OCSF Remediation event class.\n\nrequired"]
15167    #[serde(rename = "activity_id")]
15168    #[serde(skip_serializing_if = "Option::is_none")]
15169    pub activity_id: Option<i64>,
15170    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
15171    #[serde(rename = "activity_name")]
15172    #[serde(skip_serializing_if = "Option::is_none")]
15173    pub activity_name: Option<String>,
15174    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
15175    #[serde(rename = "actor")]
15176    #[serde(skip_serializing_if = "Option::is_none")]
15177    pub actor: Option<Box<Actor>>,
15178    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
15179    #[serde(rename = "api")]
15180    #[serde(skip_serializing_if = "Option::is_none")]
15181    pub api: Option<Box<Api>>,
15182    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
15183    #[serde(rename = "attacks")]
15184    #[serde(skip_serializing_if = "Option::is_none")]
15185    pub attacks: Option<Vec<Attack>>,
15186    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
15187    #[serde(rename = "authorizations")]
15188    #[serde(skip_serializing_if = "Option::is_none")]
15189    pub authorizations: Option<Vec<Authorization>>,
15190    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Remediation</code>.\n\noptional"]
15191    #[serde(rename = "category_name")]
15192    #[serde(skip_serializing_if = "Option::is_none")]
15193    pub category_name: Option<String>,
15194    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
15195    #[serde(rename = "category_uid")]
15196    #[serde(skip_serializing_if = "Option::is_none")]
15197    pub category_uid: Option<i64>,
15198    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Remediation Activity</code>.\n\noptional"]
15199    #[serde(rename = "class_name")]
15200    #[serde(skip_serializing_if = "Option::is_none")]
15201    pub class_name: Option<String>,
15202    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
15203    #[serde(rename = "class_uid")]
15204    #[serde(skip_serializing_if = "Option::is_none")]
15205    pub class_uid: Option<i64>,
15206    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
15207    #[serde(rename = "cloud")]
15208    #[serde(skip_serializing_if = "Option::is_none")]
15209    pub cloud: Option<Box<Cloud>>,
15210    #[doc = "Command UID\n\nThe unique identifier of the remediation command that pertains to this event.\n\nrequired"]
15211    #[serde(rename = "command_uid")]
15212    #[serde(skip_serializing_if = "Option::is_none")]
15213    pub command_uid: Option<String>,
15214    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
15215    #[serde(rename = "confidence")]
15216    #[serde(skip_serializing_if = "Option::is_none")]
15217    pub confidence: Option<String>,
15218    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
15219    #[serde(rename = "confidence_id")]
15220    #[serde(skip_serializing_if = "Option::is_none")]
15221    pub confidence_id: Option<i64>,
15222    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
15223    #[serde(rename = "confidence_score")]
15224    #[serde(skip_serializing_if = "Option::is_none")]
15225    pub confidence_score: Option<i64>,
15226    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
15227    #[serde(rename = "count")]
15228    #[serde(skip_serializing_if = "Option::is_none")]
15229    pub count: Option<i64>,
15230    #[doc = "Countermeasures\n\nThe MITRE D3FEND™ Matrix Countermeasures associated with a remediation.\n\nrecommended"]
15231    #[serde(rename = "countermeasures")]
15232    #[serde(skip_serializing_if = "Option::is_none")]
15233    pub countermeasures: Option<Vec<D3fend>>,
15234    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
15235    #[serde(rename = "device")]
15236    #[serde(skip_serializing_if = "Option::is_none")]
15237    pub device: Option<Box<Device>>,
15238    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
15239    #[serde(rename = "disposition")]
15240    #[serde(skip_serializing_if = "Option::is_none")]
15241    pub disposition: Option<String>,
15242    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
15243    #[serde(rename = "disposition_id")]
15244    #[serde(skip_serializing_if = "Option::is_none")]
15245    pub disposition_id: Option<i64>,
15246    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
15247    #[serde(rename = "duration")]
15248    #[serde(skip_serializing_if = "Option::is_none")]
15249    pub duration: Option<i64>,
15250    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
15251    #[serde(rename = "end_time")]
15252    #[serde(skip_serializing_if = "Option::is_none")]
15253    pub end_time: Option<i64>,
15254    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
15255    #[serde(rename = "end_time_dt")]
15256    #[serde(skip_serializing_if = "Option::is_none")]
15257    pub end_time_dt: Option<String>,
15258    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
15259    #[serde(rename = "enrichments")]
15260    #[serde(skip_serializing_if = "Option::is_none")]
15261    pub enrichments: Option<Vec<Enrichment>>,
15262    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
15263    #[serde(rename = "firewall_rule")]
15264    #[serde(skip_serializing_if = "Option::is_none")]
15265    pub firewall_rule: Option<Box<FirewallRule>>,
15266    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
15267    #[serde(rename = "is_alert")]
15268    #[serde(skip_serializing_if = "Option::is_none")]
15269    pub is_alert: Option<bool>,
15270    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
15271    #[serde(rename = "malware")]
15272    #[serde(skip_serializing_if = "Option::is_none")]
15273    pub malware: Option<Vec<Malware>>,
15274    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
15275    #[serde(rename = "malware_scan_info")]
15276    #[serde(skip_serializing_if = "Option::is_none")]
15277    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
15278    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
15279    #[serde(rename = "message")]
15280    #[serde(skip_serializing_if = "Option::is_none")]
15281    pub message: Option<String>,
15282    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
15283    #[serde(rename = "metadata")]
15284    #[serde(skip_serializing_if = "Option::is_none")]
15285    pub metadata: Option<Box<Metadata>>,
15286    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
15287    #[serde(rename = "observables")]
15288    #[serde(skip_serializing_if = "Option::is_none")]
15289    pub observables: Option<Vec<Observable>>,
15290    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
15291    #[serde(rename = "osint")]
15292    #[serde(skip_serializing_if = "Option::is_none")]
15293    pub osint: Option<Vec<Osint>>,
15294    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
15295    #[serde(rename = "policy")]
15296    #[serde(skip_serializing_if = "Option::is_none")]
15297    pub policy: Option<Box<Policy>>,
15298    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
15299    #[serde(rename = "raw_data")]
15300    #[serde(skip_serializing_if = "Option::is_none")]
15301    pub raw_data: Option<String>,
15302    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
15303    #[serde(rename = "raw_data_hash")]
15304    #[serde(skip_serializing_if = "Option::is_none")]
15305    pub raw_data_hash: Option<Box<Fingerprint>>,
15306    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
15307    #[serde(rename = "raw_data_size")]
15308    #[serde(skip_serializing_if = "Option::is_none")]
15309    pub raw_data_size: Option<i64>,
15310    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
15311    #[serde(rename = "remediation")]
15312    #[serde(skip_serializing_if = "Option::is_none")]
15313    pub remediation: Option<Box<Remediation>>,
15314    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
15315    #[serde(rename = "risk_details")]
15316    #[serde(skip_serializing_if = "Option::is_none")]
15317    pub risk_details: Option<String>,
15318    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
15319    #[serde(rename = "risk_level")]
15320    #[serde(skip_serializing_if = "Option::is_none")]
15321    pub risk_level: Option<String>,
15322    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
15323    #[serde(rename = "risk_level_id")]
15324    #[serde(skip_serializing_if = "Option::is_none")]
15325    pub risk_level_id: Option<i64>,
15326    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
15327    #[serde(rename = "risk_score")]
15328    #[serde(skip_serializing_if = "Option::is_none")]
15329    pub risk_score: Option<i64>,
15330    #[doc = "Scan\n\nThe remediation scan that pertains to this event.\n\noptional"]
15331    #[serde(rename = "scan")]
15332    #[serde(skip_serializing_if = "Option::is_none")]
15333    pub scan: Option<Box<Scan>>,
15334    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
15335    #[serde(rename = "severity")]
15336    #[serde(skip_serializing_if = "Option::is_none")]
15337    pub severity: Option<String>,
15338    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
15339    #[serde(rename = "severity_id")]
15340    #[serde(skip_serializing_if = "Option::is_none")]
15341    pub severity_id: Option<i64>,
15342    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
15343    #[serde(rename = "start_time")]
15344    #[serde(skip_serializing_if = "Option::is_none")]
15345    pub start_time: Option<i64>,
15346    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
15347    #[serde(rename = "start_time_dt")]
15348    #[serde(skip_serializing_if = "Option::is_none")]
15349    pub start_time_dt: Option<String>,
15350    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
15351    #[serde(rename = "status")]
15352    #[serde(skip_serializing_if = "Option::is_none")]
15353    pub status: Option<String>,
15354    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
15355    #[serde(rename = "status_code")]
15356    #[serde(skip_serializing_if = "Option::is_none")]
15357    pub status_code: Option<String>,
15358    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
15359    #[serde(rename = "status_detail")]
15360    #[serde(skip_serializing_if = "Option::is_none")]
15361    pub status_detail: Option<String>,
15362    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
15363    #[serde(rename = "status_id")]
15364    #[serde(skip_serializing_if = "Option::is_none")]
15365    pub status_id: Option<i64>,
15366    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
15367    #[serde(rename = "time")]
15368    #[serde(skip_serializing_if = "Option::is_none")]
15369    pub time: Option<i64>,
15370    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
15371    #[serde(rename = "time_dt")]
15372    #[serde(skip_serializing_if = "Option::is_none")]
15373    pub time_dt: Option<String>,
15374    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
15375    #[serde(rename = "timezone_offset")]
15376    #[serde(skip_serializing_if = "Option::is_none")]
15377    pub timezone_offset: Option<i64>,
15378    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
15379    #[serde(rename = "type_name")]
15380    #[serde(skip_serializing_if = "Option::is_none")]
15381    pub type_name: Option<String>,
15382    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
15383    #[serde(rename = "type_uid")]
15384    #[serde(skip_serializing_if = "Option::is_none")]
15385    pub type_uid: Option<i64>,
15386    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
15387    #[serde(rename = "unmapped")]
15388    #[serde(skip_serializing_if = "Option::is_none")]
15389    pub unmapped: Option<serde_json::Value>,
15390}
15391#[doc = "Scan Activity\n\nScan events report the start, completion, and results of a scan job. The scan event includes the number of items that were scanned and the number of detections that were resolved.\n\n[UID:6007] Category: application | Name: scan_activity"]
15392#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
15393#[serde(default)]
15394#[non_exhaustive]
15395pub struct ScanActivity {
15396    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
15397    #[serde(rename = "action")]
15398    #[serde(skip_serializing_if = "Option::is_none")]
15399    pub action: Option<String>,
15400    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
15401    #[serde(rename = "action_id")]
15402    #[serde(skip_serializing_if = "Option::is_none")]
15403    pub action_id: Option<i64>,
15404    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
15405    #[serde(rename = "activity_id")]
15406    #[serde(skip_serializing_if = "Option::is_none")]
15407    pub activity_id: Option<i64>,
15408    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
15409    #[serde(rename = "activity_name")]
15410    #[serde(skip_serializing_if = "Option::is_none")]
15411    pub activity_name: Option<String>,
15412    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
15413    #[serde(rename = "actor")]
15414    #[serde(skip_serializing_if = "Option::is_none")]
15415    pub actor: Option<Box<Actor>>,
15416    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
15417    #[serde(rename = "api")]
15418    #[serde(skip_serializing_if = "Option::is_none")]
15419    pub api: Option<Box<Api>>,
15420    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
15421    #[serde(rename = "attacks")]
15422    #[serde(skip_serializing_if = "Option::is_none")]
15423    pub attacks: Option<Vec<Attack>>,
15424    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
15425    #[serde(rename = "authorizations")]
15426    #[serde(skip_serializing_if = "Option::is_none")]
15427    pub authorizations: Option<Vec<Authorization>>,
15428    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Application Activity</code>.\n\noptional"]
15429    #[serde(rename = "category_name")]
15430    #[serde(skip_serializing_if = "Option::is_none")]
15431    pub category_name: Option<String>,
15432    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
15433    #[serde(rename = "category_uid")]
15434    #[serde(skip_serializing_if = "Option::is_none")]
15435    pub category_uid: Option<i64>,
15436    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Scan Activity</code>.\n\noptional"]
15437    #[serde(rename = "class_name")]
15438    #[serde(skip_serializing_if = "Option::is_none")]
15439    pub class_name: Option<String>,
15440    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
15441    #[serde(rename = "class_uid")]
15442    #[serde(skip_serializing_if = "Option::is_none")]
15443    pub class_uid: Option<i64>,
15444    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
15445    #[serde(rename = "cloud")]
15446    #[serde(skip_serializing_if = "Option::is_none")]
15447    pub cloud: Option<Box<Cloud>>,
15448    #[doc = "Command UID\n\nThe command identifier that is associated with this scan event.  This ID uniquely identifies the proactive scan command, e.g., if remotely initiated.\n\nrecommended"]
15449    #[serde(rename = "command_uid")]
15450    #[serde(skip_serializing_if = "Option::is_none")]
15451    pub command_uid: Option<String>,
15452    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
15453    #[serde(rename = "confidence")]
15454    #[serde(skip_serializing_if = "Option::is_none")]
15455    pub confidence: Option<String>,
15456    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
15457    #[serde(rename = "confidence_id")]
15458    #[serde(skip_serializing_if = "Option::is_none")]
15459    pub confidence_id: Option<i64>,
15460    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
15461    #[serde(rename = "confidence_score")]
15462    #[serde(skip_serializing_if = "Option::is_none")]
15463    pub confidence_score: Option<i64>,
15464    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
15465    #[serde(rename = "count")]
15466    #[serde(skip_serializing_if = "Option::is_none")]
15467    pub count: Option<i64>,
15468    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
15469    #[serde(rename = "device")]
15470    #[serde(skip_serializing_if = "Option::is_none")]
15471    pub device: Option<Box<Device>>,
15472    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
15473    #[serde(rename = "disposition")]
15474    #[serde(skip_serializing_if = "Option::is_none")]
15475    pub disposition: Option<String>,
15476    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
15477    #[serde(rename = "disposition_id")]
15478    #[serde(skip_serializing_if = "Option::is_none")]
15479    pub disposition_id: Option<i64>,
15480    #[doc = "Duration Milliseconds\n\nThe duration of the scan\n\nrecommended"]
15481    #[serde(rename = "duration")]
15482    #[serde(skip_serializing_if = "Option::is_none")]
15483    pub duration: Option<i64>,
15484    #[doc = "End Time\n\nThe end time of the scan job.\n\nrecommended"]
15485    #[serde(rename = "end_time")]
15486    #[serde(skip_serializing_if = "Option::is_none")]
15487    pub end_time: Option<i64>,
15488    #[doc = "End Time\n\nThe end time of the scan job.\n\noptional"]
15489    #[serde(rename = "end_time_dt")]
15490    #[serde(skip_serializing_if = "Option::is_none")]
15491    pub end_time_dt: Option<String>,
15492    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
15493    #[serde(rename = "enrichments")]
15494    #[serde(skip_serializing_if = "Option::is_none")]
15495    pub enrichments: Option<Vec<Enrichment>>,
15496    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
15497    #[serde(rename = "firewall_rule")]
15498    #[serde(skip_serializing_if = "Option::is_none")]
15499    pub firewall_rule: Option<Box<FirewallRule>>,
15500    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
15501    #[serde(rename = "is_alert")]
15502    #[serde(skip_serializing_if = "Option::is_none")]
15503    pub is_alert: Option<bool>,
15504    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
15505    #[serde(rename = "malware")]
15506    #[serde(skip_serializing_if = "Option::is_none")]
15507    pub malware: Option<Vec<Malware>>,
15508    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
15509    #[serde(rename = "malware_scan_info")]
15510    #[serde(skip_serializing_if = "Option::is_none")]
15511    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
15512    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
15513    #[serde(rename = "message")]
15514    #[serde(skip_serializing_if = "Option::is_none")]
15515    pub message: Option<String>,
15516    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
15517    #[serde(rename = "metadata")]
15518    #[serde(skip_serializing_if = "Option::is_none")]
15519    pub metadata: Option<Box<Metadata>>,
15520    #[doc = "Detections\n\nThe number of detections.\n\nrecommended"]
15521    #[serde(rename = "num_detections")]
15522    #[serde(skip_serializing_if = "Option::is_none")]
15523    pub num_detections: Option<i64>,
15524    #[doc = "Scanned Files\n\nThe number of files scanned.\n\nrecommended"]
15525    #[serde(rename = "num_files")]
15526    #[serde(skip_serializing_if = "Option::is_none")]
15527    pub num_files: Option<i64>,
15528    #[doc = "Scanned Folders\n\nThe number of folders scanned.\n\nrecommended"]
15529    #[serde(rename = "num_folders")]
15530    #[serde(skip_serializing_if = "Option::is_none")]
15531    pub num_folders: Option<i64>,
15532    #[doc = "Scanned Network Items\n\nThe number of network items scanned.\n\nrecommended"]
15533    #[serde(rename = "num_network_items")]
15534    #[serde(skip_serializing_if = "Option::is_none")]
15535    pub num_network_items: Option<i64>,
15536    #[doc = "Scanned Processes\n\nThe number of processes scanned.\n\nrecommended"]
15537    #[serde(rename = "num_processes")]
15538    #[serde(skip_serializing_if = "Option::is_none")]
15539    pub num_processes: Option<i64>,
15540    #[doc = "Scanned Registry Items\n\nThe number of registry items scanned.\n\nrecommended"]
15541    #[serde(rename = "num_registry_items")]
15542    #[serde(skip_serializing_if = "Option::is_none")]
15543    pub num_registry_items: Option<i64>,
15544    #[doc = "Resolutions\n\nThe number of items that were resolved.\n\nrecommended"]
15545    #[serde(rename = "num_resolutions")]
15546    #[serde(skip_serializing_if = "Option::is_none")]
15547    pub num_resolutions: Option<i64>,
15548    #[doc = "Skipped\n\nThe number of skipped items.\n\nrecommended"]
15549    #[serde(rename = "num_skipped_items")]
15550    #[serde(skip_serializing_if = "Option::is_none")]
15551    pub num_skipped_items: Option<i64>,
15552    #[doc = "Trusted\n\nThe number of trusted items.\n\nrecommended"]
15553    #[serde(rename = "num_trusted_items")]
15554    #[serde(skip_serializing_if = "Option::is_none")]
15555    pub num_trusted_items: Option<i64>,
15556    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
15557    #[serde(rename = "observables")]
15558    #[serde(skip_serializing_if = "Option::is_none")]
15559    pub observables: Option<Vec<Observable>>,
15560    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
15561    #[serde(rename = "osint")]
15562    #[serde(skip_serializing_if = "Option::is_none")]
15563    pub osint: Option<Vec<Osint>>,
15564    #[doc = "Policy\n\nThe policy associated with this Scan event; required if the scan was initiated by a policy.\n\nrecommended"]
15565    #[serde(rename = "policy")]
15566    #[serde(skip_serializing_if = "Option::is_none")]
15567    pub policy: Option<Box<Policy>>,
15568    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
15569    #[serde(rename = "raw_data")]
15570    #[serde(skip_serializing_if = "Option::is_none")]
15571    pub raw_data: Option<String>,
15572    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
15573    #[serde(rename = "raw_data_hash")]
15574    #[serde(skip_serializing_if = "Option::is_none")]
15575    pub raw_data_hash: Option<Box<Fingerprint>>,
15576    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
15577    #[serde(rename = "raw_data_size")]
15578    #[serde(skip_serializing_if = "Option::is_none")]
15579    pub raw_data_size: Option<i64>,
15580    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
15581    #[serde(rename = "risk_details")]
15582    #[serde(skip_serializing_if = "Option::is_none")]
15583    pub risk_details: Option<String>,
15584    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
15585    #[serde(rename = "risk_level")]
15586    #[serde(skip_serializing_if = "Option::is_none")]
15587    pub risk_level: Option<String>,
15588    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
15589    #[serde(rename = "risk_level_id")]
15590    #[serde(skip_serializing_if = "Option::is_none")]
15591    pub risk_level_id: Option<i64>,
15592    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
15593    #[serde(rename = "risk_score")]
15594    #[serde(skip_serializing_if = "Option::is_none")]
15595    pub risk_score: Option<i64>,
15596    #[doc = "Scan\n\nThe Scan object describes characteristics of the scan job.\n\nrequired"]
15597    #[serde(rename = "scan")]
15598    #[serde(skip_serializing_if = "Option::is_none")]
15599    pub scan: Option<Box<Scan>>,
15600    #[doc = "Schedule UID\n\nThe unique identifier of the schedule associated with a scan job.\n\nrecommended"]
15601    #[serde(rename = "schedule_uid")]
15602    #[serde(skip_serializing_if = "Option::is_none")]
15603    pub schedule_uid: Option<String>,
15604    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
15605    #[serde(rename = "severity")]
15606    #[serde(skip_serializing_if = "Option::is_none")]
15607    pub severity: Option<String>,
15608    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
15609    #[serde(rename = "severity_id")]
15610    #[serde(skip_serializing_if = "Option::is_none")]
15611    pub severity_id: Option<i64>,
15612    #[doc = "Start Time\n\nThe start time of the scan job.\n\nrecommended"]
15613    #[serde(rename = "start_time")]
15614    #[serde(skip_serializing_if = "Option::is_none")]
15615    pub start_time: Option<i64>,
15616    #[doc = "Start Time\n\nThe start time of the scan job.\n\noptional"]
15617    #[serde(rename = "start_time_dt")]
15618    #[serde(skip_serializing_if = "Option::is_none")]
15619    pub start_time_dt: Option<String>,
15620    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
15621    #[serde(rename = "status")]
15622    #[serde(skip_serializing_if = "Option::is_none")]
15623    pub status: Option<String>,
15624    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
15625    #[serde(rename = "status_code")]
15626    #[serde(skip_serializing_if = "Option::is_none")]
15627    pub status_code: Option<String>,
15628    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
15629    #[serde(rename = "status_detail")]
15630    #[serde(skip_serializing_if = "Option::is_none")]
15631    pub status_detail: Option<String>,
15632    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
15633    #[serde(rename = "status_id")]
15634    #[serde(skip_serializing_if = "Option::is_none")]
15635    pub status_id: Option<i64>,
15636    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
15637    #[serde(rename = "time")]
15638    #[serde(skip_serializing_if = "Option::is_none")]
15639    pub time: Option<i64>,
15640    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
15641    #[serde(rename = "time_dt")]
15642    #[serde(skip_serializing_if = "Option::is_none")]
15643    pub time_dt: Option<String>,
15644    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
15645    #[serde(rename = "timezone_offset")]
15646    #[serde(skip_serializing_if = "Option::is_none")]
15647    pub timezone_offset: Option<i64>,
15648    #[doc = "Total\n\nThe total number of items that were scanned; zero if no items were scanned.\n\nrecommended"]
15649    #[serde(rename = "total")]
15650    #[serde(skip_serializing_if = "Option::is_none")]
15651    pub total: Option<i64>,
15652    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
15653    #[serde(rename = "type_name")]
15654    #[serde(skip_serializing_if = "Option::is_none")]
15655    pub type_name: Option<String>,
15656    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
15657    #[serde(rename = "type_uid")]
15658    #[serde(skip_serializing_if = "Option::is_none")]
15659    pub type_uid: Option<i64>,
15660    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
15661    #[serde(rename = "unmapped")]
15662    #[serde(skip_serializing_if = "Option::is_none")]
15663    pub unmapped: Option<serde_json::Value>,
15664}
15665#[doc = "Scheduled Job Activity\n\nScheduled Job Activity events report activities related to scheduled jobs or tasks.\n\n[UID:1006] Category: system | Name: scheduled_job_activity"]
15666#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
15667#[serde(default)]
15668#[non_exhaustive]
15669pub struct ScheduledJobActivity {
15670    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
15671    #[serde(rename = "action")]
15672    #[serde(skip_serializing_if = "Option::is_none")]
15673    pub action: Option<String>,
15674    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
15675    #[serde(rename = "action_id")]
15676    #[serde(skip_serializing_if = "Option::is_none")]
15677    pub action_id: Option<i64>,
15678    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
15679    #[serde(rename = "activity_id")]
15680    #[serde(skip_serializing_if = "Option::is_none")]
15681    pub activity_id: Option<i64>,
15682    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
15683    #[serde(rename = "activity_name")]
15684    #[serde(skip_serializing_if = "Option::is_none")]
15685    pub activity_name: Option<String>,
15686    #[doc = "Actor\n\nThe actor that performed the activity on the <code>job</code> object.\n\noptional"]
15687    #[serde(rename = "actor")]
15688    #[serde(skip_serializing_if = "Option::is_none")]
15689    pub actor: Option<Box<Actor>>,
15690    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
15691    #[serde(rename = "api")]
15692    #[serde(skip_serializing_if = "Option::is_none")]
15693    pub api: Option<Box<Api>>,
15694    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
15695    #[serde(rename = "attacks")]
15696    #[serde(skip_serializing_if = "Option::is_none")]
15697    pub attacks: Option<Vec<Attack>>,
15698    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
15699    #[serde(rename = "authorizations")]
15700    #[serde(skip_serializing_if = "Option::is_none")]
15701    pub authorizations: Option<Vec<Authorization>>,
15702    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
15703    #[serde(rename = "category_name")]
15704    #[serde(skip_serializing_if = "Option::is_none")]
15705    pub category_name: Option<String>,
15706    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
15707    #[serde(rename = "category_uid")]
15708    #[serde(skip_serializing_if = "Option::is_none")]
15709    pub category_uid: Option<i64>,
15710    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Scheduled Job Activity</code>.\n\noptional"]
15711    #[serde(rename = "class_name")]
15712    #[serde(skip_serializing_if = "Option::is_none")]
15713    pub class_name: Option<String>,
15714    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
15715    #[serde(rename = "class_uid")]
15716    #[serde(skip_serializing_if = "Option::is_none")]
15717    pub class_uid: Option<i64>,
15718    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
15719    #[serde(rename = "cloud")]
15720    #[serde(skip_serializing_if = "Option::is_none")]
15721    pub cloud: Option<Box<Cloud>>,
15722    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
15723    #[serde(rename = "confidence")]
15724    #[serde(skip_serializing_if = "Option::is_none")]
15725    pub confidence: Option<String>,
15726    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
15727    #[serde(rename = "confidence_id")]
15728    #[serde(skip_serializing_if = "Option::is_none")]
15729    pub confidence_id: Option<i64>,
15730    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
15731    #[serde(rename = "confidence_score")]
15732    #[serde(skip_serializing_if = "Option::is_none")]
15733    pub confidence_score: Option<i64>,
15734    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
15735    #[serde(rename = "count")]
15736    #[serde(skip_serializing_if = "Option::is_none")]
15737    pub count: Option<i64>,
15738    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
15739    #[serde(rename = "device")]
15740    #[serde(skip_serializing_if = "Option::is_none")]
15741    pub device: Option<Box<Device>>,
15742    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
15743    #[serde(rename = "disposition")]
15744    #[serde(skip_serializing_if = "Option::is_none")]
15745    pub disposition: Option<String>,
15746    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
15747    #[serde(rename = "disposition_id")]
15748    #[serde(skip_serializing_if = "Option::is_none")]
15749    pub disposition_id: Option<i64>,
15750    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
15751    #[serde(rename = "duration")]
15752    #[serde(skip_serializing_if = "Option::is_none")]
15753    pub duration: Option<i64>,
15754    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
15755    #[serde(rename = "end_time")]
15756    #[serde(skip_serializing_if = "Option::is_none")]
15757    pub end_time: Option<i64>,
15758    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
15759    #[serde(rename = "end_time_dt")]
15760    #[serde(skip_serializing_if = "Option::is_none")]
15761    pub end_time_dt: Option<String>,
15762    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
15763    #[serde(rename = "enrichments")]
15764    #[serde(skip_serializing_if = "Option::is_none")]
15765    pub enrichments: Option<Vec<Enrichment>>,
15766    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
15767    #[serde(rename = "firewall_rule")]
15768    #[serde(skip_serializing_if = "Option::is_none")]
15769    pub firewall_rule: Option<Box<FirewallRule>>,
15770    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
15771    #[serde(rename = "is_alert")]
15772    #[serde(skip_serializing_if = "Option::is_none")]
15773    pub is_alert: Option<bool>,
15774    #[doc = "Job\n\nThe job object that pertains to the event.\n\nrequired"]
15775    #[serde(rename = "job")]
15776    #[serde(skip_serializing_if = "Option::is_none")]
15777    pub job: Option<Box<Job>>,
15778    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
15779    #[serde(rename = "malware")]
15780    #[serde(skip_serializing_if = "Option::is_none")]
15781    pub malware: Option<Vec<Malware>>,
15782    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
15783    #[serde(rename = "malware_scan_info")]
15784    #[serde(skip_serializing_if = "Option::is_none")]
15785    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
15786    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
15787    #[serde(rename = "message")]
15788    #[serde(skip_serializing_if = "Option::is_none")]
15789    pub message: Option<String>,
15790    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
15791    #[serde(rename = "metadata")]
15792    #[serde(skip_serializing_if = "Option::is_none")]
15793    pub metadata: Option<Box<Metadata>>,
15794    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
15795    #[serde(rename = "observables")]
15796    #[serde(skip_serializing_if = "Option::is_none")]
15797    pub observables: Option<Vec<Observable>>,
15798    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
15799    #[serde(rename = "osint")]
15800    #[serde(skip_serializing_if = "Option::is_none")]
15801    pub osint: Option<Vec<Osint>>,
15802    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
15803    #[serde(rename = "policy")]
15804    #[serde(skip_serializing_if = "Option::is_none")]
15805    pub policy: Option<Box<Policy>>,
15806    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
15807    #[serde(rename = "raw_data")]
15808    #[serde(skip_serializing_if = "Option::is_none")]
15809    pub raw_data: Option<String>,
15810    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
15811    #[serde(rename = "raw_data_hash")]
15812    #[serde(skip_serializing_if = "Option::is_none")]
15813    pub raw_data_hash: Option<Box<Fingerprint>>,
15814    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
15815    #[serde(rename = "raw_data_size")]
15816    #[serde(skip_serializing_if = "Option::is_none")]
15817    pub raw_data_size: Option<i64>,
15818    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
15819    #[serde(rename = "risk_details")]
15820    #[serde(skip_serializing_if = "Option::is_none")]
15821    pub risk_details: Option<String>,
15822    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
15823    #[serde(rename = "risk_level")]
15824    #[serde(skip_serializing_if = "Option::is_none")]
15825    pub risk_level: Option<String>,
15826    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
15827    #[serde(rename = "risk_level_id")]
15828    #[serde(skip_serializing_if = "Option::is_none")]
15829    pub risk_level_id: Option<i64>,
15830    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
15831    #[serde(rename = "risk_score")]
15832    #[serde(skip_serializing_if = "Option::is_none")]
15833    pub risk_score: Option<i64>,
15834    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
15835    #[serde(rename = "severity")]
15836    #[serde(skip_serializing_if = "Option::is_none")]
15837    pub severity: Option<String>,
15838    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
15839    #[serde(rename = "severity_id")]
15840    #[serde(skip_serializing_if = "Option::is_none")]
15841    pub severity_id: Option<i64>,
15842    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
15843    #[serde(rename = "start_time")]
15844    #[serde(skip_serializing_if = "Option::is_none")]
15845    pub start_time: Option<i64>,
15846    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
15847    #[serde(rename = "start_time_dt")]
15848    #[serde(skip_serializing_if = "Option::is_none")]
15849    pub start_time_dt: Option<String>,
15850    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
15851    #[serde(rename = "status")]
15852    #[serde(skip_serializing_if = "Option::is_none")]
15853    pub status: Option<String>,
15854    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
15855    #[serde(rename = "status_code")]
15856    #[serde(skip_serializing_if = "Option::is_none")]
15857    pub status_code: Option<String>,
15858    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
15859    #[serde(rename = "status_detail")]
15860    #[serde(skip_serializing_if = "Option::is_none")]
15861    pub status_detail: Option<String>,
15862    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
15863    #[serde(rename = "status_id")]
15864    #[serde(skip_serializing_if = "Option::is_none")]
15865    pub status_id: Option<i64>,
15866    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
15867    #[serde(rename = "time")]
15868    #[serde(skip_serializing_if = "Option::is_none")]
15869    pub time: Option<i64>,
15870    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
15871    #[serde(rename = "time_dt")]
15872    #[serde(skip_serializing_if = "Option::is_none")]
15873    pub time_dt: Option<String>,
15874    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
15875    #[serde(rename = "timezone_offset")]
15876    #[serde(skip_serializing_if = "Option::is_none")]
15877    pub timezone_offset: Option<i64>,
15878    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
15879    #[serde(rename = "type_name")]
15880    #[serde(skip_serializing_if = "Option::is_none")]
15881    pub type_name: Option<String>,
15882    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
15883    #[serde(rename = "type_uid")]
15884    #[serde(skip_serializing_if = "Option::is_none")]
15885    pub type_uid: Option<i64>,
15886    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
15887    #[serde(rename = "unmapped")]
15888    #[serde(skip_serializing_if = "Option::is_none")]
15889    pub unmapped: Option<serde_json::Value>,
15890}
15891#[doc = "Script Activity\n\nScript Activity events report when a process executes a script.\n\n[UID:1009] Category: system | Name: script_activity"]
15892#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
15893#[serde(default)]
15894#[non_exhaustive]
15895pub struct ScriptActivity {
15896    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
15897    #[serde(rename = "action")]
15898    #[serde(skip_serializing_if = "Option::is_none")]
15899    pub action: Option<String>,
15900    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
15901    #[serde(rename = "action_id")]
15902    #[serde(skip_serializing_if = "Option::is_none")]
15903    pub action_id: Option<i64>,
15904    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
15905    #[serde(rename = "activity_id")]
15906    #[serde(skip_serializing_if = "Option::is_none")]
15907    pub activity_id: Option<i64>,
15908    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
15909    #[serde(rename = "activity_name")]
15910    #[serde(skip_serializing_if = "Option::is_none")]
15911    pub activity_name: Option<String>,
15912    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrequired"]
15913    #[serde(rename = "actor")]
15914    #[serde(skip_serializing_if = "Option::is_none")]
15915    pub actor: Option<Box<Actor>>,
15916    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
15917    #[serde(rename = "api")]
15918    #[serde(skip_serializing_if = "Option::is_none")]
15919    pub api: Option<Box<Api>>,
15920    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
15921    #[serde(rename = "attacks")]
15922    #[serde(skip_serializing_if = "Option::is_none")]
15923    pub attacks: Option<Vec<Attack>>,
15924    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
15925    #[serde(rename = "authorizations")]
15926    #[serde(skip_serializing_if = "Option::is_none")]
15927    pub authorizations: Option<Vec<Authorization>>,
15928    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
15929    #[serde(rename = "category_name")]
15930    #[serde(skip_serializing_if = "Option::is_none")]
15931    pub category_name: Option<String>,
15932    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
15933    #[serde(rename = "category_uid")]
15934    #[serde(skip_serializing_if = "Option::is_none")]
15935    pub category_uid: Option<i64>,
15936    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Script Activity</code>.\n\noptional"]
15937    #[serde(rename = "class_name")]
15938    #[serde(skip_serializing_if = "Option::is_none")]
15939    pub class_name: Option<String>,
15940    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
15941    #[serde(rename = "class_uid")]
15942    #[serde(skip_serializing_if = "Option::is_none")]
15943    pub class_uid: Option<i64>,
15944    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
15945    #[serde(rename = "cloud")]
15946    #[serde(skip_serializing_if = "Option::is_none")]
15947    pub cloud: Option<Box<Cloud>>,
15948    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
15949    #[serde(rename = "confidence")]
15950    #[serde(skip_serializing_if = "Option::is_none")]
15951    pub confidence: Option<String>,
15952    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
15953    #[serde(rename = "confidence_id")]
15954    #[serde(skip_serializing_if = "Option::is_none")]
15955    pub confidence_id: Option<i64>,
15956    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
15957    #[serde(rename = "confidence_score")]
15958    #[serde(skip_serializing_if = "Option::is_none")]
15959    pub confidence_score: Option<i64>,
15960    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
15961    #[serde(rename = "count")]
15962    #[serde(skip_serializing_if = "Option::is_none")]
15963    pub count: Option<i64>,
15964    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
15965    #[serde(rename = "device")]
15966    #[serde(skip_serializing_if = "Option::is_none")]
15967    pub device: Option<Box<Device>>,
15968    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
15969    #[serde(rename = "disposition")]
15970    #[serde(skip_serializing_if = "Option::is_none")]
15971    pub disposition: Option<String>,
15972    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
15973    #[serde(rename = "disposition_id")]
15974    #[serde(skip_serializing_if = "Option::is_none")]
15975    pub disposition_id: Option<i64>,
15976    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
15977    #[serde(rename = "duration")]
15978    #[serde(skip_serializing_if = "Option::is_none")]
15979    pub duration: Option<i64>,
15980    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
15981    #[serde(rename = "end_time")]
15982    #[serde(skip_serializing_if = "Option::is_none")]
15983    pub end_time: Option<i64>,
15984    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
15985    #[serde(rename = "end_time_dt")]
15986    #[serde(skip_serializing_if = "Option::is_none")]
15987    pub end_time_dt: Option<String>,
15988    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
15989    #[serde(rename = "enrichments")]
15990    #[serde(skip_serializing_if = "Option::is_none")]
15991    pub enrichments: Option<Vec<Enrichment>>,
15992    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
15993    #[serde(rename = "firewall_rule")]
15994    #[serde(skip_serializing_if = "Option::is_none")]
15995    pub firewall_rule: Option<Box<FirewallRule>>,
15996    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
15997    #[serde(rename = "is_alert")]
15998    #[serde(skip_serializing_if = "Option::is_none")]
15999    pub is_alert: Option<bool>,
16000    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
16001    #[serde(rename = "malware")]
16002    #[serde(skip_serializing_if = "Option::is_none")]
16003    pub malware: Option<Vec<Malware>>,
16004    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
16005    #[serde(rename = "malware_scan_info")]
16006    #[serde(skip_serializing_if = "Option::is_none")]
16007    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
16008    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
16009    #[serde(rename = "message")]
16010    #[serde(skip_serializing_if = "Option::is_none")]
16011    pub message: Option<String>,
16012    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
16013    #[serde(rename = "metadata")]
16014    #[serde(skip_serializing_if = "Option::is_none")]
16015    pub metadata: Option<Box<Metadata>>,
16016    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
16017    #[serde(rename = "observables")]
16018    #[serde(skip_serializing_if = "Option::is_none")]
16019    pub observables: Option<Vec<Observable>>,
16020    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
16021    #[serde(rename = "osint")]
16022    #[serde(skip_serializing_if = "Option::is_none")]
16023    pub osint: Option<Vec<Osint>>,
16024    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
16025    #[serde(rename = "policy")]
16026    #[serde(skip_serializing_if = "Option::is_none")]
16027    pub policy: Option<Box<Policy>>,
16028    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
16029    #[serde(rename = "raw_data")]
16030    #[serde(skip_serializing_if = "Option::is_none")]
16031    pub raw_data: Option<String>,
16032    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
16033    #[serde(rename = "raw_data_hash")]
16034    #[serde(skip_serializing_if = "Option::is_none")]
16035    pub raw_data_hash: Option<Box<Fingerprint>>,
16036    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
16037    #[serde(rename = "raw_data_size")]
16038    #[serde(skip_serializing_if = "Option::is_none")]
16039    pub raw_data_size: Option<i64>,
16040    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
16041    #[serde(rename = "risk_details")]
16042    #[serde(skip_serializing_if = "Option::is_none")]
16043    pub risk_details: Option<String>,
16044    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
16045    #[serde(rename = "risk_level")]
16046    #[serde(skip_serializing_if = "Option::is_none")]
16047    pub risk_level: Option<String>,
16048    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
16049    #[serde(rename = "risk_level_id")]
16050    #[serde(skip_serializing_if = "Option::is_none")]
16051    pub risk_level_id: Option<i64>,
16052    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
16053    #[serde(rename = "risk_score")]
16054    #[serde(skip_serializing_if = "Option::is_none")]
16055    pub risk_score: Option<i64>,
16056    #[doc = "Script\n\nThe script that was the target of the activity.\n\nrequired"]
16057    #[serde(rename = "script")]
16058    #[serde(skip_serializing_if = "Option::is_none")]
16059    pub script: Option<Box<Script>>,
16060    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
16061    #[serde(rename = "severity")]
16062    #[serde(skip_serializing_if = "Option::is_none")]
16063    pub severity: Option<String>,
16064    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
16065    #[serde(rename = "severity_id")]
16066    #[serde(skip_serializing_if = "Option::is_none")]
16067    pub severity_id: Option<i64>,
16068    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
16069    #[serde(rename = "start_time")]
16070    #[serde(skip_serializing_if = "Option::is_none")]
16071    pub start_time: Option<i64>,
16072    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
16073    #[serde(rename = "start_time_dt")]
16074    #[serde(skip_serializing_if = "Option::is_none")]
16075    pub start_time_dt: Option<String>,
16076    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
16077    #[serde(rename = "status")]
16078    #[serde(skip_serializing_if = "Option::is_none")]
16079    pub status: Option<String>,
16080    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
16081    #[serde(rename = "status_code")]
16082    #[serde(skip_serializing_if = "Option::is_none")]
16083    pub status_code: Option<String>,
16084    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
16085    #[serde(rename = "status_detail")]
16086    #[serde(skip_serializing_if = "Option::is_none")]
16087    pub status_detail: Option<String>,
16088    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
16089    #[serde(rename = "status_id")]
16090    #[serde(skip_serializing_if = "Option::is_none")]
16091    pub status_id: Option<i64>,
16092    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
16093    #[serde(rename = "time")]
16094    #[serde(skip_serializing_if = "Option::is_none")]
16095    pub time: Option<i64>,
16096    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
16097    #[serde(rename = "time_dt")]
16098    #[serde(skip_serializing_if = "Option::is_none")]
16099    pub time_dt: Option<String>,
16100    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
16101    #[serde(rename = "timezone_offset")]
16102    #[serde(skip_serializing_if = "Option::is_none")]
16103    pub timezone_offset: Option<i64>,
16104    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
16105    #[serde(rename = "type_name")]
16106    #[serde(skip_serializing_if = "Option::is_none")]
16107    pub type_name: Option<String>,
16108    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
16109    #[serde(rename = "type_uid")]
16110    #[serde(skip_serializing_if = "Option::is_none")]
16111    pub type_uid: Option<i64>,
16112    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
16113    #[serde(rename = "unmapped")]
16114    #[serde(skip_serializing_if = "Option::is_none")]
16115    pub unmapped: Option<serde_json::Value>,
16116}
16117#[doc = "Security Finding\n\nSecurity Finding events describe findings, detections, anomalies, alerts and/or actions performed by security products\n\n[UID:2001] Category: findings | Name: security_finding"]
16118#[deprecated(
16119    note = "Use the new specific classes according to the use-case: <code>Vulnerability Finding, Compliance Finding, Detection Finding, Incident Finding, Data Security Finding.</code> (Since 1.1.0)"
16120)]
16121#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
16122#[serde(default)]
16123#[non_exhaustive]
16124pub struct SecurityFinding {
16125    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
16126    #[serde(rename = "action")]
16127    #[serde(skip_serializing_if = "Option::is_none")]
16128    pub action: Option<String>,
16129    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
16130    #[serde(rename = "action_id")]
16131    #[serde(skip_serializing_if = "Option::is_none")]
16132    pub action_id: Option<i64>,
16133    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
16134    #[serde(rename = "activity_id")]
16135    #[serde(skip_serializing_if = "Option::is_none")]
16136    pub activity_id: Option<i64>,
16137    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
16138    #[serde(rename = "activity_name")]
16139    #[serde(skip_serializing_if = "Option::is_none")]
16140    pub activity_name: Option<String>,
16141    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
16142    #[serde(rename = "actor")]
16143    #[serde(skip_serializing_if = "Option::is_none")]
16144    pub actor: Option<Box<Actor>>,
16145    #[doc = "Analytic\n\nThe analytic technique used to analyze and derive insights from the data or information that led to the finding or conclusion.\n\nrecommended"]
16146    #[serde(rename = "analytic")]
16147    #[serde(skip_serializing_if = "Option::is_none")]
16148    pub analytic: Option<Box<Analytic>>,
16149    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
16150    #[serde(rename = "api")]
16151    #[serde(skip_serializing_if = "Option::is_none")]
16152    pub api: Option<Box<Api>>,
16153    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of <a target='_blank' href='https://attack.mitre.org'>MITRE ATT&CK®</a> objects describing the tactics, techniques & sub-techniques associated to the Finding.\n\noptional"]
16154    #[serde(rename = "attacks")]
16155    #[serde(skip_serializing_if = "Option::is_none")]
16156    pub attacks: Option<Vec<Attack>>,
16157    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
16158    #[serde(rename = "authorizations")]
16159    #[serde(skip_serializing_if = "Option::is_none")]
16160    pub authorizations: Option<Vec<Authorization>>,
16161    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Findings</code>.\n\noptional"]
16162    #[serde(rename = "category_name")]
16163    #[serde(skip_serializing_if = "Option::is_none")]
16164    pub category_name: Option<String>,
16165    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
16166    #[serde(rename = "category_uid")]
16167    #[serde(skip_serializing_if = "Option::is_none")]
16168    pub category_uid: Option<i64>,
16169    #[doc = "CIS CSC\n\nThe CIS Critical Security Controls is a list of top 20 actions and practices an organization’s security team can take on such that cyber attacks or malware, are minimized and prevented.\n\noptional"]
16170    #[serde(rename = "cis_csc")]
16171    #[serde(skip_serializing_if = "Option::is_none")]
16172    pub cis_csc: Option<Vec<CisCsc>>,
16173    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Security Finding</code>.\n\noptional"]
16174    #[serde(rename = "class_name")]
16175    #[serde(skip_serializing_if = "Option::is_none")]
16176    pub class_name: Option<String>,
16177    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
16178    #[serde(rename = "class_uid")]
16179    #[serde(skip_serializing_if = "Option::is_none")]
16180    pub class_uid: Option<i64>,
16181    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
16182    #[serde(rename = "cloud")]
16183    #[serde(skip_serializing_if = "Option::is_none")]
16184    pub cloud: Option<Box<Cloud>>,
16185    #[doc = "Compliance\n\nThe compliance object provides context to compliance findings (e.g., a check against a specific regulatory or best practice framework such as CIS, NIST etc.) and contains compliance related details.\n\noptional"]
16186    #[serde(rename = "compliance")]
16187    #[serde(skip_serializing_if = "Option::is_none")]
16188    pub compliance: Option<Box<Compliance>>,
16189    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
16190    #[serde(rename = "confidence")]
16191    #[serde(skip_serializing_if = "Option::is_none")]
16192    pub confidence: Option<String>,
16193    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
16194    #[serde(rename = "confidence_id")]
16195    #[serde(skip_serializing_if = "Option::is_none")]
16196    pub confidence_id: Option<i64>,
16197    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\nrecommended"]
16198    #[serde(rename = "confidence_score")]
16199    #[serde(skip_serializing_if = "Option::is_none")]
16200    pub confidence_score: Option<i64>,
16201    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
16202    #[serde(rename = "count")]
16203    #[serde(skip_serializing_if = "Option::is_none")]
16204    pub count: Option<i64>,
16205    #[doc = "Data Sources\n\nA list of data sources utilized in generation of the finding.\n\noptional"]
16206    #[serde(rename = "data_sources")]
16207    #[serde(skip_serializing_if = "Option::is_none")]
16208    pub data_sources: Option<Vec<String>>,
16209    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
16210    #[serde(rename = "device")]
16211    #[serde(skip_serializing_if = "Option::is_none")]
16212    pub device: Option<Box<Device>>,
16213    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
16214    #[serde(rename = "disposition")]
16215    #[serde(skip_serializing_if = "Option::is_none")]
16216    pub disposition: Option<String>,
16217    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
16218    #[serde(rename = "disposition_id")]
16219    #[serde(skip_serializing_if = "Option::is_none")]
16220    pub disposition_id: Option<i64>,
16221    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
16222    #[serde(rename = "duration")]
16223    #[serde(skip_serializing_if = "Option::is_none")]
16224    pub duration: Option<i64>,
16225    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
16226    #[serde(rename = "end_time")]
16227    #[serde(skip_serializing_if = "Option::is_none")]
16228    pub end_time: Option<i64>,
16229    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
16230    #[serde(rename = "end_time_dt")]
16231    #[serde(skip_serializing_if = "Option::is_none")]
16232    pub end_time_dt: Option<String>,
16233    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
16234    #[serde(rename = "enrichments")]
16235    #[serde(skip_serializing_if = "Option::is_none")]
16236    pub enrichments: Option<Vec<Enrichment>>,
16237    #[doc = "Evidence\n\nThe data the finding exposes to the analyst.\n\noptional"]
16238    #[serde(rename = "evidence")]
16239    #[serde(skip_serializing_if = "Option::is_none")]
16240    pub evidence: Option<serde_json::Value>,
16241    #[doc = "Finding\n\nThe Finding object provides details about a finding/detection generated by a security tool.\n\nrequired"]
16242    #[serde(rename = "finding")]
16243    #[serde(skip_serializing_if = "Option::is_none")]
16244    pub finding: Option<Box<Finding>>,
16245    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
16246    #[serde(rename = "firewall_rule")]
16247    #[serde(skip_serializing_if = "Option::is_none")]
16248    pub firewall_rule: Option<Box<FirewallRule>>,
16249    #[doc = "Impact\n\nThe impact , normalized to the caption of the impact_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
16250    #[serde(rename = "impact")]
16251    #[serde(skip_serializing_if = "Option::is_none")]
16252    pub impact: Option<String>,
16253    #[doc = "Impact ID\n\nThe normalized impact of the incident or finding. Per NIST, this is the magnitude of harm that can be expected to result from the consequences of unauthorized disclosure, modification, destruction, or loss of information or information system availability.\n\nrecommended"]
16254    #[serde(rename = "impact_id")]
16255    #[serde(skip_serializing_if = "Option::is_none")]
16256    pub impact_id: Option<i64>,
16257    #[doc = "Impact Score\n\nThe impact as an integer value of the finding, valid range 0-100.\n\nrecommended"]
16258    #[serde(rename = "impact_score")]
16259    #[serde(skip_serializing_if = "Option::is_none")]
16260    pub impact_score: Option<i64>,
16261    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
16262    #[serde(rename = "is_alert")]
16263    #[serde(skip_serializing_if = "Option::is_none")]
16264    pub is_alert: Option<bool>,
16265    #[doc = "Kill Chain\n\nThe <a target='_blank' href='https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html'>Cyber Kill Chain®</a> provides a detailed description of each phase and its associated activities within the broader context of a cyber attack.\n\noptional"]
16266    #[serde(rename = "kill_chain")]
16267    #[serde(skip_serializing_if = "Option::is_none")]
16268    pub kill_chain: Option<Vec<KillChainPhase>>,
16269    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
16270    #[serde(rename = "malware")]
16271    #[serde(skip_serializing_if = "Option::is_none")]
16272    pub malware: Option<Vec<Malware>>,
16273    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
16274    #[serde(rename = "malware_scan_info")]
16275    #[serde(skip_serializing_if = "Option::is_none")]
16276    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
16277    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
16278    #[serde(rename = "message")]
16279    #[serde(skip_serializing_if = "Option::is_none")]
16280    pub message: Option<String>,
16281    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
16282    #[serde(rename = "metadata")]
16283    #[serde(skip_serializing_if = "Option::is_none")]
16284    pub metadata: Option<Box<Metadata>>,
16285    #[doc = "NIST List\n\nThe NIST Cybersecurity Framework recommendations for managing the cybersecurity risk.\n\noptional"]
16286    #[serde(rename = "nist")]
16287    #[serde(skip_serializing_if = "Option::is_none")]
16288    pub nist: Option<Vec<String>>,
16289    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
16290    #[serde(rename = "observables")]
16291    #[serde(skip_serializing_if = "Option::is_none")]
16292    pub observables: Option<Vec<Observable>>,
16293    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
16294    #[serde(rename = "osint")]
16295    #[serde(skip_serializing_if = "Option::is_none")]
16296    pub osint: Option<Vec<Osint>>,
16297    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
16298    #[serde(rename = "policy")]
16299    #[serde(skip_serializing_if = "Option::is_none")]
16300    pub policy: Option<Box<Policy>>,
16301    #[doc = "Process\n\nThe process object.\n\noptional"]
16302    #[serde(rename = "process")]
16303    #[serde(skip_serializing_if = "Option::is_none")]
16304    pub process: Option<Box<Process>>,
16305    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
16306    #[serde(rename = "raw_data")]
16307    #[serde(skip_serializing_if = "Option::is_none")]
16308    pub raw_data: Option<String>,
16309    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
16310    #[serde(rename = "raw_data_hash")]
16311    #[serde(skip_serializing_if = "Option::is_none")]
16312    pub raw_data_hash: Option<Box<Fingerprint>>,
16313    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
16314    #[serde(rename = "raw_data_size")]
16315    #[serde(skip_serializing_if = "Option::is_none")]
16316    pub raw_data_size: Option<i64>,
16317    #[doc = "Resources Array\n\nDescribes details about resources that were affected by the activity/event.\n\nrecommended"]
16318    #[serde(rename = "resources")]
16319    #[serde(skip_serializing_if = "Option::is_none")]
16320    pub resources: Option<Vec<ResourceDetails>>,
16321    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
16322    #[serde(rename = "risk_details")]
16323    #[serde(skip_serializing_if = "Option::is_none")]
16324    pub risk_details: Option<String>,
16325    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\nrecommended"]
16326    #[serde(rename = "risk_level")]
16327    #[serde(skip_serializing_if = "Option::is_none")]
16328    pub risk_level: Option<String>,
16329    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\nrecommended"]
16330    #[serde(rename = "risk_level_id")]
16331    #[serde(skip_serializing_if = "Option::is_none")]
16332    pub risk_level_id: Option<i64>,
16333    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\nrecommended"]
16334    #[serde(rename = "risk_score")]
16335    #[serde(skip_serializing_if = "Option::is_none")]
16336    pub risk_score: Option<i64>,
16337    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
16338    #[serde(rename = "severity")]
16339    #[serde(skip_serializing_if = "Option::is_none")]
16340    pub severity: Option<String>,
16341    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
16342    #[serde(rename = "severity_id")]
16343    #[serde(skip_serializing_if = "Option::is_none")]
16344    pub severity_id: Option<i64>,
16345    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
16346    #[serde(rename = "start_time")]
16347    #[serde(skip_serializing_if = "Option::is_none")]
16348    pub start_time: Option<i64>,
16349    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
16350    #[serde(rename = "start_time_dt")]
16351    #[serde(skip_serializing_if = "Option::is_none")]
16352    pub start_time_dt: Option<String>,
16353    #[doc = "State\n\nThe normalized state of a security finding.\n\noptional"]
16354    #[serde(rename = "state")]
16355    #[serde(skip_serializing_if = "Option::is_none")]
16356    pub state: Option<String>,
16357    #[doc = "State ID\n\nThe normalized state identifier of a security finding.\n\nrequired"]
16358    #[serde(rename = "state_id")]
16359    #[serde(skip_serializing_if = "Option::is_none")]
16360    pub state_id: Option<i64>,
16361    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
16362    #[serde(rename = "status")]
16363    #[serde(skip_serializing_if = "Option::is_none")]
16364    pub status: Option<String>,
16365    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
16366    #[serde(rename = "status_code")]
16367    #[serde(skip_serializing_if = "Option::is_none")]
16368    pub status_code: Option<String>,
16369    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
16370    #[serde(rename = "status_detail")]
16371    #[serde(skip_serializing_if = "Option::is_none")]
16372    pub status_detail: Option<String>,
16373    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
16374    #[serde(rename = "status_id")]
16375    #[serde(skip_serializing_if = "Option::is_none")]
16376    pub status_id: Option<i64>,
16377    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
16378    #[serde(rename = "time")]
16379    #[serde(skip_serializing_if = "Option::is_none")]
16380    pub time: Option<i64>,
16381    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
16382    #[serde(rename = "time_dt")]
16383    #[serde(skip_serializing_if = "Option::is_none")]
16384    pub time_dt: Option<String>,
16385    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
16386    #[serde(rename = "timezone_offset")]
16387    #[serde(skip_serializing_if = "Option::is_none")]
16388    pub timezone_offset: Option<i64>,
16389    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
16390    #[serde(rename = "type_name")]
16391    #[serde(skip_serializing_if = "Option::is_none")]
16392    pub type_name: Option<String>,
16393    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
16394    #[serde(rename = "type_uid")]
16395    #[serde(skip_serializing_if = "Option::is_none")]
16396    pub type_uid: Option<i64>,
16397    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
16398    #[serde(rename = "unmapped")]
16399    #[serde(skip_serializing_if = "Option::is_none")]
16400    pub unmapped: Option<serde_json::Value>,
16401    #[doc = "Vulnerabilities\n\nThis object describes vulnerabilities reported in a security finding.\n\noptional"]
16402    #[serde(rename = "vulnerabilities")]
16403    #[serde(skip_serializing_if = "Option::is_none")]
16404    pub vulnerabilities: Option<Vec<Vulnerability>>,
16405}
16406#[doc = "Service Query\n\nService Query events report information about running services.\n\n[UID:5016] Category: discovery | Name: service_query"]
16407#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
16408#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
16409#[serde(default)]
16410#[non_exhaustive]
16411pub struct ServiceQuery {
16412    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
16413    #[serde(rename = "action")]
16414    #[serde(skip_serializing_if = "Option::is_none")]
16415    pub action: Option<String>,
16416    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
16417    #[serde(rename = "action_id")]
16418    #[serde(skip_serializing_if = "Option::is_none")]
16419    pub action_id: Option<i64>,
16420    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
16421    #[serde(rename = "activity_id")]
16422    #[serde(skip_serializing_if = "Option::is_none")]
16423    pub activity_id: Option<i64>,
16424    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
16425    #[serde(rename = "activity_name")]
16426    #[serde(skip_serializing_if = "Option::is_none")]
16427    pub activity_name: Option<String>,
16428    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
16429    #[serde(rename = "actor")]
16430    #[serde(skip_serializing_if = "Option::is_none")]
16431    pub actor: Option<Box<Actor>>,
16432    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
16433    #[serde(rename = "api")]
16434    #[serde(skip_serializing_if = "Option::is_none")]
16435    pub api: Option<Box<Api>>,
16436    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
16437    #[serde(rename = "attacks")]
16438    #[serde(skip_serializing_if = "Option::is_none")]
16439    pub attacks: Option<Vec<Attack>>,
16440    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
16441    #[serde(rename = "authorizations")]
16442    #[serde(skip_serializing_if = "Option::is_none")]
16443    pub authorizations: Option<Vec<Authorization>>,
16444    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
16445    #[serde(rename = "category_name")]
16446    #[serde(skip_serializing_if = "Option::is_none")]
16447    pub category_name: Option<String>,
16448    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
16449    #[serde(rename = "category_uid")]
16450    #[serde(skip_serializing_if = "Option::is_none")]
16451    pub category_uid: Option<i64>,
16452    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Service Query</code>.\n\noptional"]
16453    #[serde(rename = "class_name")]
16454    #[serde(skip_serializing_if = "Option::is_none")]
16455    pub class_name: Option<String>,
16456    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
16457    #[serde(rename = "class_uid")]
16458    #[serde(skip_serializing_if = "Option::is_none")]
16459    pub class_uid: Option<i64>,
16460    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
16461    #[serde(rename = "cloud")]
16462    #[serde(skip_serializing_if = "Option::is_none")]
16463    pub cloud: Option<Box<Cloud>>,
16464    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
16465    #[serde(rename = "confidence")]
16466    #[serde(skip_serializing_if = "Option::is_none")]
16467    pub confidence: Option<String>,
16468    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
16469    #[serde(rename = "confidence_id")]
16470    #[serde(skip_serializing_if = "Option::is_none")]
16471    pub confidence_id: Option<i64>,
16472    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
16473    #[serde(rename = "confidence_score")]
16474    #[serde(skip_serializing_if = "Option::is_none")]
16475    pub confidence_score: Option<i64>,
16476    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
16477    #[serde(rename = "count")]
16478    #[serde(skip_serializing_if = "Option::is_none")]
16479    pub count: Option<i64>,
16480    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
16481    #[serde(rename = "device")]
16482    #[serde(skip_serializing_if = "Option::is_none")]
16483    pub device: Option<Box<Device>>,
16484    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
16485    #[serde(rename = "disposition")]
16486    #[serde(skip_serializing_if = "Option::is_none")]
16487    pub disposition: Option<String>,
16488    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
16489    #[serde(rename = "disposition_id")]
16490    #[serde(skip_serializing_if = "Option::is_none")]
16491    pub disposition_id: Option<i64>,
16492    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
16493    #[serde(rename = "duration")]
16494    #[serde(skip_serializing_if = "Option::is_none")]
16495    pub duration: Option<i64>,
16496    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
16497    #[serde(rename = "end_time")]
16498    #[serde(skip_serializing_if = "Option::is_none")]
16499    pub end_time: Option<i64>,
16500    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
16501    #[serde(rename = "end_time_dt")]
16502    #[serde(skip_serializing_if = "Option::is_none")]
16503    pub end_time_dt: Option<String>,
16504    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
16505    #[serde(rename = "enrichments")]
16506    #[serde(skip_serializing_if = "Option::is_none")]
16507    pub enrichments: Option<Vec<Enrichment>>,
16508    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
16509    #[serde(rename = "firewall_rule")]
16510    #[serde(skip_serializing_if = "Option::is_none")]
16511    pub firewall_rule: Option<Box<FirewallRule>>,
16512    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
16513    #[serde(rename = "is_alert")]
16514    #[serde(skip_serializing_if = "Option::is_none")]
16515    pub is_alert: Option<bool>,
16516    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
16517    #[serde(rename = "malware")]
16518    #[serde(skip_serializing_if = "Option::is_none")]
16519    pub malware: Option<Vec<Malware>>,
16520    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
16521    #[serde(rename = "malware_scan_info")]
16522    #[serde(skip_serializing_if = "Option::is_none")]
16523    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
16524    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
16525    #[serde(rename = "message")]
16526    #[serde(skip_serializing_if = "Option::is_none")]
16527    pub message: Option<String>,
16528    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
16529    #[serde(rename = "metadata")]
16530    #[serde(skip_serializing_if = "Option::is_none")]
16531    pub metadata: Option<Box<Metadata>>,
16532    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
16533    #[serde(rename = "observables")]
16534    #[serde(skip_serializing_if = "Option::is_none")]
16535    pub observables: Option<Vec<Observable>>,
16536    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
16537    #[serde(rename = "osint")]
16538    #[serde(skip_serializing_if = "Option::is_none")]
16539    pub osint: Option<Vec<Osint>>,
16540    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
16541    #[serde(rename = "policy")]
16542    #[serde(skip_serializing_if = "Option::is_none")]
16543    pub policy: Option<Box<Policy>>,
16544    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
16545    #[serde(rename = "query_info")]
16546    #[serde(skip_serializing_if = "Option::is_none")]
16547    pub query_info: Option<Box<QueryInfo>>,
16548    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
16549    #[serde(rename = "query_result")]
16550    #[serde(skip_serializing_if = "Option::is_none")]
16551    pub query_result: Option<String>,
16552    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
16553    #[serde(rename = "query_result_id")]
16554    #[serde(skip_serializing_if = "Option::is_none")]
16555    pub query_result_id: Option<i64>,
16556    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
16557    #[serde(rename = "raw_data")]
16558    #[serde(skip_serializing_if = "Option::is_none")]
16559    pub raw_data: Option<String>,
16560    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
16561    #[serde(rename = "raw_data_hash")]
16562    #[serde(skip_serializing_if = "Option::is_none")]
16563    pub raw_data_hash: Option<Box<Fingerprint>>,
16564    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
16565    #[serde(rename = "raw_data_size")]
16566    #[serde(skip_serializing_if = "Option::is_none")]
16567    pub raw_data_size: Option<i64>,
16568    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
16569    #[serde(rename = "risk_details")]
16570    #[serde(skip_serializing_if = "Option::is_none")]
16571    pub risk_details: Option<String>,
16572    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
16573    #[serde(rename = "risk_level")]
16574    #[serde(skip_serializing_if = "Option::is_none")]
16575    pub risk_level: Option<String>,
16576    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
16577    #[serde(rename = "risk_level_id")]
16578    #[serde(skip_serializing_if = "Option::is_none")]
16579    pub risk_level_id: Option<i64>,
16580    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
16581    #[serde(rename = "risk_score")]
16582    #[serde(skip_serializing_if = "Option::is_none")]
16583    pub risk_score: Option<i64>,
16584    #[doc = "Service\n\nThe service that pertains to the event.\n\nrequired"]
16585    #[serde(rename = "service")]
16586    #[serde(skip_serializing_if = "Option::is_none")]
16587    pub service: Option<Box<Service>>,
16588    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
16589    #[serde(rename = "severity")]
16590    #[serde(skip_serializing_if = "Option::is_none")]
16591    pub severity: Option<String>,
16592    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
16593    #[serde(rename = "severity_id")]
16594    #[serde(skip_serializing_if = "Option::is_none")]
16595    pub severity_id: Option<i64>,
16596    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
16597    #[serde(rename = "start_time")]
16598    #[serde(skip_serializing_if = "Option::is_none")]
16599    pub start_time: Option<i64>,
16600    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
16601    #[serde(rename = "start_time_dt")]
16602    #[serde(skip_serializing_if = "Option::is_none")]
16603    pub start_time_dt: Option<String>,
16604    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
16605    #[serde(rename = "status")]
16606    #[serde(skip_serializing_if = "Option::is_none")]
16607    pub status: Option<String>,
16608    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
16609    #[serde(rename = "status_code")]
16610    #[serde(skip_serializing_if = "Option::is_none")]
16611    pub status_code: Option<String>,
16612    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
16613    #[serde(rename = "status_detail")]
16614    #[serde(skip_serializing_if = "Option::is_none")]
16615    pub status_detail: Option<String>,
16616    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
16617    #[serde(rename = "status_id")]
16618    #[serde(skip_serializing_if = "Option::is_none")]
16619    pub status_id: Option<i64>,
16620    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
16621    #[serde(rename = "time")]
16622    #[serde(skip_serializing_if = "Option::is_none")]
16623    pub time: Option<i64>,
16624    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
16625    #[serde(rename = "time_dt")]
16626    #[serde(skip_serializing_if = "Option::is_none")]
16627    pub time_dt: Option<String>,
16628    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
16629    #[serde(rename = "timezone_offset")]
16630    #[serde(skip_serializing_if = "Option::is_none")]
16631    pub timezone_offset: Option<i64>,
16632    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
16633    #[serde(rename = "type_name")]
16634    #[serde(skip_serializing_if = "Option::is_none")]
16635    pub type_name: Option<String>,
16636    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
16637    #[serde(rename = "type_uid")]
16638    #[serde(skip_serializing_if = "Option::is_none")]
16639    pub type_uid: Option<i64>,
16640    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
16641    #[serde(rename = "unmapped")]
16642    #[serde(skip_serializing_if = "Option::is_none")]
16643    pub unmapped: Option<serde_json::Value>,
16644}
16645#[doc = "User Session Query\n\nUser Session Query events report information about existing user sessions.\n\n[UID:5017] Category: discovery | Name: session_query"]
16646#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
16647#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
16648#[serde(default)]
16649#[non_exhaustive]
16650pub struct SessionQuery {
16651    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
16652    #[serde(rename = "action")]
16653    #[serde(skip_serializing_if = "Option::is_none")]
16654    pub action: Option<String>,
16655    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
16656    #[serde(rename = "action_id")]
16657    #[serde(skip_serializing_if = "Option::is_none")]
16658    pub action_id: Option<i64>,
16659    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
16660    #[serde(rename = "activity_id")]
16661    #[serde(skip_serializing_if = "Option::is_none")]
16662    pub activity_id: Option<i64>,
16663    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
16664    #[serde(rename = "activity_name")]
16665    #[serde(skip_serializing_if = "Option::is_none")]
16666    pub activity_name: Option<String>,
16667    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
16668    #[serde(rename = "actor")]
16669    #[serde(skip_serializing_if = "Option::is_none")]
16670    pub actor: Option<Box<Actor>>,
16671    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
16672    #[serde(rename = "api")]
16673    #[serde(skip_serializing_if = "Option::is_none")]
16674    pub api: Option<Box<Api>>,
16675    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
16676    #[serde(rename = "attacks")]
16677    #[serde(skip_serializing_if = "Option::is_none")]
16678    pub attacks: Option<Vec<Attack>>,
16679    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
16680    #[serde(rename = "authorizations")]
16681    #[serde(skip_serializing_if = "Option::is_none")]
16682    pub authorizations: Option<Vec<Authorization>>,
16683    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
16684    #[serde(rename = "category_name")]
16685    #[serde(skip_serializing_if = "Option::is_none")]
16686    pub category_name: Option<String>,
16687    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
16688    #[serde(rename = "category_uid")]
16689    #[serde(skip_serializing_if = "Option::is_none")]
16690    pub category_uid: Option<i64>,
16691    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>User Session Query</code>.\n\noptional"]
16692    #[serde(rename = "class_name")]
16693    #[serde(skip_serializing_if = "Option::is_none")]
16694    pub class_name: Option<String>,
16695    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
16696    #[serde(rename = "class_uid")]
16697    #[serde(skip_serializing_if = "Option::is_none")]
16698    pub class_uid: Option<i64>,
16699    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
16700    #[serde(rename = "cloud")]
16701    #[serde(skip_serializing_if = "Option::is_none")]
16702    pub cloud: Option<Box<Cloud>>,
16703    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
16704    #[serde(rename = "confidence")]
16705    #[serde(skip_serializing_if = "Option::is_none")]
16706    pub confidence: Option<String>,
16707    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
16708    #[serde(rename = "confidence_id")]
16709    #[serde(skip_serializing_if = "Option::is_none")]
16710    pub confidence_id: Option<i64>,
16711    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
16712    #[serde(rename = "confidence_score")]
16713    #[serde(skip_serializing_if = "Option::is_none")]
16714    pub confidence_score: Option<i64>,
16715    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
16716    #[serde(rename = "count")]
16717    #[serde(skip_serializing_if = "Option::is_none")]
16718    pub count: Option<i64>,
16719    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
16720    #[serde(rename = "device")]
16721    #[serde(skip_serializing_if = "Option::is_none")]
16722    pub device: Option<Box<Device>>,
16723    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
16724    #[serde(rename = "disposition")]
16725    #[serde(skip_serializing_if = "Option::is_none")]
16726    pub disposition: Option<String>,
16727    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
16728    #[serde(rename = "disposition_id")]
16729    #[serde(skip_serializing_if = "Option::is_none")]
16730    pub disposition_id: Option<i64>,
16731    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
16732    #[serde(rename = "duration")]
16733    #[serde(skip_serializing_if = "Option::is_none")]
16734    pub duration: Option<i64>,
16735    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
16736    #[serde(rename = "end_time")]
16737    #[serde(skip_serializing_if = "Option::is_none")]
16738    pub end_time: Option<i64>,
16739    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
16740    #[serde(rename = "end_time_dt")]
16741    #[serde(skip_serializing_if = "Option::is_none")]
16742    pub end_time_dt: Option<String>,
16743    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
16744    #[serde(rename = "enrichments")]
16745    #[serde(skip_serializing_if = "Option::is_none")]
16746    pub enrichments: Option<Vec<Enrichment>>,
16747    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
16748    #[serde(rename = "firewall_rule")]
16749    #[serde(skip_serializing_if = "Option::is_none")]
16750    pub firewall_rule: Option<Box<FirewallRule>>,
16751    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
16752    #[serde(rename = "is_alert")]
16753    #[serde(skip_serializing_if = "Option::is_none")]
16754    pub is_alert: Option<bool>,
16755    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
16756    #[serde(rename = "malware")]
16757    #[serde(skip_serializing_if = "Option::is_none")]
16758    pub malware: Option<Vec<Malware>>,
16759    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
16760    #[serde(rename = "malware_scan_info")]
16761    #[serde(skip_serializing_if = "Option::is_none")]
16762    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
16763    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
16764    #[serde(rename = "message")]
16765    #[serde(skip_serializing_if = "Option::is_none")]
16766    pub message: Option<String>,
16767    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
16768    #[serde(rename = "metadata")]
16769    #[serde(skip_serializing_if = "Option::is_none")]
16770    pub metadata: Option<Box<Metadata>>,
16771    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
16772    #[serde(rename = "observables")]
16773    #[serde(skip_serializing_if = "Option::is_none")]
16774    pub observables: Option<Vec<Observable>>,
16775    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
16776    #[serde(rename = "osint")]
16777    #[serde(skip_serializing_if = "Option::is_none")]
16778    pub osint: Option<Vec<Osint>>,
16779    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
16780    #[serde(rename = "policy")]
16781    #[serde(skip_serializing_if = "Option::is_none")]
16782    pub policy: Option<Box<Policy>>,
16783    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
16784    #[serde(rename = "query_info")]
16785    #[serde(skip_serializing_if = "Option::is_none")]
16786    pub query_info: Option<Box<QueryInfo>>,
16787    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
16788    #[serde(rename = "query_result")]
16789    #[serde(skip_serializing_if = "Option::is_none")]
16790    pub query_result: Option<String>,
16791    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
16792    #[serde(rename = "query_result_id")]
16793    #[serde(skip_serializing_if = "Option::is_none")]
16794    pub query_result_id: Option<i64>,
16795    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
16796    #[serde(rename = "raw_data")]
16797    #[serde(skip_serializing_if = "Option::is_none")]
16798    pub raw_data: Option<String>,
16799    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
16800    #[serde(rename = "raw_data_hash")]
16801    #[serde(skip_serializing_if = "Option::is_none")]
16802    pub raw_data_hash: Option<Box<Fingerprint>>,
16803    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
16804    #[serde(rename = "raw_data_size")]
16805    #[serde(skip_serializing_if = "Option::is_none")]
16806    pub raw_data_size: Option<i64>,
16807    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
16808    #[serde(rename = "risk_details")]
16809    #[serde(skip_serializing_if = "Option::is_none")]
16810    pub risk_details: Option<String>,
16811    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
16812    #[serde(rename = "risk_level")]
16813    #[serde(skip_serializing_if = "Option::is_none")]
16814    pub risk_level: Option<String>,
16815    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
16816    #[serde(rename = "risk_level_id")]
16817    #[serde(skip_serializing_if = "Option::is_none")]
16818    pub risk_level_id: Option<i64>,
16819    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
16820    #[serde(rename = "risk_score")]
16821    #[serde(skip_serializing_if = "Option::is_none")]
16822    pub risk_score: Option<i64>,
16823    #[doc = "Session\n\nThe authenticated user or service session.\n\nrequired"]
16824    #[serde(rename = "session")]
16825    #[serde(skip_serializing_if = "Option::is_none")]
16826    pub session: Option<Box<Session>>,
16827    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
16828    #[serde(rename = "severity")]
16829    #[serde(skip_serializing_if = "Option::is_none")]
16830    pub severity: Option<String>,
16831    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
16832    #[serde(rename = "severity_id")]
16833    #[serde(skip_serializing_if = "Option::is_none")]
16834    pub severity_id: Option<i64>,
16835    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
16836    #[serde(rename = "start_time")]
16837    #[serde(skip_serializing_if = "Option::is_none")]
16838    pub start_time: Option<i64>,
16839    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
16840    #[serde(rename = "start_time_dt")]
16841    #[serde(skip_serializing_if = "Option::is_none")]
16842    pub start_time_dt: Option<String>,
16843    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
16844    #[serde(rename = "status")]
16845    #[serde(skip_serializing_if = "Option::is_none")]
16846    pub status: Option<String>,
16847    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
16848    #[serde(rename = "status_code")]
16849    #[serde(skip_serializing_if = "Option::is_none")]
16850    pub status_code: Option<String>,
16851    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
16852    #[serde(rename = "status_detail")]
16853    #[serde(skip_serializing_if = "Option::is_none")]
16854    pub status_detail: Option<String>,
16855    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
16856    #[serde(rename = "status_id")]
16857    #[serde(skip_serializing_if = "Option::is_none")]
16858    pub status_id: Option<i64>,
16859    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
16860    #[serde(rename = "time")]
16861    #[serde(skip_serializing_if = "Option::is_none")]
16862    pub time: Option<i64>,
16863    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
16864    #[serde(rename = "time_dt")]
16865    #[serde(skip_serializing_if = "Option::is_none")]
16866    pub time_dt: Option<String>,
16867    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
16868    #[serde(rename = "timezone_offset")]
16869    #[serde(skip_serializing_if = "Option::is_none")]
16870    pub timezone_offset: Option<i64>,
16871    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
16872    #[serde(rename = "type_name")]
16873    #[serde(skip_serializing_if = "Option::is_none")]
16874    pub type_name: Option<String>,
16875    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
16876    #[serde(rename = "type_uid")]
16877    #[serde(skip_serializing_if = "Option::is_none")]
16878    pub type_uid: Option<i64>,
16879    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
16880    #[serde(rename = "unmapped")]
16881    #[serde(skip_serializing_if = "Option::is_none")]
16882    pub unmapped: Option<serde_json::Value>,
16883}
16884#[doc = "SMB Activity\n\nServer Message Block (SMB) Protocol Activity events report client/server connections sharing resources within the network.\n\n[UID:4006] Category: network | Name: smb_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
16885#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
16886#[serde(default)]
16887#[non_exhaustive]
16888pub struct SmbActivity {
16889    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
16890    #[serde(rename = "action")]
16891    #[serde(skip_serializing_if = "Option::is_none")]
16892    pub action: Option<String>,
16893    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
16894    #[serde(rename = "action_id")]
16895    #[serde(skip_serializing_if = "Option::is_none")]
16896    pub action_id: Option<i64>,
16897    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
16898    #[serde(rename = "activity_id")]
16899    #[serde(skip_serializing_if = "Option::is_none")]
16900    pub activity_id: Option<i64>,
16901    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
16902    #[serde(rename = "activity_name")]
16903    #[serde(skip_serializing_if = "Option::is_none")]
16904    pub activity_name: Option<String>,
16905    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
16906    #[serde(rename = "actor")]
16907    #[serde(skip_serializing_if = "Option::is_none")]
16908    pub actor: Option<Box<Actor>>,
16909    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
16910    #[serde(rename = "api")]
16911    #[serde(skip_serializing_if = "Option::is_none")]
16912    pub api: Option<Box<Api>>,
16913    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
16914    #[serde(rename = "app_name")]
16915    #[serde(skip_serializing_if = "Option::is_none")]
16916    pub app_name: Option<String>,
16917    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
16918    #[serde(rename = "attacks")]
16919    #[serde(skip_serializing_if = "Option::is_none")]
16920    pub attacks: Option<Vec<Attack>>,
16921    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
16922    #[serde(rename = "authorizations")]
16923    #[serde(skip_serializing_if = "Option::is_none")]
16924    pub authorizations: Option<Vec<Authorization>>,
16925    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
16926    #[serde(rename = "category_name")]
16927    #[serde(skip_serializing_if = "Option::is_none")]
16928    pub category_name: Option<String>,
16929    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
16930    #[serde(rename = "category_uid")]
16931    #[serde(skip_serializing_if = "Option::is_none")]
16932    pub category_uid: Option<i64>,
16933    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>SMB Activity</code>.\n\noptional"]
16934    #[serde(rename = "class_name")]
16935    #[serde(skip_serializing_if = "Option::is_none")]
16936    pub class_name: Option<String>,
16937    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
16938    #[serde(rename = "class_uid")]
16939    #[serde(skip_serializing_if = "Option::is_none")]
16940    pub class_uid: Option<i64>,
16941    #[doc = "Client Dialects\n\nThe list of SMB dialects that the client speaks.\n\nrecommended"]
16942    #[serde(rename = "client_dialects")]
16943    #[serde(skip_serializing_if = "Option::is_none")]
16944    pub client_dialects: Option<Vec<String>>,
16945    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
16946    #[serde(rename = "cloud")]
16947    #[serde(skip_serializing_if = "Option::is_none")]
16948    pub cloud: Option<Box<Cloud>>,
16949    #[doc = "Command\n\nThe command name (e.g. SMB2_COMMAND_CREATE, SMB1_COMMAND_WRITE_ANDX).\n\nrecommended"]
16950    #[serde(rename = "command")]
16951    #[serde(skip_serializing_if = "Option::is_none")]
16952    pub command: Option<String>,
16953    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
16954    #[serde(rename = "confidence")]
16955    #[serde(skip_serializing_if = "Option::is_none")]
16956    pub confidence: Option<String>,
16957    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
16958    #[serde(rename = "confidence_id")]
16959    #[serde(skip_serializing_if = "Option::is_none")]
16960    pub confidence_id: Option<i64>,
16961    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
16962    #[serde(rename = "confidence_score")]
16963    #[serde(skip_serializing_if = "Option::is_none")]
16964    pub confidence_score: Option<i64>,
16965    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
16966    #[serde(rename = "connection_info")]
16967    #[serde(skip_serializing_if = "Option::is_none")]
16968    pub connection_info: Option<Box<NetworkConnectionInfo>>,
16969    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
16970    #[serde(rename = "count")]
16971    #[serde(skip_serializing_if = "Option::is_none")]
16972    pub count: Option<i64>,
16973    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
16974    #[serde(rename = "cumulative_traffic")]
16975    #[serde(skip_serializing_if = "Option::is_none")]
16976    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
16977    #[doc = "Distributed Computing Environment/Remote Procedure Call (DCE/RPC)\n\nThe DCE/RPC object describes the remote procedure call system for distributed computing environments.\n\noptional"]
16978    #[serde(rename = "dce_rpc")]
16979    #[serde(skip_serializing_if = "Option::is_none")]
16980    pub dce_rpc: Option<Box<DceRpc>>,
16981    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
16982    #[serde(rename = "device")]
16983    #[serde(skip_serializing_if = "Option::is_none")]
16984    pub device: Option<Box<Device>>,
16985    #[doc = "Dialect\n\nThe negotiated protocol dialect.\n\nrecommended"]
16986    #[serde(rename = "dialect")]
16987    #[serde(skip_serializing_if = "Option::is_none")]
16988    pub dialect: Option<String>,
16989    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
16990    #[serde(rename = "disposition")]
16991    #[serde(skip_serializing_if = "Option::is_none")]
16992    pub disposition: Option<String>,
16993    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
16994    #[serde(rename = "disposition_id")]
16995    #[serde(skip_serializing_if = "Option::is_none")]
16996    pub disposition_id: Option<i64>,
16997    #[doc = "Destination Endpoint\n\nThe responder (server) in a network connection.\n\nrecommended"]
16998    #[serde(rename = "dst_endpoint")]
16999    #[serde(skip_serializing_if = "Option::is_none")]
17000    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
17001    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
17002    #[serde(rename = "duration")]
17003    #[serde(skip_serializing_if = "Option::is_none")]
17004    pub duration: Option<i64>,
17005    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
17006    #[serde(rename = "end_time")]
17007    #[serde(skip_serializing_if = "Option::is_none")]
17008    pub end_time: Option<i64>,
17009    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
17010    #[serde(rename = "end_time_dt")]
17011    #[serde(skip_serializing_if = "Option::is_none")]
17012    pub end_time_dt: Option<String>,
17013    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
17014    #[serde(rename = "enrichments")]
17015    #[serde(skip_serializing_if = "Option::is_none")]
17016    pub enrichments: Option<Vec<Enrichment>>,
17017    #[doc = "File\n\nThe file that is the target of the SMB activity.\n\nrecommended"]
17018    #[serde(rename = "file")]
17019    #[serde(skip_serializing_if = "Option::is_none")]
17020    pub file: Option<Box<File>>,
17021    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
17022    #[serde(rename = "firewall_rule")]
17023    #[serde(skip_serializing_if = "Option::is_none")]
17024    pub firewall_rule: Option<Box<FirewallRule>>,
17025    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
17026    #[serde(rename = "is_alert")]
17027    #[serde(skip_serializing_if = "Option::is_none")]
17028    pub is_alert: Option<bool>,
17029    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
17030    #[serde(rename = "ja4_fingerprint_list")]
17031    #[serde(skip_serializing_if = "Option::is_none")]
17032    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
17033    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
17034    #[serde(rename = "load_balancer")]
17035    #[serde(skip_serializing_if = "Option::is_none")]
17036    pub load_balancer: Option<Box<LoadBalancer>>,
17037    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
17038    #[serde(rename = "malware")]
17039    #[serde(skip_serializing_if = "Option::is_none")]
17040    pub malware: Option<Vec<Malware>>,
17041    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
17042    #[serde(rename = "malware_scan_info")]
17043    #[serde(skip_serializing_if = "Option::is_none")]
17044    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
17045    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
17046    #[serde(rename = "message")]
17047    #[serde(skip_serializing_if = "Option::is_none")]
17048    pub message: Option<String>,
17049    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
17050    #[serde(rename = "metadata")]
17051    #[serde(skip_serializing_if = "Option::is_none")]
17052    pub metadata: Option<Box<Metadata>>,
17053    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
17054    #[serde(rename = "observables")]
17055    #[serde(skip_serializing_if = "Option::is_none")]
17056    pub observables: Option<Vec<Observable>>,
17057    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
17058    #[serde(rename = "observation_point")]
17059    #[serde(skip_serializing_if = "Option::is_none")]
17060    pub observation_point: Option<String>,
17061    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
17062    #[serde(rename = "observation_point_id")]
17063    #[serde(skip_serializing_if = "Option::is_none")]
17064    pub observation_point_id: Option<i64>,
17065    #[doc = "Open Type\n\nIndicates how the file was opened (e.g. normal, delete on close).\n\nrecommended"]
17066    #[serde(rename = "open_type")]
17067    #[serde(skip_serializing_if = "Option::is_none")]
17068    pub open_type: Option<String>,
17069    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
17070    #[serde(rename = "osint")]
17071    #[serde(skip_serializing_if = "Option::is_none")]
17072    pub osint: Option<Vec<Osint>>,
17073    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
17074    #[serde(rename = "policy")]
17075    #[serde(skip_serializing_if = "Option::is_none")]
17076    pub policy: Option<Box<Policy>>,
17077    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
17078    #[serde(rename = "proxy")]
17079    #[serde(skip_serializing_if = "Option::is_none")]
17080    pub proxy: Option<Box<NetworkProxy>>,
17081    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
17082    #[serde(rename = "proxy_connection_info")]
17083    #[serde(skip_serializing_if = "Option::is_none")]
17084    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
17085    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
17086    #[serde(rename = "proxy_endpoint")]
17087    #[serde(skip_serializing_if = "Option::is_none")]
17088    pub proxy_endpoint: Option<Box<NetworkProxy>>,
17089    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
17090    #[serde(rename = "proxy_http_request")]
17091    #[serde(skip_serializing_if = "Option::is_none")]
17092    pub proxy_http_request: Option<Box<HttpRequest>>,
17093    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
17094    #[serde(rename = "proxy_http_response")]
17095    #[serde(skip_serializing_if = "Option::is_none")]
17096    pub proxy_http_response: Option<Box<HttpResponse>>,
17097    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
17098    #[serde(rename = "proxy_tls")]
17099    #[serde(skip_serializing_if = "Option::is_none")]
17100    pub proxy_tls: Option<Box<Tls>>,
17101    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
17102    #[serde(rename = "proxy_traffic")]
17103    #[serde(skip_serializing_if = "Option::is_none")]
17104    pub proxy_traffic: Option<Box<NetworkTraffic>>,
17105    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
17106    #[serde(rename = "raw_data")]
17107    #[serde(skip_serializing_if = "Option::is_none")]
17108    pub raw_data: Option<String>,
17109    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
17110    #[serde(rename = "raw_data_hash")]
17111    #[serde(skip_serializing_if = "Option::is_none")]
17112    pub raw_data_hash: Option<Box<Fingerprint>>,
17113    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
17114    #[serde(rename = "raw_data_size")]
17115    #[serde(skip_serializing_if = "Option::is_none")]
17116    pub raw_data_size: Option<i64>,
17117    #[doc = "API Response Details\n\nThe server response in an SMB network connection.\n\nrecommended"]
17118    #[serde(rename = "response")]
17119    #[serde(skip_serializing_if = "Option::is_none")]
17120    pub response: Option<Box<Response>>,
17121    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
17122    #[serde(rename = "risk_details")]
17123    #[serde(skip_serializing_if = "Option::is_none")]
17124    pub risk_details: Option<String>,
17125    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
17126    #[serde(rename = "risk_level")]
17127    #[serde(skip_serializing_if = "Option::is_none")]
17128    pub risk_level: Option<String>,
17129    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
17130    #[serde(rename = "risk_level_id")]
17131    #[serde(skip_serializing_if = "Option::is_none")]
17132    pub risk_level_id: Option<i64>,
17133    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
17134    #[serde(rename = "risk_score")]
17135    #[serde(skip_serializing_if = "Option::is_none")]
17136    pub risk_score: Option<i64>,
17137    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
17138    #[serde(rename = "severity")]
17139    #[serde(skip_serializing_if = "Option::is_none")]
17140    pub severity: Option<String>,
17141    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
17142    #[serde(rename = "severity_id")]
17143    #[serde(skip_serializing_if = "Option::is_none")]
17144    pub severity_id: Option<i64>,
17145    #[doc = "Share\n\nThe SMB share name.\n\nrecommended"]
17146    #[serde(rename = "share")]
17147    #[serde(skip_serializing_if = "Option::is_none")]
17148    pub share: Option<String>,
17149    #[doc = "Share Type\n\nThe SMB share type, normalized to the caption of the share_type_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
17150    #[serde(rename = "share_type")]
17151    #[serde(skip_serializing_if = "Option::is_none")]
17152    pub share_type: Option<String>,
17153    #[doc = "Share Type ID\n\nThe normalized identifier of the SMB share type.\n\nrecommended"]
17154    #[serde(rename = "share_type_id")]
17155    #[serde(skip_serializing_if = "Option::is_none")]
17156    pub share_type_id: Option<i64>,
17157    #[doc = "Source Endpoint\n\nThe initiator (client) of the network connection.\n\nrecommended"]
17158    #[serde(rename = "src_endpoint")]
17159    #[serde(skip_serializing_if = "Option::is_none")]
17160    pub src_endpoint: Option<Box<NetworkEndpoint>>,
17161    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
17162    #[serde(rename = "start_time")]
17163    #[serde(skip_serializing_if = "Option::is_none")]
17164    pub start_time: Option<i64>,
17165    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
17166    #[serde(rename = "start_time_dt")]
17167    #[serde(skip_serializing_if = "Option::is_none")]
17168    pub start_time_dt: Option<String>,
17169    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
17170    #[serde(rename = "status")]
17171    #[serde(skip_serializing_if = "Option::is_none")]
17172    pub status: Option<String>,
17173    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
17174    #[serde(rename = "status_code")]
17175    #[serde(skip_serializing_if = "Option::is_none")]
17176    pub status_code: Option<String>,
17177    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
17178    #[serde(rename = "status_detail")]
17179    #[serde(skip_serializing_if = "Option::is_none")]
17180    pub status_detail: Option<String>,
17181    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
17182    #[serde(rename = "status_id")]
17183    #[serde(skip_serializing_if = "Option::is_none")]
17184    pub status_id: Option<i64>,
17185    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
17186    #[serde(rename = "time")]
17187    #[serde(skip_serializing_if = "Option::is_none")]
17188    pub time: Option<i64>,
17189    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
17190    #[serde(rename = "time_dt")]
17191    #[serde(skip_serializing_if = "Option::is_none")]
17192    pub time_dt: Option<String>,
17193    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
17194    #[serde(rename = "timezone_offset")]
17195    #[serde(skip_serializing_if = "Option::is_none")]
17196    pub timezone_offset: Option<i64>,
17197    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
17198    #[serde(rename = "tls")]
17199    #[serde(skip_serializing_if = "Option::is_none")]
17200    pub tls: Option<Box<Tls>>,
17201    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
17202    #[serde(rename = "traffic")]
17203    #[serde(skip_serializing_if = "Option::is_none")]
17204    pub traffic: Option<Box<NetworkTraffic>>,
17205    #[doc = "Tree UID\n\nThe tree id is a unique SMB identifier which represents an open connection to a share.\n\nrecommended"]
17206    #[serde(rename = "tree_uid")]
17207    #[serde(skip_serializing_if = "Option::is_none")]
17208    pub tree_uid: Option<String>,
17209    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
17210    #[serde(rename = "type_name")]
17211    #[serde(skip_serializing_if = "Option::is_none")]
17212    pub type_name: Option<String>,
17213    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
17214    #[serde(rename = "type_uid")]
17215    #[serde(skip_serializing_if = "Option::is_none")]
17216    pub type_uid: Option<i64>,
17217    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
17218    #[serde(rename = "unmapped")]
17219    #[serde(skip_serializing_if = "Option::is_none")]
17220    pub unmapped: Option<serde_json::Value>,
17221}
17222#[doc = "Software Inventory Info\n\nSoftware Inventory Info events report device software inventory data that is either logged or proactively collected. For example, when collecting device information from a CMDB or running a network sweep of connected devices.\n\n[UID:5020] Category: discovery | Name: software_info"]
17223#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
17224#[serde(default)]
17225#[non_exhaustive]
17226pub struct SoftwareInfo {
17227    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
17228    #[serde(rename = "action")]
17229    #[serde(skip_serializing_if = "Option::is_none")]
17230    pub action: Option<String>,
17231    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
17232    #[serde(rename = "action_id")]
17233    #[serde(skip_serializing_if = "Option::is_none")]
17234    pub action_id: Option<i64>,
17235    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
17236    #[serde(rename = "activity_id")]
17237    #[serde(skip_serializing_if = "Option::is_none")]
17238    pub activity_id: Option<i64>,
17239    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
17240    #[serde(rename = "activity_name")]
17241    #[serde(skip_serializing_if = "Option::is_none")]
17242    pub activity_name: Option<String>,
17243    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
17244    #[serde(rename = "actor")]
17245    #[serde(skip_serializing_if = "Option::is_none")]
17246    pub actor: Option<Box<Actor>>,
17247    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
17248    #[serde(rename = "api")]
17249    #[serde(skip_serializing_if = "Option::is_none")]
17250    pub api: Option<Box<Api>>,
17251    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
17252    #[serde(rename = "attacks")]
17253    #[serde(skip_serializing_if = "Option::is_none")]
17254    pub attacks: Option<Vec<Attack>>,
17255    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
17256    #[serde(rename = "authorizations")]
17257    #[serde(skip_serializing_if = "Option::is_none")]
17258    pub authorizations: Option<Vec<Authorization>>,
17259    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
17260    #[serde(rename = "category_name")]
17261    #[serde(skip_serializing_if = "Option::is_none")]
17262    pub category_name: Option<String>,
17263    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
17264    #[serde(rename = "category_uid")]
17265    #[serde(skip_serializing_if = "Option::is_none")]
17266    pub category_uid: Option<i64>,
17267    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Software Inventory Info</code>.\n\noptional"]
17268    #[serde(rename = "class_name")]
17269    #[serde(skip_serializing_if = "Option::is_none")]
17270    pub class_name: Option<String>,
17271    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
17272    #[serde(rename = "class_uid")]
17273    #[serde(skip_serializing_if = "Option::is_none")]
17274    pub class_uid: Option<i64>,
17275    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
17276    #[serde(rename = "cloud")]
17277    #[serde(skip_serializing_if = "Option::is_none")]
17278    pub cloud: Option<Box<Cloud>>,
17279    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
17280    #[serde(rename = "confidence")]
17281    #[serde(skip_serializing_if = "Option::is_none")]
17282    pub confidence: Option<String>,
17283    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
17284    #[serde(rename = "confidence_id")]
17285    #[serde(skip_serializing_if = "Option::is_none")]
17286    pub confidence_id: Option<i64>,
17287    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
17288    #[serde(rename = "confidence_score")]
17289    #[serde(skip_serializing_if = "Option::is_none")]
17290    pub confidence_score: Option<i64>,
17291    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
17292    #[serde(rename = "count")]
17293    #[serde(skip_serializing_if = "Option::is_none")]
17294    pub count: Option<i64>,
17295    #[doc = "Device\n\nThe device that is being discovered by an inventory process.\n\nrequired"]
17296    #[serde(rename = "device")]
17297    #[serde(skip_serializing_if = "Option::is_none")]
17298    pub device: Option<Box<Device>>,
17299    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
17300    #[serde(rename = "disposition")]
17301    #[serde(skip_serializing_if = "Option::is_none")]
17302    pub disposition: Option<String>,
17303    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
17304    #[serde(rename = "disposition_id")]
17305    #[serde(skip_serializing_if = "Option::is_none")]
17306    pub disposition_id: Option<i64>,
17307    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
17308    #[serde(rename = "duration")]
17309    #[serde(skip_serializing_if = "Option::is_none")]
17310    pub duration: Option<i64>,
17311    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
17312    #[serde(rename = "end_time")]
17313    #[serde(skip_serializing_if = "Option::is_none")]
17314    pub end_time: Option<i64>,
17315    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
17316    #[serde(rename = "end_time_dt")]
17317    #[serde(skip_serializing_if = "Option::is_none")]
17318    pub end_time_dt: Option<String>,
17319    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
17320    #[serde(rename = "enrichments")]
17321    #[serde(skip_serializing_if = "Option::is_none")]
17322    pub enrichments: Option<Vec<Enrichment>>,
17323    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
17324    #[serde(rename = "firewall_rule")]
17325    #[serde(skip_serializing_if = "Option::is_none")]
17326    pub firewall_rule: Option<Box<FirewallRule>>,
17327    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
17328    #[serde(rename = "is_alert")]
17329    #[serde(skip_serializing_if = "Option::is_none")]
17330    pub is_alert: Option<bool>,
17331    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
17332    #[serde(rename = "malware")]
17333    #[serde(skip_serializing_if = "Option::is_none")]
17334    pub malware: Option<Vec<Malware>>,
17335    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
17336    #[serde(rename = "malware_scan_info")]
17337    #[serde(skip_serializing_if = "Option::is_none")]
17338    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
17339    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
17340    #[serde(rename = "message")]
17341    #[serde(skip_serializing_if = "Option::is_none")]
17342    pub message: Option<String>,
17343    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
17344    #[serde(rename = "metadata")]
17345    #[serde(skip_serializing_if = "Option::is_none")]
17346    pub metadata: Option<Box<Metadata>>,
17347    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
17348    #[serde(rename = "observables")]
17349    #[serde(skip_serializing_if = "Option::is_none")]
17350    pub observables: Option<Vec<Observable>>,
17351    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
17352    #[serde(rename = "osint")]
17353    #[serde(skip_serializing_if = "Option::is_none")]
17354    pub osint: Option<Vec<Osint>>,
17355    #[doc = "Software Package\n\nThe device software that is being discovered by an inventory process.\n\nrecommended"]
17356    #[serde(rename = "package")]
17357    #[serde(skip_serializing_if = "Option::is_none")]
17358    pub package: Option<Box<Package>>,
17359    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
17360    #[serde(rename = "policy")]
17361    #[serde(skip_serializing_if = "Option::is_none")]
17362    pub policy: Option<Box<Policy>>,
17363    #[doc = "Product\n\nAdditional product attributes that have been discovered or enriched from a catalog or other external source.\n\noptional"]
17364    #[serde(rename = "product")]
17365    #[serde(skip_serializing_if = "Option::is_none")]
17366    pub product: Option<Box<Product>>,
17367    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
17368    #[serde(rename = "raw_data")]
17369    #[serde(skip_serializing_if = "Option::is_none")]
17370    pub raw_data: Option<String>,
17371    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
17372    #[serde(rename = "raw_data_hash")]
17373    #[serde(skip_serializing_if = "Option::is_none")]
17374    pub raw_data_hash: Option<Box<Fingerprint>>,
17375    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
17376    #[serde(rename = "raw_data_size")]
17377    #[serde(skip_serializing_if = "Option::is_none")]
17378    pub raw_data_size: Option<i64>,
17379    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
17380    #[serde(rename = "risk_details")]
17381    #[serde(skip_serializing_if = "Option::is_none")]
17382    pub risk_details: Option<String>,
17383    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
17384    #[serde(rename = "risk_level")]
17385    #[serde(skip_serializing_if = "Option::is_none")]
17386    pub risk_level: Option<String>,
17387    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
17388    #[serde(rename = "risk_level_id")]
17389    #[serde(skip_serializing_if = "Option::is_none")]
17390    pub risk_level_id: Option<i64>,
17391    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
17392    #[serde(rename = "risk_score")]
17393    #[serde(skip_serializing_if = "Option::is_none")]
17394    pub risk_score: Option<i64>,
17395    #[doc = "Software Bill Of Materials\n\nThe Software Bill of Materials (SBOM) of the device software that is being discovered by an inventory process.\n\nrecommended"]
17396    #[serde(rename = "sbom")]
17397    #[serde(skip_serializing_if = "Option::is_none")]
17398    pub sbom: Option<Box<Sbom>>,
17399    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
17400    #[serde(rename = "severity")]
17401    #[serde(skip_serializing_if = "Option::is_none")]
17402    pub severity: Option<String>,
17403    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
17404    #[serde(rename = "severity_id")]
17405    #[serde(skip_serializing_if = "Option::is_none")]
17406    pub severity_id: Option<i64>,
17407    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
17408    #[serde(rename = "start_time")]
17409    #[serde(skip_serializing_if = "Option::is_none")]
17410    pub start_time: Option<i64>,
17411    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
17412    #[serde(rename = "start_time_dt")]
17413    #[serde(skip_serializing_if = "Option::is_none")]
17414    pub start_time_dt: Option<String>,
17415    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
17416    #[serde(rename = "status")]
17417    #[serde(skip_serializing_if = "Option::is_none")]
17418    pub status: Option<String>,
17419    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
17420    #[serde(rename = "status_code")]
17421    #[serde(skip_serializing_if = "Option::is_none")]
17422    pub status_code: Option<String>,
17423    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
17424    #[serde(rename = "status_detail")]
17425    #[serde(skip_serializing_if = "Option::is_none")]
17426    pub status_detail: Option<String>,
17427    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
17428    #[serde(rename = "status_id")]
17429    #[serde(skip_serializing_if = "Option::is_none")]
17430    pub status_id: Option<i64>,
17431    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
17432    #[serde(rename = "time")]
17433    #[serde(skip_serializing_if = "Option::is_none")]
17434    pub time: Option<i64>,
17435    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
17436    #[serde(rename = "time_dt")]
17437    #[serde(skip_serializing_if = "Option::is_none")]
17438    pub time_dt: Option<String>,
17439    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
17440    #[serde(rename = "timezone_offset")]
17441    #[serde(skip_serializing_if = "Option::is_none")]
17442    pub timezone_offset: Option<i64>,
17443    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
17444    #[serde(rename = "type_name")]
17445    #[serde(skip_serializing_if = "Option::is_none")]
17446    pub type_name: Option<String>,
17447    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
17448    #[serde(rename = "type_uid")]
17449    #[serde(skip_serializing_if = "Option::is_none")]
17450    pub type_uid: Option<i64>,
17451    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
17452    #[serde(rename = "unmapped")]
17453    #[serde(skip_serializing_if = "Option::is_none")]
17454    pub unmapped: Option<serde_json::Value>,
17455}
17456#[doc = "SSH Activity\n\nSSH Activity events report remote client connections to a server using the Secure Shell (SSH) Protocol.\n\n[UID:4007] Category: network | Name: ssh_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
17457#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
17458#[serde(default)]
17459#[non_exhaustive]
17460pub struct SshActivity {
17461    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
17462    #[serde(rename = "action")]
17463    #[serde(skip_serializing_if = "Option::is_none")]
17464    pub action: Option<String>,
17465    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
17466    #[serde(rename = "action_id")]
17467    #[serde(skip_serializing_if = "Option::is_none")]
17468    pub action_id: Option<i64>,
17469    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
17470    #[serde(rename = "activity_id")]
17471    #[serde(skip_serializing_if = "Option::is_none")]
17472    pub activity_id: Option<i64>,
17473    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
17474    #[serde(rename = "activity_name")]
17475    #[serde(skip_serializing_if = "Option::is_none")]
17476    pub activity_name: Option<String>,
17477    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
17478    #[serde(rename = "actor")]
17479    #[serde(skip_serializing_if = "Option::is_none")]
17480    pub actor: Option<Box<Actor>>,
17481    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
17482    #[serde(rename = "api")]
17483    #[serde(skip_serializing_if = "Option::is_none")]
17484    pub api: Option<Box<Api>>,
17485    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
17486    #[serde(rename = "app_name")]
17487    #[serde(skip_serializing_if = "Option::is_none")]
17488    pub app_name: Option<String>,
17489    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
17490    #[serde(rename = "attacks")]
17491    #[serde(skip_serializing_if = "Option::is_none")]
17492    pub attacks: Option<Vec<Attack>>,
17493    #[doc = "Authentication Type\n\nThe SSH authentication type, normalized to the caption of 'auth_type_id'. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
17494    #[serde(rename = "auth_type")]
17495    #[serde(skip_serializing_if = "Option::is_none")]
17496    pub auth_type: Option<String>,
17497    #[doc = "Authentication Type ID\n\nThe normalized identifier of the SSH authentication type.\n\nrecommended"]
17498    #[serde(rename = "auth_type_id")]
17499    #[serde(skip_serializing_if = "Option::is_none")]
17500    pub auth_type_id: Option<i64>,
17501    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
17502    #[serde(rename = "authorizations")]
17503    #[serde(skip_serializing_if = "Option::is_none")]
17504    pub authorizations: Option<Vec<Authorization>>,
17505    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
17506    #[serde(rename = "category_name")]
17507    #[serde(skip_serializing_if = "Option::is_none")]
17508    pub category_name: Option<String>,
17509    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
17510    #[serde(rename = "category_uid")]
17511    #[serde(skip_serializing_if = "Option::is_none")]
17512    pub category_uid: Option<i64>,
17513    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>SSH Activity</code>.\n\noptional"]
17514    #[serde(rename = "class_name")]
17515    #[serde(skip_serializing_if = "Option::is_none")]
17516    pub class_name: Option<String>,
17517    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
17518    #[serde(rename = "class_uid")]
17519    #[serde(skip_serializing_if = "Option::is_none")]
17520    pub class_uid: Option<i64>,
17521    #[doc = "Client HASSH\n\nThe Client HASSH fingerprinting object.\n\nrecommended"]
17522    #[serde(rename = "client_hassh")]
17523    #[serde(skip_serializing_if = "Option::is_none")]
17524    pub client_hassh: Option<Box<Hassh>>,
17525    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
17526    #[serde(rename = "cloud")]
17527    #[serde(skip_serializing_if = "Option::is_none")]
17528    pub cloud: Option<Box<Cloud>>,
17529    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
17530    #[serde(rename = "confidence")]
17531    #[serde(skip_serializing_if = "Option::is_none")]
17532    pub confidence: Option<String>,
17533    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
17534    #[serde(rename = "confidence_id")]
17535    #[serde(skip_serializing_if = "Option::is_none")]
17536    pub confidence_id: Option<i64>,
17537    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
17538    #[serde(rename = "confidence_score")]
17539    #[serde(skip_serializing_if = "Option::is_none")]
17540    pub confidence_score: Option<i64>,
17541    #[doc = "Connection Info\n\nThe network connection information.\n\nrecommended"]
17542    #[serde(rename = "connection_info")]
17543    #[serde(skip_serializing_if = "Option::is_none")]
17544    pub connection_info: Option<Box<NetworkConnectionInfo>>,
17545    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
17546    #[serde(rename = "count")]
17547    #[serde(skip_serializing_if = "Option::is_none")]
17548    pub count: Option<i64>,
17549    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
17550    #[serde(rename = "cumulative_traffic")]
17551    #[serde(skip_serializing_if = "Option::is_none")]
17552    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
17553    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
17554    #[serde(rename = "device")]
17555    #[serde(skip_serializing_if = "Option::is_none")]
17556    pub device: Option<Box<Device>>,
17557    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
17558    #[serde(rename = "disposition")]
17559    #[serde(skip_serializing_if = "Option::is_none")]
17560    pub disposition: Option<String>,
17561    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
17562    #[serde(rename = "disposition_id")]
17563    #[serde(skip_serializing_if = "Option::is_none")]
17564    pub disposition_id: Option<i64>,
17565    #[doc = "Destination Endpoint\n\nThe responder (server) in a network connection.\n\nrecommended"]
17566    #[serde(rename = "dst_endpoint")]
17567    #[serde(skip_serializing_if = "Option::is_none")]
17568    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
17569    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
17570    #[serde(rename = "duration")]
17571    #[serde(skip_serializing_if = "Option::is_none")]
17572    pub duration: Option<i64>,
17573    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
17574    #[serde(rename = "end_time")]
17575    #[serde(skip_serializing_if = "Option::is_none")]
17576    pub end_time: Option<i64>,
17577    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
17578    #[serde(rename = "end_time_dt")]
17579    #[serde(skip_serializing_if = "Option::is_none")]
17580    pub end_time_dt: Option<String>,
17581    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
17582    #[serde(rename = "enrichments")]
17583    #[serde(skip_serializing_if = "Option::is_none")]
17584    pub enrichments: Option<Vec<Enrichment>>,
17585    #[doc = "File\n\nThe file that is the target of the SSH activity.\n\noptional"]
17586    #[serde(rename = "file")]
17587    #[serde(skip_serializing_if = "Option::is_none")]
17588    pub file: Option<Box<File>>,
17589    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
17590    #[serde(rename = "firewall_rule")]
17591    #[serde(skip_serializing_if = "Option::is_none")]
17592    pub firewall_rule: Option<Box<FirewallRule>>,
17593    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
17594    #[serde(rename = "is_alert")]
17595    #[serde(skip_serializing_if = "Option::is_none")]
17596    pub is_alert: Option<bool>,
17597    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
17598    #[serde(rename = "ja4_fingerprint_list")]
17599    #[serde(skip_serializing_if = "Option::is_none")]
17600    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
17601    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
17602    #[serde(rename = "load_balancer")]
17603    #[serde(skip_serializing_if = "Option::is_none")]
17604    pub load_balancer: Option<Box<LoadBalancer>>,
17605    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
17606    #[serde(rename = "malware")]
17607    #[serde(skip_serializing_if = "Option::is_none")]
17608    pub malware: Option<Vec<Malware>>,
17609    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
17610    #[serde(rename = "malware_scan_info")]
17611    #[serde(skip_serializing_if = "Option::is_none")]
17612    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
17613    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
17614    #[serde(rename = "message")]
17615    #[serde(skip_serializing_if = "Option::is_none")]
17616    pub message: Option<String>,
17617    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
17618    #[serde(rename = "metadata")]
17619    #[serde(skip_serializing_if = "Option::is_none")]
17620    pub metadata: Option<Box<Metadata>>,
17621    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
17622    #[serde(rename = "observables")]
17623    #[serde(skip_serializing_if = "Option::is_none")]
17624    pub observables: Option<Vec<Observable>>,
17625    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
17626    #[serde(rename = "observation_point")]
17627    #[serde(skip_serializing_if = "Option::is_none")]
17628    pub observation_point: Option<String>,
17629    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
17630    #[serde(rename = "observation_point_id")]
17631    #[serde(skip_serializing_if = "Option::is_none")]
17632    pub observation_point_id: Option<i64>,
17633    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
17634    #[serde(rename = "osint")]
17635    #[serde(skip_serializing_if = "Option::is_none")]
17636    pub osint: Option<Vec<Osint>>,
17637    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
17638    #[serde(rename = "policy")]
17639    #[serde(skip_serializing_if = "Option::is_none")]
17640    pub policy: Option<Box<Policy>>,
17641    #[doc = "SSH Version\n\nThe Secure Shell Protocol version.\n\nrecommended"]
17642    #[serde(rename = "protocol_ver")]
17643    #[serde(skip_serializing_if = "Option::is_none")]
17644    pub protocol_ver: Option<String>,
17645    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
17646    #[serde(rename = "proxy")]
17647    #[serde(skip_serializing_if = "Option::is_none")]
17648    pub proxy: Option<Box<NetworkProxy>>,
17649    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
17650    #[serde(rename = "proxy_connection_info")]
17651    #[serde(skip_serializing_if = "Option::is_none")]
17652    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
17653    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
17654    #[serde(rename = "proxy_endpoint")]
17655    #[serde(skip_serializing_if = "Option::is_none")]
17656    pub proxy_endpoint: Option<Box<NetworkProxy>>,
17657    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
17658    #[serde(rename = "proxy_http_request")]
17659    #[serde(skip_serializing_if = "Option::is_none")]
17660    pub proxy_http_request: Option<Box<HttpRequest>>,
17661    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
17662    #[serde(rename = "proxy_http_response")]
17663    #[serde(skip_serializing_if = "Option::is_none")]
17664    pub proxy_http_response: Option<Box<HttpResponse>>,
17665    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
17666    #[serde(rename = "proxy_tls")]
17667    #[serde(skip_serializing_if = "Option::is_none")]
17668    pub proxy_tls: Option<Box<Tls>>,
17669    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
17670    #[serde(rename = "proxy_traffic")]
17671    #[serde(skip_serializing_if = "Option::is_none")]
17672    pub proxy_traffic: Option<Box<NetworkTraffic>>,
17673    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
17674    #[serde(rename = "raw_data")]
17675    #[serde(skip_serializing_if = "Option::is_none")]
17676    pub raw_data: Option<String>,
17677    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
17678    #[serde(rename = "raw_data_hash")]
17679    #[serde(skip_serializing_if = "Option::is_none")]
17680    pub raw_data_hash: Option<Box<Fingerprint>>,
17681    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
17682    #[serde(rename = "raw_data_size")]
17683    #[serde(skip_serializing_if = "Option::is_none")]
17684    pub raw_data_size: Option<i64>,
17685    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
17686    #[serde(rename = "risk_details")]
17687    #[serde(skip_serializing_if = "Option::is_none")]
17688    pub risk_details: Option<String>,
17689    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
17690    #[serde(rename = "risk_level")]
17691    #[serde(skip_serializing_if = "Option::is_none")]
17692    pub risk_level: Option<String>,
17693    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
17694    #[serde(rename = "risk_level_id")]
17695    #[serde(skip_serializing_if = "Option::is_none")]
17696    pub risk_level_id: Option<i64>,
17697    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
17698    #[serde(rename = "risk_score")]
17699    #[serde(skip_serializing_if = "Option::is_none")]
17700    pub risk_score: Option<i64>,
17701    #[doc = "Server HASSH\n\nThe Server HASSH fingerprinting object.\n\nrecommended"]
17702    #[serde(rename = "server_hassh")]
17703    #[serde(skip_serializing_if = "Option::is_none")]
17704    pub server_hassh: Option<Box<Hassh>>,
17705    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
17706    #[serde(rename = "severity")]
17707    #[serde(skip_serializing_if = "Option::is_none")]
17708    pub severity: Option<String>,
17709    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
17710    #[serde(rename = "severity_id")]
17711    #[serde(skip_serializing_if = "Option::is_none")]
17712    pub severity_id: Option<i64>,
17713    #[doc = "Source Endpoint\n\nThe initiator (client) of the network connection.\n\nrecommended"]
17714    #[serde(rename = "src_endpoint")]
17715    #[serde(skip_serializing_if = "Option::is_none")]
17716    pub src_endpoint: Option<Box<NetworkEndpoint>>,
17717    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
17718    #[serde(rename = "start_time")]
17719    #[serde(skip_serializing_if = "Option::is_none")]
17720    pub start_time: Option<i64>,
17721    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
17722    #[serde(rename = "start_time_dt")]
17723    #[serde(skip_serializing_if = "Option::is_none")]
17724    pub start_time_dt: Option<String>,
17725    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
17726    #[serde(rename = "status")]
17727    #[serde(skip_serializing_if = "Option::is_none")]
17728    pub status: Option<String>,
17729    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
17730    #[serde(rename = "status_code")]
17731    #[serde(skip_serializing_if = "Option::is_none")]
17732    pub status_code: Option<String>,
17733    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
17734    #[serde(rename = "status_detail")]
17735    #[serde(skip_serializing_if = "Option::is_none")]
17736    pub status_detail: Option<String>,
17737    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
17738    #[serde(rename = "status_id")]
17739    #[serde(skip_serializing_if = "Option::is_none")]
17740    pub status_id: Option<i64>,
17741    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
17742    #[serde(rename = "time")]
17743    #[serde(skip_serializing_if = "Option::is_none")]
17744    pub time: Option<i64>,
17745    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
17746    #[serde(rename = "time_dt")]
17747    #[serde(skip_serializing_if = "Option::is_none")]
17748    pub time_dt: Option<String>,
17749    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
17750    #[serde(rename = "timezone_offset")]
17751    #[serde(skip_serializing_if = "Option::is_none")]
17752    pub timezone_offset: Option<i64>,
17753    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
17754    #[serde(rename = "tls")]
17755    #[serde(skip_serializing_if = "Option::is_none")]
17756    pub tls: Option<Box<Tls>>,
17757    #[doc = "Traffic\n\nThe network traffic for this observation period. Use when reporting: (1) delta values (bytes/packets transferred since the last observation), (2) instantaneous measurements at a specific point in time, or (3) standalone single-event metrics. This attribute represents a point-in-time measurement or incremental change, not a running total. For accumulated totals across multiple observations or the lifetime of a flow, use <code>cumulative_traffic</code> instead.\n\nrecommended"]
17758    #[serde(rename = "traffic")]
17759    #[serde(skip_serializing_if = "Option::is_none")]
17760    pub traffic: Option<Box<NetworkTraffic>>,
17761    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
17762    #[serde(rename = "type_name")]
17763    #[serde(skip_serializing_if = "Option::is_none")]
17764    pub type_name: Option<String>,
17765    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
17766    #[serde(rename = "type_uid")]
17767    #[serde(skip_serializing_if = "Option::is_none")]
17768    pub type_uid: Option<i64>,
17769    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
17770    #[serde(rename = "unmapped")]
17771    #[serde(skip_serializing_if = "Option::is_none")]
17772    pub unmapped: Option<serde_json::Value>,
17773}
17774#[doc = "Startup Item Query\n\nStartup Item Query events report information about discovered items, e.g., application components that are generally configured to run automatically.\n\n[UID:5022] Category: discovery | Name: startup_item_query"]
17775#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
17776#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
17777#[serde(default)]
17778#[non_exhaustive]
17779pub struct StartupItemQuery {
17780    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
17781    #[serde(rename = "action")]
17782    #[serde(skip_serializing_if = "Option::is_none")]
17783    pub action: Option<String>,
17784    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
17785    #[serde(rename = "action_id")]
17786    #[serde(skip_serializing_if = "Option::is_none")]
17787    pub action_id: Option<i64>,
17788    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
17789    #[serde(rename = "activity_id")]
17790    #[serde(skip_serializing_if = "Option::is_none")]
17791    pub activity_id: Option<i64>,
17792    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
17793    #[serde(rename = "activity_name")]
17794    #[serde(skip_serializing_if = "Option::is_none")]
17795    pub activity_name: Option<String>,
17796    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
17797    #[serde(rename = "actor")]
17798    #[serde(skip_serializing_if = "Option::is_none")]
17799    pub actor: Option<Box<Actor>>,
17800    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
17801    #[serde(rename = "api")]
17802    #[serde(skip_serializing_if = "Option::is_none")]
17803    pub api: Option<Box<Api>>,
17804    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
17805    #[serde(rename = "attacks")]
17806    #[serde(skip_serializing_if = "Option::is_none")]
17807    pub attacks: Option<Vec<Attack>>,
17808    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
17809    #[serde(rename = "authorizations")]
17810    #[serde(skip_serializing_if = "Option::is_none")]
17811    pub authorizations: Option<Vec<Authorization>>,
17812    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
17813    #[serde(rename = "category_name")]
17814    #[serde(skip_serializing_if = "Option::is_none")]
17815    pub category_name: Option<String>,
17816    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
17817    #[serde(rename = "category_uid")]
17818    #[serde(skip_serializing_if = "Option::is_none")]
17819    pub category_uid: Option<i64>,
17820    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Startup Item Query</code>.\n\noptional"]
17821    #[serde(rename = "class_name")]
17822    #[serde(skip_serializing_if = "Option::is_none")]
17823    pub class_name: Option<String>,
17824    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
17825    #[serde(rename = "class_uid")]
17826    #[serde(skip_serializing_if = "Option::is_none")]
17827    pub class_uid: Option<i64>,
17828    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
17829    #[serde(rename = "cloud")]
17830    #[serde(skip_serializing_if = "Option::is_none")]
17831    pub cloud: Option<Box<Cloud>>,
17832    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
17833    #[serde(rename = "confidence")]
17834    #[serde(skip_serializing_if = "Option::is_none")]
17835    pub confidence: Option<String>,
17836    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
17837    #[serde(rename = "confidence_id")]
17838    #[serde(skip_serializing_if = "Option::is_none")]
17839    pub confidence_id: Option<i64>,
17840    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
17841    #[serde(rename = "confidence_score")]
17842    #[serde(skip_serializing_if = "Option::is_none")]
17843    pub confidence_score: Option<i64>,
17844    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
17845    #[serde(rename = "count")]
17846    #[serde(skip_serializing_if = "Option::is_none")]
17847    pub count: Option<i64>,
17848    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
17849    #[serde(rename = "device")]
17850    #[serde(skip_serializing_if = "Option::is_none")]
17851    pub device: Option<Box<Device>>,
17852    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
17853    #[serde(rename = "disposition")]
17854    #[serde(skip_serializing_if = "Option::is_none")]
17855    pub disposition: Option<String>,
17856    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
17857    #[serde(rename = "disposition_id")]
17858    #[serde(skip_serializing_if = "Option::is_none")]
17859    pub disposition_id: Option<i64>,
17860    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
17861    #[serde(rename = "duration")]
17862    #[serde(skip_serializing_if = "Option::is_none")]
17863    pub duration: Option<i64>,
17864    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
17865    #[serde(rename = "end_time")]
17866    #[serde(skip_serializing_if = "Option::is_none")]
17867    pub end_time: Option<i64>,
17868    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
17869    #[serde(rename = "end_time_dt")]
17870    #[serde(skip_serializing_if = "Option::is_none")]
17871    pub end_time_dt: Option<String>,
17872    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
17873    #[serde(rename = "enrichments")]
17874    #[serde(skip_serializing_if = "Option::is_none")]
17875    pub enrichments: Option<Vec<Enrichment>>,
17876    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
17877    #[serde(rename = "firewall_rule")]
17878    #[serde(skip_serializing_if = "Option::is_none")]
17879    pub firewall_rule: Option<Box<FirewallRule>>,
17880    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
17881    #[serde(rename = "is_alert")]
17882    #[serde(skip_serializing_if = "Option::is_none")]
17883    pub is_alert: Option<bool>,
17884    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
17885    #[serde(rename = "malware")]
17886    #[serde(skip_serializing_if = "Option::is_none")]
17887    pub malware: Option<Vec<Malware>>,
17888    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
17889    #[serde(rename = "malware_scan_info")]
17890    #[serde(skip_serializing_if = "Option::is_none")]
17891    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
17892    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
17893    #[serde(rename = "message")]
17894    #[serde(skip_serializing_if = "Option::is_none")]
17895    pub message: Option<String>,
17896    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
17897    #[serde(rename = "metadata")]
17898    #[serde(skip_serializing_if = "Option::is_none")]
17899    pub metadata: Option<Box<Metadata>>,
17900    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
17901    #[serde(rename = "observables")]
17902    #[serde(skip_serializing_if = "Option::is_none")]
17903    pub observables: Option<Vec<Observable>>,
17904    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
17905    #[serde(rename = "osint")]
17906    #[serde(skip_serializing_if = "Option::is_none")]
17907    pub osint: Option<Vec<Osint>>,
17908    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
17909    #[serde(rename = "policy")]
17910    #[serde(skip_serializing_if = "Option::is_none")]
17911    pub policy: Option<Box<Policy>>,
17912    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
17913    #[serde(rename = "query_info")]
17914    #[serde(skip_serializing_if = "Option::is_none")]
17915    pub query_info: Option<Box<QueryInfo>>,
17916    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
17917    #[serde(rename = "query_result")]
17918    #[serde(skip_serializing_if = "Option::is_none")]
17919    pub query_result: Option<String>,
17920    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
17921    #[serde(rename = "query_result_id")]
17922    #[serde(skip_serializing_if = "Option::is_none")]
17923    pub query_result_id: Option<i64>,
17924    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
17925    #[serde(rename = "raw_data")]
17926    #[serde(skip_serializing_if = "Option::is_none")]
17927    pub raw_data: Option<String>,
17928    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
17929    #[serde(rename = "raw_data_hash")]
17930    #[serde(skip_serializing_if = "Option::is_none")]
17931    pub raw_data_hash: Option<Box<Fingerprint>>,
17932    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
17933    #[serde(rename = "raw_data_size")]
17934    #[serde(skip_serializing_if = "Option::is_none")]
17935    pub raw_data_size: Option<i64>,
17936    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
17937    #[serde(rename = "risk_details")]
17938    #[serde(skip_serializing_if = "Option::is_none")]
17939    pub risk_details: Option<String>,
17940    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
17941    #[serde(rename = "risk_level")]
17942    #[serde(skip_serializing_if = "Option::is_none")]
17943    pub risk_level: Option<String>,
17944    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
17945    #[serde(rename = "risk_level_id")]
17946    #[serde(skip_serializing_if = "Option::is_none")]
17947    pub risk_level_id: Option<i64>,
17948    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
17949    #[serde(rename = "risk_score")]
17950    #[serde(skip_serializing_if = "Option::is_none")]
17951    pub risk_score: Option<i64>,
17952    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
17953    #[serde(rename = "severity")]
17954    #[serde(skip_serializing_if = "Option::is_none")]
17955    pub severity: Option<String>,
17956    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
17957    #[serde(rename = "severity_id")]
17958    #[serde(skip_serializing_if = "Option::is_none")]
17959    pub severity_id: Option<i64>,
17960    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
17961    #[serde(rename = "start_time")]
17962    #[serde(skip_serializing_if = "Option::is_none")]
17963    pub start_time: Option<i64>,
17964    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
17965    #[serde(rename = "start_time_dt")]
17966    #[serde(skip_serializing_if = "Option::is_none")]
17967    pub start_time_dt: Option<String>,
17968    #[doc = "Startup Item\n\nThe startup item object describes an application component that has associated startup criteria and configurations.\n\nrequired"]
17969    #[serde(rename = "startup_item")]
17970    #[serde(skip_serializing_if = "Option::is_none")]
17971    pub startup_item: Option<Box<StartupItem>>,
17972    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
17973    #[serde(rename = "status")]
17974    #[serde(skip_serializing_if = "Option::is_none")]
17975    pub status: Option<String>,
17976    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
17977    #[serde(rename = "status_code")]
17978    #[serde(skip_serializing_if = "Option::is_none")]
17979    pub status_code: Option<String>,
17980    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
17981    #[serde(rename = "status_detail")]
17982    #[serde(skip_serializing_if = "Option::is_none")]
17983    pub status_detail: Option<String>,
17984    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
17985    #[serde(rename = "status_id")]
17986    #[serde(skip_serializing_if = "Option::is_none")]
17987    pub status_id: Option<i64>,
17988    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
17989    #[serde(rename = "time")]
17990    #[serde(skip_serializing_if = "Option::is_none")]
17991    pub time: Option<i64>,
17992    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
17993    #[serde(rename = "time_dt")]
17994    #[serde(skip_serializing_if = "Option::is_none")]
17995    pub time_dt: Option<String>,
17996    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
17997    #[serde(rename = "timezone_offset")]
17998    #[serde(skip_serializing_if = "Option::is_none")]
17999    pub timezone_offset: Option<i64>,
18000    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
18001    #[serde(rename = "type_name")]
18002    #[serde(skip_serializing_if = "Option::is_none")]
18003    pub type_name: Option<String>,
18004    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
18005    #[serde(rename = "type_uid")]
18006    #[serde(skip_serializing_if = "Option::is_none")]
18007    pub type_uid: Option<i64>,
18008    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
18009    #[serde(rename = "unmapped")]
18010    #[serde(skip_serializing_if = "Option::is_none")]
18011    pub unmapped: Option<serde_json::Value>,
18012}
18013#[doc = "Tunnel Activity\n\nTunnel Activity events report secure tunnel establishment (such as VPN), teardowns, renewals, and other network tunnel specific actions.\n\n[UID:4014] Category: network | Name: tunnel_activity\n\n**Constraints:**\n* at_least_one: `[dst_endpoint`,`src_endpoint]`\n"]
18014#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
18015#[serde(default)]
18016#[non_exhaustive]
18017pub struct TunnelActivity {
18018    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
18019    #[serde(rename = "action")]
18020    #[serde(skip_serializing_if = "Option::is_none")]
18021    pub action: Option<String>,
18022    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
18023    #[serde(rename = "action_id")]
18024    #[serde(skip_serializing_if = "Option::is_none")]
18025    pub action_id: Option<i64>,
18026    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
18027    #[serde(rename = "activity_id")]
18028    #[serde(skip_serializing_if = "Option::is_none")]
18029    pub activity_id: Option<i64>,
18030    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
18031    #[serde(rename = "activity_name")]
18032    #[serde(skip_serializing_if = "Option::is_none")]
18033    pub activity_name: Option<String>,
18034    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
18035    #[serde(rename = "actor")]
18036    #[serde(skip_serializing_if = "Option::is_none")]
18037    pub actor: Option<Box<Actor>>,
18038    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
18039    #[serde(rename = "api")]
18040    #[serde(skip_serializing_if = "Option::is_none")]
18041    pub api: Option<Box<Api>>,
18042    #[doc = "Application Name\n\nThe name of the application associated with the event or object.\n\noptional"]
18043    #[serde(rename = "app_name")]
18044    #[serde(skip_serializing_if = "Option::is_none")]
18045    pub app_name: Option<String>,
18046    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
18047    #[serde(rename = "attacks")]
18048    #[serde(skip_serializing_if = "Option::is_none")]
18049    pub attacks: Option<Vec<Attack>>,
18050    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
18051    #[serde(rename = "authorizations")]
18052    #[serde(skip_serializing_if = "Option::is_none")]
18053    pub authorizations: Option<Vec<Authorization>>,
18054    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Network Activity</code>.\n\noptional"]
18055    #[serde(rename = "category_name")]
18056    #[serde(skip_serializing_if = "Option::is_none")]
18057    pub category_name: Option<String>,
18058    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
18059    #[serde(rename = "category_uid")]
18060    #[serde(skip_serializing_if = "Option::is_none")]
18061    pub category_uid: Option<i64>,
18062    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Tunnel Activity</code>.\n\noptional"]
18063    #[serde(rename = "class_name")]
18064    #[serde(skip_serializing_if = "Option::is_none")]
18065    pub class_name: Option<String>,
18066    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
18067    #[serde(rename = "class_uid")]
18068    #[serde(skip_serializing_if = "Option::is_none")]
18069    pub class_uid: Option<i64>,
18070    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
18071    #[serde(rename = "cloud")]
18072    #[serde(skip_serializing_if = "Option::is_none")]
18073    pub cloud: Option<Box<Cloud>>,
18074    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
18075    #[serde(rename = "confidence")]
18076    #[serde(skip_serializing_if = "Option::is_none")]
18077    pub confidence: Option<String>,
18078    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
18079    #[serde(rename = "confidence_id")]
18080    #[serde(skip_serializing_if = "Option::is_none")]
18081    pub confidence_id: Option<i64>,
18082    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
18083    #[serde(rename = "confidence_score")]
18084    #[serde(skip_serializing_if = "Option::is_none")]
18085    pub confidence_score: Option<i64>,
18086    #[doc = "Connection Info\n\nThe tunnel connection information.\n\noptional"]
18087    #[serde(rename = "connection_info")]
18088    #[serde(skip_serializing_if = "Option::is_none")]
18089    pub connection_info: Option<Box<NetworkConnectionInfo>>,
18090    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
18091    #[serde(rename = "count")]
18092    #[serde(skip_serializing_if = "Option::is_none")]
18093    pub count: Option<i64>,
18094    #[doc = "Cumulative Traffic\n\nThe cumulative (running total) network traffic aggregated from the start of a flow or session. Use when reporting: (1) total accumulated bytes/packets since flow initiation, (2) combined aggregation models where both incremental deltas and running totals are reported together (populate both <code>traffic</code> for the delta and this attribute for the cumulative total), or (3) final summary metrics when a long-lived connection closes. This represents the sum of all activity from flow start to the current observation, not a delta or point-in-time value.\n\noptional"]
18095    #[serde(rename = "cumulative_traffic")]
18096    #[serde(skip_serializing_if = "Option::is_none")]
18097    pub cumulative_traffic: Option<Box<NetworkTraffic>>,
18098    #[doc = "Device\n\nThe device that reported the event.\n\nrecommended"]
18099    #[serde(rename = "device")]
18100    #[serde(skip_serializing_if = "Option::is_none")]
18101    pub device: Option<Box<Device>>,
18102    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
18103    #[serde(rename = "disposition")]
18104    #[serde(skip_serializing_if = "Option::is_none")]
18105    pub disposition: Option<String>,
18106    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
18107    #[serde(rename = "disposition_id")]
18108    #[serde(skip_serializing_if = "Option::is_none")]
18109    pub disposition_id: Option<i64>,
18110    #[doc = "Destination Endpoint\n\nThe server responding to the tunnel connection.\n\nrecommended"]
18111    #[serde(rename = "dst_endpoint")]
18112    #[serde(skip_serializing_if = "Option::is_none")]
18113    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
18114    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
18115    #[serde(rename = "duration")]
18116    #[serde(skip_serializing_if = "Option::is_none")]
18117    pub duration: Option<i64>,
18118    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
18119    #[serde(rename = "end_time")]
18120    #[serde(skip_serializing_if = "Option::is_none")]
18121    pub end_time: Option<i64>,
18122    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
18123    #[serde(rename = "end_time_dt")]
18124    #[serde(skip_serializing_if = "Option::is_none")]
18125    pub end_time_dt: Option<String>,
18126    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
18127    #[serde(rename = "enrichments")]
18128    #[serde(skip_serializing_if = "Option::is_none")]
18129    pub enrichments: Option<Vec<Enrichment>>,
18130    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
18131    #[serde(rename = "firewall_rule")]
18132    #[serde(skip_serializing_if = "Option::is_none")]
18133    pub firewall_rule: Option<Box<FirewallRule>>,
18134    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
18135    #[serde(rename = "is_alert")]
18136    #[serde(skip_serializing_if = "Option::is_none")]
18137    pub is_alert: Option<bool>,
18138    #[doc = "JA4+ Fingerprints\n\nA list of the JA4+ network fingerprints.\n\noptional"]
18139    #[serde(rename = "ja4_fingerprint_list")]
18140    #[serde(skip_serializing_if = "Option::is_none")]
18141    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
18142    #[doc = "Load Balancer\n\nThe Load Balancer object contains information related to the device that is distributing incoming traffic to specified destinations.\n\nrecommended"]
18143    #[serde(rename = "load_balancer")]
18144    #[serde(skip_serializing_if = "Option::is_none")]
18145    pub load_balancer: Option<Box<LoadBalancer>>,
18146    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
18147    #[serde(rename = "malware")]
18148    #[serde(skip_serializing_if = "Option::is_none")]
18149    pub malware: Option<Vec<Malware>>,
18150    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
18151    #[serde(rename = "malware_scan_info")]
18152    #[serde(skip_serializing_if = "Option::is_none")]
18153    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
18154    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
18155    #[serde(rename = "message")]
18156    #[serde(skip_serializing_if = "Option::is_none")]
18157    pub message: Option<String>,
18158    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
18159    #[serde(rename = "metadata")]
18160    #[serde(skip_serializing_if = "Option::is_none")]
18161    pub metadata: Option<Box<Metadata>>,
18162    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
18163    #[serde(rename = "observables")]
18164    #[serde(skip_serializing_if = "Option::is_none")]
18165    pub observables: Option<Vec<Observable>>,
18166    #[doc = "Observation Point\n\nIndicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity. The value is normalized to the caption of the <code>observation_point_id</code>.\n\noptional"]
18167    #[serde(rename = "observation_point")]
18168    #[serde(skip_serializing_if = "Option::is_none")]
18169    pub observation_point: Option<String>,
18170    #[doc = "Observation Point ID\n\nThe normalized identifier of the observation point. The observation point identifier indicates whether the source network endpoint, destination network endpoint, or neither served as the observation point for the activity.\n\noptional"]
18171    #[serde(rename = "observation_point_id")]
18172    #[serde(skip_serializing_if = "Option::is_none")]
18173    pub observation_point_id: Option<i64>,
18174    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
18175    #[serde(rename = "osint")]
18176    #[serde(skip_serializing_if = "Option::is_none")]
18177    pub osint: Option<Vec<Osint>>,
18178    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
18179    #[serde(rename = "policy")]
18180    #[serde(skip_serializing_if = "Option::is_none")]
18181    pub policy: Option<Box<Policy>>,
18182    #[doc = "Tunnel Protocol\n\nThe networking protocol associated with the tunnel. E.g. <code>IPSec</code>, <code>SSL</code>, <code>GRE</code>.\n\noptional"]
18183    #[serde(rename = "protocol_name")]
18184    #[serde(skip_serializing_if = "Option::is_none")]
18185    pub protocol_name: Option<String>,
18186    #[doc = "Proxy\n\nThe proxy (server) in a network connection.\n\nrecommended"]
18187    #[serde(rename = "proxy")]
18188    #[serde(skip_serializing_if = "Option::is_none")]
18189    pub proxy: Option<Box<NetworkProxy>>,
18190    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
18191    #[serde(rename = "proxy_connection_info")]
18192    #[serde(skip_serializing_if = "Option::is_none")]
18193    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
18194    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
18195    #[serde(rename = "proxy_endpoint")]
18196    #[serde(skip_serializing_if = "Option::is_none")]
18197    pub proxy_endpoint: Option<Box<NetworkProxy>>,
18198    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
18199    #[serde(rename = "proxy_http_request")]
18200    #[serde(skip_serializing_if = "Option::is_none")]
18201    pub proxy_http_request: Option<Box<HttpRequest>>,
18202    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
18203    #[serde(rename = "proxy_http_response")]
18204    #[serde(skip_serializing_if = "Option::is_none")]
18205    pub proxy_http_response: Option<Box<HttpResponse>>,
18206    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
18207    #[serde(rename = "proxy_tls")]
18208    #[serde(skip_serializing_if = "Option::is_none")]
18209    pub proxy_tls: Option<Box<Tls>>,
18210    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
18211    #[serde(rename = "proxy_traffic")]
18212    #[serde(skip_serializing_if = "Option::is_none")]
18213    pub proxy_traffic: Option<Box<NetworkTraffic>>,
18214    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
18215    #[serde(rename = "raw_data")]
18216    #[serde(skip_serializing_if = "Option::is_none")]
18217    pub raw_data: Option<String>,
18218    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
18219    #[serde(rename = "raw_data_hash")]
18220    #[serde(skip_serializing_if = "Option::is_none")]
18221    pub raw_data_hash: Option<Box<Fingerprint>>,
18222    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
18223    #[serde(rename = "raw_data_size")]
18224    #[serde(skip_serializing_if = "Option::is_none")]
18225    pub raw_data_size: Option<i64>,
18226    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
18227    #[serde(rename = "risk_details")]
18228    #[serde(skip_serializing_if = "Option::is_none")]
18229    pub risk_details: Option<String>,
18230    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
18231    #[serde(rename = "risk_level")]
18232    #[serde(skip_serializing_if = "Option::is_none")]
18233    pub risk_level: Option<String>,
18234    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
18235    #[serde(rename = "risk_level_id")]
18236    #[serde(skip_serializing_if = "Option::is_none")]
18237    pub risk_level_id: Option<i64>,
18238    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
18239    #[serde(rename = "risk_score")]
18240    #[serde(skip_serializing_if = "Option::is_none")]
18241    pub risk_score: Option<i64>,
18242    #[doc = "Tunnel Session\n\nThe session associated with the tunnel.\n\nrecommended"]
18243    #[serde(rename = "session")]
18244    #[serde(skip_serializing_if = "Option::is_none")]
18245    pub session: Option<Box<Session>>,
18246    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
18247    #[serde(rename = "severity")]
18248    #[serde(skip_serializing_if = "Option::is_none")]
18249    pub severity: Option<String>,
18250    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
18251    #[serde(rename = "severity_id")]
18252    #[serde(skip_serializing_if = "Option::is_none")]
18253    pub severity_id: Option<i64>,
18254    #[doc = "Source Endpoint\n\nThe initiator (client) of the tunnel connection.\n\nrecommended"]
18255    #[serde(rename = "src_endpoint")]
18256    #[serde(skip_serializing_if = "Option::is_none")]
18257    pub src_endpoint: Option<Box<NetworkEndpoint>>,
18258    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
18259    #[serde(rename = "start_time")]
18260    #[serde(skip_serializing_if = "Option::is_none")]
18261    pub start_time: Option<i64>,
18262    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
18263    #[serde(rename = "start_time_dt")]
18264    #[serde(skip_serializing_if = "Option::is_none")]
18265    pub start_time_dt: Option<String>,
18266    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
18267    #[serde(rename = "status")]
18268    #[serde(skip_serializing_if = "Option::is_none")]
18269    pub status: Option<String>,
18270    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
18271    #[serde(rename = "status_code")]
18272    #[serde(skip_serializing_if = "Option::is_none")]
18273    pub status_code: Option<String>,
18274    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
18275    #[serde(rename = "status_detail")]
18276    #[serde(skip_serializing_if = "Option::is_none")]
18277    pub status_detail: Option<String>,
18278    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
18279    #[serde(rename = "status_id")]
18280    #[serde(skip_serializing_if = "Option::is_none")]
18281    pub status_id: Option<i64>,
18282    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
18283    #[serde(rename = "time")]
18284    #[serde(skip_serializing_if = "Option::is_none")]
18285    pub time: Option<i64>,
18286    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
18287    #[serde(rename = "time_dt")]
18288    #[serde(skip_serializing_if = "Option::is_none")]
18289    pub time_dt: Option<String>,
18290    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
18291    #[serde(rename = "timezone_offset")]
18292    #[serde(skip_serializing_if = "Option::is_none")]
18293    pub timezone_offset: Option<i64>,
18294    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes.\n\noptional"]
18295    #[serde(rename = "tls")]
18296    #[serde(skip_serializing_if = "Option::is_none")]
18297    pub tls: Option<Box<Tls>>,
18298    #[doc = "Traffic\n\nTraffic refers to the amount of data moving across the tunnel at a given point of time. Ex: <code>bytes_in</code> and <code>bytes_out</code>.\n\noptional"]
18299    #[serde(rename = "traffic")]
18300    #[serde(skip_serializing_if = "Option::is_none")]
18301    pub traffic: Option<Box<NetworkTraffic>>,
18302    #[doc = "Tunnel Interface\n\nThe information about the virtual tunnel interface, e.g. <code>utun0</code>. This is usually associated with the private (rfc-1918) ip of the tunnel.\n\nrecommended"]
18303    #[serde(rename = "tunnel_interface")]
18304    #[serde(skip_serializing_if = "Option::is_none")]
18305    pub tunnel_interface: Option<Box<NetworkInterface>>,
18306    #[doc = "Type\n\nThe tunnel type. Example: <code>Split</code> or <code>Full</code>.\n\nrecommended"]
18307    #[serde(rename = "tunnel_type")]
18308    #[serde(skip_serializing_if = "Option::is_none")]
18309    pub tunnel_type: Option<String>,
18310    #[doc = "Type\n\nThe normalized tunnel type ID.\n\nrecommended"]
18311    #[serde(rename = "tunnel_type_id")]
18312    #[serde(skip_serializing_if = "Option::is_none")]
18313    pub tunnel_type_id: Option<i64>,
18314    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
18315    #[serde(rename = "type_name")]
18316    #[serde(skip_serializing_if = "Option::is_none")]
18317    pub type_name: Option<String>,
18318    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
18319    #[serde(rename = "type_uid")]
18320    #[serde(skip_serializing_if = "Option::is_none")]
18321    pub type_uid: Option<i64>,
18322    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
18323    #[serde(rename = "unmapped")]
18324    #[serde(skip_serializing_if = "Option::is_none")]
18325    pub unmapped: Option<serde_json::Value>,
18326    #[doc = "User\n\nThe user associated with the tunnel activity.\n\nrecommended"]
18327    #[serde(rename = "user")]
18328    #[serde(skip_serializing_if = "Option::is_none")]
18329    pub user: Option<Box<User>>,
18330}
18331#[doc = "User Access Management\n\nUser Access Management events report management updates to a user's privileges.\n\n[UID:3005] Category: iam | Name: user_access"]
18332#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
18333#[serde(default)]
18334#[non_exhaustive]
18335pub struct UserAccess {
18336    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
18337    #[serde(rename = "action")]
18338    #[serde(skip_serializing_if = "Option::is_none")]
18339    pub action: Option<String>,
18340    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
18341    #[serde(rename = "action_id")]
18342    #[serde(skip_serializing_if = "Option::is_none")]
18343    pub action_id: Option<i64>,
18344    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
18345    #[serde(rename = "activity_id")]
18346    #[serde(skip_serializing_if = "Option::is_none")]
18347    pub activity_id: Option<i64>,
18348    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
18349    #[serde(rename = "activity_name")]
18350    #[serde(skip_serializing_if = "Option::is_none")]
18351    pub activity_name: Option<String>,
18352    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrecommended"]
18353    #[serde(rename = "actor")]
18354    #[serde(skip_serializing_if = "Option::is_none")]
18355    pub actor: Option<Box<Actor>>,
18356    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
18357    #[serde(rename = "api")]
18358    #[serde(skip_serializing_if = "Option::is_none")]
18359    pub api: Option<Box<Api>>,
18360    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
18361    #[serde(rename = "attacks")]
18362    #[serde(skip_serializing_if = "Option::is_none")]
18363    pub attacks: Option<Vec<Attack>>,
18364    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
18365    #[serde(rename = "authorizations")]
18366    #[serde(skip_serializing_if = "Option::is_none")]
18367    pub authorizations: Option<Vec<Authorization>>,
18368    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Identity & Access Management</code>.\n\noptional"]
18369    #[serde(rename = "category_name")]
18370    #[serde(skip_serializing_if = "Option::is_none")]
18371    pub category_name: Option<String>,
18372    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
18373    #[serde(rename = "category_uid")]
18374    #[serde(skip_serializing_if = "Option::is_none")]
18375    pub category_uid: Option<i64>,
18376    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>User Access Management</code>.\n\noptional"]
18377    #[serde(rename = "class_name")]
18378    #[serde(skip_serializing_if = "Option::is_none")]
18379    pub class_name: Option<String>,
18380    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
18381    #[serde(rename = "class_uid")]
18382    #[serde(skip_serializing_if = "Option::is_none")]
18383    pub class_uid: Option<i64>,
18384    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
18385    #[serde(rename = "cloud")]
18386    #[serde(skip_serializing_if = "Option::is_none")]
18387    pub cloud: Option<Box<Cloud>>,
18388    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
18389    #[serde(rename = "confidence")]
18390    #[serde(skip_serializing_if = "Option::is_none")]
18391    pub confidence: Option<String>,
18392    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
18393    #[serde(rename = "confidence_id")]
18394    #[serde(skip_serializing_if = "Option::is_none")]
18395    pub confidence_id: Option<i64>,
18396    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
18397    #[serde(rename = "confidence_score")]
18398    #[serde(skip_serializing_if = "Option::is_none")]
18399    pub confidence_score: Option<i64>,
18400    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
18401    #[serde(rename = "count")]
18402    #[serde(skip_serializing_if = "Option::is_none")]
18403    pub count: Option<i64>,
18404    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
18405    #[serde(rename = "device")]
18406    #[serde(skip_serializing_if = "Option::is_none")]
18407    pub device: Option<Box<Device>>,
18408    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
18409    #[serde(rename = "disposition")]
18410    #[serde(skip_serializing_if = "Option::is_none")]
18411    pub disposition: Option<String>,
18412    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
18413    #[serde(rename = "disposition_id")]
18414    #[serde(skip_serializing_if = "Option::is_none")]
18415    pub disposition_id: Option<i64>,
18416    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
18417    #[serde(rename = "duration")]
18418    #[serde(skip_serializing_if = "Option::is_none")]
18419    pub duration: Option<i64>,
18420    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
18421    #[serde(rename = "end_time")]
18422    #[serde(skip_serializing_if = "Option::is_none")]
18423    pub end_time: Option<i64>,
18424    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
18425    #[serde(rename = "end_time_dt")]
18426    #[serde(skip_serializing_if = "Option::is_none")]
18427    pub end_time_dt: Option<String>,
18428    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
18429    #[serde(rename = "enrichments")]
18430    #[serde(skip_serializing_if = "Option::is_none")]
18431    pub enrichments: Option<Vec<Enrichment>>,
18432    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
18433    #[serde(rename = "firewall_rule")]
18434    #[serde(skip_serializing_if = "Option::is_none")]
18435    pub firewall_rule: Option<Box<FirewallRule>>,
18436    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\noptional"]
18437    #[serde(rename = "http_request")]
18438    #[serde(skip_serializing_if = "Option::is_none")]
18439    pub http_request: Option<Box<HttpRequest>>,
18440    #[doc = "HTTP Response\n\nDetails about the underlying HTTP response.\n\noptional"]
18441    #[serde(rename = "http_response")]
18442    #[serde(skip_serializing_if = "Option::is_none")]
18443    pub http_response: Option<Box<HttpResponse>>,
18444    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
18445    #[serde(rename = "is_alert")]
18446    #[serde(skip_serializing_if = "Option::is_none")]
18447    pub is_alert: Option<bool>,
18448    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
18449    #[serde(rename = "malware")]
18450    #[serde(skip_serializing_if = "Option::is_none")]
18451    pub malware: Option<Vec<Malware>>,
18452    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
18453    #[serde(rename = "malware_scan_info")]
18454    #[serde(skip_serializing_if = "Option::is_none")]
18455    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
18456    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
18457    #[serde(rename = "message")]
18458    #[serde(skip_serializing_if = "Option::is_none")]
18459    pub message: Option<String>,
18460    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
18461    #[serde(rename = "metadata")]
18462    #[serde(skip_serializing_if = "Option::is_none")]
18463    pub metadata: Option<Box<Metadata>>,
18464    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
18465    #[serde(rename = "observables")]
18466    #[serde(skip_serializing_if = "Option::is_none")]
18467    pub observables: Option<Vec<Observable>>,
18468    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
18469    #[serde(rename = "osint")]
18470    #[serde(skip_serializing_if = "Option::is_none")]
18471    pub osint: Option<Vec<Osint>>,
18472    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
18473    #[serde(rename = "policy")]
18474    #[serde(skip_serializing_if = "Option::is_none")]
18475    pub policy: Option<Box<Policy>>,
18476    #[doc = "Privileges\n\nList of privileges assigned to a user.\n\nrequired"]
18477    #[serde(rename = "privileges")]
18478    #[serde(skip_serializing_if = "Option::is_none")]
18479    pub privileges: Option<Vec<String>>,
18480    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
18481    #[serde(rename = "raw_data")]
18482    #[serde(skip_serializing_if = "Option::is_none")]
18483    pub raw_data: Option<String>,
18484    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
18485    #[serde(rename = "raw_data_hash")]
18486    #[serde(skip_serializing_if = "Option::is_none")]
18487    pub raw_data_hash: Option<Box<Fingerprint>>,
18488    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
18489    #[serde(rename = "raw_data_size")]
18490    #[serde(skip_serializing_if = "Option::is_none")]
18491    pub raw_data_size: Option<i64>,
18492    #[doc = "Resource\n\nResource that the privileges give access to.\n\nrecommended"]
18493    #[serde(rename = "resource")]
18494    #[serde(skip_serializing_if = "Option::is_none")]
18495    pub resource: Option<Box<ResourceDetails>>,
18496    #[doc = "Resources Array\n\nResources that the privileges give access to.\n\nrecommended"]
18497    #[serde(rename = "resources")]
18498    #[serde(skip_serializing_if = "Option::is_none")]
18499    pub resources: Option<Vec<ResourceDetails>>,
18500    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
18501    #[serde(rename = "risk_details")]
18502    #[serde(skip_serializing_if = "Option::is_none")]
18503    pub risk_details: Option<String>,
18504    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
18505    #[serde(rename = "risk_level")]
18506    #[serde(skip_serializing_if = "Option::is_none")]
18507    pub risk_level: Option<String>,
18508    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
18509    #[serde(rename = "risk_level_id")]
18510    #[serde(skip_serializing_if = "Option::is_none")]
18511    pub risk_level_id: Option<i64>,
18512    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
18513    #[serde(rename = "risk_score")]
18514    #[serde(skip_serializing_if = "Option::is_none")]
18515    pub risk_score: Option<i64>,
18516    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
18517    #[serde(rename = "severity")]
18518    #[serde(skip_serializing_if = "Option::is_none")]
18519    pub severity: Option<String>,
18520    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
18521    #[serde(rename = "severity_id")]
18522    #[serde(skip_serializing_if = "Option::is_none")]
18523    pub severity_id: Option<i64>,
18524    #[doc = "Source Endpoint\n\nDetails about the source of the IAM activity.\n\nrecommended"]
18525    #[serde(rename = "src_endpoint")]
18526    #[serde(skip_serializing_if = "Option::is_none")]
18527    pub src_endpoint: Option<Box<NetworkEndpoint>>,
18528    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
18529    #[serde(rename = "start_time")]
18530    #[serde(skip_serializing_if = "Option::is_none")]
18531    pub start_time: Option<i64>,
18532    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
18533    #[serde(rename = "start_time_dt")]
18534    #[serde(skip_serializing_if = "Option::is_none")]
18535    pub start_time_dt: Option<String>,
18536    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
18537    #[serde(rename = "status")]
18538    #[serde(skip_serializing_if = "Option::is_none")]
18539    pub status: Option<String>,
18540    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
18541    #[serde(rename = "status_code")]
18542    #[serde(skip_serializing_if = "Option::is_none")]
18543    pub status_code: Option<String>,
18544    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
18545    #[serde(rename = "status_detail")]
18546    #[serde(skip_serializing_if = "Option::is_none")]
18547    pub status_detail: Option<String>,
18548    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
18549    #[serde(rename = "status_id")]
18550    #[serde(skip_serializing_if = "Option::is_none")]
18551    pub status_id: Option<i64>,
18552    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
18553    #[serde(rename = "time")]
18554    #[serde(skip_serializing_if = "Option::is_none")]
18555    pub time: Option<i64>,
18556    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
18557    #[serde(rename = "time_dt")]
18558    #[serde(skip_serializing_if = "Option::is_none")]
18559    pub time_dt: Option<String>,
18560    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
18561    #[serde(rename = "timezone_offset")]
18562    #[serde(skip_serializing_if = "Option::is_none")]
18563    pub timezone_offset: Option<i64>,
18564    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
18565    #[serde(rename = "type_name")]
18566    #[serde(skip_serializing_if = "Option::is_none")]
18567    pub type_name: Option<String>,
18568    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
18569    #[serde(rename = "type_uid")]
18570    #[serde(skip_serializing_if = "Option::is_none")]
18571    pub type_uid: Option<i64>,
18572    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
18573    #[serde(rename = "unmapped")]
18574    #[serde(skip_serializing_if = "Option::is_none")]
18575    pub unmapped: Option<serde_json::Value>,
18576    #[doc = "User\n\nUser to which privileges were assigned.\n\nrequired"]
18577    #[serde(rename = "user")]
18578    #[serde(skip_serializing_if = "Option::is_none")]
18579    pub user: Option<Box<User>>,
18580}
18581#[doc = "User Inventory Info\n\nUser Inventory Info events report user inventory data that is either logged or proactively collected. For example, when collecting user information from Active Directory entries.\n\n[UID:5003] Category: discovery | Name: user_inventory"]
18582#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
18583#[serde(default)]
18584#[non_exhaustive]
18585pub struct UserInventory {
18586    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
18587    #[serde(rename = "action")]
18588    #[serde(skip_serializing_if = "Option::is_none")]
18589    pub action: Option<String>,
18590    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
18591    #[serde(rename = "action_id")]
18592    #[serde(skip_serializing_if = "Option::is_none")]
18593    pub action_id: Option<i64>,
18594    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
18595    #[serde(rename = "activity_id")]
18596    #[serde(skip_serializing_if = "Option::is_none")]
18597    pub activity_id: Option<i64>,
18598    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
18599    #[serde(rename = "activity_name")]
18600    #[serde(skip_serializing_if = "Option::is_none")]
18601    pub activity_name: Option<String>,
18602    #[doc = "Actor\n\nThe actor describes the process that was the source of the inventory activity. In the case of user inventory data, that could be a particular process or script that is run to scrape the user data. For example, it could be a powershell process that runs to pull data from the Azure AD graph API.\n\noptional"]
18603    #[serde(rename = "actor")]
18604    #[serde(skip_serializing_if = "Option::is_none")]
18605    pub actor: Option<Box<Actor>>,
18606    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
18607    #[serde(rename = "api")]
18608    #[serde(skip_serializing_if = "Option::is_none")]
18609    pub api: Option<Box<Api>>,
18610    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
18611    #[serde(rename = "attacks")]
18612    #[serde(skip_serializing_if = "Option::is_none")]
18613    pub attacks: Option<Vec<Attack>>,
18614    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
18615    #[serde(rename = "authorizations")]
18616    #[serde(skip_serializing_if = "Option::is_none")]
18617    pub authorizations: Option<Vec<Authorization>>,
18618    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
18619    #[serde(rename = "category_name")]
18620    #[serde(skip_serializing_if = "Option::is_none")]
18621    pub category_name: Option<String>,
18622    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
18623    #[serde(rename = "category_uid")]
18624    #[serde(skip_serializing_if = "Option::is_none")]
18625    pub category_uid: Option<i64>,
18626    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>User Inventory Info</code>.\n\noptional"]
18627    #[serde(rename = "class_name")]
18628    #[serde(skip_serializing_if = "Option::is_none")]
18629    pub class_name: Option<String>,
18630    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
18631    #[serde(rename = "class_uid")]
18632    #[serde(skip_serializing_if = "Option::is_none")]
18633    pub class_uid: Option<i64>,
18634    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
18635    #[serde(rename = "cloud")]
18636    #[serde(skip_serializing_if = "Option::is_none")]
18637    pub cloud: Option<Box<Cloud>>,
18638    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
18639    #[serde(rename = "confidence")]
18640    #[serde(skip_serializing_if = "Option::is_none")]
18641    pub confidence: Option<String>,
18642    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
18643    #[serde(rename = "confidence_id")]
18644    #[serde(skip_serializing_if = "Option::is_none")]
18645    pub confidence_id: Option<i64>,
18646    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
18647    #[serde(rename = "confidence_score")]
18648    #[serde(skip_serializing_if = "Option::is_none")]
18649    pub confidence_score: Option<i64>,
18650    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
18651    #[serde(rename = "count")]
18652    #[serde(skip_serializing_if = "Option::is_none")]
18653    pub count: Option<i64>,
18654    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
18655    #[serde(rename = "device")]
18656    #[serde(skip_serializing_if = "Option::is_none")]
18657    pub device: Option<Box<Device>>,
18658    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
18659    #[serde(rename = "disposition")]
18660    #[serde(skip_serializing_if = "Option::is_none")]
18661    pub disposition: Option<String>,
18662    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
18663    #[serde(rename = "disposition_id")]
18664    #[serde(skip_serializing_if = "Option::is_none")]
18665    pub disposition_id: Option<i64>,
18666    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
18667    #[serde(rename = "duration")]
18668    #[serde(skip_serializing_if = "Option::is_none")]
18669    pub duration: Option<i64>,
18670    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
18671    #[serde(rename = "end_time")]
18672    #[serde(skip_serializing_if = "Option::is_none")]
18673    pub end_time: Option<i64>,
18674    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
18675    #[serde(rename = "end_time_dt")]
18676    #[serde(skip_serializing_if = "Option::is_none")]
18677    pub end_time_dt: Option<String>,
18678    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
18679    #[serde(rename = "enrichments")]
18680    #[serde(skip_serializing_if = "Option::is_none")]
18681    pub enrichments: Option<Vec<Enrichment>>,
18682    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
18683    #[serde(rename = "firewall_rule")]
18684    #[serde(skip_serializing_if = "Option::is_none")]
18685    pub firewall_rule: Option<Box<FirewallRule>>,
18686    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
18687    #[serde(rename = "is_alert")]
18688    #[serde(skip_serializing_if = "Option::is_none")]
18689    pub is_alert: Option<bool>,
18690    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
18691    #[serde(rename = "malware")]
18692    #[serde(skip_serializing_if = "Option::is_none")]
18693    pub malware: Option<Vec<Malware>>,
18694    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
18695    #[serde(rename = "malware_scan_info")]
18696    #[serde(skip_serializing_if = "Option::is_none")]
18697    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
18698    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
18699    #[serde(rename = "message")]
18700    #[serde(skip_serializing_if = "Option::is_none")]
18701    pub message: Option<String>,
18702    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
18703    #[serde(rename = "metadata")]
18704    #[serde(skip_serializing_if = "Option::is_none")]
18705    pub metadata: Option<Box<Metadata>>,
18706    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
18707    #[serde(rename = "observables")]
18708    #[serde(skip_serializing_if = "Option::is_none")]
18709    pub observables: Option<Vec<Observable>>,
18710    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
18711    #[serde(rename = "osint")]
18712    #[serde(skip_serializing_if = "Option::is_none")]
18713    pub osint: Option<Vec<Osint>>,
18714    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
18715    #[serde(rename = "policy")]
18716    #[serde(skip_serializing_if = "Option::is_none")]
18717    pub policy: Option<Box<Policy>>,
18718    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
18719    #[serde(rename = "raw_data")]
18720    #[serde(skip_serializing_if = "Option::is_none")]
18721    pub raw_data: Option<String>,
18722    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
18723    #[serde(rename = "raw_data_hash")]
18724    #[serde(skip_serializing_if = "Option::is_none")]
18725    pub raw_data_hash: Option<Box<Fingerprint>>,
18726    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
18727    #[serde(rename = "raw_data_size")]
18728    #[serde(skip_serializing_if = "Option::is_none")]
18729    pub raw_data_size: Option<i64>,
18730    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
18731    #[serde(rename = "risk_details")]
18732    #[serde(skip_serializing_if = "Option::is_none")]
18733    pub risk_details: Option<String>,
18734    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
18735    #[serde(rename = "risk_level")]
18736    #[serde(skip_serializing_if = "Option::is_none")]
18737    pub risk_level: Option<String>,
18738    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
18739    #[serde(rename = "risk_level_id")]
18740    #[serde(skip_serializing_if = "Option::is_none")]
18741    pub risk_level_id: Option<i64>,
18742    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
18743    #[serde(rename = "risk_score")]
18744    #[serde(skip_serializing_if = "Option::is_none")]
18745    pub risk_score: Option<i64>,
18746    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
18747    #[serde(rename = "severity")]
18748    #[serde(skip_serializing_if = "Option::is_none")]
18749    pub severity: Option<String>,
18750    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
18751    #[serde(rename = "severity_id")]
18752    #[serde(skip_serializing_if = "Option::is_none")]
18753    pub severity_id: Option<i64>,
18754    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
18755    #[serde(rename = "start_time")]
18756    #[serde(skip_serializing_if = "Option::is_none")]
18757    pub start_time: Option<i64>,
18758    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
18759    #[serde(rename = "start_time_dt")]
18760    #[serde(skip_serializing_if = "Option::is_none")]
18761    pub start_time_dt: Option<String>,
18762    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
18763    #[serde(rename = "status")]
18764    #[serde(skip_serializing_if = "Option::is_none")]
18765    pub status: Option<String>,
18766    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
18767    #[serde(rename = "status_code")]
18768    #[serde(skip_serializing_if = "Option::is_none")]
18769    pub status_code: Option<String>,
18770    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
18771    #[serde(rename = "status_detail")]
18772    #[serde(skip_serializing_if = "Option::is_none")]
18773    pub status_detail: Option<String>,
18774    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
18775    #[serde(rename = "status_id")]
18776    #[serde(skip_serializing_if = "Option::is_none")]
18777    pub status_id: Option<i64>,
18778    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
18779    #[serde(rename = "time")]
18780    #[serde(skip_serializing_if = "Option::is_none")]
18781    pub time: Option<i64>,
18782    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
18783    #[serde(rename = "time_dt")]
18784    #[serde(skip_serializing_if = "Option::is_none")]
18785    pub time_dt: Option<String>,
18786    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
18787    #[serde(rename = "timezone_offset")]
18788    #[serde(skip_serializing_if = "Option::is_none")]
18789    pub timezone_offset: Option<i64>,
18790    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
18791    #[serde(rename = "type_name")]
18792    #[serde(skip_serializing_if = "Option::is_none")]
18793    pub type_name: Option<String>,
18794    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
18795    #[serde(rename = "type_uid")]
18796    #[serde(skip_serializing_if = "Option::is_none")]
18797    pub type_uid: Option<i64>,
18798    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
18799    #[serde(rename = "unmapped")]
18800    #[serde(skip_serializing_if = "Option::is_none")]
18801    pub unmapped: Option<serde_json::Value>,
18802    #[doc = "User\n\nThe user that is being discovered by an inventory process.\n\nrequired"]
18803    #[serde(rename = "user")]
18804    #[serde(skip_serializing_if = "Option::is_none")]
18805    pub user: Option<Box<User>>,
18806}
18807#[doc = "User Query\n\nUser Query events report user data that have been discovered, queried, polled or searched. This event differs from User Inventory as it describes the result of a targeted search by filtering a subset of user attributes.\n\n[UID:5018] Category: discovery | Name: user_query"]
18808#[deprecated(note = "Use the <code>Live Evidence Info</code> class. (Since 1.5.0)")]
18809#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
18810#[serde(default)]
18811#[non_exhaustive]
18812pub struct UserQuery {
18813    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
18814    #[serde(rename = "action")]
18815    #[serde(skip_serializing_if = "Option::is_none")]
18816    pub action: Option<String>,
18817    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
18818    #[serde(rename = "action_id")]
18819    #[serde(skip_serializing_if = "Option::is_none")]
18820    pub action_id: Option<i64>,
18821    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
18822    #[serde(rename = "activity_id")]
18823    #[serde(skip_serializing_if = "Option::is_none")]
18824    pub activity_id: Option<i64>,
18825    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
18826    #[serde(rename = "activity_name")]
18827    #[serde(skip_serializing_if = "Option::is_none")]
18828    pub activity_name: Option<String>,
18829    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
18830    #[serde(rename = "actor")]
18831    #[serde(skip_serializing_if = "Option::is_none")]
18832    pub actor: Option<Box<Actor>>,
18833    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
18834    #[serde(rename = "api")]
18835    #[serde(skip_serializing_if = "Option::is_none")]
18836    pub api: Option<Box<Api>>,
18837    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
18838    #[serde(rename = "attacks")]
18839    #[serde(skip_serializing_if = "Option::is_none")]
18840    pub attacks: Option<Vec<Attack>>,
18841    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
18842    #[serde(rename = "authorizations")]
18843    #[serde(skip_serializing_if = "Option::is_none")]
18844    pub authorizations: Option<Vec<Authorization>>,
18845    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
18846    #[serde(rename = "category_name")]
18847    #[serde(skip_serializing_if = "Option::is_none")]
18848    pub category_name: Option<String>,
18849    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
18850    #[serde(rename = "category_uid")]
18851    #[serde(skip_serializing_if = "Option::is_none")]
18852    pub category_uid: Option<i64>,
18853    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>User Query</code>.\n\noptional"]
18854    #[serde(rename = "class_name")]
18855    #[serde(skip_serializing_if = "Option::is_none")]
18856    pub class_name: Option<String>,
18857    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
18858    #[serde(rename = "class_uid")]
18859    #[serde(skip_serializing_if = "Option::is_none")]
18860    pub class_uid: Option<i64>,
18861    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
18862    #[serde(rename = "cloud")]
18863    #[serde(skip_serializing_if = "Option::is_none")]
18864    pub cloud: Option<Box<Cloud>>,
18865    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
18866    #[serde(rename = "confidence")]
18867    #[serde(skip_serializing_if = "Option::is_none")]
18868    pub confidence: Option<String>,
18869    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
18870    #[serde(rename = "confidence_id")]
18871    #[serde(skip_serializing_if = "Option::is_none")]
18872    pub confidence_id: Option<i64>,
18873    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
18874    #[serde(rename = "confidence_score")]
18875    #[serde(skip_serializing_if = "Option::is_none")]
18876    pub confidence_score: Option<i64>,
18877    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
18878    #[serde(rename = "count")]
18879    #[serde(skip_serializing_if = "Option::is_none")]
18880    pub count: Option<i64>,
18881    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
18882    #[serde(rename = "device")]
18883    #[serde(skip_serializing_if = "Option::is_none")]
18884    pub device: Option<Box<Device>>,
18885    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
18886    #[serde(rename = "disposition")]
18887    #[serde(skip_serializing_if = "Option::is_none")]
18888    pub disposition: Option<String>,
18889    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
18890    #[serde(rename = "disposition_id")]
18891    #[serde(skip_serializing_if = "Option::is_none")]
18892    pub disposition_id: Option<i64>,
18893    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
18894    #[serde(rename = "duration")]
18895    #[serde(skip_serializing_if = "Option::is_none")]
18896    pub duration: Option<i64>,
18897    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
18898    #[serde(rename = "end_time")]
18899    #[serde(skip_serializing_if = "Option::is_none")]
18900    pub end_time: Option<i64>,
18901    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
18902    #[serde(rename = "end_time_dt")]
18903    #[serde(skip_serializing_if = "Option::is_none")]
18904    pub end_time_dt: Option<String>,
18905    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
18906    #[serde(rename = "enrichments")]
18907    #[serde(skip_serializing_if = "Option::is_none")]
18908    pub enrichments: Option<Vec<Enrichment>>,
18909    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
18910    #[serde(rename = "firewall_rule")]
18911    #[serde(skip_serializing_if = "Option::is_none")]
18912    pub firewall_rule: Option<Box<FirewallRule>>,
18913    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
18914    #[serde(rename = "is_alert")]
18915    #[serde(skip_serializing_if = "Option::is_none")]
18916    pub is_alert: Option<bool>,
18917    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
18918    #[serde(rename = "malware")]
18919    #[serde(skip_serializing_if = "Option::is_none")]
18920    pub malware: Option<Vec<Malware>>,
18921    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
18922    #[serde(rename = "malware_scan_info")]
18923    #[serde(skip_serializing_if = "Option::is_none")]
18924    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
18925    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
18926    #[serde(rename = "message")]
18927    #[serde(skip_serializing_if = "Option::is_none")]
18928    pub message: Option<String>,
18929    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
18930    #[serde(rename = "metadata")]
18931    #[serde(skip_serializing_if = "Option::is_none")]
18932    pub metadata: Option<Box<Metadata>>,
18933    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
18934    #[serde(rename = "observables")]
18935    #[serde(skip_serializing_if = "Option::is_none")]
18936    pub observables: Option<Vec<Observable>>,
18937    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
18938    #[serde(rename = "osint")]
18939    #[serde(skip_serializing_if = "Option::is_none")]
18940    pub osint: Option<Vec<Osint>>,
18941    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
18942    #[serde(rename = "policy")]
18943    #[serde(skip_serializing_if = "Option::is_none")]
18944    pub policy: Option<Box<Policy>>,
18945    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
18946    #[serde(rename = "query_info")]
18947    #[serde(skip_serializing_if = "Option::is_none")]
18948    pub query_info: Option<Box<QueryInfo>>,
18949    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
18950    #[serde(rename = "query_result")]
18951    #[serde(skip_serializing_if = "Option::is_none")]
18952    pub query_result: Option<String>,
18953    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
18954    #[serde(rename = "query_result_id")]
18955    #[serde(skip_serializing_if = "Option::is_none")]
18956    pub query_result_id: Option<i64>,
18957    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
18958    #[serde(rename = "raw_data")]
18959    #[serde(skip_serializing_if = "Option::is_none")]
18960    pub raw_data: Option<String>,
18961    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
18962    #[serde(rename = "raw_data_hash")]
18963    #[serde(skip_serializing_if = "Option::is_none")]
18964    pub raw_data_hash: Option<Box<Fingerprint>>,
18965    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
18966    #[serde(rename = "raw_data_size")]
18967    #[serde(skip_serializing_if = "Option::is_none")]
18968    pub raw_data_size: Option<i64>,
18969    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
18970    #[serde(rename = "risk_details")]
18971    #[serde(skip_serializing_if = "Option::is_none")]
18972    pub risk_details: Option<String>,
18973    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
18974    #[serde(rename = "risk_level")]
18975    #[serde(skip_serializing_if = "Option::is_none")]
18976    pub risk_level: Option<String>,
18977    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
18978    #[serde(rename = "risk_level_id")]
18979    #[serde(skip_serializing_if = "Option::is_none")]
18980    pub risk_level_id: Option<i64>,
18981    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
18982    #[serde(rename = "risk_score")]
18983    #[serde(skip_serializing_if = "Option::is_none")]
18984    pub risk_score: Option<i64>,
18985    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
18986    #[serde(rename = "severity")]
18987    #[serde(skip_serializing_if = "Option::is_none")]
18988    pub severity: Option<String>,
18989    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
18990    #[serde(rename = "severity_id")]
18991    #[serde(skip_serializing_if = "Option::is_none")]
18992    pub severity_id: Option<i64>,
18993    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
18994    #[serde(rename = "start_time")]
18995    #[serde(skip_serializing_if = "Option::is_none")]
18996    pub start_time: Option<i64>,
18997    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
18998    #[serde(rename = "start_time_dt")]
18999    #[serde(skip_serializing_if = "Option::is_none")]
19000    pub start_time_dt: Option<String>,
19001    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
19002    #[serde(rename = "status")]
19003    #[serde(skip_serializing_if = "Option::is_none")]
19004    pub status: Option<String>,
19005    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
19006    #[serde(rename = "status_code")]
19007    #[serde(skip_serializing_if = "Option::is_none")]
19008    pub status_code: Option<String>,
19009    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
19010    #[serde(rename = "status_detail")]
19011    #[serde(skip_serializing_if = "Option::is_none")]
19012    pub status_detail: Option<String>,
19013    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
19014    #[serde(rename = "status_id")]
19015    #[serde(skip_serializing_if = "Option::is_none")]
19016    pub status_id: Option<i64>,
19017    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
19018    #[serde(rename = "time")]
19019    #[serde(skip_serializing_if = "Option::is_none")]
19020    pub time: Option<i64>,
19021    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
19022    #[serde(rename = "time_dt")]
19023    #[serde(skip_serializing_if = "Option::is_none")]
19024    pub time_dt: Option<String>,
19025    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
19026    #[serde(rename = "timezone_offset")]
19027    #[serde(skip_serializing_if = "Option::is_none")]
19028    pub timezone_offset: Option<i64>,
19029    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
19030    #[serde(rename = "type_name")]
19031    #[serde(skip_serializing_if = "Option::is_none")]
19032    pub type_name: Option<String>,
19033    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
19034    #[serde(rename = "type_uid")]
19035    #[serde(skip_serializing_if = "Option::is_none")]
19036    pub type_uid: Option<i64>,
19037    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
19038    #[serde(rename = "unmapped")]
19039    #[serde(skip_serializing_if = "Option::is_none")]
19040    pub unmapped: Option<serde_json::Value>,
19041    #[doc = "User\n\nThe user that pertains to the event or object.\n\nrequired"]
19042    #[serde(rename = "user")]
19043    #[serde(skip_serializing_if = "Option::is_none")]
19044    pub user: Option<Box<User>>,
19045}
19046#[doc = "Vulnerability Finding\n\nThe Vulnerability Finding event is a notification about weakness in an information system, system security procedures, internal controls, or implementation that could be exploited or triggered by a threat source. Note: if the event producer is a security control, the <code>security_control</code> profile should be applied and its <code>attacks</code> information, if present, should be duplicated into the <code>finding_info</code> object. <br><strong>Note: </strong>If the Finding is an incident, i.e. requires incident workflow, also apply the <code>incident</code> profile  or aggregate this finding into an <code>Incident Finding</code>.\n\n[UID:2002] Category: findings | Name: vulnerability_finding"]
19047#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
19048#[serde(default)]
19049#[non_exhaustive]
19050pub struct VulnerabilityFinding {
19051    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
19052    #[serde(rename = "action")]
19053    #[serde(skip_serializing_if = "Option::is_none")]
19054    pub action: Option<String>,
19055    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
19056    #[serde(rename = "action_id")]
19057    #[serde(skip_serializing_if = "Option::is_none")]
19058    pub action_id: Option<i64>,
19059    #[doc = "Activity ID\n\nThe normalized identifier of the finding activity.\n\nrequired"]
19060    #[serde(rename = "activity_id")]
19061    #[serde(skip_serializing_if = "Option::is_none")]
19062    pub activity_id: Option<i64>,
19063    #[doc = "Activity\n\nThe finding activity name, as defined by the <code>activity_id</code>.\n\noptional"]
19064    #[serde(rename = "activity_name")]
19065    #[serde(skip_serializing_if = "Option::is_none")]
19066    pub activity_name: Option<String>,
19067    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
19068    #[serde(rename = "actor")]
19069    #[serde(skip_serializing_if = "Option::is_none")]
19070    pub actor: Option<Box<Actor>>,
19071    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
19072    #[serde(rename = "api")]
19073    #[serde(skip_serializing_if = "Option::is_none")]
19074    pub api: Option<Box<Api>>,
19075    #[doc = "Assignee\n\nThe details of the user assigned to an Incident.\n\noptional"]
19076    #[serde(rename = "assignee")]
19077    #[serde(skip_serializing_if = "Option::is_none")]
19078    pub assignee: Option<Box<User>>,
19079    #[doc = "Assignee Group\n\nThe details of the group assigned to an Incident.\n\noptional"]
19080    #[serde(rename = "assignee_group")]
19081    #[serde(skip_serializing_if = "Option::is_none")]
19082    pub assignee_group: Option<Box<Group>>,
19083    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
19084    #[serde(rename = "attacks")]
19085    #[serde(skip_serializing_if = "Option::is_none")]
19086    pub attacks: Option<Vec<Attack>>,
19087    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
19088    #[serde(rename = "authorizations")]
19089    #[serde(skip_serializing_if = "Option::is_none")]
19090    pub authorizations: Option<Vec<Authorization>>,
19091    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Findings</code>.\n\noptional"]
19092    #[serde(rename = "category_name")]
19093    #[serde(skip_serializing_if = "Option::is_none")]
19094    pub category_name: Option<String>,
19095    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
19096    #[serde(rename = "category_uid")]
19097    #[serde(skip_serializing_if = "Option::is_none")]
19098    pub category_uid: Option<i64>,
19099    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Vulnerability Finding</code>.\n\noptional"]
19100    #[serde(rename = "class_name")]
19101    #[serde(skip_serializing_if = "Option::is_none")]
19102    pub class_name: Option<String>,
19103    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
19104    #[serde(rename = "class_uid")]
19105    #[serde(skip_serializing_if = "Option::is_none")]
19106    pub class_uid: Option<i64>,
19107    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
19108    #[serde(rename = "cloud")]
19109    #[serde(skip_serializing_if = "Option::is_none")]
19110    pub cloud: Option<Box<Cloud>>,
19111    #[doc = "Comment\n\nA user provided comment about the finding.\n\noptional"]
19112    #[serde(rename = "comment")]
19113    #[serde(skip_serializing_if = "Option::is_none")]
19114    pub comment: Option<String>,
19115    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19116    #[serde(rename = "confidence")]
19117    #[serde(skip_serializing_if = "Option::is_none")]
19118    pub confidence: Option<String>,
19119    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
19120    #[serde(rename = "confidence_id")]
19121    #[serde(skip_serializing_if = "Option::is_none")]
19122    pub confidence_id: Option<i64>,
19123    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
19124    #[serde(rename = "confidence_score")]
19125    #[serde(skip_serializing_if = "Option::is_none")]
19126    pub confidence_score: Option<i64>,
19127    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
19128    #[serde(rename = "count")]
19129    #[serde(skip_serializing_if = "Option::is_none")]
19130    pub count: Option<i64>,
19131    #[doc = "Device\n\nDescribes the affected device/host. If applicable, it can be used in conjunction with <code>Resource(s)</code>. <p> e.g. Specific details about an AWS EC2 instance, that is affected by the Finding.</p>\n\noptional"]
19132    #[serde(rename = "device")]
19133    #[serde(skip_serializing_if = "Option::is_none")]
19134    pub device: Option<Box<Device>>,
19135    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19136    #[serde(rename = "disposition")]
19137    #[serde(skip_serializing_if = "Option::is_none")]
19138    pub disposition: Option<String>,
19139    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
19140    #[serde(rename = "disposition_id")]
19141    #[serde(skip_serializing_if = "Option::is_none")]
19142    pub disposition_id: Option<i64>,
19143    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
19144    #[serde(rename = "duration")]
19145    #[serde(skip_serializing_if = "Option::is_none")]
19146    pub duration: Option<i64>,
19147    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
19148    #[serde(rename = "end_time")]
19149    #[serde(skip_serializing_if = "Option::is_none")]
19150    pub end_time: Option<i64>,
19151    #[doc = "End Time\n\nThe time of the most recent event included in the finding.\n\noptional"]
19152    #[serde(rename = "end_time_dt")]
19153    #[serde(skip_serializing_if = "Option::is_none")]
19154    pub end_time_dt: Option<String>,
19155    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
19156    #[serde(rename = "enrichments")]
19157    #[serde(skip_serializing_if = "Option::is_none")]
19158    pub enrichments: Option<Vec<Enrichment>>,
19159    #[doc = "Finding Information\n\nDescribes the supporting information about a generated finding.\n\nrequired"]
19160    #[serde(rename = "finding_info")]
19161    #[serde(skip_serializing_if = "Option::is_none")]
19162    pub finding_info: Option<Box<FindingInfo>>,
19163    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
19164    #[serde(rename = "firewall_rule")]
19165    #[serde(skip_serializing_if = "Option::is_none")]
19166    pub firewall_rule: Option<Box<FirewallRule>>,
19167    #[doc = "Impact\n\nThe impact , normalized to the caption of the impact_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
19168    #[serde(rename = "impact")]
19169    #[serde(skip_serializing_if = "Option::is_none")]
19170    pub impact: Option<String>,
19171    #[doc = "Impact ID\n\nThe normalized impact of the incident or finding. Per NIST, this is the magnitude of harm that can be expected to result from the consequences of unauthorized disclosure, modification, destruction, or loss of information or information system availability.\n\nrecommended"]
19172    #[serde(rename = "impact_id")]
19173    #[serde(skip_serializing_if = "Option::is_none")]
19174    pub impact_id: Option<i64>,
19175    #[doc = "Impact Score\n\nThe impact as an integer value of the finding, valid range 0-100.\n\nrecommended"]
19176    #[serde(rename = "impact_score")]
19177    #[serde(skip_serializing_if = "Option::is_none")]
19178    pub impact_score: Option<i64>,
19179    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
19180    #[serde(rename = "is_alert")]
19181    #[serde(skip_serializing_if = "Option::is_none")]
19182    pub is_alert: Option<bool>,
19183    #[doc = "Suspected Breach\n\nA determination based on analytics as to whether a potential breach was found.\n\noptional"]
19184    #[serde(rename = "is_suspected_breach")]
19185    #[serde(skip_serializing_if = "Option::is_none")]
19186    pub is_suspected_breach: Option<bool>,
19187    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
19188    #[serde(rename = "malware")]
19189    #[serde(skip_serializing_if = "Option::is_none")]
19190    pub malware: Option<Vec<Malware>>,
19191    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
19192    #[serde(rename = "malware_scan_info")]
19193    #[serde(skip_serializing_if = "Option::is_none")]
19194    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
19195    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
19196    #[serde(rename = "message")]
19197    #[serde(skip_serializing_if = "Option::is_none")]
19198    pub message: Option<String>,
19199    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
19200    #[serde(rename = "metadata")]
19201    #[serde(skip_serializing_if = "Option::is_none")]
19202    pub metadata: Option<Box<Metadata>>,
19203    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
19204    #[serde(rename = "observables")]
19205    #[serde(skip_serializing_if = "Option::is_none")]
19206    pub observables: Option<Vec<Observable>>,
19207    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
19208    #[serde(rename = "osint")]
19209    #[serde(skip_serializing_if = "Option::is_none")]
19210    pub osint: Option<Vec<Osint>>,
19211    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
19212    #[serde(rename = "policy")]
19213    #[serde(skip_serializing_if = "Option::is_none")]
19214    pub policy: Option<Box<Policy>>,
19215    #[doc = "Priority\n\nThe priority, normalized to the caption of the priority_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19216    #[serde(rename = "priority")]
19217    #[serde(skip_serializing_if = "Option::is_none")]
19218    pub priority: Option<String>,
19219    #[doc = "Priority ID\n\nThe normalized priority. Priority identifies the relative importance of the incident or finding. It is a measurement of urgency.\n\nrecommended"]
19220    #[serde(rename = "priority_id")]
19221    #[serde(skip_serializing_if = "Option::is_none")]
19222    pub priority_id: Option<i64>,
19223    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
19224    #[serde(rename = "raw_data")]
19225    #[serde(skip_serializing_if = "Option::is_none")]
19226    pub raw_data: Option<String>,
19227    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
19228    #[serde(rename = "raw_data_hash")]
19229    #[serde(skip_serializing_if = "Option::is_none")]
19230    pub raw_data_hash: Option<Box<Fingerprint>>,
19231    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
19232    #[serde(rename = "raw_data_size")]
19233    #[serde(skip_serializing_if = "Option::is_none")]
19234    pub raw_data_size: Option<i64>,
19235    #[doc = "Resource\n\nDescribes details about the resource that is affected by the vulnerability/vulnerabilities.\n\nrecommended"]
19236    #[serde(rename = "resource")]
19237    #[serde(skip_serializing_if = "Option::is_none")]
19238    pub resource: Option<Box<ResourceDetails>>,
19239    #[doc = "Affected Resources\n\nDescribes details about the resource/resources that are affected by the vulnerability/vulnerabilities.\n\nrecommended"]
19240    #[serde(rename = "resources")]
19241    #[serde(skip_serializing_if = "Option::is_none")]
19242    pub resources: Option<Vec<ResourceDetails>>,
19243    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
19244    #[serde(rename = "risk_details")]
19245    #[serde(skip_serializing_if = "Option::is_none")]
19246    pub risk_details: Option<String>,
19247    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
19248    #[serde(rename = "risk_level")]
19249    #[serde(skip_serializing_if = "Option::is_none")]
19250    pub risk_level: Option<String>,
19251    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
19252    #[serde(rename = "risk_level_id")]
19253    #[serde(skip_serializing_if = "Option::is_none")]
19254    pub risk_level_id: Option<i64>,
19255    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
19256    #[serde(rename = "risk_score")]
19257    #[serde(skip_serializing_if = "Option::is_none")]
19258    pub risk_score: Option<i64>,
19259    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
19260    #[serde(rename = "severity")]
19261    #[serde(skip_serializing_if = "Option::is_none")]
19262    pub severity: Option<String>,
19263    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
19264    #[serde(rename = "severity_id")]
19265    #[serde(skip_serializing_if = "Option::is_none")]
19266    pub severity_id: Option<i64>,
19267    #[doc = "Source URL\n\nA Url link used to access the original incident.\n\nrecommended"]
19268    #[serde(rename = "src_url")]
19269    #[serde(skip_serializing_if = "Option::is_none")]
19270    pub src_url: Option<String>,
19271    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
19272    #[serde(rename = "start_time")]
19273    #[serde(skip_serializing_if = "Option::is_none")]
19274    pub start_time: Option<i64>,
19275    #[doc = "Start Time\n\nThe time of the least recent event included in the finding.\n\noptional"]
19276    #[serde(rename = "start_time_dt")]
19277    #[serde(skip_serializing_if = "Option::is_none")]
19278    pub start_time_dt: Option<String>,
19279    #[doc = "Status\n\nThe normalized status of the Finding set by the consumer normalized to the caption of the status_id value. In the case of 'Other', it is defined by the source.\n\noptional"]
19280    #[serde(rename = "status")]
19281    #[serde(skip_serializing_if = "Option::is_none")]
19282    pub status: Option<String>,
19283    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
19284    #[serde(rename = "status_code")]
19285    #[serde(skip_serializing_if = "Option::is_none")]
19286    pub status_code: Option<String>,
19287    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
19288    #[serde(rename = "status_detail")]
19289    #[serde(skip_serializing_if = "Option::is_none")]
19290    pub status_detail: Option<String>,
19291    #[doc = "Status ID\n\nThe normalized status identifier of the Finding, set by the consumer.\n\nrecommended"]
19292    #[serde(rename = "status_id")]
19293    #[serde(skip_serializing_if = "Option::is_none")]
19294    pub status_id: Option<i64>,
19295    #[doc = "Ticket\n\nThe linked ticket in the ticketing system.\n\noptional"]
19296    #[serde(rename = "ticket")]
19297    #[serde(skip_serializing_if = "Option::is_none")]
19298    pub ticket: Option<Box<Ticket>>,
19299    #[doc = "Tickets\n\nThe associated ticket(s) in the ticketing system. Each ticket contains details like ticket ID, status, etc.\n\noptional"]
19300    #[serde(rename = "tickets")]
19301    #[serde(skip_serializing_if = "Option::is_none")]
19302    pub tickets: Option<Vec<Ticket>>,
19303    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
19304    #[serde(rename = "time")]
19305    #[serde(skip_serializing_if = "Option::is_none")]
19306    pub time: Option<i64>,
19307    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
19308    #[serde(rename = "time_dt")]
19309    #[serde(skip_serializing_if = "Option::is_none")]
19310    pub time_dt: Option<String>,
19311    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
19312    #[serde(rename = "timezone_offset")]
19313    #[serde(skip_serializing_if = "Option::is_none")]
19314    pub timezone_offset: Option<i64>,
19315    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
19316    #[serde(rename = "type_name")]
19317    #[serde(skip_serializing_if = "Option::is_none")]
19318    pub type_name: Option<String>,
19319    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
19320    #[serde(rename = "type_uid")]
19321    #[serde(skip_serializing_if = "Option::is_none")]
19322    pub type_uid: Option<i64>,
19323    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
19324    #[serde(rename = "unmapped")]
19325    #[serde(skip_serializing_if = "Option::is_none")]
19326    pub unmapped: Option<serde_json::Value>,
19327    #[doc = "Vendor Attributes\n\nThe Vendor Attributes object can be used to represent values of attributes populated by the Vendor/Finding Provider. It can help distinguish between the vendor-provided values and consumer-updated values, of key attributes like <code>severity_id</code>.<br>The original finding producer should not populate this object. It should be populated by consuming systems that support data mutability.\n\noptional"]
19328    #[serde(rename = "vendor_attributes")]
19329    #[serde(skip_serializing_if = "Option::is_none")]
19330    pub vendor_attributes: Option<Box<VendorAttributes>>,
19331    #[doc = "Verdict\n\nThe verdict assigned to an Incident finding.\n\nrecommended"]
19332    #[serde(rename = "verdict")]
19333    #[serde(skip_serializing_if = "Option::is_none")]
19334    pub verdict: Option<String>,
19335    #[doc = "Verdict ID\n\nThe normalized verdict of an Incident.\n\nrecommended"]
19336    #[serde(rename = "verdict_id")]
19337    #[serde(skip_serializing_if = "Option::is_none")]
19338    pub verdict_id: Option<i64>,
19339    #[doc = "Vulnerabilities\n\nThis object describes vulnerabilities reported in a security finding.\n\nrequired"]
19340    #[serde(rename = "vulnerabilities")]
19341    #[serde(skip_serializing_if = "Option::is_none")]
19342    pub vulnerabilities: Option<Vec<Vulnerability>>,
19343}
19344#[doc = "Web Resource Access Activity\n\nWeb Resource Access Activity events describe successful/failed attempts to access a web resource over HTTP.\n\n[UID:6004] Category: application | Name: web_resource_access_activity"]
19345#[deprecated(
19346    note = "Use the <code>Web Resources Activity</code> class with the <code>Security Control</code> and/or <code>Network Proxy</code> profile instead. (Since 1.1.0)"
19347)]
19348#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
19349#[serde(default)]
19350#[non_exhaustive]
19351pub struct WebResourceAccessActivity {
19352    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
19353    #[serde(rename = "action")]
19354    #[serde(skip_serializing_if = "Option::is_none")]
19355    pub action: Option<String>,
19356    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
19357    #[serde(rename = "action_id")]
19358    #[serde(skip_serializing_if = "Option::is_none")]
19359    pub action_id: Option<i64>,
19360    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
19361    #[serde(rename = "activity_id")]
19362    #[serde(skip_serializing_if = "Option::is_none")]
19363    pub activity_id: Option<i64>,
19364    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
19365    #[serde(rename = "activity_name")]
19366    #[serde(skip_serializing_if = "Option::is_none")]
19367    pub activity_name: Option<String>,
19368    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
19369    #[serde(rename = "actor")]
19370    #[serde(skip_serializing_if = "Option::is_none")]
19371    pub actor: Option<Box<Actor>>,
19372    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
19373    #[serde(rename = "api")]
19374    #[serde(skip_serializing_if = "Option::is_none")]
19375    pub api: Option<Box<Api>>,
19376    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
19377    #[serde(rename = "attacks")]
19378    #[serde(skip_serializing_if = "Option::is_none")]
19379    pub attacks: Option<Vec<Attack>>,
19380    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
19381    #[serde(rename = "authorizations")]
19382    #[serde(skip_serializing_if = "Option::is_none")]
19383    pub authorizations: Option<Vec<Authorization>>,
19384    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Application Activity</code>.\n\noptional"]
19385    #[serde(rename = "category_name")]
19386    #[serde(skip_serializing_if = "Option::is_none")]
19387    pub category_name: Option<String>,
19388    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
19389    #[serde(rename = "category_uid")]
19390    #[serde(skip_serializing_if = "Option::is_none")]
19391    pub category_uid: Option<i64>,
19392    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Web Resource Access Activity</code>.\n\noptional"]
19393    #[serde(rename = "class_name")]
19394    #[serde(skip_serializing_if = "Option::is_none")]
19395    pub class_name: Option<String>,
19396    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
19397    #[serde(rename = "class_uid")]
19398    #[serde(skip_serializing_if = "Option::is_none")]
19399    pub class_uid: Option<i64>,
19400    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
19401    #[serde(rename = "cloud")]
19402    #[serde(skip_serializing_if = "Option::is_none")]
19403    pub cloud: Option<Box<Cloud>>,
19404    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19405    #[serde(rename = "confidence")]
19406    #[serde(skip_serializing_if = "Option::is_none")]
19407    pub confidence: Option<String>,
19408    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
19409    #[serde(rename = "confidence_id")]
19410    #[serde(skip_serializing_if = "Option::is_none")]
19411    pub confidence_id: Option<i64>,
19412    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
19413    #[serde(rename = "confidence_score")]
19414    #[serde(skip_serializing_if = "Option::is_none")]
19415    pub confidence_score: Option<i64>,
19416    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
19417    #[serde(rename = "count")]
19418    #[serde(skip_serializing_if = "Option::is_none")]
19419    pub count: Option<i64>,
19420    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
19421    #[serde(rename = "device")]
19422    #[serde(skip_serializing_if = "Option::is_none")]
19423    pub device: Option<Box<Device>>,
19424    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19425    #[serde(rename = "disposition")]
19426    #[serde(skip_serializing_if = "Option::is_none")]
19427    pub disposition: Option<String>,
19428    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
19429    #[serde(rename = "disposition_id")]
19430    #[serde(skip_serializing_if = "Option::is_none")]
19431    pub disposition_id: Option<i64>,
19432    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
19433    #[serde(rename = "duration")]
19434    #[serde(skip_serializing_if = "Option::is_none")]
19435    pub duration: Option<i64>,
19436    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
19437    #[serde(rename = "end_time")]
19438    #[serde(skip_serializing_if = "Option::is_none")]
19439    pub end_time: Option<i64>,
19440    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
19441    #[serde(rename = "end_time_dt")]
19442    #[serde(skip_serializing_if = "Option::is_none")]
19443    pub end_time_dt: Option<String>,
19444    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
19445    #[serde(rename = "enrichments")]
19446    #[serde(skip_serializing_if = "Option::is_none")]
19447    pub enrichments: Option<Vec<Enrichment>>,
19448    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
19449    #[serde(rename = "firewall_rule")]
19450    #[serde(skip_serializing_if = "Option::is_none")]
19451    pub firewall_rule: Option<Box<FirewallRule>>,
19452    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\nrequired"]
19453    #[serde(rename = "http_request")]
19454    #[serde(skip_serializing_if = "Option::is_none")]
19455    pub http_request: Option<Box<HttpRequest>>,
19456    #[doc = "HTTP Response\n\nDetails about the HTTP response, if available.\n\noptional"]
19457    #[serde(rename = "http_response")]
19458    #[serde(skip_serializing_if = "Option::is_none")]
19459    pub http_response: Option<Box<HttpResponse>>,
19460    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
19461    #[serde(rename = "is_alert")]
19462    #[serde(skip_serializing_if = "Option::is_none")]
19463    pub is_alert: Option<bool>,
19464    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
19465    #[serde(rename = "malware")]
19466    #[serde(skip_serializing_if = "Option::is_none")]
19467    pub malware: Option<Vec<Malware>>,
19468    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
19469    #[serde(rename = "malware_scan_info")]
19470    #[serde(skip_serializing_if = "Option::is_none")]
19471    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
19472    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
19473    #[serde(rename = "message")]
19474    #[serde(skip_serializing_if = "Option::is_none")]
19475    pub message: Option<String>,
19476    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
19477    #[serde(rename = "metadata")]
19478    #[serde(skip_serializing_if = "Option::is_none")]
19479    pub metadata: Option<Box<Metadata>>,
19480    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
19481    #[serde(rename = "observables")]
19482    #[serde(skip_serializing_if = "Option::is_none")]
19483    pub observables: Option<Vec<Observable>>,
19484    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
19485    #[serde(rename = "osint")]
19486    #[serde(skip_serializing_if = "Option::is_none")]
19487    pub osint: Option<Vec<Osint>>,
19488    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
19489    #[serde(rename = "policy")]
19490    #[serde(skip_serializing_if = "Option::is_none")]
19491    pub policy: Option<Box<Policy>>,
19492    #[doc = "Proxy\n\nDetails about the proxy service, if available.\n\noptional"]
19493    #[serde(rename = "proxy")]
19494    #[serde(skip_serializing_if = "Option::is_none")]
19495    pub proxy: Option<Box<NetworkProxy>>,
19496    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
19497    #[serde(rename = "proxy_connection_info")]
19498    #[serde(skip_serializing_if = "Option::is_none")]
19499    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
19500    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
19501    #[serde(rename = "proxy_endpoint")]
19502    #[serde(skip_serializing_if = "Option::is_none")]
19503    pub proxy_endpoint: Option<Box<NetworkProxy>>,
19504    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
19505    #[serde(rename = "proxy_http_request")]
19506    #[serde(skip_serializing_if = "Option::is_none")]
19507    pub proxy_http_request: Option<Box<HttpRequest>>,
19508    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
19509    #[serde(rename = "proxy_http_response")]
19510    #[serde(skip_serializing_if = "Option::is_none")]
19511    pub proxy_http_response: Option<Box<HttpResponse>>,
19512    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
19513    #[serde(rename = "proxy_tls")]
19514    #[serde(skip_serializing_if = "Option::is_none")]
19515    pub proxy_tls: Option<Box<Tls>>,
19516    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
19517    #[serde(rename = "proxy_traffic")]
19518    #[serde(skip_serializing_if = "Option::is_none")]
19519    pub proxy_traffic: Option<Box<NetworkTraffic>>,
19520    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
19521    #[serde(rename = "raw_data")]
19522    #[serde(skip_serializing_if = "Option::is_none")]
19523    pub raw_data: Option<String>,
19524    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
19525    #[serde(rename = "raw_data_hash")]
19526    #[serde(skip_serializing_if = "Option::is_none")]
19527    pub raw_data_hash: Option<Box<Fingerprint>>,
19528    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
19529    #[serde(rename = "raw_data_size")]
19530    #[serde(skip_serializing_if = "Option::is_none")]
19531    pub raw_data_size: Option<i64>,
19532    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
19533    #[serde(rename = "risk_details")]
19534    #[serde(skip_serializing_if = "Option::is_none")]
19535    pub risk_details: Option<String>,
19536    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
19537    #[serde(rename = "risk_level")]
19538    #[serde(skip_serializing_if = "Option::is_none")]
19539    pub risk_level: Option<String>,
19540    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
19541    #[serde(rename = "risk_level_id")]
19542    #[serde(skip_serializing_if = "Option::is_none")]
19543    pub risk_level_id: Option<i64>,
19544    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
19545    #[serde(rename = "risk_score")]
19546    #[serde(skip_serializing_if = "Option::is_none")]
19547    pub risk_score: Option<i64>,
19548    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
19549    #[serde(rename = "severity")]
19550    #[serde(skip_serializing_if = "Option::is_none")]
19551    pub severity: Option<String>,
19552    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
19553    #[serde(rename = "severity_id")]
19554    #[serde(skip_serializing_if = "Option::is_none")]
19555    pub severity_id: Option<i64>,
19556    #[doc = "Source Endpoint\n\nDetails about the source endpoint of the request.\n\nrecommended"]
19557    #[serde(rename = "src_endpoint")]
19558    #[serde(skip_serializing_if = "Option::is_none")]
19559    pub src_endpoint: Option<Box<NetworkEndpoint>>,
19560    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
19561    #[serde(rename = "start_time")]
19562    #[serde(skip_serializing_if = "Option::is_none")]
19563    pub start_time: Option<i64>,
19564    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
19565    #[serde(rename = "start_time_dt")]
19566    #[serde(skip_serializing_if = "Option::is_none")]
19567    pub start_time_dt: Option<String>,
19568    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
19569    #[serde(rename = "status")]
19570    #[serde(skip_serializing_if = "Option::is_none")]
19571    pub status: Option<String>,
19572    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
19573    #[serde(rename = "status_code")]
19574    #[serde(skip_serializing_if = "Option::is_none")]
19575    pub status_code: Option<String>,
19576    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
19577    #[serde(rename = "status_detail")]
19578    #[serde(skip_serializing_if = "Option::is_none")]
19579    pub status_detail: Option<String>,
19580    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
19581    #[serde(rename = "status_id")]
19582    #[serde(skip_serializing_if = "Option::is_none")]
19583    pub status_id: Option<i64>,
19584    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
19585    #[serde(rename = "time")]
19586    #[serde(skip_serializing_if = "Option::is_none")]
19587    pub time: Option<i64>,
19588    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
19589    #[serde(rename = "time_dt")]
19590    #[serde(skip_serializing_if = "Option::is_none")]
19591    pub time_dt: Option<String>,
19592    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
19593    #[serde(rename = "timezone_offset")]
19594    #[serde(skip_serializing_if = "Option::is_none")]
19595    pub timezone_offset: Option<i64>,
19596    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes, if available.\n\noptional"]
19597    #[serde(rename = "tls")]
19598    #[serde(skip_serializing_if = "Option::is_none")]
19599    pub tls: Option<Box<Tls>>,
19600    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
19601    #[serde(rename = "type_name")]
19602    #[serde(skip_serializing_if = "Option::is_none")]
19603    pub type_name: Option<String>,
19604    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
19605    #[serde(rename = "type_uid")]
19606    #[serde(skip_serializing_if = "Option::is_none")]
19607    pub type_uid: Option<i64>,
19608    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
19609    #[serde(rename = "unmapped")]
19610    #[serde(skip_serializing_if = "Option::is_none")]
19611    pub unmapped: Option<serde_json::Value>,
19612    #[doc = "Web Resources\n\nDetails about the resource that is the target of the activity.\n\nrequired"]
19613    #[serde(rename = "web_resources")]
19614    #[serde(skip_serializing_if = "Option::is_none")]
19615    pub web_resources: Option<Vec<WebResource>>,
19616}
19617#[doc = "Web Resources Activity\n\nWeb Resources Activity events describe actions executed on a set of Web Resources.\n\n[UID:6001] Category: application | Name: web_resources_activity"]
19618#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
19619#[serde(default)]
19620#[non_exhaustive]
19621pub struct WebResourcesActivity {
19622    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
19623    #[serde(rename = "action")]
19624    #[serde(skip_serializing_if = "Option::is_none")]
19625    pub action: Option<String>,
19626    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
19627    #[serde(rename = "action_id")]
19628    #[serde(skip_serializing_if = "Option::is_none")]
19629    pub action_id: Option<i64>,
19630    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
19631    #[serde(rename = "activity_id")]
19632    #[serde(skip_serializing_if = "Option::is_none")]
19633    pub activity_id: Option<i64>,
19634    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
19635    #[serde(rename = "activity_name")]
19636    #[serde(skip_serializing_if = "Option::is_none")]
19637    pub activity_name: Option<String>,
19638    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
19639    #[serde(rename = "actor")]
19640    #[serde(skip_serializing_if = "Option::is_none")]
19641    pub actor: Option<Box<Actor>>,
19642    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
19643    #[serde(rename = "api")]
19644    #[serde(skip_serializing_if = "Option::is_none")]
19645    pub api: Option<Box<Api>>,
19646    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
19647    #[serde(rename = "attacks")]
19648    #[serde(skip_serializing_if = "Option::is_none")]
19649    pub attacks: Option<Vec<Attack>>,
19650    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
19651    #[serde(rename = "authorizations")]
19652    #[serde(skip_serializing_if = "Option::is_none")]
19653    pub authorizations: Option<Vec<Authorization>>,
19654    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Application Activity</code>.\n\noptional"]
19655    #[serde(rename = "category_name")]
19656    #[serde(skip_serializing_if = "Option::is_none")]
19657    pub category_name: Option<String>,
19658    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
19659    #[serde(rename = "category_uid")]
19660    #[serde(skip_serializing_if = "Option::is_none")]
19661    pub category_uid: Option<i64>,
19662    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Web Resources Activity</code>.\n\noptional"]
19663    #[serde(rename = "class_name")]
19664    #[serde(skip_serializing_if = "Option::is_none")]
19665    pub class_name: Option<String>,
19666    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
19667    #[serde(rename = "class_uid")]
19668    #[serde(skip_serializing_if = "Option::is_none")]
19669    pub class_uid: Option<i64>,
19670    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
19671    #[serde(rename = "cloud")]
19672    #[serde(skip_serializing_if = "Option::is_none")]
19673    pub cloud: Option<Box<Cloud>>,
19674    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19675    #[serde(rename = "confidence")]
19676    #[serde(skip_serializing_if = "Option::is_none")]
19677    pub confidence: Option<String>,
19678    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
19679    #[serde(rename = "confidence_id")]
19680    #[serde(skip_serializing_if = "Option::is_none")]
19681    pub confidence_id: Option<i64>,
19682    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
19683    #[serde(rename = "confidence_score")]
19684    #[serde(skip_serializing_if = "Option::is_none")]
19685    pub confidence_score: Option<i64>,
19686    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
19687    #[serde(rename = "count")]
19688    #[serde(skip_serializing_if = "Option::is_none")]
19689    pub count: Option<i64>,
19690    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
19691    #[serde(rename = "device")]
19692    #[serde(skip_serializing_if = "Option::is_none")]
19693    pub device: Option<Box<Device>>,
19694    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19695    #[serde(rename = "disposition")]
19696    #[serde(skip_serializing_if = "Option::is_none")]
19697    pub disposition: Option<String>,
19698    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
19699    #[serde(rename = "disposition_id")]
19700    #[serde(skip_serializing_if = "Option::is_none")]
19701    pub disposition_id: Option<i64>,
19702    #[doc = "Destination Endpoint\n\nDetails about server providing the web resources.\n\nrecommended"]
19703    #[serde(rename = "dst_endpoint")]
19704    #[serde(skip_serializing_if = "Option::is_none")]
19705    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
19706    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
19707    #[serde(rename = "duration")]
19708    #[serde(skip_serializing_if = "Option::is_none")]
19709    pub duration: Option<i64>,
19710    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
19711    #[serde(rename = "end_time")]
19712    #[serde(skip_serializing_if = "Option::is_none")]
19713    pub end_time: Option<i64>,
19714    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
19715    #[serde(rename = "end_time_dt")]
19716    #[serde(skip_serializing_if = "Option::is_none")]
19717    pub end_time_dt: Option<String>,
19718    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
19719    #[serde(rename = "enrichments")]
19720    #[serde(skip_serializing_if = "Option::is_none")]
19721    pub enrichments: Option<Vec<Enrichment>>,
19722    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
19723    #[serde(rename = "firewall_rule")]
19724    #[serde(skip_serializing_if = "Option::is_none")]
19725    pub firewall_rule: Option<Box<FirewallRule>>,
19726    #[doc = "HTTP Request\n\nDetails about the underlying HTTP request.\n\nrecommended"]
19727    #[serde(rename = "http_request")]
19728    #[serde(skip_serializing_if = "Option::is_none")]
19729    pub http_request: Option<Box<HttpRequest>>,
19730    #[doc = "HTTP Response\n\nDetails about the HTTP response, if available.\n\noptional"]
19731    #[serde(rename = "http_response")]
19732    #[serde(skip_serializing_if = "Option::is_none")]
19733    pub http_response: Option<Box<HttpResponse>>,
19734    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
19735    #[serde(rename = "is_alert")]
19736    #[serde(skip_serializing_if = "Option::is_none")]
19737    pub is_alert: Option<bool>,
19738    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
19739    #[serde(rename = "malware")]
19740    #[serde(skip_serializing_if = "Option::is_none")]
19741    pub malware: Option<Vec<Malware>>,
19742    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
19743    #[serde(rename = "malware_scan_info")]
19744    #[serde(skip_serializing_if = "Option::is_none")]
19745    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
19746    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
19747    #[serde(rename = "message")]
19748    #[serde(skip_serializing_if = "Option::is_none")]
19749    pub message: Option<String>,
19750    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
19751    #[serde(rename = "metadata")]
19752    #[serde(skip_serializing_if = "Option::is_none")]
19753    pub metadata: Option<Box<Metadata>>,
19754    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
19755    #[serde(rename = "observables")]
19756    #[serde(skip_serializing_if = "Option::is_none")]
19757    pub observables: Option<Vec<Observable>>,
19758    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
19759    #[serde(rename = "osint")]
19760    #[serde(skip_serializing_if = "Option::is_none")]
19761    pub osint: Option<Vec<Osint>>,
19762    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
19763    #[serde(rename = "policy")]
19764    #[serde(skip_serializing_if = "Option::is_none")]
19765    pub policy: Option<Box<Policy>>,
19766    #[doc = "Proxy Connection Info\n\nThe connection information from the proxy server to the remote server.\n\nrecommended"]
19767    #[serde(rename = "proxy_connection_info")]
19768    #[serde(skip_serializing_if = "Option::is_none")]
19769    pub proxy_connection_info: Option<Box<NetworkConnectionInfo>>,
19770    #[doc = "Proxy Endpoint\n\nThe proxy (server) in a network connection.\n\noptional"]
19771    #[serde(rename = "proxy_endpoint")]
19772    #[serde(skip_serializing_if = "Option::is_none")]
19773    pub proxy_endpoint: Option<Box<NetworkProxy>>,
19774    #[doc = "Proxy HTTP Request\n\nThe HTTP Request from the proxy server to the remote server.\n\noptional"]
19775    #[serde(rename = "proxy_http_request")]
19776    #[serde(skip_serializing_if = "Option::is_none")]
19777    pub proxy_http_request: Option<Box<HttpRequest>>,
19778    #[doc = "Proxy HTTP Response\n\nThe HTTP Response from the remote server to the proxy server.\n\noptional"]
19779    #[serde(rename = "proxy_http_response")]
19780    #[serde(skip_serializing_if = "Option::is_none")]
19781    pub proxy_http_response: Option<Box<HttpResponse>>,
19782    #[doc = "Proxy TLS\n\nThe TLS protocol negotiated between the proxy server and the remote server.\n\nrecommended"]
19783    #[serde(rename = "proxy_tls")]
19784    #[serde(skip_serializing_if = "Option::is_none")]
19785    pub proxy_tls: Option<Box<Tls>>,
19786    #[doc = "Proxy Traffic\n\nThe network traffic refers to the amount of data moving across a network, from proxy to remote server at a given point of time.\n\nrecommended"]
19787    #[serde(rename = "proxy_traffic")]
19788    #[serde(skip_serializing_if = "Option::is_none")]
19789    pub proxy_traffic: Option<Box<NetworkTraffic>>,
19790    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
19791    #[serde(rename = "raw_data")]
19792    #[serde(skip_serializing_if = "Option::is_none")]
19793    pub raw_data: Option<String>,
19794    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
19795    #[serde(rename = "raw_data_hash")]
19796    #[serde(skip_serializing_if = "Option::is_none")]
19797    pub raw_data_hash: Option<Box<Fingerprint>>,
19798    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
19799    #[serde(rename = "raw_data_size")]
19800    #[serde(skip_serializing_if = "Option::is_none")]
19801    pub raw_data_size: Option<i64>,
19802    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
19803    #[serde(rename = "risk_details")]
19804    #[serde(skip_serializing_if = "Option::is_none")]
19805    pub risk_details: Option<String>,
19806    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
19807    #[serde(rename = "risk_level")]
19808    #[serde(skip_serializing_if = "Option::is_none")]
19809    pub risk_level: Option<String>,
19810    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
19811    #[serde(rename = "risk_level_id")]
19812    #[serde(skip_serializing_if = "Option::is_none")]
19813    pub risk_level_id: Option<i64>,
19814    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
19815    #[serde(rename = "risk_score")]
19816    #[serde(skip_serializing_if = "Option::is_none")]
19817    pub risk_score: Option<i64>,
19818    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
19819    #[serde(rename = "severity")]
19820    #[serde(skip_serializing_if = "Option::is_none")]
19821    pub severity: Option<String>,
19822    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
19823    #[serde(rename = "severity_id")]
19824    #[serde(skip_serializing_if = "Option::is_none")]
19825    pub severity_id: Option<i64>,
19826    #[doc = "Source Endpoint\n\nDetails about the endpoint from which the request originated.\n\nrecommended"]
19827    #[serde(rename = "src_endpoint")]
19828    #[serde(skip_serializing_if = "Option::is_none")]
19829    pub src_endpoint: Option<Box<NetworkEndpoint>>,
19830    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
19831    #[serde(rename = "start_time")]
19832    #[serde(skip_serializing_if = "Option::is_none")]
19833    pub start_time: Option<i64>,
19834    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
19835    #[serde(rename = "start_time_dt")]
19836    #[serde(skip_serializing_if = "Option::is_none")]
19837    pub start_time_dt: Option<String>,
19838    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
19839    #[serde(rename = "status")]
19840    #[serde(skip_serializing_if = "Option::is_none")]
19841    pub status: Option<String>,
19842    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
19843    #[serde(rename = "status_code")]
19844    #[serde(skip_serializing_if = "Option::is_none")]
19845    pub status_code: Option<String>,
19846    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
19847    #[serde(rename = "status_detail")]
19848    #[serde(skip_serializing_if = "Option::is_none")]
19849    pub status_detail: Option<String>,
19850    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
19851    #[serde(rename = "status_id")]
19852    #[serde(skip_serializing_if = "Option::is_none")]
19853    pub status_id: Option<i64>,
19854    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
19855    #[serde(rename = "time")]
19856    #[serde(skip_serializing_if = "Option::is_none")]
19857    pub time: Option<i64>,
19858    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
19859    #[serde(rename = "time_dt")]
19860    #[serde(skip_serializing_if = "Option::is_none")]
19861    pub time_dt: Option<String>,
19862    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
19863    #[serde(rename = "timezone_offset")]
19864    #[serde(skip_serializing_if = "Option::is_none")]
19865    pub timezone_offset: Option<i64>,
19866    #[doc = "TLS\n\nThe Transport Layer Security (TLS) attributes, if available.\n\noptional"]
19867    #[serde(rename = "tls")]
19868    #[serde(skip_serializing_if = "Option::is_none")]
19869    pub tls: Option<Box<Tls>>,
19870    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
19871    #[serde(rename = "type_name")]
19872    #[serde(skip_serializing_if = "Option::is_none")]
19873    pub type_name: Option<String>,
19874    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
19875    #[serde(rename = "type_uid")]
19876    #[serde(skip_serializing_if = "Option::is_none")]
19877    pub type_uid: Option<i64>,
19878    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
19879    #[serde(rename = "unmapped")]
19880    #[serde(skip_serializing_if = "Option::is_none")]
19881    pub unmapped: Option<serde_json::Value>,
19882    #[doc = "Web Resources\n\nDescribes details about web resources that were affected by an activity/event.\n\nrequired"]
19883    #[serde(rename = "web_resources")]
19884    #[serde(skip_serializing_if = "Option::is_none")]
19885    pub web_resources: Option<Vec<WebResource>>,
19886    #[doc = "Web Resources Result\n\nThe results of the activity on web resources. It should contain the new values of the changed attributes of the web resources.\n\nrecommended"]
19887    #[serde(rename = "web_resources_result")]
19888    #[serde(skip_serializing_if = "Option::is_none")]
19889    pub web_resources_result: Option<Vec<WebResource>>,
19890}
19891#[doc = "Prefetch Query\n\nPrefetch Query events report information about Windows prefetch files.\n\n[UID:205019] Category: discovery | Name: prefetch_query"]
19892#[deprecated(
19893    note = "Use the <code>Evidence Info</code> class with the <code>Query Evidence</code> object populated with <code>File</code> instead. (Since 1.5.0)"
19894)]
19895#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
19896#[serde(default)]
19897#[non_exhaustive]
19898pub struct WinPrefetchQuery {
19899    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
19900    #[serde(rename = "action")]
19901    #[serde(skip_serializing_if = "Option::is_none")]
19902    pub action: Option<String>,
19903    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
19904    #[serde(rename = "action_id")]
19905    #[serde(skip_serializing_if = "Option::is_none")]
19906    pub action_id: Option<i64>,
19907    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
19908    #[serde(rename = "activity_id")]
19909    #[serde(skip_serializing_if = "Option::is_none")]
19910    pub activity_id: Option<i64>,
19911    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
19912    #[serde(rename = "activity_name")]
19913    #[serde(skip_serializing_if = "Option::is_none")]
19914    pub activity_name: Option<String>,
19915    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
19916    #[serde(rename = "actor")]
19917    #[serde(skip_serializing_if = "Option::is_none")]
19918    pub actor: Option<Box<Actor>>,
19919    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
19920    #[serde(rename = "api")]
19921    #[serde(skip_serializing_if = "Option::is_none")]
19922    pub api: Option<Box<Api>>,
19923    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
19924    #[serde(rename = "attacks")]
19925    #[serde(skip_serializing_if = "Option::is_none")]
19926    pub attacks: Option<Vec<Attack>>,
19927    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
19928    #[serde(rename = "authorizations")]
19929    #[serde(skip_serializing_if = "Option::is_none")]
19930    pub authorizations: Option<Vec<Authorization>>,
19931    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
19932    #[serde(rename = "category_name")]
19933    #[serde(skip_serializing_if = "Option::is_none")]
19934    pub category_name: Option<String>,
19935    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
19936    #[serde(rename = "category_uid")]
19937    #[serde(skip_serializing_if = "Option::is_none")]
19938    pub category_uid: Option<i64>,
19939    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Prefetch Query</code>.\n\noptional"]
19940    #[serde(rename = "class_name")]
19941    #[serde(skip_serializing_if = "Option::is_none")]
19942    pub class_name: Option<String>,
19943    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
19944    #[serde(rename = "class_uid")]
19945    #[serde(skip_serializing_if = "Option::is_none")]
19946    pub class_uid: Option<i64>,
19947    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
19948    #[serde(rename = "cloud")]
19949    #[serde(skip_serializing_if = "Option::is_none")]
19950    pub cloud: Option<Box<Cloud>>,
19951    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19952    #[serde(rename = "confidence")]
19953    #[serde(skip_serializing_if = "Option::is_none")]
19954    pub confidence: Option<String>,
19955    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
19956    #[serde(rename = "confidence_id")]
19957    #[serde(skip_serializing_if = "Option::is_none")]
19958    pub confidence_id: Option<i64>,
19959    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
19960    #[serde(rename = "confidence_score")]
19961    #[serde(skip_serializing_if = "Option::is_none")]
19962    pub confidence_score: Option<i64>,
19963    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
19964    #[serde(rename = "count")]
19965    #[serde(skip_serializing_if = "Option::is_none")]
19966    pub count: Option<i64>,
19967    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
19968    #[serde(rename = "device")]
19969    #[serde(skip_serializing_if = "Option::is_none")]
19970    pub device: Option<Box<Device>>,
19971    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
19972    #[serde(rename = "disposition")]
19973    #[serde(skip_serializing_if = "Option::is_none")]
19974    pub disposition: Option<String>,
19975    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
19976    #[serde(rename = "disposition_id")]
19977    #[serde(skip_serializing_if = "Option::is_none")]
19978    pub disposition_id: Option<i64>,
19979    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
19980    #[serde(rename = "duration")]
19981    #[serde(skip_serializing_if = "Option::is_none")]
19982    pub duration: Option<i64>,
19983    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
19984    #[serde(rename = "end_time")]
19985    #[serde(skip_serializing_if = "Option::is_none")]
19986    pub end_time: Option<i64>,
19987    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
19988    #[serde(rename = "end_time_dt")]
19989    #[serde(skip_serializing_if = "Option::is_none")]
19990    pub end_time_dt: Option<String>,
19991    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
19992    #[serde(rename = "enrichments")]
19993    #[serde(skip_serializing_if = "Option::is_none")]
19994    pub enrichments: Option<Vec<Enrichment>>,
19995    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
19996    #[serde(rename = "firewall_rule")]
19997    #[serde(skip_serializing_if = "Option::is_none")]
19998    pub firewall_rule: Option<Box<FirewallRule>>,
19999    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
20000    #[serde(rename = "is_alert")]
20001    #[serde(skip_serializing_if = "Option::is_none")]
20002    pub is_alert: Option<bool>,
20003    #[doc = "Last Run\n\nThe prefetch file last run time.\n\nrecommended"]
20004    #[serde(rename = "last_run_time")]
20005    #[serde(skip_serializing_if = "Option::is_none")]
20006    pub last_run_time: Option<i64>,
20007    #[doc = "Last Run\n\nThe prefetch file last run time.\n\noptional"]
20008    #[serde(rename = "last_run_time_dt")]
20009    #[serde(skip_serializing_if = "Option::is_none")]
20010    pub last_run_time_dt: Option<String>,
20011    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
20012    #[serde(rename = "malware")]
20013    #[serde(skip_serializing_if = "Option::is_none")]
20014    pub malware: Option<Vec<Malware>>,
20015    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
20016    #[serde(rename = "malware_scan_info")]
20017    #[serde(skip_serializing_if = "Option::is_none")]
20018    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
20019    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
20020    #[serde(rename = "message")]
20021    #[serde(skip_serializing_if = "Option::is_none")]
20022    pub message: Option<String>,
20023    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
20024    #[serde(rename = "metadata")]
20025    #[serde(skip_serializing_if = "Option::is_none")]
20026    pub metadata: Option<Box<Metadata>>,
20027    #[doc = "Name\n\nThe name of the prefetch file that is the target of the query.\n\nrequired"]
20028    #[serde(rename = "name")]
20029    #[serde(skip_serializing_if = "Option::is_none")]
20030    pub name: Option<String>,
20031    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
20032    #[serde(rename = "observables")]
20033    #[serde(skip_serializing_if = "Option::is_none")]
20034    pub observables: Option<Vec<Observable>>,
20035    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
20036    #[serde(rename = "osint")]
20037    #[serde(skip_serializing_if = "Option::is_none")]
20038    pub osint: Option<Vec<Osint>>,
20039    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
20040    #[serde(rename = "policy")]
20041    #[serde(skip_serializing_if = "Option::is_none")]
20042    pub policy: Option<Box<Policy>>,
20043    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
20044    #[serde(rename = "query_info")]
20045    #[serde(skip_serializing_if = "Option::is_none")]
20046    pub query_info: Option<Box<QueryInfo>>,
20047    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
20048    #[serde(rename = "query_result")]
20049    #[serde(skip_serializing_if = "Option::is_none")]
20050    pub query_result: Option<String>,
20051    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
20052    #[serde(rename = "query_result_id")]
20053    #[serde(skip_serializing_if = "Option::is_none")]
20054    pub query_result_id: Option<i64>,
20055    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
20056    #[serde(rename = "raw_data")]
20057    #[serde(skip_serializing_if = "Option::is_none")]
20058    pub raw_data: Option<String>,
20059    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
20060    #[serde(rename = "raw_data_hash")]
20061    #[serde(skip_serializing_if = "Option::is_none")]
20062    pub raw_data_hash: Option<Box<Fingerprint>>,
20063    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
20064    #[serde(rename = "raw_data_size")]
20065    #[serde(skip_serializing_if = "Option::is_none")]
20066    pub raw_data_size: Option<i64>,
20067    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
20068    #[serde(rename = "risk_details")]
20069    #[serde(skip_serializing_if = "Option::is_none")]
20070    pub risk_details: Option<String>,
20071    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
20072    #[serde(rename = "risk_level")]
20073    #[serde(skip_serializing_if = "Option::is_none")]
20074    pub risk_level: Option<String>,
20075    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
20076    #[serde(rename = "risk_level_id")]
20077    #[serde(skip_serializing_if = "Option::is_none")]
20078    pub risk_level_id: Option<i64>,
20079    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
20080    #[serde(rename = "risk_score")]
20081    #[serde(skip_serializing_if = "Option::is_none")]
20082    pub risk_score: Option<i64>,
20083    #[doc = "Run Count\n\nThe prefetch file run count.\n\nrecommended"]
20084    #[serde(rename = "run_count")]
20085    #[serde(skip_serializing_if = "Option::is_none")]
20086    pub run_count: Option<i64>,
20087    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
20088    #[serde(rename = "severity")]
20089    #[serde(skip_serializing_if = "Option::is_none")]
20090    pub severity: Option<String>,
20091    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
20092    #[serde(rename = "severity_id")]
20093    #[serde(skip_serializing_if = "Option::is_none")]
20094    pub severity_id: Option<i64>,
20095    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
20096    #[serde(rename = "start_time")]
20097    #[serde(skip_serializing_if = "Option::is_none")]
20098    pub start_time: Option<i64>,
20099    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
20100    #[serde(rename = "start_time_dt")]
20101    #[serde(skip_serializing_if = "Option::is_none")]
20102    pub start_time_dt: Option<String>,
20103    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
20104    #[serde(rename = "status")]
20105    #[serde(skip_serializing_if = "Option::is_none")]
20106    pub status: Option<String>,
20107    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
20108    #[serde(rename = "status_code")]
20109    #[serde(skip_serializing_if = "Option::is_none")]
20110    pub status_code: Option<String>,
20111    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
20112    #[serde(rename = "status_detail")]
20113    #[serde(skip_serializing_if = "Option::is_none")]
20114    pub status_detail: Option<String>,
20115    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
20116    #[serde(rename = "status_id")]
20117    #[serde(skip_serializing_if = "Option::is_none")]
20118    pub status_id: Option<i64>,
20119    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
20120    #[serde(rename = "time")]
20121    #[serde(skip_serializing_if = "Option::is_none")]
20122    pub time: Option<i64>,
20123    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
20124    #[serde(rename = "time_dt")]
20125    #[serde(skip_serializing_if = "Option::is_none")]
20126    pub time_dt: Option<String>,
20127    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
20128    #[serde(rename = "timezone_offset")]
20129    #[serde(skip_serializing_if = "Option::is_none")]
20130    pub timezone_offset: Option<i64>,
20131    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
20132    #[serde(rename = "type_name")]
20133    #[serde(skip_serializing_if = "Option::is_none")]
20134    pub type_name: Option<String>,
20135    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
20136    #[serde(rename = "type_uid")]
20137    #[serde(skip_serializing_if = "Option::is_none")]
20138    pub type_uid: Option<i64>,
20139    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
20140    #[serde(rename = "unmapped")]
20141    #[serde(skip_serializing_if = "Option::is_none")]
20142    pub unmapped: Option<serde_json::Value>,
20143}
20144#[doc = "Registry Key Activity\n\nRegistry Key Activity events report when a process performs an action on a Windows registry key.\n\n[UID:201001] Category: system | Name: registry_key_activity"]
20145#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
20146#[serde(default)]
20147#[non_exhaustive]
20148pub struct WinRegistryKeyActivity {
20149    #[doc = "Access Mask\n\nThe access mask in a platform-native format.\n\nrecommended"]
20150    #[serde(rename = "access_mask")]
20151    #[serde(skip_serializing_if = "Option::is_none")]
20152    pub access_mask: Option<i64>,
20153    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
20154    #[serde(rename = "action")]
20155    #[serde(skip_serializing_if = "Option::is_none")]
20156    pub action: Option<String>,
20157    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
20158    #[serde(rename = "action_id")]
20159    #[serde(skip_serializing_if = "Option::is_none")]
20160    pub action_id: Option<i64>,
20161    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
20162    #[serde(rename = "activity_id")]
20163    #[serde(skip_serializing_if = "Option::is_none")]
20164    pub activity_id: Option<i64>,
20165    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
20166    #[serde(rename = "activity_name")]
20167    #[serde(skip_serializing_if = "Option::is_none")]
20168    pub activity_name: Option<String>,
20169    #[doc = "Actor\n\nThe actor that performed the activity on the <code>reg_key</code> object.\n\nrequired"]
20170    #[serde(rename = "actor")]
20171    #[serde(skip_serializing_if = "Option::is_none")]
20172    pub actor: Option<Box<Actor>>,
20173    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
20174    #[serde(rename = "api")]
20175    #[serde(skip_serializing_if = "Option::is_none")]
20176    pub api: Option<Box<Api>>,
20177    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
20178    #[serde(rename = "attacks")]
20179    #[serde(skip_serializing_if = "Option::is_none")]
20180    pub attacks: Option<Vec<Attack>>,
20181    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
20182    #[serde(rename = "authorizations")]
20183    #[serde(skip_serializing_if = "Option::is_none")]
20184    pub authorizations: Option<Vec<Authorization>>,
20185    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
20186    #[serde(rename = "category_name")]
20187    #[serde(skip_serializing_if = "Option::is_none")]
20188    pub category_name: Option<String>,
20189    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
20190    #[serde(rename = "category_uid")]
20191    #[serde(skip_serializing_if = "Option::is_none")]
20192    pub category_uid: Option<i64>,
20193    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Registry Key Activity</code>.\n\noptional"]
20194    #[serde(rename = "class_name")]
20195    #[serde(skip_serializing_if = "Option::is_none")]
20196    pub class_name: Option<String>,
20197    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
20198    #[serde(rename = "class_uid")]
20199    #[serde(skip_serializing_if = "Option::is_none")]
20200    pub class_uid: Option<i64>,
20201    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
20202    #[serde(rename = "cloud")]
20203    #[serde(skip_serializing_if = "Option::is_none")]
20204    pub cloud: Option<Box<Cloud>>,
20205    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
20206    #[serde(rename = "confidence")]
20207    #[serde(skip_serializing_if = "Option::is_none")]
20208    pub confidence: Option<String>,
20209    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
20210    #[serde(rename = "confidence_id")]
20211    #[serde(skip_serializing_if = "Option::is_none")]
20212    pub confidence_id: Option<i64>,
20213    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
20214    #[serde(rename = "confidence_score")]
20215    #[serde(skip_serializing_if = "Option::is_none")]
20216    pub confidence_score: Option<i64>,
20217    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
20218    #[serde(rename = "count")]
20219    #[serde(skip_serializing_if = "Option::is_none")]
20220    pub count: Option<i64>,
20221    #[doc = "Create Mask\n\nThe original Windows mask that is required to create the object.\n\nrecommended"]
20222    #[serde(rename = "create_mask")]
20223    #[serde(skip_serializing_if = "Option::is_none")]
20224    pub create_mask: Option<String>,
20225    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
20226    #[serde(rename = "device")]
20227    #[serde(skip_serializing_if = "Option::is_none")]
20228    pub device: Option<Box<Device>>,
20229    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
20230    #[serde(rename = "disposition")]
20231    #[serde(skip_serializing_if = "Option::is_none")]
20232    pub disposition: Option<String>,
20233    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
20234    #[serde(rename = "disposition_id")]
20235    #[serde(skip_serializing_if = "Option::is_none")]
20236    pub disposition_id: Option<i64>,
20237    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
20238    #[serde(rename = "duration")]
20239    #[serde(skip_serializing_if = "Option::is_none")]
20240    pub duration: Option<i64>,
20241    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
20242    #[serde(rename = "end_time")]
20243    #[serde(skip_serializing_if = "Option::is_none")]
20244    pub end_time: Option<i64>,
20245    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
20246    #[serde(rename = "end_time_dt")]
20247    #[serde(skip_serializing_if = "Option::is_none")]
20248    pub end_time_dt: Option<String>,
20249    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
20250    #[serde(rename = "enrichments")]
20251    #[serde(skip_serializing_if = "Option::is_none")]
20252    pub enrichments: Option<Vec<Enrichment>>,
20253    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
20254    #[serde(rename = "firewall_rule")]
20255    #[serde(skip_serializing_if = "Option::is_none")]
20256    pub firewall_rule: Option<Box<FirewallRule>>,
20257    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
20258    #[serde(rename = "is_alert")]
20259    #[serde(skip_serializing_if = "Option::is_none")]
20260    pub is_alert: Option<bool>,
20261    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
20262    #[serde(rename = "malware")]
20263    #[serde(skip_serializing_if = "Option::is_none")]
20264    pub malware: Option<Vec<Malware>>,
20265    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
20266    #[serde(rename = "malware_scan_info")]
20267    #[serde(skip_serializing_if = "Option::is_none")]
20268    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
20269    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
20270    #[serde(rename = "message")]
20271    #[serde(skip_serializing_if = "Option::is_none")]
20272    pub message: Option<String>,
20273    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
20274    #[serde(rename = "metadata")]
20275    #[serde(skip_serializing_if = "Option::is_none")]
20276    pub metadata: Option<Box<Metadata>>,
20277    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
20278    #[serde(rename = "observables")]
20279    #[serde(skip_serializing_if = "Option::is_none")]
20280    pub observables: Option<Vec<Observable>>,
20281    #[doc = "Open Mask\n\nThe Windows options needed to open a registry key.\n\nrecommended"]
20282    #[serde(rename = "open_mask")]
20283    #[serde(skip_serializing_if = "Option::is_none")]
20284    pub open_mask: Option<i64>,
20285    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
20286    #[serde(rename = "osint")]
20287    #[serde(skip_serializing_if = "Option::is_none")]
20288    pub osint: Option<Vec<Osint>>,
20289    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
20290    #[serde(rename = "policy")]
20291    #[serde(skip_serializing_if = "Option::is_none")]
20292    pub policy: Option<Box<Policy>>,
20293    #[doc = "Previous Registry Key\n\nThe registry key before the mutation\n\nrecommended"]
20294    #[serde(rename = "prev_reg_key")]
20295    #[serde(skip_serializing_if = "Option::is_none")]
20296    pub prev_reg_key: Option<Box<WinRegKey>>,
20297    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
20298    #[serde(rename = "raw_data")]
20299    #[serde(skip_serializing_if = "Option::is_none")]
20300    pub raw_data: Option<String>,
20301    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
20302    #[serde(rename = "raw_data_hash")]
20303    #[serde(skip_serializing_if = "Option::is_none")]
20304    pub raw_data_hash: Option<Box<Fingerprint>>,
20305    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
20306    #[serde(rename = "raw_data_size")]
20307    #[serde(skip_serializing_if = "Option::is_none")]
20308    pub raw_data_size: Option<i64>,
20309    #[doc = "Registry Key\n\nThe registry key.\n\nrequired"]
20310    #[serde(rename = "reg_key")]
20311    #[serde(skip_serializing_if = "Option::is_none")]
20312    pub reg_key: Option<Box<WinRegKey>>,
20313    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
20314    #[serde(rename = "risk_details")]
20315    #[serde(skip_serializing_if = "Option::is_none")]
20316    pub risk_details: Option<String>,
20317    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
20318    #[serde(rename = "risk_level")]
20319    #[serde(skip_serializing_if = "Option::is_none")]
20320    pub risk_level: Option<String>,
20321    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
20322    #[serde(rename = "risk_level_id")]
20323    #[serde(skip_serializing_if = "Option::is_none")]
20324    pub risk_level_id: Option<i64>,
20325    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
20326    #[serde(rename = "risk_score")]
20327    #[serde(skip_serializing_if = "Option::is_none")]
20328    pub risk_score: Option<i64>,
20329    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
20330    #[serde(rename = "severity")]
20331    #[serde(skip_serializing_if = "Option::is_none")]
20332    pub severity: Option<String>,
20333    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
20334    #[serde(rename = "severity_id")]
20335    #[serde(skip_serializing_if = "Option::is_none")]
20336    pub severity_id: Option<i64>,
20337    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
20338    #[serde(rename = "start_time")]
20339    #[serde(skip_serializing_if = "Option::is_none")]
20340    pub start_time: Option<i64>,
20341    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
20342    #[serde(rename = "start_time_dt")]
20343    #[serde(skip_serializing_if = "Option::is_none")]
20344    pub start_time_dt: Option<String>,
20345    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
20346    #[serde(rename = "status")]
20347    #[serde(skip_serializing_if = "Option::is_none")]
20348    pub status: Option<String>,
20349    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
20350    #[serde(rename = "status_code")]
20351    #[serde(skip_serializing_if = "Option::is_none")]
20352    pub status_code: Option<String>,
20353    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
20354    #[serde(rename = "status_detail")]
20355    #[serde(skip_serializing_if = "Option::is_none")]
20356    pub status_detail: Option<String>,
20357    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
20358    #[serde(rename = "status_id")]
20359    #[serde(skip_serializing_if = "Option::is_none")]
20360    pub status_id: Option<i64>,
20361    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
20362    #[serde(rename = "time")]
20363    #[serde(skip_serializing_if = "Option::is_none")]
20364    pub time: Option<i64>,
20365    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
20366    #[serde(rename = "time_dt")]
20367    #[serde(skip_serializing_if = "Option::is_none")]
20368    pub time_dt: Option<String>,
20369    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
20370    #[serde(rename = "timezone_offset")]
20371    #[serde(skip_serializing_if = "Option::is_none")]
20372    pub timezone_offset: Option<i64>,
20373    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
20374    #[serde(rename = "type_name")]
20375    #[serde(skip_serializing_if = "Option::is_none")]
20376    pub type_name: Option<String>,
20377    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
20378    #[serde(rename = "type_uid")]
20379    #[serde(skip_serializing_if = "Option::is_none")]
20380    pub type_uid: Option<i64>,
20381    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
20382    #[serde(rename = "unmapped")]
20383    #[serde(skip_serializing_if = "Option::is_none")]
20384    pub unmapped: Option<serde_json::Value>,
20385}
20386#[doc = "Registry Key Query\n\nRegistry Key Query events report information about discovered Windows registry keys.\n\n[UID:205004] Category: discovery | Name: registry_key_query"]
20387#[deprecated(
20388    note = "Use the <code>Evidence Info</code> class with the <code>Query Evidence</code> object populated with <code>Registry Key</code> instead. (Since 1.5.0)"
20389)]
20390#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
20391#[serde(default)]
20392#[non_exhaustive]
20393pub struct WinRegistryKeyQuery {
20394    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
20395    #[serde(rename = "action")]
20396    #[serde(skip_serializing_if = "Option::is_none")]
20397    pub action: Option<String>,
20398    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
20399    #[serde(rename = "action_id")]
20400    #[serde(skip_serializing_if = "Option::is_none")]
20401    pub action_id: Option<i64>,
20402    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
20403    #[serde(rename = "activity_id")]
20404    #[serde(skip_serializing_if = "Option::is_none")]
20405    pub activity_id: Option<i64>,
20406    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
20407    #[serde(rename = "activity_name")]
20408    #[serde(skip_serializing_if = "Option::is_none")]
20409    pub activity_name: Option<String>,
20410    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
20411    #[serde(rename = "actor")]
20412    #[serde(skip_serializing_if = "Option::is_none")]
20413    pub actor: Option<Box<Actor>>,
20414    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
20415    #[serde(rename = "api")]
20416    #[serde(skip_serializing_if = "Option::is_none")]
20417    pub api: Option<Box<Api>>,
20418    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
20419    #[serde(rename = "attacks")]
20420    #[serde(skip_serializing_if = "Option::is_none")]
20421    pub attacks: Option<Vec<Attack>>,
20422    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
20423    #[serde(rename = "authorizations")]
20424    #[serde(skip_serializing_if = "Option::is_none")]
20425    pub authorizations: Option<Vec<Authorization>>,
20426    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
20427    #[serde(rename = "category_name")]
20428    #[serde(skip_serializing_if = "Option::is_none")]
20429    pub category_name: Option<String>,
20430    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
20431    #[serde(rename = "category_uid")]
20432    #[serde(skip_serializing_if = "Option::is_none")]
20433    pub category_uid: Option<i64>,
20434    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Registry Key Query</code>.\n\noptional"]
20435    #[serde(rename = "class_name")]
20436    #[serde(skip_serializing_if = "Option::is_none")]
20437    pub class_name: Option<String>,
20438    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
20439    #[serde(rename = "class_uid")]
20440    #[serde(skip_serializing_if = "Option::is_none")]
20441    pub class_uid: Option<i64>,
20442    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
20443    #[serde(rename = "cloud")]
20444    #[serde(skip_serializing_if = "Option::is_none")]
20445    pub cloud: Option<Box<Cloud>>,
20446    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
20447    #[serde(rename = "confidence")]
20448    #[serde(skip_serializing_if = "Option::is_none")]
20449    pub confidence: Option<String>,
20450    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
20451    #[serde(rename = "confidence_id")]
20452    #[serde(skip_serializing_if = "Option::is_none")]
20453    pub confidence_id: Option<i64>,
20454    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
20455    #[serde(rename = "confidence_score")]
20456    #[serde(skip_serializing_if = "Option::is_none")]
20457    pub confidence_score: Option<i64>,
20458    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
20459    #[serde(rename = "count")]
20460    #[serde(skip_serializing_if = "Option::is_none")]
20461    pub count: Option<i64>,
20462    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
20463    #[serde(rename = "device")]
20464    #[serde(skip_serializing_if = "Option::is_none")]
20465    pub device: Option<Box<Device>>,
20466    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
20467    #[serde(rename = "disposition")]
20468    #[serde(skip_serializing_if = "Option::is_none")]
20469    pub disposition: Option<String>,
20470    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
20471    #[serde(rename = "disposition_id")]
20472    #[serde(skip_serializing_if = "Option::is_none")]
20473    pub disposition_id: Option<i64>,
20474    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
20475    #[serde(rename = "duration")]
20476    #[serde(skip_serializing_if = "Option::is_none")]
20477    pub duration: Option<i64>,
20478    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
20479    #[serde(rename = "end_time")]
20480    #[serde(skip_serializing_if = "Option::is_none")]
20481    pub end_time: Option<i64>,
20482    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
20483    #[serde(rename = "end_time_dt")]
20484    #[serde(skip_serializing_if = "Option::is_none")]
20485    pub end_time_dt: Option<String>,
20486    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
20487    #[serde(rename = "enrichments")]
20488    #[serde(skip_serializing_if = "Option::is_none")]
20489    pub enrichments: Option<Vec<Enrichment>>,
20490    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
20491    #[serde(rename = "firewall_rule")]
20492    #[serde(skip_serializing_if = "Option::is_none")]
20493    pub firewall_rule: Option<Box<FirewallRule>>,
20494    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
20495    #[serde(rename = "is_alert")]
20496    #[serde(skip_serializing_if = "Option::is_none")]
20497    pub is_alert: Option<bool>,
20498    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
20499    #[serde(rename = "malware")]
20500    #[serde(skip_serializing_if = "Option::is_none")]
20501    pub malware: Option<Vec<Malware>>,
20502    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
20503    #[serde(rename = "malware_scan_info")]
20504    #[serde(skip_serializing_if = "Option::is_none")]
20505    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
20506    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
20507    #[serde(rename = "message")]
20508    #[serde(skip_serializing_if = "Option::is_none")]
20509    pub message: Option<String>,
20510    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
20511    #[serde(rename = "metadata")]
20512    #[serde(skip_serializing_if = "Option::is_none")]
20513    pub metadata: Option<Box<Metadata>>,
20514    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
20515    #[serde(rename = "observables")]
20516    #[serde(skip_serializing_if = "Option::is_none")]
20517    pub observables: Option<Vec<Observable>>,
20518    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
20519    #[serde(rename = "osint")]
20520    #[serde(skip_serializing_if = "Option::is_none")]
20521    pub osint: Option<Vec<Osint>>,
20522    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
20523    #[serde(rename = "policy")]
20524    #[serde(skip_serializing_if = "Option::is_none")]
20525    pub policy: Option<Box<Policy>>,
20526    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
20527    #[serde(rename = "query_info")]
20528    #[serde(skip_serializing_if = "Option::is_none")]
20529    pub query_info: Option<Box<QueryInfo>>,
20530    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
20531    #[serde(rename = "query_result")]
20532    #[serde(skip_serializing_if = "Option::is_none")]
20533    pub query_result: Option<String>,
20534    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
20535    #[serde(rename = "query_result_id")]
20536    #[serde(skip_serializing_if = "Option::is_none")]
20537    pub query_result_id: Option<i64>,
20538    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
20539    #[serde(rename = "raw_data")]
20540    #[serde(skip_serializing_if = "Option::is_none")]
20541    pub raw_data: Option<String>,
20542    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
20543    #[serde(rename = "raw_data_hash")]
20544    #[serde(skip_serializing_if = "Option::is_none")]
20545    pub raw_data_hash: Option<Box<Fingerprint>>,
20546    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
20547    #[serde(rename = "raw_data_size")]
20548    #[serde(skip_serializing_if = "Option::is_none")]
20549    pub raw_data_size: Option<i64>,
20550    #[doc = "Registry Key\n\nThe registry key that pertains to the event.\n\nrequired"]
20551    #[serde(rename = "reg_key")]
20552    #[serde(skip_serializing_if = "Option::is_none")]
20553    pub reg_key: Option<Box<WinRegKey>>,
20554    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
20555    #[serde(rename = "risk_details")]
20556    #[serde(skip_serializing_if = "Option::is_none")]
20557    pub risk_details: Option<String>,
20558    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
20559    #[serde(rename = "risk_level")]
20560    #[serde(skip_serializing_if = "Option::is_none")]
20561    pub risk_level: Option<String>,
20562    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
20563    #[serde(rename = "risk_level_id")]
20564    #[serde(skip_serializing_if = "Option::is_none")]
20565    pub risk_level_id: Option<i64>,
20566    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
20567    #[serde(rename = "risk_score")]
20568    #[serde(skip_serializing_if = "Option::is_none")]
20569    pub risk_score: Option<i64>,
20570    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
20571    #[serde(rename = "severity")]
20572    #[serde(skip_serializing_if = "Option::is_none")]
20573    pub severity: Option<String>,
20574    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
20575    #[serde(rename = "severity_id")]
20576    #[serde(skip_serializing_if = "Option::is_none")]
20577    pub severity_id: Option<i64>,
20578    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
20579    #[serde(rename = "start_time")]
20580    #[serde(skip_serializing_if = "Option::is_none")]
20581    pub start_time: Option<i64>,
20582    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
20583    #[serde(rename = "start_time_dt")]
20584    #[serde(skip_serializing_if = "Option::is_none")]
20585    pub start_time_dt: Option<String>,
20586    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
20587    #[serde(rename = "status")]
20588    #[serde(skip_serializing_if = "Option::is_none")]
20589    pub status: Option<String>,
20590    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
20591    #[serde(rename = "status_code")]
20592    #[serde(skip_serializing_if = "Option::is_none")]
20593    pub status_code: Option<String>,
20594    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
20595    #[serde(rename = "status_detail")]
20596    #[serde(skip_serializing_if = "Option::is_none")]
20597    pub status_detail: Option<String>,
20598    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
20599    #[serde(rename = "status_id")]
20600    #[serde(skip_serializing_if = "Option::is_none")]
20601    pub status_id: Option<i64>,
20602    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
20603    #[serde(rename = "time")]
20604    #[serde(skip_serializing_if = "Option::is_none")]
20605    pub time: Option<i64>,
20606    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
20607    #[serde(rename = "time_dt")]
20608    #[serde(skip_serializing_if = "Option::is_none")]
20609    pub time_dt: Option<String>,
20610    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
20611    #[serde(rename = "timezone_offset")]
20612    #[serde(skip_serializing_if = "Option::is_none")]
20613    pub timezone_offset: Option<i64>,
20614    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
20615    #[serde(rename = "type_name")]
20616    #[serde(skip_serializing_if = "Option::is_none")]
20617    pub type_name: Option<String>,
20618    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
20619    #[serde(rename = "type_uid")]
20620    #[serde(skip_serializing_if = "Option::is_none")]
20621    pub type_uid: Option<i64>,
20622    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
20623    #[serde(rename = "unmapped")]
20624    #[serde(skip_serializing_if = "Option::is_none")]
20625    pub unmapped: Option<serde_json::Value>,
20626}
20627#[doc = "Registry Value Activity\n\nRegistry Value Activity events reports when a process performs an action on a Windows registry value.\n\n[UID:201002] Category: system | Name: registry_value_activity"]
20628#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
20629#[serde(default)]
20630#[non_exhaustive]
20631pub struct WinRegistryValueActivity {
20632    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
20633    #[serde(rename = "action")]
20634    #[serde(skip_serializing_if = "Option::is_none")]
20635    pub action: Option<String>,
20636    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
20637    #[serde(rename = "action_id")]
20638    #[serde(skip_serializing_if = "Option::is_none")]
20639    pub action_id: Option<i64>,
20640    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
20641    #[serde(rename = "activity_id")]
20642    #[serde(skip_serializing_if = "Option::is_none")]
20643    pub activity_id: Option<i64>,
20644    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
20645    #[serde(rename = "activity_name")]
20646    #[serde(skip_serializing_if = "Option::is_none")]
20647    pub activity_name: Option<String>,
20648    #[doc = "Actor\n\nThe actor that performed the activity on the <code>reg_value</code> object.\n\nrequired"]
20649    #[serde(rename = "actor")]
20650    #[serde(skip_serializing_if = "Option::is_none")]
20651    pub actor: Option<Box<Actor>>,
20652    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
20653    #[serde(rename = "api")]
20654    #[serde(skip_serializing_if = "Option::is_none")]
20655    pub api: Option<Box<Api>>,
20656    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
20657    #[serde(rename = "attacks")]
20658    #[serde(skip_serializing_if = "Option::is_none")]
20659    pub attacks: Option<Vec<Attack>>,
20660    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
20661    #[serde(rename = "authorizations")]
20662    #[serde(skip_serializing_if = "Option::is_none")]
20663    pub authorizations: Option<Vec<Authorization>>,
20664    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
20665    #[serde(rename = "category_name")]
20666    #[serde(skip_serializing_if = "Option::is_none")]
20667    pub category_name: Option<String>,
20668    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
20669    #[serde(rename = "category_uid")]
20670    #[serde(skip_serializing_if = "Option::is_none")]
20671    pub category_uid: Option<i64>,
20672    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Registry Value Activity</code>.\n\noptional"]
20673    #[serde(rename = "class_name")]
20674    #[serde(skip_serializing_if = "Option::is_none")]
20675    pub class_name: Option<String>,
20676    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
20677    #[serde(rename = "class_uid")]
20678    #[serde(skip_serializing_if = "Option::is_none")]
20679    pub class_uid: Option<i64>,
20680    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
20681    #[serde(rename = "cloud")]
20682    #[serde(skip_serializing_if = "Option::is_none")]
20683    pub cloud: Option<Box<Cloud>>,
20684    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
20685    #[serde(rename = "confidence")]
20686    #[serde(skip_serializing_if = "Option::is_none")]
20687    pub confidence: Option<String>,
20688    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
20689    #[serde(rename = "confidence_id")]
20690    #[serde(skip_serializing_if = "Option::is_none")]
20691    pub confidence_id: Option<i64>,
20692    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
20693    #[serde(rename = "confidence_score")]
20694    #[serde(skip_serializing_if = "Option::is_none")]
20695    pub confidence_score: Option<i64>,
20696    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
20697    #[serde(rename = "count")]
20698    #[serde(skip_serializing_if = "Option::is_none")]
20699    pub count: Option<i64>,
20700    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
20701    #[serde(rename = "device")]
20702    #[serde(skip_serializing_if = "Option::is_none")]
20703    pub device: Option<Box<Device>>,
20704    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
20705    #[serde(rename = "disposition")]
20706    #[serde(skip_serializing_if = "Option::is_none")]
20707    pub disposition: Option<String>,
20708    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
20709    #[serde(rename = "disposition_id")]
20710    #[serde(skip_serializing_if = "Option::is_none")]
20711    pub disposition_id: Option<i64>,
20712    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
20713    #[serde(rename = "duration")]
20714    #[serde(skip_serializing_if = "Option::is_none")]
20715    pub duration: Option<i64>,
20716    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
20717    #[serde(rename = "end_time")]
20718    #[serde(skip_serializing_if = "Option::is_none")]
20719    pub end_time: Option<i64>,
20720    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
20721    #[serde(rename = "end_time_dt")]
20722    #[serde(skip_serializing_if = "Option::is_none")]
20723    pub end_time_dt: Option<String>,
20724    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
20725    #[serde(rename = "enrichments")]
20726    #[serde(skip_serializing_if = "Option::is_none")]
20727    pub enrichments: Option<Vec<Enrichment>>,
20728    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
20729    #[serde(rename = "firewall_rule")]
20730    #[serde(skip_serializing_if = "Option::is_none")]
20731    pub firewall_rule: Option<Box<FirewallRule>>,
20732    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
20733    #[serde(rename = "is_alert")]
20734    #[serde(skip_serializing_if = "Option::is_none")]
20735    pub is_alert: Option<bool>,
20736    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
20737    #[serde(rename = "malware")]
20738    #[serde(skip_serializing_if = "Option::is_none")]
20739    pub malware: Option<Vec<Malware>>,
20740    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
20741    #[serde(rename = "malware_scan_info")]
20742    #[serde(skip_serializing_if = "Option::is_none")]
20743    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
20744    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
20745    #[serde(rename = "message")]
20746    #[serde(skip_serializing_if = "Option::is_none")]
20747    pub message: Option<String>,
20748    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
20749    #[serde(rename = "metadata")]
20750    #[serde(skip_serializing_if = "Option::is_none")]
20751    pub metadata: Option<Box<Metadata>>,
20752    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
20753    #[serde(rename = "observables")]
20754    #[serde(skip_serializing_if = "Option::is_none")]
20755    pub observables: Option<Vec<Observable>>,
20756    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
20757    #[serde(rename = "osint")]
20758    #[serde(skip_serializing_if = "Option::is_none")]
20759    pub osint: Option<Vec<Osint>>,
20760    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
20761    #[serde(rename = "policy")]
20762    #[serde(skip_serializing_if = "Option::is_none")]
20763    pub policy: Option<Box<Policy>>,
20764    #[doc = "Previous Registry Value\n\nThe registry value before the mutation\n\noptional"]
20765    #[serde(rename = "prev_reg_value")]
20766    #[serde(skip_serializing_if = "Option::is_none")]
20767    pub prev_reg_value: Option<Box<WinRegValue>>,
20768    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
20769    #[serde(rename = "raw_data")]
20770    #[serde(skip_serializing_if = "Option::is_none")]
20771    pub raw_data: Option<String>,
20772    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
20773    #[serde(rename = "raw_data_hash")]
20774    #[serde(skip_serializing_if = "Option::is_none")]
20775    pub raw_data_hash: Option<Box<Fingerprint>>,
20776    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
20777    #[serde(rename = "raw_data_size")]
20778    #[serde(skip_serializing_if = "Option::is_none")]
20779    pub raw_data_size: Option<i64>,
20780    #[doc = "Registry Value\n\nThe registry value.\n\nrequired"]
20781    #[serde(rename = "reg_value")]
20782    #[serde(skip_serializing_if = "Option::is_none")]
20783    pub reg_value: Option<Box<WinRegValue>>,
20784    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
20785    #[serde(rename = "risk_details")]
20786    #[serde(skip_serializing_if = "Option::is_none")]
20787    pub risk_details: Option<String>,
20788    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
20789    #[serde(rename = "risk_level")]
20790    #[serde(skip_serializing_if = "Option::is_none")]
20791    pub risk_level: Option<String>,
20792    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
20793    #[serde(rename = "risk_level_id")]
20794    #[serde(skip_serializing_if = "Option::is_none")]
20795    pub risk_level_id: Option<i64>,
20796    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
20797    #[serde(rename = "risk_score")]
20798    #[serde(skip_serializing_if = "Option::is_none")]
20799    pub risk_score: Option<i64>,
20800    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
20801    #[serde(rename = "severity")]
20802    #[serde(skip_serializing_if = "Option::is_none")]
20803    pub severity: Option<String>,
20804    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
20805    #[serde(rename = "severity_id")]
20806    #[serde(skip_serializing_if = "Option::is_none")]
20807    pub severity_id: Option<i64>,
20808    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
20809    #[serde(rename = "start_time")]
20810    #[serde(skip_serializing_if = "Option::is_none")]
20811    pub start_time: Option<i64>,
20812    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
20813    #[serde(rename = "start_time_dt")]
20814    #[serde(skip_serializing_if = "Option::is_none")]
20815    pub start_time_dt: Option<String>,
20816    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
20817    #[serde(rename = "status")]
20818    #[serde(skip_serializing_if = "Option::is_none")]
20819    pub status: Option<String>,
20820    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
20821    #[serde(rename = "status_code")]
20822    #[serde(skip_serializing_if = "Option::is_none")]
20823    pub status_code: Option<String>,
20824    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
20825    #[serde(rename = "status_detail")]
20826    #[serde(skip_serializing_if = "Option::is_none")]
20827    pub status_detail: Option<String>,
20828    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
20829    #[serde(rename = "status_id")]
20830    #[serde(skip_serializing_if = "Option::is_none")]
20831    pub status_id: Option<i64>,
20832    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
20833    #[serde(rename = "time")]
20834    #[serde(skip_serializing_if = "Option::is_none")]
20835    pub time: Option<i64>,
20836    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
20837    #[serde(rename = "time_dt")]
20838    #[serde(skip_serializing_if = "Option::is_none")]
20839    pub time_dt: Option<String>,
20840    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
20841    #[serde(rename = "timezone_offset")]
20842    #[serde(skip_serializing_if = "Option::is_none")]
20843    pub timezone_offset: Option<i64>,
20844    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
20845    #[serde(rename = "type_name")]
20846    #[serde(skip_serializing_if = "Option::is_none")]
20847    pub type_name: Option<String>,
20848    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
20849    #[serde(rename = "type_uid")]
20850    #[serde(skip_serializing_if = "Option::is_none")]
20851    pub type_uid: Option<i64>,
20852    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
20853    #[serde(rename = "unmapped")]
20854    #[serde(skip_serializing_if = "Option::is_none")]
20855    pub unmapped: Option<serde_json::Value>,
20856}
20857#[doc = "Registry Value Query\n\nRegistry Value Query events report information about discovered Windows registry values.\n\n[UID:205005] Category: discovery | Name: registry_value_query"]
20858#[deprecated(
20859    note = "Use the <code>Evidence Info</code> class with the <code>Query Evidence</code> object populated with <code>Registry Value</code> instead. (Since 1.5.0)"
20860)]
20861#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
20862#[serde(default)]
20863#[non_exhaustive]
20864pub struct WinRegistryValueQuery {
20865    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
20866    #[serde(rename = "action")]
20867    #[serde(skip_serializing_if = "Option::is_none")]
20868    pub action: Option<String>,
20869    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
20870    #[serde(rename = "action_id")]
20871    #[serde(skip_serializing_if = "Option::is_none")]
20872    pub action_id: Option<i64>,
20873    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
20874    #[serde(rename = "activity_id")]
20875    #[serde(skip_serializing_if = "Option::is_none")]
20876    pub activity_id: Option<i64>,
20877    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
20878    #[serde(rename = "activity_name")]
20879    #[serde(skip_serializing_if = "Option::is_none")]
20880    pub activity_name: Option<String>,
20881    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\noptional"]
20882    #[serde(rename = "actor")]
20883    #[serde(skip_serializing_if = "Option::is_none")]
20884    pub actor: Option<Box<Actor>>,
20885    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
20886    #[serde(rename = "api")]
20887    #[serde(skip_serializing_if = "Option::is_none")]
20888    pub api: Option<Box<Api>>,
20889    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
20890    #[serde(rename = "attacks")]
20891    #[serde(skip_serializing_if = "Option::is_none")]
20892    pub attacks: Option<Vec<Attack>>,
20893    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
20894    #[serde(rename = "authorizations")]
20895    #[serde(skip_serializing_if = "Option::is_none")]
20896    pub authorizations: Option<Vec<Authorization>>,
20897    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>Discovery</code>.\n\noptional"]
20898    #[serde(rename = "category_name")]
20899    #[serde(skip_serializing_if = "Option::is_none")]
20900    pub category_name: Option<String>,
20901    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
20902    #[serde(rename = "category_uid")]
20903    #[serde(skip_serializing_if = "Option::is_none")]
20904    pub category_uid: Option<i64>,
20905    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Registry Value Query</code>.\n\noptional"]
20906    #[serde(rename = "class_name")]
20907    #[serde(skip_serializing_if = "Option::is_none")]
20908    pub class_name: Option<String>,
20909    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
20910    #[serde(rename = "class_uid")]
20911    #[serde(skip_serializing_if = "Option::is_none")]
20912    pub class_uid: Option<i64>,
20913    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
20914    #[serde(rename = "cloud")]
20915    #[serde(skip_serializing_if = "Option::is_none")]
20916    pub cloud: Option<Box<Cloud>>,
20917    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
20918    #[serde(rename = "confidence")]
20919    #[serde(skip_serializing_if = "Option::is_none")]
20920    pub confidence: Option<String>,
20921    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
20922    #[serde(rename = "confidence_id")]
20923    #[serde(skip_serializing_if = "Option::is_none")]
20924    pub confidence_id: Option<i64>,
20925    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
20926    #[serde(rename = "confidence_score")]
20927    #[serde(skip_serializing_if = "Option::is_none")]
20928    pub confidence_score: Option<i64>,
20929    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
20930    #[serde(rename = "count")]
20931    #[serde(skip_serializing_if = "Option::is_none")]
20932    pub count: Option<i64>,
20933    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
20934    #[serde(rename = "device")]
20935    #[serde(skip_serializing_if = "Option::is_none")]
20936    pub device: Option<Box<Device>>,
20937    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
20938    #[serde(rename = "disposition")]
20939    #[serde(skip_serializing_if = "Option::is_none")]
20940    pub disposition: Option<String>,
20941    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
20942    #[serde(rename = "disposition_id")]
20943    #[serde(skip_serializing_if = "Option::is_none")]
20944    pub disposition_id: Option<i64>,
20945    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
20946    #[serde(rename = "duration")]
20947    #[serde(skip_serializing_if = "Option::is_none")]
20948    pub duration: Option<i64>,
20949    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
20950    #[serde(rename = "end_time")]
20951    #[serde(skip_serializing_if = "Option::is_none")]
20952    pub end_time: Option<i64>,
20953    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
20954    #[serde(rename = "end_time_dt")]
20955    #[serde(skip_serializing_if = "Option::is_none")]
20956    pub end_time_dt: Option<String>,
20957    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
20958    #[serde(rename = "enrichments")]
20959    #[serde(skip_serializing_if = "Option::is_none")]
20960    pub enrichments: Option<Vec<Enrichment>>,
20961    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
20962    #[serde(rename = "firewall_rule")]
20963    #[serde(skip_serializing_if = "Option::is_none")]
20964    pub firewall_rule: Option<Box<FirewallRule>>,
20965    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
20966    #[serde(rename = "is_alert")]
20967    #[serde(skip_serializing_if = "Option::is_none")]
20968    pub is_alert: Option<bool>,
20969    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
20970    #[serde(rename = "malware")]
20971    #[serde(skip_serializing_if = "Option::is_none")]
20972    pub malware: Option<Vec<Malware>>,
20973    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
20974    #[serde(rename = "malware_scan_info")]
20975    #[serde(skip_serializing_if = "Option::is_none")]
20976    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
20977    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
20978    #[serde(rename = "message")]
20979    #[serde(skip_serializing_if = "Option::is_none")]
20980    pub message: Option<String>,
20981    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
20982    #[serde(rename = "metadata")]
20983    #[serde(skip_serializing_if = "Option::is_none")]
20984    pub metadata: Option<Box<Metadata>>,
20985    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
20986    #[serde(rename = "observables")]
20987    #[serde(skip_serializing_if = "Option::is_none")]
20988    pub observables: Option<Vec<Observable>>,
20989    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
20990    #[serde(rename = "osint")]
20991    #[serde(skip_serializing_if = "Option::is_none")]
20992    pub osint: Option<Vec<Osint>>,
20993    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
20994    #[serde(rename = "policy")]
20995    #[serde(skip_serializing_if = "Option::is_none")]
20996    pub policy: Option<Box<Policy>>,
20997    #[doc = "Query Info\n\nThe search details associated with the query request.\n\nrecommended"]
20998    #[serde(rename = "query_info")]
20999    #[serde(skip_serializing_if = "Option::is_none")]
21000    pub query_info: Option<Box<QueryInfo>>,
21001    #[doc = "Query Result\n\nThe result of the query.\n\nrecommended"]
21002    #[serde(rename = "query_result")]
21003    #[serde(skip_serializing_if = "Option::is_none")]
21004    pub query_result: Option<String>,
21005    #[doc = "Query Result ID\n\nThe normalized identifier of the query result.\n\nrequired"]
21006    #[serde(rename = "query_result_id")]
21007    #[serde(skip_serializing_if = "Option::is_none")]
21008    pub query_result_id: Option<i64>,
21009    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
21010    #[serde(rename = "raw_data")]
21011    #[serde(skip_serializing_if = "Option::is_none")]
21012    pub raw_data: Option<String>,
21013    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
21014    #[serde(rename = "raw_data_hash")]
21015    #[serde(skip_serializing_if = "Option::is_none")]
21016    pub raw_data_hash: Option<Box<Fingerprint>>,
21017    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
21018    #[serde(rename = "raw_data_size")]
21019    #[serde(skip_serializing_if = "Option::is_none")]
21020    pub raw_data_size: Option<i64>,
21021    #[doc = "Registry Value\n\nThe registry value that pertains to the event.\n\nrequired"]
21022    #[serde(rename = "reg_value")]
21023    #[serde(skip_serializing_if = "Option::is_none")]
21024    pub reg_value: Option<Box<WinRegValue>>,
21025    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
21026    #[serde(rename = "risk_details")]
21027    #[serde(skip_serializing_if = "Option::is_none")]
21028    pub risk_details: Option<String>,
21029    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
21030    #[serde(rename = "risk_level")]
21031    #[serde(skip_serializing_if = "Option::is_none")]
21032    pub risk_level: Option<String>,
21033    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
21034    #[serde(rename = "risk_level_id")]
21035    #[serde(skip_serializing_if = "Option::is_none")]
21036    pub risk_level_id: Option<i64>,
21037    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
21038    #[serde(rename = "risk_score")]
21039    #[serde(skip_serializing_if = "Option::is_none")]
21040    pub risk_score: Option<i64>,
21041    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
21042    #[serde(rename = "severity")]
21043    #[serde(skip_serializing_if = "Option::is_none")]
21044    pub severity: Option<String>,
21045    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
21046    #[serde(rename = "severity_id")]
21047    #[serde(skip_serializing_if = "Option::is_none")]
21048    pub severity_id: Option<i64>,
21049    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
21050    #[serde(rename = "start_time")]
21051    #[serde(skip_serializing_if = "Option::is_none")]
21052    pub start_time: Option<i64>,
21053    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
21054    #[serde(rename = "start_time_dt")]
21055    #[serde(skip_serializing_if = "Option::is_none")]
21056    pub start_time_dt: Option<String>,
21057    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
21058    #[serde(rename = "status")]
21059    #[serde(skip_serializing_if = "Option::is_none")]
21060    pub status: Option<String>,
21061    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
21062    #[serde(rename = "status_code")]
21063    #[serde(skip_serializing_if = "Option::is_none")]
21064    pub status_code: Option<String>,
21065    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
21066    #[serde(rename = "status_detail")]
21067    #[serde(skip_serializing_if = "Option::is_none")]
21068    pub status_detail: Option<String>,
21069    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
21070    #[serde(rename = "status_id")]
21071    #[serde(skip_serializing_if = "Option::is_none")]
21072    pub status_id: Option<i64>,
21073    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
21074    #[serde(rename = "time")]
21075    #[serde(skip_serializing_if = "Option::is_none")]
21076    pub time: Option<i64>,
21077    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
21078    #[serde(rename = "time_dt")]
21079    #[serde(skip_serializing_if = "Option::is_none")]
21080    pub time_dt: Option<String>,
21081    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
21082    #[serde(rename = "timezone_offset")]
21083    #[serde(skip_serializing_if = "Option::is_none")]
21084    pub timezone_offset: Option<i64>,
21085    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
21086    #[serde(rename = "type_name")]
21087    #[serde(skip_serializing_if = "Option::is_none")]
21088    pub type_name: Option<String>,
21089    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
21090    #[serde(rename = "type_uid")]
21091    #[serde(skip_serializing_if = "Option::is_none")]
21092    pub type_uid: Option<i64>,
21093    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
21094    #[serde(rename = "unmapped")]
21095    #[serde(skip_serializing_if = "Option::is_none")]
21096    pub unmapped: Option<serde_json::Value>,
21097}
21098#[doc = "Windows Resource Activity\n\nWindows Resource Activity events report when a process accesses a Windows managed resource object, successful or otherwise.\n\n[UID:201003] Category: system | Name: windows_resource_activity"]
21099#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21100#[serde(default)]
21101#[non_exhaustive]
21102pub struct WinWindowsResourceActivity {
21103    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
21104    #[serde(rename = "action")]
21105    #[serde(skip_serializing_if = "Option::is_none")]
21106    pub action: Option<String>,
21107    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
21108    #[serde(rename = "action_id")]
21109    #[serde(skip_serializing_if = "Option::is_none")]
21110    pub action_id: Option<i64>,
21111    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
21112    #[serde(rename = "activity_id")]
21113    #[serde(skip_serializing_if = "Option::is_none")]
21114    pub activity_id: Option<i64>,
21115    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
21116    #[serde(rename = "activity_name")]
21117    #[serde(skip_serializing_if = "Option::is_none")]
21118    pub activity_name: Option<String>,
21119    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrequired"]
21120    #[serde(rename = "actor")]
21121    #[serde(skip_serializing_if = "Option::is_none")]
21122    pub actor: Option<Box<Actor>>,
21123    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
21124    #[serde(rename = "api")]
21125    #[serde(skip_serializing_if = "Option::is_none")]
21126    pub api: Option<Box<Api>>,
21127    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
21128    #[serde(rename = "attacks")]
21129    #[serde(skip_serializing_if = "Option::is_none")]
21130    pub attacks: Option<Vec<Attack>>,
21131    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
21132    #[serde(rename = "authorizations")]
21133    #[serde(skip_serializing_if = "Option::is_none")]
21134    pub authorizations: Option<Vec<Authorization>>,
21135    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
21136    #[serde(rename = "category_name")]
21137    #[serde(skip_serializing_if = "Option::is_none")]
21138    pub category_name: Option<String>,
21139    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
21140    #[serde(rename = "category_uid")]
21141    #[serde(skip_serializing_if = "Option::is_none")]
21142    pub category_uid: Option<i64>,
21143    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Windows Resource Activity</code>.\n\noptional"]
21144    #[serde(rename = "class_name")]
21145    #[serde(skip_serializing_if = "Option::is_none")]
21146    pub class_name: Option<String>,
21147    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
21148    #[serde(rename = "class_uid")]
21149    #[serde(skip_serializing_if = "Option::is_none")]
21150    pub class_uid: Option<i64>,
21151    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
21152    #[serde(rename = "cloud")]
21153    #[serde(skip_serializing_if = "Option::is_none")]
21154    pub cloud: Option<Box<Cloud>>,
21155    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
21156    #[serde(rename = "confidence")]
21157    #[serde(skip_serializing_if = "Option::is_none")]
21158    pub confidence: Option<String>,
21159    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
21160    #[serde(rename = "confidence_id")]
21161    #[serde(skip_serializing_if = "Option::is_none")]
21162    pub confidence_id: Option<i64>,
21163    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
21164    #[serde(rename = "confidence_score")]
21165    #[serde(skip_serializing_if = "Option::is_none")]
21166    pub confidence_score: Option<i64>,
21167    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
21168    #[serde(rename = "count")]
21169    #[serde(skip_serializing_if = "Option::is_none")]
21170    pub count: Option<i64>,
21171    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
21172    #[serde(rename = "device")]
21173    #[serde(skip_serializing_if = "Option::is_none")]
21174    pub device: Option<Box<Device>>,
21175    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
21176    #[serde(rename = "disposition")]
21177    #[serde(skip_serializing_if = "Option::is_none")]
21178    pub disposition: Option<String>,
21179    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
21180    #[serde(rename = "disposition_id")]
21181    #[serde(skip_serializing_if = "Option::is_none")]
21182    pub disposition_id: Option<i64>,
21183    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
21184    #[serde(rename = "duration")]
21185    #[serde(skip_serializing_if = "Option::is_none")]
21186    pub duration: Option<i64>,
21187    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
21188    #[serde(rename = "end_time")]
21189    #[serde(skip_serializing_if = "Option::is_none")]
21190    pub end_time: Option<i64>,
21191    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
21192    #[serde(rename = "end_time_dt")]
21193    #[serde(skip_serializing_if = "Option::is_none")]
21194    pub end_time_dt: Option<String>,
21195    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
21196    #[serde(rename = "enrichments")]
21197    #[serde(skip_serializing_if = "Option::is_none")]
21198    pub enrichments: Option<Vec<Enrichment>>,
21199    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
21200    #[serde(rename = "firewall_rule")]
21201    #[serde(skip_serializing_if = "Option::is_none")]
21202    pub firewall_rule: Option<Box<FirewallRule>>,
21203    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
21204    #[serde(rename = "is_alert")]
21205    #[serde(skip_serializing_if = "Option::is_none")]
21206    pub is_alert: Option<bool>,
21207    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
21208    #[serde(rename = "malware")]
21209    #[serde(skip_serializing_if = "Option::is_none")]
21210    pub malware: Option<Vec<Malware>>,
21211    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
21212    #[serde(rename = "malware_scan_info")]
21213    #[serde(skip_serializing_if = "Option::is_none")]
21214    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
21215    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
21216    #[serde(rename = "message")]
21217    #[serde(skip_serializing_if = "Option::is_none")]
21218    pub message: Option<String>,
21219    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
21220    #[serde(rename = "metadata")]
21221    #[serde(skip_serializing_if = "Option::is_none")]
21222    pub metadata: Option<Box<Metadata>>,
21223    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
21224    #[serde(rename = "observables")]
21225    #[serde(skip_serializing_if = "Option::is_none")]
21226    pub observables: Option<Vec<Observable>>,
21227    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
21228    #[serde(rename = "osint")]
21229    #[serde(skip_serializing_if = "Option::is_none")]
21230    pub osint: Option<Vec<Osint>>,
21231    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
21232    #[serde(rename = "policy")]
21233    #[serde(skip_serializing_if = "Option::is_none")]
21234    pub policy: Option<Box<Policy>>,
21235    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
21236    #[serde(rename = "raw_data")]
21237    #[serde(skip_serializing_if = "Option::is_none")]
21238    pub raw_data: Option<String>,
21239    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
21240    #[serde(rename = "raw_data_hash")]
21241    #[serde(skip_serializing_if = "Option::is_none")]
21242    pub raw_data_hash: Option<Box<Fingerprint>>,
21243    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
21244    #[serde(rename = "raw_data_size")]
21245    #[serde(skip_serializing_if = "Option::is_none")]
21246    pub raw_data_size: Option<i64>,
21247    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
21248    #[serde(rename = "risk_details")]
21249    #[serde(skip_serializing_if = "Option::is_none")]
21250    pub risk_details: Option<String>,
21251    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
21252    #[serde(rename = "risk_level")]
21253    #[serde(skip_serializing_if = "Option::is_none")]
21254    pub risk_level: Option<String>,
21255    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
21256    #[serde(rename = "risk_level_id")]
21257    #[serde(skip_serializing_if = "Option::is_none")]
21258    pub risk_level_id: Option<i64>,
21259    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
21260    #[serde(rename = "risk_score")]
21261    #[serde(skip_serializing_if = "Option::is_none")]
21262    pub risk_score: Option<i64>,
21263    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
21264    #[serde(rename = "severity")]
21265    #[serde(skip_serializing_if = "Option::is_none")]
21266    pub severity: Option<String>,
21267    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
21268    #[serde(rename = "severity_id")]
21269    #[serde(skip_serializing_if = "Option::is_none")]
21270    pub severity_id: Option<i64>,
21271    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
21272    #[serde(rename = "start_time")]
21273    #[serde(skip_serializing_if = "Option::is_none")]
21274    pub start_time: Option<i64>,
21275    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
21276    #[serde(rename = "start_time_dt")]
21277    #[serde(skip_serializing_if = "Option::is_none")]
21278    pub start_time_dt: Option<String>,
21279    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
21280    #[serde(rename = "status")]
21281    #[serde(skip_serializing_if = "Option::is_none")]
21282    pub status: Option<String>,
21283    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
21284    #[serde(rename = "status_code")]
21285    #[serde(skip_serializing_if = "Option::is_none")]
21286    pub status_code: Option<String>,
21287    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
21288    #[serde(rename = "status_detail")]
21289    #[serde(skip_serializing_if = "Option::is_none")]
21290    pub status_detail: Option<String>,
21291    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
21292    #[serde(rename = "status_id")]
21293    #[serde(skip_serializing_if = "Option::is_none")]
21294    pub status_id: Option<i64>,
21295    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
21296    #[serde(rename = "time")]
21297    #[serde(skip_serializing_if = "Option::is_none")]
21298    pub time: Option<i64>,
21299    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
21300    #[serde(rename = "time_dt")]
21301    #[serde(skip_serializing_if = "Option::is_none")]
21302    pub time_dt: Option<String>,
21303    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
21304    #[serde(rename = "timezone_offset")]
21305    #[serde(skip_serializing_if = "Option::is_none")]
21306    pub timezone_offset: Option<i64>,
21307    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
21308    #[serde(rename = "type_name")]
21309    #[serde(skip_serializing_if = "Option::is_none")]
21310    pub type_name: Option<String>,
21311    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
21312    #[serde(rename = "type_uid")]
21313    #[serde(skip_serializing_if = "Option::is_none")]
21314    pub type_uid: Option<i64>,
21315    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
21316    #[serde(rename = "unmapped")]
21317    #[serde(skip_serializing_if = "Option::is_none")]
21318    pub unmapped: Option<serde_json::Value>,
21319    #[doc = "Windows Resource\n\nThe Windows resource object that was accessed, such as a mutant or timer.\n\nrequired"]
21320    #[serde(rename = "win_resource")]
21321    #[serde(skip_serializing_if = "Option::is_none")]
21322    pub win_resource: Option<Box<WinWinResource>>,
21323}
21324#[doc = "Windows Service Activity\n\nWindows Service Activity events report when a process interacts with the Service Control Manager.\n\n[UID:201004] Category: system | Name: windows_service_activity"]
21325#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21326#[serde(default)]
21327#[non_exhaustive]
21328pub struct WinWindowsServiceActivity {
21329    #[doc = "Action\n\nThe normalized caption of <code>action_id</code>.\n\noptional"]
21330    #[serde(rename = "action")]
21331    #[serde(skip_serializing_if = "Option::is_none")]
21332    pub action: Option<String>,
21333    #[doc = "Action ID\n\nThe action taken by a control or other policy-based system leading to an outcome or disposition. An unknown action may still correspond to a known disposition. Refer to <code>disposition_id</code> for the outcome of the action.\n\nrecommended"]
21334    #[serde(rename = "action_id")]
21335    #[serde(skip_serializing_if = "Option::is_none")]
21336    pub action_id: Option<i64>,
21337    #[doc = "Activity ID\n\nThe normalized identifier of the activity that triggered the event.\n\nrequired"]
21338    #[serde(rename = "activity_id")]
21339    #[serde(skip_serializing_if = "Option::is_none")]
21340    pub activity_id: Option<i64>,
21341    #[doc = "Activity\n\nThe event activity name, as defined by the activity_id.\n\noptional"]
21342    #[serde(rename = "activity_name")]
21343    #[serde(skip_serializing_if = "Option::is_none")]
21344    pub activity_name: Option<String>,
21345    #[doc = "Actor\n\nThe actor object describes details about the user/role/process that was the source of the activity. Note that this is not the threat actor of a campaign but may be part of a campaign.\n\nrequired"]
21346    #[serde(rename = "actor")]
21347    #[serde(skip_serializing_if = "Option::is_none")]
21348    pub actor: Option<Box<Actor>>,
21349    #[doc = "API Details\n\nDescribes details about a typical API (Application Programming Interface) call.\n\noptional"]
21350    #[serde(rename = "api")]
21351    #[serde(skip_serializing_if = "Option::is_none")]
21352    pub api: Option<Box<Api>>,
21353    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
21354    #[serde(rename = "attacks")]
21355    #[serde(skip_serializing_if = "Option::is_none")]
21356    pub attacks: Option<Vec<Attack>>,
21357    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
21358    #[serde(rename = "authorizations")]
21359    #[serde(skip_serializing_if = "Option::is_none")]
21360    pub authorizations: Option<Vec<Authorization>>,
21361    #[doc = "Category\n\nThe event category name, as defined by category_uid value: <code>System Activity</code>.\n\noptional"]
21362    #[serde(rename = "category_name")]
21363    #[serde(skip_serializing_if = "Option::is_none")]
21364    pub category_name: Option<String>,
21365    #[doc = "Category ID\n\nThe category unique identifier of the event.\n\nrequired"]
21366    #[serde(rename = "category_uid")]
21367    #[serde(skip_serializing_if = "Option::is_none")]
21368    pub category_uid: Option<i64>,
21369    #[doc = "Class\n\nThe event class name, as defined by class_uid value: <code>Windows Service Activity</code>.\n\noptional"]
21370    #[serde(rename = "class_name")]
21371    #[serde(skip_serializing_if = "Option::is_none")]
21372    pub class_name: Option<String>,
21373    #[doc = "Class ID\n\nThe unique identifier of a class. A class describes the attributes available in an event.\n\nrequired"]
21374    #[serde(rename = "class_uid")]
21375    #[serde(skip_serializing_if = "Option::is_none")]
21376    pub class_uid: Option<i64>,
21377    #[doc = "Cloud\n\nDescribes details about the Cloud environment where the event or finding was created.\n\nrequired"]
21378    #[serde(rename = "cloud")]
21379    #[serde(skip_serializing_if = "Option::is_none")]
21380    pub cloud: Option<Box<Cloud>>,
21381    #[doc = "Confidence\n\nThe confidence, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
21382    #[serde(rename = "confidence")]
21383    #[serde(skip_serializing_if = "Option::is_none")]
21384    pub confidence: Option<String>,
21385    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of the rule that created the finding. A rule with a low confidence means that the finding scope is wide and may create finding reports that may not be malicious in nature.\n\nrecommended"]
21386    #[serde(rename = "confidence_id")]
21387    #[serde(skip_serializing_if = "Option::is_none")]
21388    pub confidence_id: Option<i64>,
21389    #[doc = "Confidence Score\n\nThe confidence score as reported by the event source.\n\noptional"]
21390    #[serde(rename = "confidence_score")]
21391    #[serde(skip_serializing_if = "Option::is_none")]
21392    pub confidence_score: Option<i64>,
21393    #[doc = "Count\n\nThe number of times that events in the same logical group occurred during the event <strong>Start Time</strong> to <strong>End Time</strong> period.\n\noptional"]
21394    #[serde(rename = "count")]
21395    #[serde(skip_serializing_if = "Option::is_none")]
21396    pub count: Option<i64>,
21397    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrequired"]
21398    #[serde(rename = "device")]
21399    #[serde(skip_serializing_if = "Option::is_none")]
21400    pub device: Option<Box<Device>>,
21401    #[doc = "Disposition\n\nThe disposition name, normalized to the caption of the disposition_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
21402    #[serde(rename = "disposition")]
21403    #[serde(skip_serializing_if = "Option::is_none")]
21404    pub disposition: Option<String>,
21405    #[doc = "Disposition ID\n\nDescribes the outcome or action taken by a security control, such as access control checks, malware detections or various types of policy violations.\n\nrecommended"]
21406    #[serde(rename = "disposition_id")]
21407    #[serde(skip_serializing_if = "Option::is_none")]
21408    pub disposition_id: Option<i64>,
21409    #[doc = "Duration Milliseconds\n\nThe event duration or aggregate time, the amount of time the event covers from <code>start_time</code> to <code>end_time</code> in milliseconds.\n\noptional"]
21410    #[serde(rename = "duration")]
21411    #[serde(skip_serializing_if = "Option::is_none")]
21412    pub duration: Option<i64>,
21413    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
21414    #[serde(rename = "end_time")]
21415    #[serde(skip_serializing_if = "Option::is_none")]
21416    pub end_time: Option<i64>,
21417    #[doc = "End Time\n\nThe end time of a time period, or the time of the most recent event included in the aggregate event.\n\noptional"]
21418    #[serde(rename = "end_time_dt")]
21419    #[serde(skip_serializing_if = "Option::is_none")]
21420    pub end_time_dt: Option<String>,
21421    #[doc = "Enrichments\n\nThe additional information from an external data source, which is associated with the event or a finding. For example add location information for the IP address in the DNS answers:</p><code>[{\"name\": \"answers.ip\", \"value\": \"92.24.47.250\", \"type\": \"location\", \"data\": {\"city\": \"Socotra\", \"continent\": \"Asia\", \"coordinates\": [-25.4153, 17.0743], \"country\": \"YE\", \"desc\": \"Yemen\"}}]</code>\n\noptional"]
21422    #[serde(rename = "enrichments")]
21423    #[serde(skip_serializing_if = "Option::is_none")]
21424    pub enrichments: Option<Vec<Enrichment>>,
21425    #[doc = "Firewall Rule\n\nThe firewall rule that pertains to the control that triggered the event, if applicable.\n\noptional"]
21426    #[serde(rename = "firewall_rule")]
21427    #[serde(skip_serializing_if = "Option::is_none")]
21428    pub firewall_rule: Option<Box<FirewallRule>>,
21429    #[doc = "Alert\n\nIndicates that the event is considered to be an alertable signal. Should be set to <code>true</code> if <code>disposition_id = Alert</code> among other dispositions, and/or <code>risk_level_id</code> or <code>severity_id</code> of the event is elevated. Not all control events will be alertable, for example if <code>disposition_id = Exonerated</code> or <code>disposition_id = Allowed</code>.\n\nrecommended"]
21430    #[serde(rename = "is_alert")]
21431    #[serde(skip_serializing_if = "Option::is_none")]
21432    pub is_alert: Option<bool>,
21433    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
21434    #[serde(rename = "malware")]
21435    #[serde(skip_serializing_if = "Option::is_none")]
21436    pub malware: Option<Vec<Malware>>,
21437    #[doc = "Malware Scan Info\n\nDescribes details about the scan job that identified malware on the target system.\n\noptional"]
21438    #[serde(rename = "malware_scan_info")]
21439    #[serde(skip_serializing_if = "Option::is_none")]
21440    pub malware_scan_info: Option<Box<MalwareScanInfo>>,
21441    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
21442    #[serde(rename = "message")]
21443    #[serde(skip_serializing_if = "Option::is_none")]
21444    pub message: Option<String>,
21445    #[doc = "Metadata\n\nThe metadata associated with the event or a finding.\n\nrequired"]
21446    #[serde(rename = "metadata")]
21447    #[serde(skip_serializing_if = "Option::is_none")]
21448    pub metadata: Option<Box<Metadata>>,
21449    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\nrecommended"]
21450    #[serde(rename = "observables")]
21451    #[serde(skip_serializing_if = "Option::is_none")]
21452    pub observables: Option<Vec<Observable>>,
21453    #[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\nrequired"]
21454    #[serde(rename = "osint")]
21455    #[serde(skip_serializing_if = "Option::is_none")]
21456    pub osint: Option<Vec<Osint>>,
21457    #[doc = "Policy\n\nThe policy that pertains to the control that triggered the event, if applicable. For example the name of an anti-malware policy or an access control policy.\n\noptional"]
21458    #[serde(rename = "policy")]
21459    #[serde(skip_serializing_if = "Option::is_none")]
21460    pub policy: Option<Box<Policy>>,
21461    #[doc = "Raw Data\n\nThe raw event/finding data as received from the source.\n\noptional"]
21462    #[serde(rename = "raw_data")]
21463    #[serde(skip_serializing_if = "Option::is_none")]
21464    pub raw_data: Option<String>,
21465    #[doc = "Raw Data Hash\n\nThe hash, which describes the content of the raw_data field.\n\noptional"]
21466    #[serde(rename = "raw_data_hash")]
21467    #[serde(skip_serializing_if = "Option::is_none")]
21468    pub raw_data_hash: Option<Box<Fingerprint>>,
21469    #[doc = "Raw Data Size\n\nThe size of the raw data which was transformed into an OCSF event, in bytes.\n\noptional"]
21470    #[serde(rename = "raw_data_size")]
21471    #[serde(skip_serializing_if = "Option::is_none")]
21472    pub raw_data_size: Option<i64>,
21473    #[doc = "Risk Details\n\nDescribes the risk associated with the finding.\n\noptional"]
21474    #[serde(rename = "risk_details")]
21475    #[serde(skip_serializing_if = "Option::is_none")]
21476    pub risk_details: Option<String>,
21477    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
21478    #[serde(rename = "risk_level")]
21479    #[serde(skip_serializing_if = "Option::is_none")]
21480    pub risk_level: Option<String>,
21481    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
21482    #[serde(rename = "risk_level_id")]
21483    #[serde(skip_serializing_if = "Option::is_none")]
21484    pub risk_level_id: Option<i64>,
21485    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
21486    #[serde(rename = "risk_score")]
21487    #[serde(skip_serializing_if = "Option::is_none")]
21488    pub risk_score: Option<i64>,
21489    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
21490    #[serde(rename = "severity")]
21491    #[serde(skip_serializing_if = "Option::is_none")]
21492    pub severity: Option<String>,
21493    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrequired"]
21494    #[serde(rename = "severity_id")]
21495    #[serde(skip_serializing_if = "Option::is_none")]
21496    pub severity_id: Option<i64>,
21497    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
21498    #[serde(rename = "start_time")]
21499    #[serde(skip_serializing_if = "Option::is_none")]
21500    pub start_time: Option<i64>,
21501    #[doc = "Start Time\n\nThe start time of a time period, or the time of the least recent event included in the aggregate event.\n\noptional"]
21502    #[serde(rename = "start_time_dt")]
21503    #[serde(skip_serializing_if = "Option::is_none")]
21504    pub start_time_dt: Option<String>,
21505    #[doc = "Status\n\nThe event status, normalized to the caption of the status_id value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
21506    #[serde(rename = "status")]
21507    #[serde(skip_serializing_if = "Option::is_none")]
21508    pub status: Option<String>,
21509    #[doc = "Status Code\n\nThe event status code, as reported by the event source.<br /><br />For example, in a Windows Failed Authentication event, this would be the value of 'Failure Code', e.g. 0x18.\n\nrecommended"]
21510    #[serde(rename = "status_code")]
21511    #[serde(skip_serializing_if = "Option::is_none")]
21512    pub status_code: Option<String>,
21513    #[doc = "Status Detail\n\nThe status detail contains additional information about the event/finding outcome.\n\nrecommended"]
21514    #[serde(rename = "status_detail")]
21515    #[serde(skip_serializing_if = "Option::is_none")]
21516    pub status_detail: Option<String>,
21517    #[doc = "Status ID\n\nThe normalized identifier of the event status.\n\nrecommended"]
21518    #[serde(rename = "status_id")]
21519    #[serde(skip_serializing_if = "Option::is_none")]
21520    pub status_id: Option<i64>,
21521    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\nrequired"]
21522    #[serde(rename = "time")]
21523    #[serde(skip_serializing_if = "Option::is_none")]
21524    pub time: Option<i64>,
21525    #[doc = "Event Time\n\nThe normalized event occurrence time or the finding creation time.\n\noptional"]
21526    #[serde(rename = "time_dt")]
21527    #[serde(skip_serializing_if = "Option::is_none")]
21528    pub time_dt: Option<String>,
21529    #[doc = "Timezone Offset\n\nThe number of minutes that the reported event <code>time</code> is ahead or behind UTC, in the range -1,080 to +1,080.\n\nrecommended"]
21530    #[serde(rename = "timezone_offset")]
21531    #[serde(skip_serializing_if = "Option::is_none")]
21532    pub timezone_offset: Option<i64>,
21533    #[doc = "Type Name\n\nThe event/finding type name, as defined by the type_uid.\n\noptional"]
21534    #[serde(rename = "type_name")]
21535    #[serde(skip_serializing_if = "Option::is_none")]
21536    pub type_name: Option<String>,
21537    #[doc = "Type ID\n\nThe event/finding type ID. It identifies the event's semantics and structure. The value is calculated by the logging system as: <code>class_uid * 100 + activity_id</code>.\n\nrequired"]
21538    #[serde(rename = "type_uid")]
21539    #[serde(skip_serializing_if = "Option::is_none")]
21540    pub type_uid: Option<i64>,
21541    #[doc = "Unmapped Data\n\nThe attributes that are not mapped to the event schema. The names and values of those attributes are specific to the event source.\n\noptional"]
21542    #[serde(rename = "unmapped")]
21543    #[serde(skip_serializing_if = "Option::is_none")]
21544    pub unmapped: Option<serde_json::Value>,
21545    #[doc = "Windows Service\n\nThe Windows service.\n\nrequired"]
21546    #[serde(rename = "win_service")]
21547    #[serde(skip_serializing_if = "Option::is_none")]
21548    pub win_service: Option<Box<WinWinService>>,
21549}
21550#[doc = "Access Analysis Result\n\nThe Access Analysis Result object describes access relationships and pathways between identities, resources, focusing on who can access what and through which mechanisms. This evaluates access levels (read/write/admin), access types (direct, cross-account, public, federated), and the conditions under which access is granted. Use this for resource-centric security assessments such as external access discovery, public exposure analysis, etc.\n\n[] Category:  | Name: access_analysis_result"]
21551#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21552#[serde(default)]
21553#[non_exhaustive]
21554pub struct AccessAnalysisResult {
21555    #[doc = "Access Level\n\nThe generalized access level or permission scope granted to the identity through the analyzed policy configuration. Common examples include Read, Write, List, Delete, Admin, or custom permission levels.\n\nrecommended"]
21556    #[serde(rename = "access_level")]
21557    #[serde(skip_serializing_if = "Option::is_none")]
21558    pub access_level: Option<String>,
21559    #[doc = "Access Type\n\nThe type or category of access being granted to the identity. This describes the nature of the access relationship, such as cross-account access, public access, federated access, or third-party integration access. Examples include 'Cross-Account', 'Public', 'Federated', 'Service-to-Service', etc.\n\noptional"]
21560    #[serde(rename = "access_type")]
21561    #[serde(skip_serializing_if = "Option::is_none")]
21562    pub access_type: Option<String>,
21563    #[doc = "Accessors\n\nThe identities that are granted access through the analyzed policy configuration. This identifies the specific entity that can exercise the permissions and helps assess the access relationship and potential security implications. Examples include user accounts, service principals, roles, account identifiers, or system identities.\n\nrequired"]
21564    #[serde(rename = "accessors")]
21565    #[serde(skip_serializing_if = "Option::is_none")]
21566    pub accessors: Option<Vec<User>>,
21567    #[doc = "Additional Restrictions\n\nDetails about supplementary restrictions and guardrails that may limit the granted access, applied through additional policy types such as Resource Control Policies (RCPs) and Service Control Policies (SCPs) in AWS, or other policy constraints.\n\noptional"]
21568    #[serde(rename = "additional_restrictions")]
21569    #[serde(skip_serializing_if = "Option::is_none")]
21570    pub additional_restrictions: Option<Vec<AdditionalRestriction>>,
21571    #[doc = "Condition Keys\n\nThe condition keys and their values that constrain when and how the granted access can be exercised. These conditions define the circumstances under which the access relationship is valid and the privileges can be used. Examples: IP address restrictions like 'aws:SourceIp:192.0.2.0/24', time-based constraints like 'aws:RequestedRegion:us-east-1', MFA requirements like 'aws:MultiFactorAuthPresent:true', or custom conditions based on resource tags and request context.\n\noptional"]
21572    #[serde(rename = "condition_keys")]
21573    #[serde(skip_serializing_if = "Option::is_none")]
21574    pub condition_keys: Option<Vec<KeyValueObject>>,
21575    #[doc = "Granted Privileges\n\nThe specific privileges, actions, or permissions that are granted through the analyzed access relationship. This includes the actual operations that the accessor can perform on the target resource. Examples: AWS actions like 'sts:AssumeRole', 's3:GetObject', 'ec2:DescribeInstances'; Azure actions like 'Microsoft.Storage/storageAccounts/read'; or GCP permissions like 'storage.objects.get'.\n\noptional"]
21576    #[serde(rename = "granted_privileges")]
21577    #[serde(skip_serializing_if = "Option::is_none")]
21578    pub granted_privileges: Option<Vec<String>>,
21579}
21580#[doc = "Account\n\nThe Account object contains details about the account that initiated or performed a specific activity within a system or application. Additionally, the Account object refers to logical Cloud and Software-as-a-Service (SaaS) based containers such as AWS Accounts, Azure Subscriptions, Oracle Cloud Compartments, Google Cloud Projects, and otherwise.\n\n[] Category:  | Name: account\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
21581#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21582#[serde(default)]
21583#[non_exhaustive]
21584pub struct Account {
21585    #[doc = "Labels\n\nThe list of labels associated to the account.\n\noptional"]
21586    #[serde(rename = "labels")]
21587    #[serde(skip_serializing_if = "Option::is_none")]
21588    pub labels: Option<Vec<String>>,
21589    #[doc = "Name\n\nThe name of the account (e.g. <code> GCP Project name </code>, <code> Linux Account name </code> or <code> AWS Account name</code>).\n\nrecommended"]
21590    #[serde(rename = "name")]
21591    #[serde(skip_serializing_if = "Option::is_none")]
21592    pub name: Option<String>,
21593    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the account.\n\noptional"]
21594    #[serde(rename = "tags")]
21595    #[serde(skip_serializing_if = "Option::is_none")]
21596    pub tags: Option<Vec<KeyValueObject>>,
21597    #[doc = "Type\n\nThe account type, normalized to the caption of 'account_type_id'. In the case of 'Other', it is defined by the event source.\n\noptional"]
21598    #[serde(rename = "type")]
21599    #[serde(skip_serializing_if = "Option::is_none")]
21600    pub r#type: Option<String>,
21601    #[doc = "Type ID\n\nThe normalized account type identifier.\n\nrecommended"]
21602    #[serde(rename = "type_id")]
21603    #[serde(skip_serializing_if = "Option::is_none")]
21604    pub type_id: Option<i64>,
21605    #[doc = "Unique ID\n\nThe unique identifier of the account (e.g. <code> AWS Account ID </code>, <code> OCID </code>, <code> GCP Project ID </code>, <code> Azure Subscription ID </code>, <code> Google Workspace Customer ID </code>, or <code> M365 Tenant UID</code>).\n\nrecommended"]
21606    #[serde(rename = "uid")]
21607    #[serde(skip_serializing_if = "Option::is_none")]
21608    pub uid: Option<String>,
21609}
21610#[doc = "Actor\n\nThe Actor object contains details about the user, role, application, service, or process that initiated or performed a specific activity. Note that Actor is not the threat actor of a campaign but may be part of a campaign.\n\n[] Category:  | Name: actor\n\n**Constraints:**\n* at_least_one: `[process`,`user`,`invoked_by`,`session`,`app_name`,`app_uid]`\n"]
21611#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21612#[serde(default)]
21613#[non_exhaustive]
21614pub struct Actor {
21615    #[doc = "Application Name\n\nThe client application or service that initiated the activity. This can be in conjunction with the <code>user</code> if present.  Note that <code>app_name</code> is distinct from the <code>process</code> if present.\n\noptional"]
21616    #[serde(rename = "app_name")]
21617    #[serde(skip_serializing_if = "Option::is_none")]
21618    pub app_name: Option<String>,
21619    #[doc = "Application ID\n\nThe unique identifier of the client application or service that initiated the activity. This can be in conjunction with the <code>user</code> if present. Note that <code>app_name</code> is distinct from the <code>process.pid</code> or <code>process.uid</code> if present.\n\noptional"]
21620    #[serde(rename = "app_uid")]
21621    #[serde(skip_serializing_if = "Option::is_none")]
21622    pub app_uid: Option<String>,
21623    #[doc = "Authorization Information\n\nProvides details about an authorization, such as authorization outcome, and any associated policies related to the activity/event.\n\noptional"]
21624    #[serde(rename = "authorizations")]
21625    #[serde(skip_serializing_if = "Option::is_none")]
21626    pub authorizations: Option<Vec<Authorization>>,
21627    #[doc = "Identity Provider\n\nThis object describes details about the Identity Provider used.\n\noptional"]
21628    #[serde(rename = "idp")]
21629    #[serde(skip_serializing_if = "Option::is_none")]
21630    pub idp: Option<Box<Idp>>,
21631    #[doc = "Invoked by\n\nThe name of the service that invoked the activity as described in the event.\n\noptional"]
21632    #[serde(rename = "invoked_by")]
21633    #[serde(skip_serializing_if = "Option::is_none")]
21634    pub invoked_by: Option<String>,
21635    #[doc = "Process\n\nThe process that initiated the activity.\n\nrecommended"]
21636    #[serde(rename = "process")]
21637    #[serde(skip_serializing_if = "Option::is_none")]
21638    pub process: Option<Box<Process>>,
21639    #[doc = "Session\n\nThe user session from which the activity was initiated.\n\noptional"]
21640    #[serde(rename = "session")]
21641    #[serde(skip_serializing_if = "Option::is_none")]
21642    pub session: Option<Box<Session>>,
21643    #[doc = "User\n\nThe user that initiated the activity or the user context from which the activity was initiated.\n\nrecommended"]
21644    #[serde(rename = "user")]
21645    #[serde(skip_serializing_if = "Option::is_none")]
21646    pub user: Option<Box<User>>,
21647}
21648#[doc = "Additional Restriction\n\nThe Additional Restriction object describes supplementary access controls and guardrails that constrain or limit granted permissions beyond the primary policy. These restrictions are typically applied through hierarchical policy frameworks, organizational controls, or conditional access mechanisms. Examples include AWS Service Control Policies (SCPs), Resource Control Policies (RCPs), Azure Management Group policies, GCP Organization policies, conditional access policies, IP restrictions, time-based constraints, and MFA requirements.\n\n[] Category:  | Name: additional_restriction"]
21649#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21650#[serde(default)]
21651#[non_exhaustive]
21652pub struct AdditionalRestriction {
21653    #[doc = "Policy\n\nDetailed information about the policy document that defines this restriction, including policy metadata, type, scope, and the specific rules or conditions that implement the access control.\n\nrequired"]
21654    #[serde(rename = "policy")]
21655    #[serde(skip_serializing_if = "Option::is_none")]
21656    pub policy: Option<Box<Policy>>,
21657    #[doc = "Status\n\nThe current status of the policy restriction, normalized to the caption of the <code>status_id</code> enum value.\n\noptional"]
21658    #[serde(rename = "status")]
21659    #[serde(skip_serializing_if = "Option::is_none")]
21660    pub status: Option<String>,
21661    #[doc = "Status ID\n\nThe normalized status identifier indicating the applicability of this policy restriction.\n\nrecommended"]
21662    #[serde(rename = "status_id")]
21663    #[serde(skip_serializing_if = "Option::is_none")]
21664    pub status_id: Option<i64>,
21665}
21666#[doc = "Advisory\n\nThe Advisory object represents publicly disclosed cybersecurity vulnerabilities defined in a Security advisory. e.g. <code> Microsoft KB Article</code>, <code>Apple Security Advisory</code>, or a <code>GitHub Security Advisory (GHSA)</code>\n\n[] Category:  | Name: advisory"]
21667#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21668#[serde(default)]
21669#[non_exhaustive]
21670pub struct Advisory {
21671    #[doc = "Average Timespan\n\nThe average time to patch.\n\noptional"]
21672    #[serde(rename = "avg_timespan")]
21673    #[serde(skip_serializing_if = "Option::is_none")]
21674    pub avg_timespan: Option<Box<Timespan>>,
21675    #[doc = "Patch Bulletin\n\nThe Advisory bulletin identifier.\n\noptional"]
21676    #[serde(rename = "bulletin")]
21677    #[serde(skip_serializing_if = "Option::is_none")]
21678    pub bulletin: Option<String>,
21679    #[doc = "Classification\n\nThe vendors classification of the Advisory.\n\noptional"]
21680    #[serde(rename = "classification")]
21681    #[serde(skip_serializing_if = "Option::is_none")]
21682    pub classification: Option<String>,
21683    #[doc = "Created Time\n\nThe time when the Advisory record was created.\n\nrecommended"]
21684    #[serde(rename = "created_time")]
21685    #[serde(skip_serializing_if = "Option::is_none")]
21686    pub created_time: Option<i64>,
21687    #[doc = "Created Time\n\nThe time when the Advisory record was created.\n\noptional"]
21688    #[serde(rename = "created_time_dt")]
21689    #[serde(skip_serializing_if = "Option::is_none")]
21690    pub created_time_dt: Option<String>,
21691    #[doc = "Description\n\nA brief description of the Advisory Record.\n\noptional"]
21692    #[serde(rename = "desc")]
21693    #[serde(skip_serializing_if = "Option::is_none")]
21694    pub desc: Option<String>,
21695    #[doc = "Install State\n\nThe install state of the Advisory.\n\nrecommended"]
21696    #[serde(rename = "install_state")]
21697    #[serde(skip_serializing_if = "Option::is_none")]
21698    pub install_state: Option<String>,
21699    #[doc = "Install State ID\n\nThe normalized install state ID of the Advisory.\n\nrecommended"]
21700    #[serde(rename = "install_state_id")]
21701    #[serde(skip_serializing_if = "Option::is_none")]
21702    pub install_state_id: Option<i64>,
21703    #[doc = "The patch is superseded.\n\nThe Advisory has been replaced by another.\n\noptional"]
21704    #[serde(rename = "is_superseded")]
21705    #[serde(skip_serializing_if = "Option::is_none")]
21706    pub is_superseded: Option<bool>,
21707    #[doc = "Modified Time\n\nThe time when the Advisory record was last updated.\n\noptional"]
21708    #[serde(rename = "modified_time")]
21709    #[serde(skip_serializing_if = "Option::is_none")]
21710    pub modified_time: Option<i64>,
21711    #[doc = "Modified Time\n\nThe time when the Advisory record was last updated.\n\noptional"]
21712    #[serde(rename = "modified_time_dt")]
21713    #[serde(skip_serializing_if = "Option::is_none")]
21714    pub modified_time_dt: Option<String>,
21715    #[doc = "OS\n\nThe operating system the Advisory applies to.\n\nrecommended"]
21716    #[serde(rename = "os")]
21717    #[serde(skip_serializing_if = "Option::is_none")]
21718    pub os: Option<Box<Os>>,
21719    #[doc = "Product\n\nThe product where the vulnerability was discovered.\n\noptional"]
21720    #[serde(rename = "product")]
21721    #[serde(skip_serializing_if = "Option::is_none")]
21722    pub product: Option<Box<Product>>,
21723    #[doc = "References\n\nA list of reference URLs with additional information about the vulnerabilities disclosed in the Advisory.\n\nrecommended"]
21724    #[serde(rename = "references")]
21725    #[serde(skip_serializing_if = "Option::is_none")]
21726    pub references: Option<Vec<String>>,
21727    #[doc = "Related CVEs\n\nA list of Common Vulnerabilities and Exposures <a target='_blank' href='https://cve.mitre.org/'>(CVE)</a> identifiers related to the vulnerabilities disclosed in the Advisory.\n\noptional"]
21728    #[serde(rename = "related_cves")]
21729    #[serde(skip_serializing_if = "Option::is_none")]
21730    pub related_cves: Option<Vec<Cve>>,
21731    #[doc = "Related CWEs\n\nA list of Common Weakness Enumeration <a target='_blank' href='https://cwe.mitre.org/'>(CWE)</a> identifiers related to the vulnerabilities disclosed in the Advisory.\n\noptional"]
21732    #[serde(rename = "related_cwes")]
21733    #[serde(skip_serializing_if = "Option::is_none")]
21734    pub related_cwes: Option<Vec<Cwe>>,
21735    #[doc = "Size\n\nThe size in bytes for the Advisory. Usually populated for a KB Article patch.\n\noptional"]
21736    #[serde(rename = "size")]
21737    #[serde(skip_serializing_if = "Option::is_none")]
21738    pub size: Option<i64>,
21739    #[doc = "Source URL\n\nThe Advisory link from the source vendor.\n\noptional"]
21740    #[serde(rename = "src_url")]
21741    #[serde(skip_serializing_if = "Option::is_none")]
21742    pub src_url: Option<String>,
21743    #[doc = "Title\n\nA title or a brief phrase summarizing the Advisory.\n\nrecommended"]
21744    #[serde(rename = "title")]
21745    #[serde(skip_serializing_if = "Option::is_none")]
21746    pub title: Option<String>,
21747    #[doc = "Advisory ID\n\nThe unique identifier assigned to the advisory or disclosed vulnerability, e.g, <code>GHSA-5mrr-rgp6-x4gr</code>.\n\nrequired"]
21748    #[serde(rename = "uid")]
21749    #[serde(skip_serializing_if = "Option::is_none")]
21750    pub uid: Option<String>,
21751}
21752#[doc = "Affected Code\n\nThe Affected Code object describes details about a code block identified as vulnerable.\n\n[] Category:  | Name: affected_code"]
21753#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21754#[serde(default)]
21755#[non_exhaustive]
21756pub struct AffectedCode {
21757    #[doc = "End Column\n\nThe column number of the last part of the assessed code identified as vulnerable.\n\nrecommended"]
21758    #[serde(rename = "end_column")]
21759    #[serde(skip_serializing_if = "Option::is_none")]
21760    pub end_column: Option<i64>,
21761    #[doc = "End Line\n\nThe line number of the last line of code block identified as vulnerable.\n\nrecommended"]
21762    #[serde(rename = "end_line")]
21763    #[serde(skip_serializing_if = "Option::is_none")]
21764    pub end_line: Option<i64>,
21765    #[doc = "File\n\nDetails about the file that contains the affected code block.\n\nrequired"]
21766    #[serde(rename = "file")]
21767    #[serde(skip_serializing_if = "Option::is_none")]
21768    pub file: Option<Box<File>>,
21769    #[doc = "Owner\n\nDetails about the user that owns the affected file.\n\noptional"]
21770    #[serde(rename = "owner")]
21771    #[serde(skip_serializing_if = "Option::is_none")]
21772    pub owner: Option<Box<User>>,
21773    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
21774    #[serde(rename = "remediation")]
21775    #[serde(skip_serializing_if = "Option::is_none")]
21776    pub remediation: Option<Box<Remediation>>,
21777    #[doc = "Related Rule\n\nDetails about the specific rule, e.g., those defined as part of a larger <code>policy</code>, that triggered the finding.\n\nrecommended"]
21778    #[serde(rename = "rule")]
21779    #[serde(skip_serializing_if = "Option::is_none")]
21780    pub rule: Option<Box<Rule>>,
21781    #[doc = "Start Column\n\nThe column number of the first part of the assessed code identified as vulnerable.\n\nrecommended"]
21782    #[serde(rename = "start_column")]
21783    #[serde(skip_serializing_if = "Option::is_none")]
21784    pub start_column: Option<i64>,
21785    #[doc = "Start Line\n\nThe line number of the first line of code block identified as vulnerable.\n\nrecommended"]
21786    #[serde(rename = "start_line")]
21787    #[serde(skip_serializing_if = "Option::is_none")]
21788    pub start_line: Option<i64>,
21789}
21790#[doc = "Affected Software Package\n\nThe Affected Package object describes details about a software package identified as affected by a vulnerability/vulnerabilities.\n\n[] Category:  | Name: affected_package"]
21791#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21792#[serde(default)]
21793#[non_exhaustive]
21794pub struct AffectedPackage {
21795    #[doc = "Architecture\n\nArchitecture is a shorthand name describing the type of computer hardware the packaged software is meant to run on.\n\nrecommended"]
21796    #[serde(rename = "architecture")]
21797    #[serde(skip_serializing_if = "Option::is_none")]
21798    pub architecture: Option<String>,
21799    #[doc = "The product CPE identifier\n\nThe Common Platform Enumeration (CPE) name as described by (<a target='_blank' href='https://nvd.nist.gov/products/cpe'>NIST</a>) For example: <code>cpe:/a:apple:safari:16.2</code>.\n\noptional"]
21800    #[serde(rename = "cpe_name")]
21801    #[serde(skip_serializing_if = "Option::is_none")]
21802    pub cpe_name: Option<String>,
21803    #[doc = "Epoch\n\nThe software package epoch. Epoch is a way to define weighted dependencies based on version numbers.\n\noptional"]
21804    #[serde(rename = "epoch")]
21805    #[serde(skip_serializing_if = "Option::is_none")]
21806    pub epoch: Option<i64>,
21807    #[doc = "Fixed In Version\n\nThe software package version in which a reported vulnerability was patched/fixed.\n\noptional"]
21808    #[serde(rename = "fixed_in_version")]
21809    #[serde(skip_serializing_if = "Option::is_none")]
21810    pub fixed_in_version: Option<String>,
21811    #[doc = "Hash\n\nCryptographic hash to identify the binary instance of a software component. This can include any component such file, package, or library.\n\noptional"]
21812    #[serde(rename = "hash")]
21813    #[serde(skip_serializing_if = "Option::is_none")]
21814    pub hash: Option<Box<Fingerprint>>,
21815    #[doc = "Software License\n\nThe software license applied to this package.\n\noptional"]
21816    #[serde(rename = "license")]
21817    #[serde(skip_serializing_if = "Option::is_none")]
21818    pub license: Option<String>,
21819    #[doc = "Software License URL\n\nThe URL pointing to the license applied on package or software. This is typically a <code>LICENSE.md</code> file within a repository.\n\noptional"]
21820    #[serde(rename = "license_url")]
21821    #[serde(skip_serializing_if = "Option::is_none")]
21822    pub license_url: Option<String>,
21823    #[doc = "Name\n\nThe software package name.\n\nrequired"]
21824    #[serde(rename = "name")]
21825    #[serde(skip_serializing_if = "Option::is_none")]
21826    pub name: Option<String>,
21827    #[doc = "Package Manager\n\nThe software packager manager utilized to manage a package on a system, e.g. npm, yum, dpkg etc.\n\noptional"]
21828    #[serde(rename = "package_manager")]
21829    #[serde(skip_serializing_if = "Option::is_none")]
21830    pub package_manager: Option<String>,
21831    #[doc = "Package Manager URL\n\nThe URL of the package or library at the package manager, or the specific URL or URI of an internal package manager link such as <code>AWS CodeArtifact</code> or <code>Artifactory</code>.\n\noptional"]
21832    #[serde(rename = "package_manager_url")]
21833    #[serde(skip_serializing_if = "Option::is_none")]
21834    pub package_manager_url: Option<String>,
21835    #[doc = "Path\n\nThe installation path of the affected package.\n\noptional"]
21836    #[serde(rename = "path")]
21837    #[serde(skip_serializing_if = "Option::is_none")]
21838    pub path: Option<String>,
21839    #[doc = "Package URL\n\nA purl is a URL string used to identify and locate a software package in a mostly universal and uniform way across programming languages, package managers, packaging conventions, tools, APIs and databases.\n\noptional"]
21840    #[serde(rename = "purl")]
21841    #[serde(skip_serializing_if = "Option::is_none")]
21842    pub purl: Option<String>,
21843    #[doc = "Software Release Details\n\nRelease is the number of times a version of the software has been packaged.\n\noptional"]
21844    #[serde(rename = "release")]
21845    #[serde(skip_serializing_if = "Option::is_none")]
21846    pub release: Option<String>,
21847    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
21848    #[serde(rename = "remediation")]
21849    #[serde(skip_serializing_if = "Option::is_none")]
21850    pub remediation: Option<Box<Remediation>>,
21851    #[doc = "Source URL\n\nThe link to the specific library or package such as within <code>GitHub</code>, this is different from the link to the package manager where the library or package is hosted.\n\noptional"]
21852    #[serde(rename = "src_url")]
21853    #[serde(skip_serializing_if = "Option::is_none")]
21854    pub src_url: Option<String>,
21855    #[doc = "Type\n\nThe type of software package, normalized to the caption of the <code>type_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
21856    #[serde(rename = "type")]
21857    #[serde(skip_serializing_if = "Option::is_none")]
21858    pub r#type: Option<String>,
21859    #[doc = "Type ID\n\nThe type of software package.\n\nrecommended"]
21860    #[serde(rename = "type_id")]
21861    #[serde(skip_serializing_if = "Option::is_none")]
21862    pub type_id: Option<i64>,
21863    #[doc = "Package UID\n\nA unique identifier for the package or library reported by the source tool. E.g., the <code>libId</code> within the <code>sbom</code> field of an OX Security Issue or the SPDX <code>components.*.bom-ref</code>.\n\noptional"]
21864    #[serde(rename = "uid")]
21865    #[serde(skip_serializing_if = "Option::is_none")]
21866    pub uid: Option<String>,
21867    #[doc = "Vendor Name\n\nThe name of the vendor who published the software package.\n\noptional"]
21868    #[serde(rename = "vendor_name")]
21869    #[serde(skip_serializing_if = "Option::is_none")]
21870    pub vendor_name: Option<String>,
21871    #[doc = "Version\n\nThe software package version.\n\nrequired"]
21872    #[serde(rename = "version")]
21873    #[serde(skip_serializing_if = "Option::is_none")]
21874    pub version: Option<String>,
21875}
21876#[doc = "Agent\n\nAn Agent (also known as a Sensor) is typically installed on an Operating System (OS) and serves as a specialized software component that can be designed to monitor, detect, collect, archive, or take action. These activities and possible actions are defined by the upstream system controlling the Agent and its intended purpose. For instance, an Agent can include Endpoint Detection & Response (EDR) agents, backup/disaster recovery sensors, Application Performance Monitoring or profiling sensors, and similar software.\n\n[] Category:  | Name: agent\n\n**Constraints:**\n* at_least_one: `[uid`,`name]`\n"]
21877#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21878#[serde(default)]
21879#[non_exhaustive]
21880pub struct Agent {
21881    #[doc = "Agent Name\n\nThe name of the agent or sensor. For example: <code>AWS SSM Agent</code>.\n\nrecommended"]
21882    #[serde(rename = "name")]
21883    #[serde(skip_serializing_if = "Option::is_none")]
21884    pub name: Option<String>,
21885    #[doc = "Agent Policies\n\nDescribes the various policies that may be applied or enforced by an agent or sensor. E.g., Conditional Access, prevention, auto-update, tamper protection, destination configuration, etc.\n\noptional"]
21886    #[serde(rename = "policies")]
21887    #[serde(skip_serializing_if = "Option::is_none")]
21888    pub policies: Option<Vec<Policy>>,
21889    #[doc = "Agent Type\n\nThe normalized caption of the type_id value for the agent or sensor. In the case of 'Other' or 'Unknown', it is defined by the event source.\n\noptional"]
21890    #[serde(rename = "type")]
21891    #[serde(skip_serializing_if = "Option::is_none")]
21892    pub r#type: Option<String>,
21893    #[doc = "Type ID\n\nThe normalized representation of an agent or sensor. E.g., EDR, vulnerability management, APM, backup & recovery, etc.\n\nrecommended"]
21894    #[serde(rename = "type_id")]
21895    #[serde(skip_serializing_if = "Option::is_none")]
21896    pub type_id: Option<i64>,
21897    #[doc = "Agent ID\n\nThe UID of the agent or sensor, sometimes known as a Sensor ID or <code>aid</code>.\n\nrecommended"]
21898    #[serde(rename = "uid")]
21899    #[serde(skip_serializing_if = "Option::is_none")]
21900    pub uid: Option<String>,
21901    #[doc = "Alternate Agent ID\n\nAn alternative or contextual identifier for the agent or sensor, such as a configuration, organization, or license UID.\n\noptional"]
21902    #[serde(rename = "uid_alt")]
21903    #[serde(skip_serializing_if = "Option::is_none")]
21904    pub uid_alt: Option<String>,
21905    #[doc = "Vendor Name\n\nThe company or author who created the agent or sensor. For example: <code>Crowdstrike</code>.\n\noptional"]
21906    #[serde(rename = "vendor_name")]
21907    #[serde(skip_serializing_if = "Option::is_none")]
21908    pub vendor_name: Option<String>,
21909    #[doc = "Agent Version\n\nThe semantic version of the agent or sensor, e.g., <code>7.101.50.0</code>.\n\noptional"]
21910    #[serde(rename = "version")]
21911    #[serde(skip_serializing_if = "Option::is_none")]
21912    pub version: Option<String>,
21913}
21914#[doc = "AI Model\n\nThe AI Model object describes the characteristics of an AI/ML model. Examples include language models like GPT-4, embedding models like text-embedding-ada-002, and computer vision models like CLIP.\n\n[] Category:  | Name: ai_model\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
21915#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21916#[serde(default)]
21917#[non_exhaustive]
21918pub struct AiModel {
21919    #[doc = "AI Provider\n\nAI service provider or organization name. For example: <code>OpenAI</code>, <code>Anthropic</code>, <code>Google</code>, or <code>Internal</code>.\n\nrequired"]
21920    #[serde(rename = "ai_provider")]
21921    #[serde(skip_serializing_if = "Option::is_none")]
21922    pub ai_provider: Option<String>,
21923    #[doc = "Name\n\nHuman-readable model name. For example: <code>gpt-4o</code>, <code>claude-3-sonnet</code>, or <code>text-embedding-ada-002</code>.\n\nrequired"]
21924    #[serde(rename = "name")]
21925    #[serde(skip_serializing_if = "Option::is_none")]
21926    pub name: Option<String>,
21927    #[doc = "Unique ID\n\nThe unique identifier of the AI model.\n\nrecommended"]
21928    #[serde(rename = "uid")]
21929    #[serde(skip_serializing_if = "Option::is_none")]
21930    pub uid: Option<String>,
21931    #[doc = "Version\n\nModel version identifier. For example: <code>2024-05-13</code>, <code>v2.1.0</code>, or <code>beta</code>.\n\nrecommended"]
21932    #[serde(rename = "version")]
21933    #[serde(skip_serializing_if = "Option::is_none")]
21934    pub version: Option<String>,
21935}
21936#[doc = "Aircraft\n\nThe Aircraft object represents any aircraft or otherwise airborne asset such as an unmanned system, airplane, balloon, spacecraft, or otherwise. The Aircraft object is intended to normalized data captured or otherwise logged from active radar, passive radar, multi-spectral systems, or the Automatic Dependant Broadcast - Surveillance (ADS-B), and/or Mode S systems.\n\n[] Category:  | Name: aircraft\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
21937#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21938#[serde(default)]
21939#[non_exhaustive]
21940pub struct Aircraft {
21941    #[doc = "Geo Location\n\nThe detailed geographical location usually associated with an IP address.\n\nrecommended"]
21942    #[serde(rename = "location")]
21943    #[serde(skip_serializing_if = "Option::is_none")]
21944    pub location: Option<Box<Location>>,
21945    #[doc = "Model\n\nThe model name of the aircraft or unmanned system.\n\noptional"]
21946    #[serde(rename = "model")]
21947    #[serde(skip_serializing_if = "Option::is_none")]
21948    pub model: Option<String>,
21949    #[doc = "Name\n\nThe name of the aircraft, such as the such as the flight name or callsign.\n\nrecommended"]
21950    #[serde(rename = "name")]
21951    #[serde(skip_serializing_if = "Option::is_none")]
21952    pub name: Option<String>,
21953    #[doc = "Serial Number\n\nThe serial number of the aircraft.\n\noptional"]
21954    #[serde(rename = "serial_number")]
21955    #[serde(skip_serializing_if = "Option::is_none")]
21956    pub serial_number: Option<String>,
21957    #[doc = "Speed\n\nGround speed of flight. This value is provided in meters per second with a minimum resolution of 0.25 m/s. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: 255 m/s</code>.\n\noptional"]
21958    #[serde(rename = "speed")]
21959    #[serde(skip_serializing_if = "Option::is_none")]
21960    pub speed: Option<String>,
21961    #[doc = "Speed Accuracy\n\nProvides quality/containment on horizontal ground speed. Measured in meters/second.\n\noptional"]
21962    #[serde(rename = "speed_accuracy")]
21963    #[serde(skip_serializing_if = "Option::is_none")]
21964    pub speed_accuracy: Option<String>,
21965    #[doc = "Track Direction\n\nDirection of flight expressed as a “True North-based” ground track angle. This value is provided in clockwise degrees with a minimum resolution of 1 degree. If aircraft is not moving horizontally, use the “Unknown” value\n\noptional"]
21966    #[serde(rename = "track_direction")]
21967    #[serde(skip_serializing_if = "Option::is_none")]
21968    pub track_direction: Option<String>,
21969    #[doc = "Unique ID\n\nThe primary identification identifier for an aircraft, such as the 24-bit International Civil Aviation Organization (ICAO) identifier of the aircraft, as 6 hex digits.\n\nrecommended"]
21970    #[serde(rename = "uid")]
21971    #[serde(skip_serializing_if = "Option::is_none")]
21972    pub uid: Option<String>,
21973    #[doc = "Alternate ID\n\nA secondary identification identifier for an aircraft, such as the 4-digit squawk (octal representation).\n\noptional"]
21974    #[serde(rename = "uid_alt")]
21975    #[serde(skip_serializing_if = "Option::is_none")]
21976    pub uid_alt: Option<String>,
21977    #[doc = "Vertical Speed\n\nVertical speed upward relative to the WGS-84 datum, measured in meters per second. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: 63 m/s</code>.\n\noptional"]
21978    #[serde(rename = "vertical_speed")]
21979    #[serde(skip_serializing_if = "Option::is_none")]
21980    pub vertical_speed: Option<String>,
21981}
21982#[doc = "Analysis Target\n\nThe analysis target defines the scope of monitored activities, specifying what entity, system or process is analyzed for activity patterns.\n\n[] Category:  | Name: analysis_target"]
21983#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21984#[serde(default)]
21985#[non_exhaustive]
21986pub struct AnalysisTarget {
21987    #[doc = "Name\n\nThe specific name or identifier of the analysis target, such as the username of a User Account, the name of a Kubernetes Cluster, the identifier of a Network Namespace, or the name of an Application Component.\n\nrequired"]
21988    #[serde(rename = "name")]
21989    #[serde(skip_serializing_if = "Option::is_none")]
21990    pub name: Option<String>,
21991    #[doc = "Type\n\nThe category of the analysis target, such as User Account, Kubernetes Cluster, Network Namespace, or Application Component.\n\noptional"]
21992    #[serde(rename = "type")]
21993    #[serde(skip_serializing_if = "Option::is_none")]
21994    pub r#type: Option<String>,
21995}
21996#[doc = "Analytic\n\nThe Analytic object contains details about the analytic technique used to analyze and derive insights from the data or information that led to the creation of a finding or conclusion.\n\n[] Category:  | Name: analytic\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
21997#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
21998#[serde(default)]
21999#[non_exhaustive]
22000pub struct Analytic {
22001    #[doc = "Algorithm\n\nThe algorithm used by the underlying analytic to generate the finding.\n\noptional"]
22002    #[serde(rename = "algorithm")]
22003    #[serde(skip_serializing_if = "Option::is_none")]
22004    pub algorithm: Option<String>,
22005    #[doc = "Category\n\nThe analytic category.\n\noptional"]
22006    #[serde(rename = "category")]
22007    #[serde(skip_serializing_if = "Option::is_none")]
22008    pub category: Option<String>,
22009    #[doc = "Description\n\nThe description of the analytic that generated the finding.\n\noptional"]
22010    #[serde(rename = "desc")]
22011    #[serde(skip_serializing_if = "Option::is_none")]
22012    pub desc: Option<String>,
22013    #[doc = "Name\n\nThe name of the analytic that generated the finding.\n\nrecommended"]
22014    #[serde(rename = "name")]
22015    #[serde(skip_serializing_if = "Option::is_none")]
22016    pub name: Option<String>,
22017    #[doc = "Related Analytics\n\nOther analytics related to this analytic.\n\noptional"]
22018    #[serde(rename = "related_analytics")]
22019    #[serde(skip_serializing_if = "Option::is_none")]
22020    pub related_analytics: Option<Vec<Analytic>>,
22021    #[doc = "State\n\nThe Analytic state.\n\noptional"]
22022    #[serde(rename = "state")]
22023    #[serde(skip_serializing_if = "Option::is_none")]
22024    pub state: Option<String>,
22025    #[doc = "State ID\n\nThe Analytic state identifier.\n\noptional"]
22026    #[serde(rename = "state_id")]
22027    #[serde(skip_serializing_if = "Option::is_none")]
22028    pub state_id: Option<i64>,
22029    #[doc = "Type\n\nThe analytic type.\n\noptional"]
22030    #[serde(rename = "type")]
22031    #[serde(skip_serializing_if = "Option::is_none")]
22032    pub r#type: Option<String>,
22033    #[doc = "Type ID\n\nThe analytic type ID.\n\nrequired"]
22034    #[serde(rename = "type_id")]
22035    #[serde(skip_serializing_if = "Option::is_none")]
22036    pub type_id: Option<i64>,
22037    #[doc = "Unique ID\n\nThe unique identifier of the analytic that generated the finding.\n\nrecommended"]
22038    #[serde(rename = "uid")]
22039    #[serde(skip_serializing_if = "Option::is_none")]
22040    pub uid: Option<String>,
22041    #[doc = "Version\n\nThe analytic version. For example: <code>1.1</code>.\n\noptional"]
22042    #[serde(rename = "version")]
22043    #[serde(skip_serializing_if = "Option::is_none")]
22044    pub version: Option<String>,
22045}
22046#[doc = "Anomaly\n\nDescribes an anomaly or deviation detected in a system. Anomalies are unexpected activity patterns that could indicate potential issues needing attention.\n\n[] Category:  | Name: anomaly"]
22047#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22048#[serde(default)]
22049#[non_exhaustive]
22050pub struct Anomaly {
22051    #[doc = "Observation Parameter\n\nThe specific parameter, metric or property where the anomaly was observed. Examples include: CPU usage percentage, API response time in milliseconds, HTTP error rate, memory utilization, network latency, transaction volume, etc. This helps identify the exact aspect of the system exhibiting anomalous behavior.\n\nrequired"]
22052    #[serde(rename = "observation_parameter")]
22053    #[serde(skip_serializing_if = "Option::is_none")]
22054    pub observation_parameter: Option<String>,
22055    #[doc = "Observation Type\n\nThe type of analysis methodology used to detect the anomaly. This indicates how the anomaly was identified through different analytical approaches. Common types include: Frequency Analysis, Time Pattern Analysis, Volume Analysis, Sequence Analysis, Distribution Analysis, etc.\n\nrecommended"]
22056    #[serde(rename = "observation_type")]
22057    #[serde(skip_serializing_if = "Option::is_none")]
22058    pub observation_type: Option<String>,
22059    #[doc = "Observations\n\nDetails about the observed anomaly or observations that were flagged as anomalous compared to expected baseline behavior.\n\nrequired"]
22060    #[serde(rename = "observations")]
22061    #[serde(skip_serializing_if = "Option::is_none")]
22062    pub observations: Option<Vec<Observation>>,
22063    #[doc = "Observed Pattern\n\nThe specific pattern identified within the observation type. For Frequency Analysis, this could be 'FREQUENT', 'INFREQUENT', 'RARE', or 'UNSEEN'. For Time Pattern Analysis, this could be 'BUSINESS_HOURS', 'OFF_HOURS', or 'UNUSUAL_TIME'. For Volume Analysis, this could be 'NORMAL_VOLUME', 'HIGH_VOLUME', or 'SURGE'. The pattern values are specific to each observation type and indicate how the observed behavior relates to the baseline.\n\nrecommended"]
22064    #[serde(rename = "observed_pattern")]
22065    #[serde(skip_serializing_if = "Option::is_none")]
22066    pub observed_pattern: Option<String>,
22067}
22068#[doc = "Anomaly Analysis\n\nDescribes the analysis of activity patterns and anomalies of target entities to identify potential security threats, performance issues, or other deviations from established baselines. This includes monitoring and analyzing user interactions, API usage, resource utilization, access patterns and other measured indicators.\n\n[] Category:  | Name: anomaly_analysis"]
22069#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22070#[serde(default)]
22071#[non_exhaustive]
22072pub struct AnomalyAnalysis {
22073    #[doc = "Analysis Targets\n\nThe analysis targets define the scope of monitored activities, specifying what entities, systems or processes are analyzed for activity patterns.\n\nrequired"]
22074    #[serde(rename = "analysis_targets")]
22075    #[serde(skip_serializing_if = "Option::is_none")]
22076    pub analysis_targets: Option<Vec<AnalysisTarget>>,
22077    #[doc = "Anomalies\n\nList of detected activities that significantly deviate from the established baselines. This can include unusual access patterns, unexpected user-agents, abnormal API usage, suspicious traffic spikes, unauthorized access attempts, and other activities that may indicate potential security threats or system issues.\n\nrequired"]
22078    #[serde(rename = "anomalies")]
22079    #[serde(skip_serializing_if = "Option::is_none")]
22080    pub anomalies: Option<Vec<Anomaly>>,
22081    #[doc = "Baselines\n\nList of established patterns representing normal activity that serve as reference points for anomaly detection. This includes typical user interaction patterns like common user-agents, expected API access frequencies and patterns, standard resource utilization levels, and regular traffic flows. These baselines help establish what constitutes 'normal' activity in the system.\n\nrecommended"]
22082    #[serde(rename = "baselines")]
22083    #[serde(skip_serializing_if = "Option::is_none")]
22084    pub baselines: Option<Vec<Baseline>>,
22085}
22086#[doc = "API\n\nThe API, or Application Programming Interface, object represents  information pertaining to an API request and response.\n\n[] Category:  | Name: api"]
22087#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22088#[serde(default)]
22089#[non_exhaustive]
22090pub struct Api {
22091    #[doc = "Group\n\nThe information pertaining to the API group.\n\noptional"]
22092    #[serde(rename = "group")]
22093    #[serde(skip_serializing_if = "Option::is_none")]
22094    pub group: Option<Box<Group>>,
22095    #[doc = "Operation\n\nVerb/Operation associated with the request\n\nrequired"]
22096    #[serde(rename = "operation")]
22097    #[serde(skip_serializing_if = "Option::is_none")]
22098    pub operation: Option<String>,
22099    #[doc = "API Request Details\n\nDetails pertaining to the API request.\n\nrecommended"]
22100    #[serde(rename = "request")]
22101    #[serde(skip_serializing_if = "Option::is_none")]
22102    pub request: Option<Box<Request>>,
22103    #[doc = "API Response Details\n\nDetails pertaining to the API response.\n\nrecommended"]
22104    #[serde(rename = "response")]
22105    #[serde(skip_serializing_if = "Option::is_none")]
22106    pub response: Option<Box<Response>>,
22107    #[doc = "Service\n\nThe information pertaining to the API service.\n\noptional"]
22108    #[serde(rename = "service")]
22109    #[serde(skip_serializing_if = "Option::is_none")]
22110    pub service: Option<Box<Service>>,
22111    #[doc = "Version\n\nThe version of the API service.\n\noptional"]
22112    #[serde(rename = "version")]
22113    #[serde(skip_serializing_if = "Option::is_none")]
22114    pub version: Option<String>,
22115}
22116#[doc = "Application\n\nAn Application describes the details for an inventoried application as reported by an Application Security tool or other Developer-centric tooling. Applications can be defined as Kubernetes resources, Containerized resources, or application hosting-specific cloud sources such as AWS Elastic BeanStalk, AWS Lightsail, or Azure Logic Apps.\n\n[] Category:  | Name: application\n\n**Constraints:**\n* at_least_one: `[uid`,`name]`\n"]
22117#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22118#[serde(default)]
22119#[non_exhaustive]
22120pub struct Application {
22121    #[doc = "Business Criticality\n\nThe criticality of the application as defined by the event source.\n\noptional"]
22122    #[serde(rename = "criticality")]
22123    #[serde(skip_serializing_if = "Option::is_none")]
22124    pub criticality: Option<String>,
22125    #[doc = "Data\n\nAdditional data describing the application.\n\noptional"]
22126    #[serde(rename = "data")]
22127    #[serde(skip_serializing_if = "Option::is_none")]
22128    pub data: Option<serde_json::Value>,
22129    #[doc = "Application Description\n\nA description or commentary for an application, usually retrieved from an upstream system.\n\noptional"]
22130    #[serde(rename = "desc")]
22131    #[serde(skip_serializing_if = "Option::is_none")]
22132    pub desc: Option<String>,
22133    #[doc = "Group\n\nThe name of the related application or associated resource group.\n\noptional"]
22134    #[serde(rename = "group")]
22135    #[serde(skip_serializing_if = "Option::is_none")]
22136    pub group: Option<Box<Group>>,
22137    #[doc = "Hostname\n\nThe fully qualified name of the application.\n\noptional"]
22138    #[serde(rename = "hostname")]
22139    #[serde(skip_serializing_if = "Option::is_none")]
22140    pub hostname: Option<String>,
22141    #[doc = "Labels\n\nThe list of labels associated to the application.\n\noptional"]
22142    #[serde(rename = "labels")]
22143    #[serde(skip_serializing_if = "Option::is_none")]
22144    pub labels: Option<Vec<String>>,
22145    #[doc = "Application Name\n\nThe name of the application.\n\nrecommended"]
22146    #[serde(rename = "name")]
22147    #[serde(skip_serializing_if = "Option::is_none")]
22148    pub name: Option<String>,
22149    #[doc = "Owner\n\nThe identity of the service or user account that owns the application.\n\nrecommended"]
22150    #[serde(rename = "owner")]
22151    #[serde(skip_serializing_if = "Option::is_none")]
22152    pub owner: Option<Box<User>>,
22153    #[doc = "Region\n\nThe cloud region of the resource.\n\noptional"]
22154    #[serde(rename = "region")]
22155    #[serde(skip_serializing_if = "Option::is_none")]
22156    pub region: Option<String>,
22157    #[doc = "Application Relationship\n\nA graph representation showing how this application relates to and interacts with other entities in the environment. This can include parent/child relationships, dependencies, or other connections.\n\noptional"]
22158    #[serde(rename = "resource_relationship")]
22159    #[serde(skip_serializing_if = "Option::is_none")]
22160    pub resource_relationship: Option<Box<Graph>>,
22161    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
22162    #[serde(rename = "risk_level")]
22163    #[serde(skip_serializing_if = "Option::is_none")]
22164    pub risk_level: Option<String>,
22165    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
22166    #[serde(rename = "risk_level_id")]
22167    #[serde(skip_serializing_if = "Option::is_none")]
22168    pub risk_level_id: Option<i64>,
22169    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
22170    #[serde(rename = "risk_score")]
22171    #[serde(skip_serializing_if = "Option::is_none")]
22172    pub risk_score: Option<i64>,
22173    #[doc = "Related SBOM\n\nThe Software Bill of Materials (SBOM) associated with the application\n\noptional"]
22174    #[serde(rename = "sbom")]
22175    #[serde(skip_serializing_if = "Option::is_none")]
22176    pub sbom: Option<Box<Sbom>>,
22177    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the application.\n\noptional"]
22178    #[serde(rename = "tags")]
22179    #[serde(skip_serializing_if = "Option::is_none")]
22180    pub tags: Option<Vec<KeyValueObject>>,
22181    #[doc = "Application Type\n\nThe type of application as defined by the event source, e.g., <code>GitHub</code>, <code>Azure Logic App</code>, or <code>Amazon Elastic BeanStalk</code>.\n\noptional"]
22182    #[serde(rename = "type")]
22183    #[serde(skip_serializing_if = "Option::is_none")]
22184    pub r#type: Option<String>,
22185    #[doc = "Application ID\n\nThe unique identifier for the application.\n\nrecommended"]
22186    #[serde(rename = "uid")]
22187    #[serde(skip_serializing_if = "Option::is_none")]
22188    pub uid: Option<String>,
22189    #[doc = "Application Alternative ID\n\nAn alternative or contextual identifier for the application, such as a configuration, organization, or license UID.\n\noptional"]
22190    #[serde(rename = "uid_alt")]
22191    #[serde(skip_serializing_if = "Option::is_none")]
22192    pub uid_alt: Option<String>,
22193    #[doc = "URL\n\nThe URL of the application.\n\noptional"]
22194    #[serde(rename = "url")]
22195    #[serde(skip_serializing_if = "Option::is_none")]
22196    pub url: Option<Box<Url>>,
22197    #[doc = "Application Version\n\nThe semantic version of the application, e.g., <code>1.7.4</code>.\n\noptional"]
22198    #[serde(rename = "version")]
22199    #[serde(skip_serializing_if = "Option::is_none")]
22200    pub version: Option<String>,
22201}
22202#[doc = "Assessment\n\nThe Assessment object describes a point-in-time assessment, check, or evaluation of a specific configuration or signal against an asset, entity, person, or otherwise. For example, this can encapsulate <code>os_signals</code> from CrowdStrike Falcon Zero Trust Assessments, or account for <code>Datastore</code> configurations from Cyera, or capture details of Microsoft Intune configuration policies.\n\n[] Category:  | Name: assessment\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
22203#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22204#[serde(default)]
22205#[non_exhaustive]
22206pub struct Assessment {
22207    #[doc = "Category\n\nThe category that the assessment is part of. For example: <code>Prevention</code> or <code>Windows 10</code>.\n\noptional"]
22208    #[serde(rename = "category")]
22209    #[serde(skip_serializing_if = "Option::is_none")]
22210    pub category: Option<String>,
22211    #[doc = "Description\n\nThe description of the assessment criteria, or a description of the specific configuration or signal the assessment is targeting.\n\nrecommended"]
22212    #[serde(rename = "desc")]
22213    #[serde(skip_serializing_if = "Option::is_none")]
22214    pub desc: Option<String>,
22215    #[doc = "Meets Criteria\n\nDetermines whether the assessment against the specific configuration or signal meets the assessments criteria. For example, if the assessment checks if a <code>Datastore</code> is encrypted or not, having encryption would be evaluated as <code>true</code>.\n\nrequired"]
22216    #[serde(rename = "meets_criteria")]
22217    #[serde(skip_serializing_if = "Option::is_none")]
22218    pub meets_criteria: Option<bool>,
22219    #[doc = "Name\n\nThe name of the configuration or signal being assessed. For example: <code>Kernel Mode Code Integrity (KMCI)</code> or <code>publicAccessibilityState</code>.\n\nrecommended"]
22220    #[serde(rename = "name")]
22221    #[serde(skip_serializing_if = "Option::is_none")]
22222    pub name: Option<String>,
22223    #[doc = "Assessment Policy\n\nThe details of any policy associated with an assessment.\n\noptional"]
22224    #[serde(rename = "policy")]
22225    #[serde(skip_serializing_if = "Option::is_none")]
22226    pub policy: Option<Box<Policy>>,
22227    #[doc = "Unique ID\n\nThe unique identifier of the configuration or signal being assessed. For example: the <code>signal_id</code>.\n\noptional"]
22228    #[serde(rename = "uid")]
22229    #[serde(skip_serializing_if = "Option::is_none")]
22230    pub uid: Option<String>,
22231}
22232#[doc = "MITRE ATT&CK® & ATLAS™\n\nThe MITRE ATT&CK® & ATLAS™ object describes the tactic, technique, sub-technique & mitigation associated to an attack.\n\n[] Category:  | Name: attack\n\n**Constraints:**\n* at_least_one: `[tactic`,`technique`,`sub_technique]`\n"]
22233#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22234#[serde(default)]
22235#[non_exhaustive]
22236pub struct Attack {
22237    #[doc = "MITRE Mitigation\n\nThe Mitigation object describes the MITRE ATT&CK® or ATLAS™ Mitigation ID and/or name that is associated to an attack.\n\noptional"]
22238    #[serde(rename = "mitigation")]
22239    #[serde(skip_serializing_if = "Option::is_none")]
22240    pub mitigation: Option<Box<Mitigation>>,
22241    #[doc = "MITRE Sub-technique\n\nThe Sub-technique object describes the MITRE ATT&CK® or ATLAS™ Sub-technique ID and/or name associated to an attack.\n\nrecommended"]
22242    #[serde(rename = "sub_technique")]
22243    #[serde(skip_serializing_if = "Option::is_none")]
22244    pub sub_technique: Option<Box<SubTechnique>>,
22245    #[doc = "MITRE Tactic\n\nThe Tactic object describes the MITRE ATT&CK® or ATLAS™ Tactic ID and/or name that is associated to an attack.\n\nrecommended"]
22246    #[serde(rename = "tactic")]
22247    #[serde(skip_serializing_if = "Option::is_none")]
22248    pub tactic: Option<Box<Tactic>>,
22249    #[doc = "Tactics\n\nThe Tactic object describes the tactic ID and/or tactic name that are associated with the attack technique, as defined by <a target='_blank' href='https://attack.mitre.org/wiki/ATT&CK_Matrix'>ATT&CK® Matrix</a>.\n\noptional"]
22250    #[serde(rename = "tactics")]
22251    #[serde(skip_serializing_if = "Option::is_none")]
22252    pub tactics: Option<Vec<Tactic>>,
22253    #[doc = "MITRE Technique\n\nThe Technique object describes the MITRE ATT&CK® or ATLAS™ Technique ID and/or name associated to an attack.\n\nrecommended"]
22254    #[serde(rename = "technique")]
22255    #[serde(skip_serializing_if = "Option::is_none")]
22256    pub technique: Option<Box<Technique>>,
22257    #[doc = "Version\n\nThe ATT&CK® or ATLAS™ Matrix version.\n\nrecommended"]
22258    #[serde(rename = "version")]
22259    #[serde(skip_serializing_if = "Option::is_none")]
22260    pub version: Option<String>,
22261}
22262#[doc = "Authentication Factor\n\nAn Authentication Factor object describes a category of methods used for identity verification in an authentication attempt.\n\n[] Category:  | Name: auth_factor"]
22263#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22264#[serde(default)]
22265#[non_exhaustive]
22266pub struct AuthFactor {
22267    #[doc = "Device\n\nDevice used to complete an authentication request.\n\nrecommended"]
22268    #[serde(rename = "device")]
22269    #[serde(skip_serializing_if = "Option::is_none")]
22270    pub device: Option<Box<Device>>,
22271    #[doc = "Email Address\n\nThe email address used in an email-based authentication factor.\n\noptional"]
22272    #[serde(rename = "email_addr")]
22273    #[serde(skip_serializing_if = "Option::is_none")]
22274    pub email_addr: Option<String>,
22275    #[doc = "Factor Type\n\nThe type of authentication factor used in an authentication attempt.\n\nrecommended"]
22276    #[serde(rename = "factor_type")]
22277    #[serde(skip_serializing_if = "Option::is_none")]
22278    pub factor_type: Option<String>,
22279    #[doc = "Factor Type ID\n\nThe normalized identifier for the authentication factor.\n\nrequired"]
22280    #[serde(rename = "factor_type_id")]
22281    #[serde(skip_serializing_if = "Option::is_none")]
22282    pub factor_type_id: Option<i64>,
22283    #[doc = "HMAC-based One-time Password (HOTP)\n\nWhether the authentication factor is an HMAC-based One-time Password (HOTP).\n\nrecommended"]
22284    #[serde(rename = "is_hotp")]
22285    #[serde(skip_serializing_if = "Option::is_none")]
22286    pub is_hotp: Option<bool>,
22287    #[doc = "Time-based One-time Password (TOTP)\n\nWhether the authentication factor is a Time-based One-time Password (TOTP).\n\nrecommended"]
22288    #[serde(rename = "is_totp")]
22289    #[serde(skip_serializing_if = "Option::is_none")]
22290    pub is_totp: Option<bool>,
22291    #[doc = "Phone Number\n\nThe phone number used for a telephony-based authentication request.\n\noptional"]
22292    #[serde(rename = "phone_number")]
22293    #[serde(skip_serializing_if = "Option::is_none")]
22294    pub phone_number: Option<String>,
22295    #[doc = "Provider\n\nThe name of provider for an authentication factor.\n\nrecommended"]
22296    #[serde(rename = "provider")]
22297    #[serde(skip_serializing_if = "Option::is_none")]
22298    pub provider: Option<String>,
22299    #[doc = "Security Questions\n\nThe question(s) provided to user for a question-based authentication factor.\n\noptional"]
22300    #[serde(rename = "security_questions")]
22301    #[serde(skip_serializing_if = "Option::is_none")]
22302    pub security_questions: Option<Vec<String>>,
22303}
22304#[doc = "Authentication Token\n\nThe Authentication Token object represents standardized authentication tokens, tickets, or assertions that conform to established authentication protocols such as Kerberos, OIDC, and SAML. These tokens are issued by authentication servers and identity providers and carry protocol-specific metadata, lifecycle information, and security attributes defined by their respective specifications.\n\n[] Category:  | Name: authentication_token"]
22305#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22306#[serde(default)]
22307#[non_exhaustive]
22308pub struct AuthenticationToken {
22309    #[doc = "Created Time\n\nThe time that the authentication token was created.\n\nrecommended"]
22310    #[serde(rename = "created_time")]
22311    #[serde(skip_serializing_if = "Option::is_none")]
22312    pub created_time: Option<i64>,
22313    #[doc = "Created Time\n\nThe time that the authentication token was created.\n\noptional"]
22314    #[serde(rename = "created_time_dt")]
22315    #[serde(skip_serializing_if = "Option::is_none")]
22316    pub created_time_dt: Option<String>,
22317    #[doc = "Encryption Details\n\nThe encryption details of the authentication token.\n\nrecommended"]
22318    #[serde(rename = "encryption_details")]
22319    #[serde(skip_serializing_if = "Option::is_none")]
22320    pub encryption_details: Option<Box<EncryptionDetails>>,
22321    #[doc = "Expiration Time\n\nThe expiration time of the authentication token.\n\noptional"]
22322    #[serde(rename = "expiration_time")]
22323    #[serde(skip_serializing_if = "Option::is_none")]
22324    pub expiration_time: Option<i64>,
22325    #[doc = "Expiration Time\n\nThe expiration time of the authentication token.\n\noptional"]
22326    #[serde(rename = "expiration_time_dt")]
22327    #[serde(skip_serializing_if = "Option::is_none")]
22328    pub expiration_time_dt: Option<String>,
22329    #[doc = "Renewable\n\nIndicates whether the authentication token is renewable.\n\noptional"]
22330    #[serde(rename = "is_renewable")]
22331    #[serde(skip_serializing_if = "Option::is_none")]
22332    pub is_renewable: Option<bool>,
22333    #[doc = "Kerberos Flags\n\nA bitmask, either in hexadecimal or decimal form, which encodes various attributes or permissions associated with a Kerberos ticket. These flags delineate specific characteristics of the ticket, such as its renewability or forwardability.\n\nrecommended"]
22334    #[serde(rename = "kerberos_flags")]
22335    #[serde(skip_serializing_if = "Option::is_none")]
22336    pub kerberos_flags: Option<String>,
22337    #[doc = "Type\n\nThe type of the authentication token.\n\nrecommended"]
22338    #[serde(rename = "type")]
22339    #[serde(skip_serializing_if = "Option::is_none")]
22340    pub r#type: Option<String>,
22341    #[doc = "Type ID\n\nThe normalized authentication token type identifier.\n\nrecommended"]
22342    #[serde(rename = "type_id")]
22343    #[serde(skip_serializing_if = "Option::is_none")]
22344    pub type_id: Option<i64>,
22345}
22346#[doc = "Authorization Result\n\nThe Authorization Result object provides details about the authorization outcome and associated policies related to activity.\n\n[] Category:  | Name: authorization"]
22347#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22348#[serde(default)]
22349#[non_exhaustive]
22350pub struct Authorization {
22351    #[doc = "Authorization Decision/Outcome\n\nAuthorization Result/outcome, e.g. allowed, denied.\n\nrecommended"]
22352    #[serde(rename = "decision")]
22353    #[serde(skip_serializing_if = "Option::is_none")]
22354    pub decision: Option<String>,
22355    #[doc = "Policy\n\nDetails about the Identity/Access management policies that are applicable.\n\noptional"]
22356    #[serde(rename = "policy")]
22357    #[serde(skip_serializing_if = "Option::is_none")]
22358    pub policy: Option<Box<Policy>>,
22359}
22360#[doc = "Autonomous System\n\nAn autonomous system (AS) is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the internet.\n\n[] Category:  | Name: autonomous_system\n\n**Constraints:**\n* at_least_one: `[number`,`name]`\n"]
22361#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22362#[serde(default)]
22363#[non_exhaustive]
22364pub struct AutonomousSystem {
22365    #[doc = "Name\n\nOrganization name for the Autonomous System.\n\nrecommended"]
22366    #[serde(rename = "name")]
22367    #[serde(skip_serializing_if = "Option::is_none")]
22368    pub name: Option<String>,
22369    #[doc = "Number\n\nUnique number that the AS is identified by.\n\nrecommended"]
22370    #[serde(rename = "number")]
22371    #[serde(skip_serializing_if = "Option::is_none")]
22372    pub number: Option<i64>,
22373}
22374#[doc = "Baseline\n\nDescribes the baseline or expected behavior of a system, service, or component based on historical observations and measurements. It establishes reference points for comparison to detect anomalies, trends, and deviations from typical patterns.\n\n[] Category:  | Name: baseline"]
22375#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22376#[serde(default)]
22377#[non_exhaustive]
22378pub struct Baseline {
22379    #[doc = "Observation Parameter\n\nThe specific parameter or property being monitored. Examples include: CPU usage percentage, API response time in milliseconds, HTTP error rate, memory utilization, network latency, transaction volume, etc.\n\nrequired"]
22380    #[serde(rename = "observation_parameter")]
22381    #[serde(skip_serializing_if = "Option::is_none")]
22382    pub observation_parameter: Option<String>,
22383    #[doc = "Observation Type\n\nThe type of analysis being performed to establish baseline behavior. Common types include: Frequency Analysis, Time Pattern Analysis, Volume Analysis, Sequence Analysis, Distribution Analysis, etc.\n\nrecommended"]
22384    #[serde(rename = "observation_type")]
22385    #[serde(skip_serializing_if = "Option::is_none")]
22386    pub observation_type: Option<String>,
22387    #[doc = "Observations\n\nCollection of actual measured values, data points and observations recorded for this baseline.\n\nrequired"]
22388    #[serde(rename = "observations")]
22389    #[serde(skip_serializing_if = "Option::is_none")]
22390    pub observations: Option<Vec<Observation>>,
22391    #[doc = "Observed Pattern\n\nThe specific pattern identified within the observation type. For Frequency Analysis, this could be 'FREQUENT', 'INFREQUENT', 'RARE', or 'UNSEEN'. For Time Pattern Analysis, this could be 'BUSINESS_HOURS', 'OFF_HOURS', or 'UNUSUAL_TIME'. For Volume Analysis, this could be 'NORMAL_VOLUME', 'HIGH_VOLUME', or 'SURGE'. The pattern values are specific to each observation type and indicate the baseline behavior.\n\nrecommended"]
22392    #[serde(rename = "observed_pattern")]
22393    #[serde(skip_serializing_if = "Option::is_none")]
22394    pub observed_pattern: Option<String>,
22395}
22396#[doc = "Campaign\n\nCampaign represent organized efforts by threat actors to achieve malicious objectives over a period, often characterized by shared tactics, techniques, and procedures (TTPs).\n\n[] Category:  | Name: campaign"]
22397#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22398#[serde(default)]
22399#[non_exhaustive]
22400pub struct Campaign {
22401    #[doc = "Name\n\nThe name of a specific campaign associated with a cyber threat.\n\nrequired"]
22402    #[serde(rename = "name")]
22403    #[serde(skip_serializing_if = "Option::is_none")]
22404    pub name: Option<String>,
22405}
22406#[doc = "Digital Certificate\n\nThe Digital Certificate, also known as a Public Key Certificate, object contains information about the ownership and usage of a public key. It serves as a means to establish trust in the authenticity and integrity of the public key and the associated entity.\n\n[] Category:  | Name: certificate"]
22407#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22408#[serde(default)]
22409#[non_exhaustive]
22410pub struct Certificate {
22411    #[doc = "Created Time\n\nThe time when the certificate was created.\n\nrecommended"]
22412    #[serde(rename = "created_time")]
22413    #[serde(skip_serializing_if = "Option::is_none")]
22414    pub created_time: Option<i64>,
22415    #[doc = "Created Time\n\nThe time when the certificate was created.\n\noptional"]
22416    #[serde(rename = "created_time_dt")]
22417    #[serde(skip_serializing_if = "Option::is_none")]
22418    pub created_time_dt: Option<String>,
22419    #[doc = "Expiration Time\n\nThe expiration time of the certificate.\n\nrecommended"]
22420    #[serde(rename = "expiration_time")]
22421    #[serde(skip_serializing_if = "Option::is_none")]
22422    pub expiration_time: Option<i64>,
22423    #[doc = "Expiration Time\n\nThe expiration time of the certificate.\n\noptional"]
22424    #[serde(rename = "expiration_time_dt")]
22425    #[serde(skip_serializing_if = "Option::is_none")]
22426    pub expiration_time_dt: Option<String>,
22427    #[doc = "Fingerprints\n\nThe fingerprint list of the certificate.\n\nrecommended"]
22428    #[serde(rename = "fingerprints")]
22429    #[serde(skip_serializing_if = "Option::is_none")]
22430    pub fingerprints: Option<Vec<Fingerprint>>,
22431    #[doc = "Certificate Self-Signed\n\nDenotes whether a digital certificate is self-signed or signed by a known certificate authority (CA).\n\nrecommended"]
22432    #[serde(rename = "is_self_signed")]
22433    #[serde(skip_serializing_if = "Option::is_none")]
22434    pub is_self_signed: Option<bool>,
22435    #[doc = "Issuer Distinguished Name\n\nThe certificate issuer distinguished name.\n\nrequired"]
22436    #[serde(rename = "issuer")]
22437    #[serde(skip_serializing_if = "Option::is_none")]
22438    pub issuer: Option<String>,
22439    #[doc = "Subject Alternative Names\n\nThe list of subject alternative names that are secured by a specific certificate.\n\noptional"]
22440    #[serde(rename = "sans")]
22441    #[serde(skip_serializing_if = "Option::is_none")]
22442    pub sans: Option<Vec<San>>,
22443    #[doc = "Certificate Serial Number\n\nThe serial number of the certificate used to create the digital signature.\n\nrequired"]
22444    #[serde(rename = "serial_number")]
22445    #[serde(skip_serializing_if = "Option::is_none")]
22446    pub serial_number: Option<String>,
22447    #[doc = "Subject Distinguished Name\n\nThe certificate subject distinguished name.\n\nrecommended"]
22448    #[serde(rename = "subject")]
22449    #[serde(skip_serializing_if = "Option::is_none")]
22450    pub subject: Option<String>,
22451    #[doc = "Unique ID\n\nThe unique identifier of the certificate.\n\noptional"]
22452    #[serde(rename = "uid")]
22453    #[serde(skip_serializing_if = "Option::is_none")]
22454    pub uid: Option<String>,
22455    #[doc = "Version\n\nThe certificate version.\n\nrecommended"]
22456    #[serde(rename = "version")]
22457    #[serde(skip_serializing_if = "Option::is_none")]
22458    pub version: Option<String>,
22459}
22460#[doc = "Check\n\nThe check object defines a specific, testable compliance verification point that evaluates a target device against a standard, framework, or custom requirement. While checks are typically associated with formal standards (like CIS, NIST, or ISO), they can also represent custom or organizational requirements. When mapped to controls, checks can evaluate specific control_parameters to determine compliance status, but neither the control mapping nor control_parameters are required for a valid check.\n\n[] Category:  | Name: check"]
22461#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22462#[serde(default)]
22463#[non_exhaustive]
22464pub struct Check {
22465    #[doc = "Description\n\nThe detailed description of the compliance check, explaining the security requirement, vulnerability, or configuration being assessed. For example, CIS: <code>The cramfs filesystem type is a compressed read-only Linux filesystem. Removing support for unneeded filesystem types reduces the local attack surface.</code> or DISA STIG: <code>Unauthorized access to the information system by foreign entities may result in loss or compromise of data.</code>\n\noptional"]
22466    #[serde(rename = "desc")]
22467    #[serde(skip_serializing_if = "Option::is_none")]
22468    pub desc: Option<String>,
22469    #[doc = "Name\n\nThe name or title of the compliance check. For example, CIS: <code>Ensure mounting of cramfs filesystems is disabled</code> or DISA STIG: <code>The Ubuntu operating system must implement DoD-approved encryption to protect the confidentiality of remote access sessions</code>.\n\nrecommended"]
22470    #[serde(rename = "name")]
22471    #[serde(skip_serializing_if = "Option::is_none")]
22472    pub name: Option<String>,
22473    #[doc = "Severity\n\nThe severity level as defined in the source document. For example CIS Benchmarks, valid values are: <code>Level 1</code> (security-forward, essential settings), <code>Level 2</code> (security-focused environment, more restrictive), or <code>Scored/Not Scored</code> (whether compliance can be automatically checked). For DISA STIG, valid values are: <code>CAT I</code> (maps to severity_id 5/Critical), <code>CAT II</code> (maps to severity_id 4/High), or <code>CAT III</code> (maps to severity_id 3/Medium).\n\noptional"]
22474    #[serde(rename = "severity")]
22475    #[serde(skip_serializing_if = "Option::is_none")]
22476    pub severity: Option<String>,
22477    #[doc = "Severity ID\n\nThe normalized severity identifier that maps severity levels to standard severity levels. For example CIS Benchmark: <code>Level 2</code> maps to <code>4</code> (High), <code>Level 1</code> maps to <code>3</code> (Medium). For DISA STIG: <code>CAT I</code> maps to <code>5</code> (Critical), <code>CAT II</code> maps to <code>4</code> (High), and <code>CAT III</code> maps to <code>3</code> (Medium).\n\noptional"]
22478    #[serde(rename = "severity_id")]
22479    #[serde(skip_serializing_if = "Option::is_none")]
22480    pub severity_id: Option<i64>,
22481    #[doc = "Compliance Standards: List\n\nThe regulatory or industry standard this check is associated with. E.g., <code>PCI DSS 3.2.1</code>, <code>HIPAA Security Rule</code>, <code>NIST SP 800-53 Rev. 5</code>, or <code>ISO/IEC 27001:2013</code>.\n\nrecommended"]
22482    #[serde(rename = "standards")]
22483    #[serde(skip_serializing_if = "Option::is_none")]
22484    pub standards: Option<Vec<String>>,
22485    #[doc = "Status\n\nThe resultant status of the compliance check normalized to the caption of the <code>status_id</code> value. For example, CIS Benchmark: <code>Pass</code> when all requirements are met, <code>Fail</code> when requirements are not met, or DISA STIG: <code>NotAFinding</code> (maps to status_id 1/Pass), <code>Open</code> (maps to status_id 3/Fail).\n\nrecommended"]
22486    #[serde(rename = "status")]
22487    #[serde(skip_serializing_if = "Option::is_none")]
22488    pub status: Option<String>,
22489    #[doc = "Status ID\n\nThe normalized status identifier of the compliance check.\n\nrecommended"]
22490    #[serde(rename = "status_id")]
22491    #[serde(skip_serializing_if = "Option::is_none")]
22492    pub status_id: Option<i64>,
22493    #[doc = "Unique ID\n\nThe unique identifier of the compliance check within its standard or framework. For example, CIS Benchmark identifier <code>1.1.1.1</code>, DISA STIG identifier <code>V-230234</code>, or NIST control identifier <code>AC-17(2)</code>.\n\nrecommended"]
22494    #[serde(rename = "uid")]
22495    #[serde(skip_serializing_if = "Option::is_none")]
22496    pub uid: Option<String>,
22497    #[doc = "Version\n\nThe check version. For example, CIS Benchmark: <code>1.1.0</code> for Amazon Linux 2 or DISA STIG: <code>V2R1</code> for Windows 10.\n\noptional"]
22498    #[serde(rename = "version")]
22499    #[serde(skip_serializing_if = "Option::is_none")]
22500    pub version: Option<String>,
22501}
22502#[doc = "CIS Benchmark\n\nThe CIS Benchmark object describes best practices for securely configuring IT systems, software, networks, and cloud infrastructure as defined by the <a target='_blank' href='https://www.cisecurity.org/cis-benchmarks/'>Center for Internet Security</a>. See also <a target='_blank' href='https://www.cisecurity.org/insights/blog/getting-to-know-the-cis-benchmarks'>Getting to Know the CIS Benchmarks</a>.\n\n[] Category:  | Name: cis_benchmark"]
22503#[deprecated(note = "Use the Compliance object with Checks object instead. (Since 1.5.0)")]
22504#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22505#[serde(default)]
22506#[non_exhaustive]
22507pub struct CisBenchmark {
22508    #[doc = "CIS Controls\n\nThe CIS Critical Security Controls is a prioritized set of actions to protect your organization and data from cyber-attack vectors.\n\nrecommended"]
22509    #[serde(rename = "cis_controls")]
22510    #[serde(skip_serializing_if = "Option::is_none")]
22511    pub cis_controls: Option<Vec<CisControl>>,
22512    #[doc = "Description\n\nThe CIS Benchmark description. For example: <i>The cramfs filesystem type is a compressed read-only Linux filesystem embedded in small footprint systems. A cramfs image can be used without having to first decompress the image.</i>\n\noptional"]
22513    #[serde(rename = "desc")]
22514    #[serde(skip_serializing_if = "Option::is_none")]
22515    pub desc: Option<String>,
22516    #[doc = "Name\n\nThe CIS Benchmark name. For example: <i>Ensure mounting of cramfs filesystems is disabled.</i>\n\nrequired"]
22517    #[serde(rename = "name")]
22518    #[serde(skip_serializing_if = "Option::is_none")]
22519    pub name: Option<String>,
22520}
22521#[doc = "CIS Benchmark Result\n\nThe CIS Benchmark Result object contains information as defined by the Center for Internet Security (<a target='_blank' href='https://www.cisecurity.org/cis-benchmarks/'>CIS</a>) benchmark result. CIS Benchmarks are a collection of best practices for securely configuring IT systems, software, networks, and cloud infrastructure.\n\n[] Category:  | Name: cis_benchmark_result"]
22522#[deprecated(note = "Use the Compliance object with Checks object instead. (Since 1.5.0)")]
22523#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22524#[serde(default)]
22525#[non_exhaustive]
22526pub struct CisBenchmarkResult {
22527    #[doc = "Description\n\nThe CIS benchmark description.\n\noptional"]
22528    #[serde(rename = "desc")]
22529    #[serde(skip_serializing_if = "Option::is_none")]
22530    pub desc: Option<String>,
22531    #[doc = "Name\n\nThe CIS benchmark name.\n\nrequired"]
22532    #[serde(rename = "name")]
22533    #[serde(skip_serializing_if = "Option::is_none")]
22534    pub name: Option<String>,
22535    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
22536    #[serde(rename = "remediation")]
22537    #[serde(skip_serializing_if = "Option::is_none")]
22538    pub remediation: Option<Box<Remediation>>,
22539    #[doc = "Rule\n\nThe CIS benchmark rule.\n\noptional"]
22540    #[serde(rename = "rule")]
22541    #[serde(skip_serializing_if = "Option::is_none")]
22542    pub rule: Option<Box<Rule>>,
22543}
22544#[doc = "CIS Control\n\nThe CIS Control (aka Critical Security Control) object describes a prioritized set of actions to protect your organization and data from cyber-attack vectors. The <a target='_blank' href='https://www.cisecurity.org/controls'>CIS Controls</a> are defined by the Center for Internet Security.\n\n[] Category:  | Name: cis_control"]
22545#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22546#[serde(default)]
22547#[non_exhaustive]
22548pub struct CisControl {
22549    #[doc = "Description\n\nThe CIS Control description. For example: <i>Uninstall or disable unnecessary services on enterprise assets and software, such as an unused file sharing service, web application module, or service function.</i>\n\noptional"]
22550    #[serde(rename = "desc")]
22551    #[serde(skip_serializing_if = "Option::is_none")]
22552    pub desc: Option<String>,
22553    #[doc = "Name\n\nThe CIS Control name. For example: <i>4.8 Uninstall or Disable Unnecessary Services on Enterprise Assets and Software.</i>\n\nrequired"]
22554    #[serde(rename = "name")]
22555    #[serde(skip_serializing_if = "Option::is_none")]
22556    pub name: Option<String>,
22557    #[doc = "Version\n\nThe CIS Control version. For example: <i>v8</i>.\n\nrecommended"]
22558    #[serde(rename = "version")]
22559    #[serde(skip_serializing_if = "Option::is_none")]
22560    pub version: Option<String>,
22561}
22562#[doc = "CIS CSC\n\nThe CIS Critical Security Control (CSC) contains information as defined by the Center for Internet Security Critical Security Control <a target='_blank' href='https://www.cisecurity.org/controls'>(CIS CSC)</a>. Prioritized set of actions to protect your organization and data from cyber-attack vectors.\n\n[] Category:  | Name: cis_csc"]
22563#[deprecated(note = "Use the cis_control object instead. (Since 1.5.0)")]
22564#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22565#[serde(default)]
22566#[non_exhaustive]
22567pub struct CisCsc {
22568    #[doc = "Security Control\n\nA Control is prescriptive, prioritized, and simplified set of best practices that one can use to strengthen their cybersecurity posture. e.g. AWS SecurityHub Controls, CIS Controls.\n\nrequired"]
22569    #[serde(rename = "control")]
22570    #[serde(skip_serializing_if = "Option::is_none")]
22571    pub control: Option<String>,
22572    #[doc = "Version\n\nThe CIS critical security control version.\n\nrecommended"]
22573    #[serde(rename = "version")]
22574    #[serde(skip_serializing_if = "Option::is_none")]
22575    pub version: Option<String>,
22576}
22577#[doc = "Classifier Details\n\nThe Classifier Details object describes details about the classifier used for data classification.\n\n[] Category:  | Name: classifier_details"]
22578#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22579#[serde(default)]
22580#[non_exhaustive]
22581pub struct ClassifierDetails {
22582    #[doc = "Name\n\nThe name of the classifier.\n\nrecommended"]
22583    #[serde(rename = "name")]
22584    #[serde(skip_serializing_if = "Option::is_none")]
22585    pub name: Option<String>,
22586    #[doc = "Type\n\nThe type of the classifier.\n\nrequired"]
22587    #[serde(rename = "type")]
22588    #[serde(skip_serializing_if = "Option::is_none")]
22589    pub r#type: Option<String>,
22590    #[doc = "Unique ID\n\nThe unique identifier of the classifier.\n\nrecommended"]
22591    #[serde(rename = "uid")]
22592    #[serde(skip_serializing_if = "Option::is_none")]
22593    pub uid: Option<String>,
22594}
22595#[doc = "Cloud\n\nThe Cloud object describes the cloud computing environment where an event or finding originated. It provides comprehensive context about the cloud infrastructure, including the cloud service provider, account or subscription details, organizational structure, geographic regions, availability zones, and logical partitions.\n\n[] Category:  | Name: cloud"]
22596#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22597#[serde(default)]
22598#[non_exhaustive]
22599pub struct Cloud {
22600    #[doc = "Account\n\nThe Account object containing details about the cloud account, subscription, or billing unit where the event or finding was created. This object includes properties such as the account name, unique identifier, type, labels, and tags.<br/><br/><strong>Examples:</strong><ul><li><strong>AWS:</strong> Account object with <code>name</code>, <code>uid</code> (Account ID), <code>type</code>, and other account properties</li><li><strong>Azure:</strong> Subscription object with <code>name</code>, <code>uid</code> (Subscription ID), <code>type</code>, and subscription metadata</li><li><strong>GCP:</strong> Project object with <code>name</code>, <code>uid</code> (Project ID), <code>type</code>, and project attributes</li><li><strong>Oracle Cloud:</strong> Compartment object with <code>name</code>, <code>uid</code> (Tenancy OCID), <code>type</code>, and compartment details</li></ul>\n\noptional"]
22601    #[serde(rename = "account")]
22602    #[serde(skip_serializing_if = "Option::is_none")]
22603    pub account: Option<Box<Account>>,
22604    #[doc = "Cloud Partition\n\nThe logical grouping or isolated segment within a cloud provider's infrastructure where the event or finding was created, often used for compliance, governance, or regional separation.<br/><br/><strong>Examples:</strong><ul><li><strong>AWS:</strong> Partition where the event occurred (<code>aws</code>, <code>aws-cn</code>, <code>aws-us-gov</code>)</li><li><strong>Azure:</strong> Cloud environment where the event occurred (<code>AzureCloud</code>, <code>AzureUSGovernment</code>, <code>AzureChinaCloud</code>)</li></ul>\n\noptional"]
22605    #[serde(rename = "cloud_partition")]
22606    #[serde(skip_serializing_if = "Option::is_none")]
22607    pub cloud_partition: Option<String>,
22608    #[doc = "Organization\n\nThe Organization object containing details about the organizational unit or management structure that governs the account, subscription, or project where the event or finding was created. This object includes properties such as the organization name, unique identifier, type, and other organizational metadata.<br/><br/><strong>Examples:</strong><ul><li><strong>AWS:</strong> Organization object with <code>name</code>, <code>uid</code> (Organization ID), <code>type</code>, and other organizational properties</li><li><strong>Azure:</strong> Management Group object with <code>name</code>, <code>uid</code> (Management Group ID), <code>type</code>, and management group metadata</li><li><strong>GCP:</strong> Organization object with <code>name</code>, <code>uid</code> (Organization ID), <code>type</code>, and organizational attributes</li><li><strong>Oracle Cloud:</strong> Tenancy object with <code>name</code>, <code>uid</code> (Tenancy OCID), <code>type</code>, and tenancy details</li></ul>\n\noptional"]
22609    #[serde(rename = "org")]
22610    #[serde(skip_serializing_if = "Option::is_none")]
22611    pub org: Option<Box<Organization>>,
22612    #[doc = "Project ID\n\nThe unique identifier of a Cloud project.\n\noptional"]
22613    #[serde(rename = "project_uid")]
22614    #[serde(skip_serializing_if = "Option::is_none")]
22615    pub project_uid: Option<String>,
22616    #[doc = "Provider\n\nThe unique name of the Cloud services provider where the event or finding was created, such as AWS, MS Azure, GCP, etc.\n\nrequired"]
22617    #[serde(rename = "provider")]
22618    #[serde(skip_serializing_if = "Option::is_none")]
22619    pub provider: Option<String>,
22620    #[doc = "Region\n\nThe cloud region where the event or finding was created, as defined by the cloud provider.<br/><br/><strong>Examples:</strong><ul><li><strong>AWS:</strong> Region where the event occurred (<code>us-east-1</code>, <code>eu-west-1</code>)</li><li><strong>Azure:</strong> Region where the event occurred (<code>East US</code>, <code>West Europe</code>)</li><li><strong>GCP:</strong> Region where the event occurred (<code>us-central1</code>, <code>europe-west1</code>)</li><li><strong>Oracle Cloud:</strong> Region where the event occurred (<code>us-ashburn-1</code>, <code>uk-london-1</code>)</li></ul>\n\nrecommended"]
22621    #[serde(rename = "region")]
22622    #[serde(skip_serializing_if = "Option::is_none")]
22623    pub region: Option<String>,
22624    #[doc = "Cloud Availability Zone\n\nThe availability zone in the cloud region where the event or finding was created, as defined by the cloud provider.<br/><br/><strong>Examples:</strong><ul><li><strong>AWS:</strong> Availability zone where the event occurred (<code>us-east-1a</code>, <code>us-east-1b</code>)</li><li><strong>Azure:</strong> Availability zone where the event occurred (<code>1</code>, <code>2</code>, <code>3</code> within a region)</li><li><strong>GCP:</strong> Availability zone where the event occurred (<code>us-central1-a</code>, <code>us-central1-b</code>)</li><li><strong>Oracle Cloud:</strong> Availability zone where the event occurred (<code>AD-1</code>, <code>AD-2</code>, <code>AD-3</code>)</li></ul>\n\noptional"]
22625    #[serde(rename = "zone")]
22626    #[serde(skip_serializing_if = "Option::is_none")]
22627    pub zone: Option<String>,
22628}
22629#[doc = "Compliance\n\nThe Compliance object contains information about Industry and Regulatory Framework standards, controls and requirements or details about custom assessments utilized in a compliance evaluation. Standards define broad security frameworks, controls represent specific security requirements within those frameworks, and checks are the testable verification points used to determine if controls are properly implemented.\n\n[] Category:  | Name: compliance"]
22630#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22631#[serde(default)]
22632#[non_exhaustive]
22633pub struct Compliance {
22634    #[doc = "Assessments\n\nA list of assessments associated with the compliance requirements evaluation.\n\noptional"]
22635    #[serde(rename = "assessments")]
22636    #[serde(skip_serializing_if = "Option::is_none")]
22637    pub assessments: Option<Vec<Assessment>>,
22638    #[doc = "Category\n\nThe category a control framework pertains to, as reported by the source tool, such as <code>Asset Management</code> or <code>Risk Assessment</code>.\n\noptional"]
22639    #[serde(rename = "category")]
22640    #[serde(skip_serializing_if = "Option::is_none")]
22641    pub category: Option<String>,
22642    #[doc = "Compliance Checks\n\nA list of compliance checks associated with specific industry standards or frameworks. Each check represents an individual rule or requirement that has been evaluated against a target device. Checks typically include details such as the check name (e.g., CIS: 'Ensure mounting of cramfs filesystems is disabled' or DISA STIG descriptive titles), unique identifiers (such as CIS identifier '1.1.1.1' or DISA STIG identifier 'V-230234'), descriptions (detailed explanations of security requirements or vulnerability discussions), and version information.\n\noptional"]
22643    #[serde(rename = "checks")]
22644    #[serde(skip_serializing_if = "Option::is_none")]
22645    pub checks: Option<Vec<Check>>,
22646    #[doc = "Compliance Standard References\n\nA list of reference KB articles that provide information to help organizations understand, interpret, and implement compliance standards. They provide guidance, best practices, and examples.\n\noptional"]
22647    #[serde(rename = "compliance_references")]
22648    #[serde(skip_serializing_if = "Option::is_none")]
22649    pub compliance_references: Option<Vec<KbArticle>>,
22650    #[doc = "Compliance Standards: Details\n\nA list of established guidelines or criteria that define specific requirements an organization must follow.\n\noptional"]
22651    #[serde(rename = "compliance_standards")]
22652    #[serde(skip_serializing_if = "Option::is_none")]
22653    pub compliance_standards: Option<Vec<KbArticle>>,
22654    #[doc = "Security Control\n\nA Control is a prescriptive, actionable set of specifications that strengthens device posture. The control specifies required security measures, while the specific implementation values are defined in control_parameters. E.g., CIS AWS Foundations Benchmark 1.2.0 - Control 2.1 - Ensure CloudTrail is enabled in all regions\n\nrecommended"]
22655    #[serde(rename = "control")]
22656    #[serde(skip_serializing_if = "Option::is_none")]
22657    pub control: Option<String>,
22658    #[doc = "Control Parameters\n\nThe list of control parameters evaluated in a Compliance check. E.g., parameters for CloudTrail configuration might include <code>multiRegionTrailEnabled: true</code>, <code>logFileValidationEnabled: true</code>, and <code>requiredRegions: [us-east-1, us-west-2]</code>\n\noptional"]
22659    #[serde(rename = "control_parameters")]
22660    #[serde(skip_serializing_if = "Option::is_none")]
22661    pub control_parameters: Option<Vec<KeyValueObject>>,
22662    #[doc = "Description\n\nThe description or criteria of a control.\n\noptional"]
22663    #[serde(rename = "desc")]
22664    #[serde(skip_serializing_if = "Option::is_none")]
22665    pub desc: Option<String>,
22666    #[doc = "Compliance Requirements\n\nThe specific compliance requirements being evaluated. E.g., <code>PCI DSS Requirement 8.2.3 - Passwords must meet minimum complexity requirements</code> or <code>HIPAA Security Rule 164.312(a)(2)(iv) - Implement encryption and decryption mechanisms</code>\n\noptional"]
22667    #[serde(rename = "requirements")]
22668    #[serde(skip_serializing_if = "Option::is_none")]
22669    pub requirements: Option<Vec<String>>,
22670    #[doc = "Compliance Standards: List\n\nThe regulatory or industry standards being evaluated for compliance.\n\nrecommended"]
22671    #[serde(rename = "standards")]
22672    #[serde(skip_serializing_if = "Option::is_none")]
22673    pub standards: Option<Vec<String>>,
22674    #[doc = "Status\n\nThe resultant status of the compliance check normalized to the caption of the <code>status_id</code> value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
22675    #[serde(rename = "status")]
22676    #[serde(skip_serializing_if = "Option::is_none")]
22677    pub status: Option<String>,
22678    #[doc = "Status Code\n\nThe resultant status code of the compliance check.\n\noptional"]
22679    #[serde(rename = "status_code")]
22680    #[serde(skip_serializing_if = "Option::is_none")]
22681    pub status_code: Option<String>,
22682    #[doc = "Status Detail\n\nThe contextual description of the <code>status, status_code</code> values.\n\noptional"]
22683    #[serde(rename = "status_detail")]
22684    #[serde(skip_serializing_if = "Option::is_none")]
22685    pub status_detail: Option<String>,
22686    #[doc = "Status Details\n\nA list of contextual descriptions of the <code>status, status_code</code> values.\n\noptional"]
22687    #[serde(rename = "status_details")]
22688    #[serde(skip_serializing_if = "Option::is_none")]
22689    pub status_details: Option<Vec<String>>,
22690    #[doc = "Status ID\n\nThe normalized status identifier of the compliance check.\n\nrecommended"]
22691    #[serde(rename = "status_id")]
22692    #[serde(skip_serializing_if = "Option::is_none")]
22693    pub status_id: Option<i64>,
22694}
22695#[doc = "Container\n\nThe Container object describes an instance of a specific container. A container is a prepackaged, portable system image that runs isolated on an existing system using a container runtime like containerd.\n\n[] Category:  | Name: container\n\n**Constraints:**\n* at_least_one: `[uid`,`name]`\n"]
22696#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22697#[serde(default)]
22698#[non_exhaustive]
22699pub struct Container {
22700    #[doc = "Hash\n\nCommit hash of image created for docker or the SHA256 hash of the container. For example: <code>13550340a8681c84c861aac2e5b440161c2b33a3e4f302ac680ca5b686de48de</code>.\n\nrecommended"]
22701    #[serde(rename = "hash")]
22702    #[serde(skip_serializing_if = "Option::is_none")]
22703    pub hash: Option<Box<Fingerprint>>,
22704    #[doc = "Image\n\nThe container image used as a template to run the container.\n\nrecommended"]
22705    #[serde(rename = "image")]
22706    #[serde(skip_serializing_if = "Option::is_none")]
22707    pub image: Option<Box<Image>>,
22708    #[doc = "Labels\n\nThe list of labels associated to the container.\n\noptional"]
22709    #[serde(rename = "labels")]
22710    #[serde(skip_serializing_if = "Option::is_none")]
22711    pub labels: Option<Vec<String>>,
22712    #[doc = "Name\n\nThe container name.\n\nrecommended"]
22713    #[serde(rename = "name")]
22714    #[serde(skip_serializing_if = "Option::is_none")]
22715    pub name: Option<String>,
22716    #[doc = "Network Driver\n\nThe network driver used by the container. For example, bridge, overlay, host, none, etc.\n\noptional"]
22717    #[serde(rename = "network_driver")]
22718    #[serde(skip_serializing_if = "Option::is_none")]
22719    pub network_driver: Option<String>,
22720    #[doc = "Orchestrator\n\nThe orchestrator managing the container, such as ECS, EKS, K8s, or OpenShift.\n\noptional"]
22721    #[serde(rename = "orchestrator")]
22722    #[serde(skip_serializing_if = "Option::is_none")]
22723    pub orchestrator: Option<String>,
22724    #[doc = "Pod UUID\n\nThe unique identifier of the pod (or equivalent) that the container is executing on.\n\noptional"]
22725    #[serde(rename = "pod_uuid")]
22726    #[serde(skip_serializing_if = "Option::is_none")]
22727    pub pod_uuid: Option<String>,
22728    #[doc = "Runtime\n\nThe backend running the container, such as containerd or cri-o.\n\noptional"]
22729    #[serde(rename = "runtime")]
22730    #[serde(skip_serializing_if = "Option::is_none")]
22731    pub runtime: Option<String>,
22732    #[doc = "Size\n\nThe size of the container image.\n\nrecommended"]
22733    #[serde(rename = "size")]
22734    #[serde(skip_serializing_if = "Option::is_none")]
22735    pub size: Option<i64>,
22736    #[doc = "Image Tag\n\nThe tag used by the container. It can indicate version, format, OS.\n\noptional"]
22737    #[serde(rename = "tag")]
22738    #[serde(skip_serializing_if = "Option::is_none")]
22739    pub tag: Option<String>,
22740    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the container.\n\noptional"]
22741    #[serde(rename = "tags")]
22742    #[serde(skip_serializing_if = "Option::is_none")]
22743    pub tags: Option<Vec<KeyValueObject>>,
22744    #[doc = "Unique ID\n\nThe full container unique identifier for this instantiation of the container. For example: <code>ac2ea168264a08f9aaca0dfc82ff3551418dfd22d02b713142a6843caa2f61bf</code>.\n\nrecommended"]
22745    #[serde(rename = "uid")]
22746    #[serde(skip_serializing_if = "Option::is_none")]
22747    pub uid: Option<String>,
22748}
22749#[doc = "CVE\n\nThe Common Vulnerabilities and Exposures (CVE) object represents publicly disclosed cybersecurity vulnerabilities defined in CVE Program catalog (<a target='_blank' href='https://cve.mitre.org/'>CVE</a>). There is one CVE Record for each vulnerability in the catalog.\n\n[] Category:  | Name: cve"]
22750#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22751#[serde(default)]
22752#[non_exhaustive]
22753pub struct Cve {
22754    #[doc = "Created Time\n\nThe Record Creation Date identifies when the CVE ID was issued to a CVE Numbering Authority (CNA) or the CVE Record was published on the CVE List. Note that the Record Creation Date does not necessarily indicate when this vulnerability was discovered, shared with the affected vendor, publicly disclosed, or updated in CVE.\n\nrecommended"]
22755    #[serde(rename = "created_time")]
22756    #[serde(skip_serializing_if = "Option::is_none")]
22757    pub created_time: Option<i64>,
22758    #[doc = "Created Time\n\nThe Record Creation Date identifies when the CVE ID was issued to a CVE Numbering Authority (CNA) or the CVE Record was published on the CVE List. Note that the Record Creation Date does not necessarily indicate when this vulnerability was discovered, shared with the affected vendor, publicly disclosed, or updated in CVE.\n\noptional"]
22759    #[serde(rename = "created_time_dt")]
22760    #[serde(skip_serializing_if = "Option::is_none")]
22761    pub created_time_dt: Option<String>,
22762    #[doc = "CVSS Score\n\nThe CVSS object details Common Vulnerability Scoring System (<a target='_blank' href='https://www.first.org/cvss/'>CVSS</a>) scores from the advisory that are related to the vulnerability.\n\nrecommended"]
22763    #[serde(rename = "cvss")]
22764    #[serde(skip_serializing_if = "Option::is_none")]
22765    pub cvss: Option<Vec<Cvss>>,
22766    #[doc = "CWE\n\nThe CWE object represents a weakness in a software system that can be exploited by a threat actor to perform an attack. The CWE object is based on the <a target='_blank' href='https://cwe.mitre.org/'>Common Weakness Enumeration (CWE)</a> catalog.\n\noptional"]
22767    #[serde(rename = "cwe")]
22768    #[serde(skip_serializing_if = "Option::is_none")]
22769    pub cwe: Option<Box<Cwe>>,
22770    #[doc = "CWE UID\n\nThe <a target='_blank' href='https://cwe.mitre.org/'>Common Weakness Enumeration (CWE)</a> unique identifier. For example: <code>CWE-787</code>.\n\noptional"]
22771    #[serde(rename = "cwe_uid")]
22772    #[serde(skip_serializing_if = "Option::is_none")]
22773    pub cwe_uid: Option<String>,
22774    #[doc = "CWE URL\n\nCommon Weakness Enumeration (CWE) definition URL. For example: <code>https://cwe.mitre.org/data/definitions/787.html</code>.\n\noptional"]
22775    #[serde(rename = "cwe_url")]
22776    #[serde(skip_serializing_if = "Option::is_none")]
22777    pub cwe_url: Option<String>,
22778    #[doc = "Description\n\nA brief description of the CVE Record.\n\noptional"]
22779    #[serde(rename = "desc")]
22780    #[serde(skip_serializing_if = "Option::is_none")]
22781    pub desc: Option<String>,
22782    #[doc = "EPSS\n\nThe Exploit Prediction Scoring System (EPSS) object describes the estimated probability a vulnerability will be exploited. EPSS is a community-driven effort to combine descriptive information about vulnerabilities (CVEs) with evidence of actual exploitation in-the-wild. (<a target='_blank' href='https://www.first.org/epss/'>EPSS</a>).\n\noptional"]
22783    #[serde(rename = "epss")]
22784    #[serde(skip_serializing_if = "Option::is_none")]
22785    pub epss: Option<Box<Epss>>,
22786    #[doc = "Modified Time\n\nThe Record Modified Date identifies when the CVE record was last updated.\n\noptional"]
22787    #[serde(rename = "modified_time")]
22788    #[serde(skip_serializing_if = "Option::is_none")]
22789    pub modified_time: Option<i64>,
22790    #[doc = "Modified Time\n\nThe Record Modified Date identifies when the CVE record was last updated.\n\noptional"]
22791    #[serde(rename = "modified_time_dt")]
22792    #[serde(skip_serializing_if = "Option::is_none")]
22793    pub modified_time_dt: Option<String>,
22794    #[doc = "Product\n\nThe product where the vulnerability was discovered.\n\noptional"]
22795    #[serde(rename = "product")]
22796    #[serde(skip_serializing_if = "Option::is_none")]
22797    pub product: Option<Box<Product>>,
22798    #[doc = "References\n\nA list of reference URLs with additional information about the CVE Record.\n\nrecommended"]
22799    #[serde(rename = "references")]
22800    #[serde(skip_serializing_if = "Option::is_none")]
22801    pub references: Option<Vec<String>>,
22802    #[doc = "Related CWEs\n\nDescribes the Common Weakness Enumeration <a target='_blank' href='https://cwe.mitre.org/'>(CWE)</a> details related to the CVE Record.\n\noptional"]
22803    #[serde(rename = "related_cwes")]
22804    #[serde(skip_serializing_if = "Option::is_none")]
22805    pub related_cwes: Option<Vec<Cwe>>,
22806    #[doc = "Title\n\nA title or a brief phrase summarizing the CVE record.\n\nrecommended"]
22807    #[serde(rename = "title")]
22808    #[serde(skip_serializing_if = "Option::is_none")]
22809    pub title: Option<String>,
22810    #[doc = "Vulnerability Type\n\n<p>The vulnerability type as selected from a large dropdown menu during CVE refinement.</p>Most frequently used vulnerability types are: <code>DoS</code>, <code>Code Execution</code>, <code>Overflow</code>, <code>Memory Corruption</code>, <code>Sql Injection</code>, <code>XSS</code>, <code>Directory Traversal</code>, <code>Http Response Splitting</code>, <code>Bypass something</code>, <code>Gain Information</code>, <code>Gain Privileges</code>, <code>CSRF</code>, <code>File Inclusion</code>. For more information see <a target='_blank' href='https://www.cvedetails.com/vulnerabilities-by-types.php'>Vulnerabilities By Type</a> distributions.\n\nrecommended"]
22811    #[serde(rename = "type")]
22812    #[serde(skip_serializing_if = "Option::is_none")]
22813    pub r#type: Option<String>,
22814    #[doc = "CVE ID\n\nThe Common Vulnerabilities and Exposures unique number assigned to a specific computer vulnerability. A CVE Identifier begins with 4 digits representing the year followed by a sequence of digits that acts as a unique identifier. For example: <code>CVE-2021-12345</code>.\n\nrequired"]
22815    #[serde(rename = "uid")]
22816    #[serde(skip_serializing_if = "Option::is_none")]
22817    pub uid: Option<String>,
22818}
22819#[doc = "CVSS Score\n\nThe Common Vulnerability Scoring System (<a target='_blank' href='https://www.first.org/cvss/'>CVSS</a>) object provides a way to capture the principal characteristics of a vulnerability and produce a numerical score reflecting its severity.\n\n[] Category:  | Name: cvss"]
22820#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22821#[serde(default)]
22822#[non_exhaustive]
22823pub struct Cvss {
22824    #[doc = "Base Score\n\nThe CVSS base score. For example: <code>9.1</code>.\n\nrequired"]
22825    #[serde(rename = "base_score")]
22826    #[serde(skip_serializing_if = "Option::is_none")]
22827    pub base_score: Option<f64>,
22828    #[doc = "CVSS Depth\n\nThe CVSS depth represents a depth of the equation used to calculate CVSS score.\n\nrecommended"]
22829    #[serde(rename = "depth")]
22830    #[serde(skip_serializing_if = "Option::is_none")]
22831    pub depth: Option<String>,
22832    #[doc = "Metrics\n\nThe Common Vulnerability Scoring System metrics. This attribute contains information on the CVE's impact. If the CVE has been analyzed, this attribute will contain any CVSSv2 or CVSSv3 information associated with the vulnerability. For example: <code>{ {\"Access Vector\", \"Network\"}, {\"Access Complexity\", \"Low\"}, ...}</code>.\n\noptional"]
22833    #[serde(rename = "metrics")]
22834    #[serde(skip_serializing_if = "Option::is_none")]
22835    pub metrics: Option<Vec<Metric>>,
22836    #[doc = "Overall Score\n\nThe CVSS overall score, impacted by base, temporal, and environmental metrics. For example: <code>9.1</code>.\n\nrecommended"]
22837    #[serde(rename = "overall_score")]
22838    #[serde(skip_serializing_if = "Option::is_none")]
22839    pub overall_score: Option<f64>,
22840    #[doc = "Severity\n\n<p>The Common Vulnerability Scoring System (CVSS) Qualitative Severity Rating. A textual representation of the numeric score.</p><strong>CVSS v2.0</strong><ul><li>Low (0.0 – 3.9)</li><li>Medium (4.0 – 6.9)</li><li>High (7.0 – 10.0)</li></ul></p><strong>CVSS v3.0</strong><ul><li>None (0.0)</li><li>Low (0.1 - 3.9)</li><li>Medium (4.0 - 6.9)</li><li>High (7.0 - 8.9)</li><li>Critical (9.0 - 10.0)</li></ul>\n\noptional"]
22841    #[serde(rename = "severity")]
22842    #[serde(skip_serializing_if = "Option::is_none")]
22843    pub severity: Option<String>,
22844    #[doc = "Source URL\n\nThe source URL for the CVSS score. For example: <code>https://nvd.nist.gov/vuln/detail/CVE-2021-44228</code>\n\noptional"]
22845    #[serde(rename = "src_url")]
22846    #[serde(skip_serializing_if = "Option::is_none")]
22847    pub src_url: Option<String>,
22848    #[doc = "Vector String\n\nThe CVSS vector string is a text representation of a set of CVSS metrics. It is commonly used to record or transfer CVSS metric information in a concise form. For example: <code>3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H</code>.\n\noptional"]
22849    #[serde(rename = "vector_string")]
22850    #[serde(skip_serializing_if = "Option::is_none")]
22851    pub vector_string: Option<String>,
22852    #[doc = "Vendor Name\n\nThe vendor that provided the CVSS score. For example: <code>NVD, REDHAT</code> etc.\n\nrecommended"]
22853    #[serde(rename = "vendor_name")]
22854    #[serde(skip_serializing_if = "Option::is_none")]
22855    pub vendor_name: Option<String>,
22856    #[doc = "Version\n\nThe CVSS version. For example: <code>3.1</code>.\n\nrequired"]
22857    #[serde(rename = "version")]
22858    #[serde(skip_serializing_if = "Option::is_none")]
22859    pub version: Option<String>,
22860}
22861#[doc = "CWE\n\nThe CWE object represents a weakness in a software system that can be exploited by a threat actor to perform an attack. The CWE object is based on the <a target='_blank' href='https://cwe.mitre.org/'>Common Weakness Enumeration (CWE)</a> catalog.\n\n[] Category:  | Name: cwe"]
22862#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22863#[serde(default)]
22864#[non_exhaustive]
22865pub struct Cwe {
22866    #[doc = "Caption\n\nThe caption assigned to the Common Weakness Enumeration unique identifier.\n\noptional"]
22867    #[serde(rename = "caption")]
22868    #[serde(skip_serializing_if = "Option::is_none")]
22869    pub caption: Option<String>,
22870    #[doc = "Source URL\n\nURL pointing to the CWE Specification. For more information see <a target='_blank' href='https://cwe.mitre.org/'>CWE.</a>\n\noptional"]
22871    #[serde(rename = "src_url")]
22872    #[serde(skip_serializing_if = "Option::is_none")]
22873    pub src_url: Option<String>,
22874    #[doc = "CWE ID\n\nThe Common Weakness Enumeration unique number assigned to a specific weakness. A CWE Identifier begins \"CWE\" followed by a sequence of digits that acts as a unique identifier. For example: <code>CWE-123</code>.\n\nrequired"]
22875    #[serde(rename = "uid")]
22876    #[serde(skip_serializing_if = "Option::is_none")]
22877    pub uid: Option<String>,
22878}
22879#[doc = "MITRE D3FEND™ Tactic\n\nThe MITRE D3FEND™ Tactic object describes the tactic ID and/or name that is associated to an attack.\n\n[] Category:  | Name: d3f_tactic\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
22880#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22881#[serde(default)]
22882#[non_exhaustive]
22883pub struct D3fTactic {
22884    #[doc = "Name\n\nThe tactic name that is associated with the defensive technique. For example: <code>Isolate</code>.\n\nrecommended"]
22885    #[serde(rename = "name")]
22886    #[serde(skip_serializing_if = "Option::is_none")]
22887    pub name: Option<String>,
22888    #[doc = "Source URL\n\nThe versioned permalink of the defensive tactic. For example: <code>https://d3fend.mitre.org/tactic/d3f:Isolate/</code>.\n\noptional"]
22889    #[serde(rename = "src_url")]
22890    #[serde(skip_serializing_if = "Option::is_none")]
22891    pub src_url: Option<String>,
22892    #[doc = "Unique ID\n\nThe unique identifier of the defensive tactic.\n\nrecommended"]
22893    #[serde(rename = "uid")]
22894    #[serde(skip_serializing_if = "Option::is_none")]
22895    pub uid: Option<String>,
22896}
22897#[doc = "MITRE D3FEND™ Technique\n\nThe MITRE D3FEND™ Technique object describes the leaf defensive technique ID and/or name associated to a countermeasure.\n\n[] Category:  | Name: d3f_technique\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
22898#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22899#[serde(default)]
22900#[non_exhaustive]
22901pub struct D3fTechnique {
22902    #[doc = "Name\n\nThe name of the defensive technique. For example: <code>IO Port Restriction</code>.\n\nrecommended"]
22903    #[serde(rename = "name")]
22904    #[serde(skip_serializing_if = "Option::is_none")]
22905    pub name: Option<String>,
22906    #[doc = "Source URL\n\nThe versioned permalink of the defensive technique. For example: <code>https://d3fend.mitre.org/technique/d3f:IOPortRestriction/</code>.\n\noptional"]
22907    #[serde(rename = "src_url")]
22908    #[serde(skip_serializing_if = "Option::is_none")]
22909    pub src_url: Option<String>,
22910    #[doc = "Unique ID\n\nThe unique identifier of the defensive technique. For example: <code>D3-IOPR</code>.\n\nrecommended"]
22911    #[serde(rename = "uid")]
22912    #[serde(skip_serializing_if = "Option::is_none")]
22913    pub uid: Option<String>,
22914}
22915#[doc = "MITRE D3FEND™\n\nThe MITRE D3FEND™ object describes the tactic & technique associated with a countermeasure.\n\n[] Category:  | Name: d3fend\n\n**Constraints:**\n* at_least_one: `[d3f_tactic`,`d3f_technique]`\n"]
22916#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22917#[serde(default)]
22918#[non_exhaustive]
22919pub struct D3fend {
22920    #[doc = "MITRE D3FEND™ Tactic\n\nThe Tactic object describes the tactic ID and/or name that is associated with a countermeasure.\n\nrecommended"]
22921    #[serde(rename = "d3f_tactic")]
22922    #[serde(skip_serializing_if = "Option::is_none")]
22923    pub d3f_tactic: Option<Box<D3fTactic>>,
22924    #[doc = "MITRE D3FEND™ Technique\n\nThe Technique object describes the technique ID and/or name associated with a countermeasure.\n\nrecommended"]
22925    #[serde(rename = "d3f_technique")]
22926    #[serde(skip_serializing_if = "Option::is_none")]
22927    pub d3f_technique: Option<Box<D3fTechnique>>,
22928    #[doc = "Version\n\nThe D3FEND™ Matrix version.\n\nrecommended"]
22929    #[serde(rename = "version")]
22930    #[serde(skip_serializing_if = "Option::is_none")]
22931    pub version: Option<String>,
22932}
22933#[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\n[] Category:  | Name: data_classification\n\n**Constraints:**\n* at_least_one: `[category_id`,`confidentiality_id]`\n"]
22934#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22935#[serde(default)]
22936#[non_exhaustive]
22937pub struct DataClassification {
22938    #[doc = "Category\n\nThe name of the data classification category that data matched into, e.g. Financial, Personal, Governmental, etc.\n\noptional"]
22939    #[serde(rename = "category")]
22940    #[serde(skip_serializing_if = "Option::is_none")]
22941    pub category: Option<String>,
22942    #[doc = "Category ID\n\nThe normalized identifier of the data classification category.\n\nrecommended"]
22943    #[serde(rename = "category_id")]
22944    #[serde(skip_serializing_if = "Option::is_none")]
22945    pub category_id: Option<i64>,
22946    #[doc = "Classifier Details\n\nDescribes details about the classifier used for data classification.\n\nrecommended"]
22947    #[serde(rename = "classifier_details")]
22948    #[serde(skip_serializing_if = "Option::is_none")]
22949    pub classifier_details: Option<Box<ClassifierDetails>>,
22950    #[doc = "Confidentiality\n\nThe file content confidentiality, normalized to the confidentiality_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
22951    #[serde(rename = "confidentiality")]
22952    #[serde(skip_serializing_if = "Option::is_none")]
22953    pub confidentiality: Option<String>,
22954    #[doc = "Confidentiality ID\n\nThe normalized identifier of the file content confidentiality indicator.\n\nrecommended"]
22955    #[serde(rename = "confidentiality_id")]
22956    #[serde(skip_serializing_if = "Option::is_none")]
22957    pub confidentiality_id: Option<i64>,
22958    #[doc = "Discovery Details\n\nDetails about the data discovered by classification job.\n\noptional"]
22959    #[serde(rename = "discovery_details")]
22960    #[serde(skip_serializing_if = "Option::is_none")]
22961    pub discovery_details: Option<Vec<DiscoveryDetails>>,
22962    #[doc = "Policy\n\nDetails about the data policy that governs data handling and security measures related to classification.\n\noptional"]
22963    #[serde(rename = "policy")]
22964    #[serde(skip_serializing_if = "Option::is_none")]
22965    pub policy: Option<Box<Policy>>,
22966    #[doc = "Size\n\nSize of the data classified.\n\noptional"]
22967    #[serde(rename = "size")]
22968    #[serde(skip_serializing_if = "Option::is_none")]
22969    pub size: Option<i64>,
22970    #[doc = "Source URL\n\nThe source URL pointing towards the full classification job details.\n\noptional"]
22971    #[serde(rename = "src_url")]
22972    #[serde(skip_serializing_if = "Option::is_none")]
22973    pub src_url: Option<String>,
22974    #[doc = "Status\n\nThe resultant status of the classification job normalized to the caption of the <code>status_id</code> value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
22975    #[serde(rename = "status")]
22976    #[serde(skip_serializing_if = "Option::is_none")]
22977    pub status: Option<String>,
22978    #[doc = "Status Details\n\nThe contextual description of the <code>status, status_id</code> value.\n\noptional"]
22979    #[serde(rename = "status_details")]
22980    #[serde(skip_serializing_if = "Option::is_none")]
22981    pub status_details: Option<Vec<String>>,
22982    #[doc = "Status ID\n\nThe normalized status identifier of the classification job.\n\nrecommended"]
22983    #[serde(rename = "status_id")]
22984    #[serde(skip_serializing_if = "Option::is_none")]
22985    pub status_id: Option<i64>,
22986    #[doc = "Total\n\nThe total count of discovered entities, by the classification job.\n\noptional"]
22987    #[serde(rename = "total")]
22988    #[serde(skip_serializing_if = "Option::is_none")]
22989    pub total: Option<i64>,
22990    #[doc = "Unique ID\n\nThe unique identifier of the classification job.\n\noptional"]
22991    #[serde(rename = "uid")]
22992    #[serde(skip_serializing_if = "Option::is_none")]
22993    pub uid: Option<String>,
22994}
22995#[doc = "Data Security\n\nThe Data Security object describes the characteristics, techniques and content of a Data Loss Prevention (DLP), Data Loss Detection (DLD), Data Classification, or similar tools' finding, alert, or detection mechanism(s).\n\n[] Category:  | Name: data_security\n\n**Constraints:**\n* at_least_one: `[category_id`,`confidentiality_id]`\n"]
22996#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22997#[serde(default)]
22998#[non_exhaustive]
22999pub struct DataSecurity {
23000    #[doc = "Category\n\nThe name of the data classification category that data matched into, e.g. Financial, Personal, Governmental, etc.\n\noptional"]
23001    #[serde(rename = "category")]
23002    #[serde(skip_serializing_if = "Option::is_none")]
23003    pub category: Option<String>,
23004    #[doc = "Category ID\n\nThe normalized identifier of the data classification category.\n\nrecommended"]
23005    #[serde(rename = "category_id")]
23006    #[serde(skip_serializing_if = "Option::is_none")]
23007    pub category_id: Option<i64>,
23008    #[doc = "Classifier Details\n\nDescribes details about the classifier used for data classification.\n\nrecommended"]
23009    #[serde(rename = "classifier_details")]
23010    #[serde(skip_serializing_if = "Option::is_none")]
23011    pub classifier_details: Option<Box<ClassifierDetails>>,
23012    #[doc = "Confidentiality\n\nThe file content confidentiality, normalized to the confidentiality_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
23013    #[serde(rename = "confidentiality")]
23014    #[serde(skip_serializing_if = "Option::is_none")]
23015    pub confidentiality: Option<String>,
23016    #[doc = "Confidentiality ID\n\nThe normalized identifier of the file content confidentiality indicator.\n\nrecommended"]
23017    #[serde(rename = "confidentiality_id")]
23018    #[serde(skip_serializing_if = "Option::is_none")]
23019    pub confidentiality_id: Option<i64>,
23020    #[doc = "Data Lifecycle State\n\nThe name of the stage or state that the data was in. E.g., Data-at-Rest, Data-in-Transit, etc.\n\noptional"]
23021    #[serde(rename = "data_lifecycle_state")]
23022    #[serde(skip_serializing_if = "Option::is_none")]
23023    pub data_lifecycle_state: Option<String>,
23024    #[doc = "Data Lifecycle State ID\n\nThe stage or state that the data was in when it was assessed or scanned by a data security tool.\n\nrecommended"]
23025    #[serde(rename = "data_lifecycle_state_id")]
23026    #[serde(skip_serializing_if = "Option::is_none")]
23027    pub data_lifecycle_state_id: Option<i64>,
23028    #[doc = "Detection Pattern\n\nSpecific pattern, algorithm, fingerprint, or model used for detection.\n\nrecommended"]
23029    #[serde(rename = "detection_pattern")]
23030    #[serde(skip_serializing_if = "Option::is_none")]
23031    pub detection_pattern: Option<String>,
23032    #[doc = "Detection System\n\nThe name of the type of data security tool or system that the finding, detection, or alert originated from. E.g., Endpoint, Secure Email Gateway, etc.\n\noptional"]
23033    #[serde(rename = "detection_system")]
23034    #[serde(skip_serializing_if = "Option::is_none")]
23035    pub detection_system: Option<String>,
23036    #[doc = "Detection System ID\n\nThe type of data security tool or system that the finding, detection, or alert originated from.\n\nrecommended"]
23037    #[serde(rename = "detection_system_id")]
23038    #[serde(skip_serializing_if = "Option::is_none")]
23039    pub detection_system_id: Option<i64>,
23040    #[doc = "Discovery Details\n\nDetails about the data discovered by classification job.\n\noptional"]
23041    #[serde(rename = "discovery_details")]
23042    #[serde(skip_serializing_if = "Option::is_none")]
23043    pub discovery_details: Option<Vec<DiscoveryDetails>>,
23044    #[doc = "Pattern Match\n\nA text, binary, file name, or datastore that matched against a detection rule.\n\noptional"]
23045    #[serde(rename = "pattern_match")]
23046    #[serde(skip_serializing_if = "Option::is_none")]
23047    pub pattern_match: Option<String>,
23048    #[doc = "Policy\n\nDetails about the policy that triggered the finding.\n\nrecommended"]
23049    #[serde(rename = "policy")]
23050    #[serde(skip_serializing_if = "Option::is_none")]
23051    pub policy: Option<Box<Policy>>,
23052    #[doc = "Size\n\nSize of the data classified.\n\noptional"]
23053    #[serde(rename = "size")]
23054    #[serde(skip_serializing_if = "Option::is_none")]
23055    pub size: Option<i64>,
23056    #[doc = "Source URL\n\nThe source URL pointing towards the full classification job details.\n\noptional"]
23057    #[serde(rename = "src_url")]
23058    #[serde(skip_serializing_if = "Option::is_none")]
23059    pub src_url: Option<String>,
23060    #[doc = "Status\n\nThe resultant status of the classification job normalized to the caption of the <code>status_id</code> value. In the case of 'Other', it is defined by the event source.\n\nrecommended"]
23061    #[serde(rename = "status")]
23062    #[serde(skip_serializing_if = "Option::is_none")]
23063    pub status: Option<String>,
23064    #[doc = "Status Details\n\nThe contextual description of the <code>status, status_id</code> value.\n\noptional"]
23065    #[serde(rename = "status_details")]
23066    #[serde(skip_serializing_if = "Option::is_none")]
23067    pub status_details: Option<Vec<String>>,
23068    #[doc = "Status ID\n\nThe normalized status identifier of the classification job.\n\nrecommended"]
23069    #[serde(rename = "status_id")]
23070    #[serde(skip_serializing_if = "Option::is_none")]
23071    pub status_id: Option<i64>,
23072    #[doc = "Total\n\nThe total count of discovered entities, by the classification job.\n\noptional"]
23073    #[serde(rename = "total")]
23074    #[serde(skip_serializing_if = "Option::is_none")]
23075    pub total: Option<i64>,
23076    #[doc = "Unique ID\n\nThe unique identifier of the classification job.\n\noptional"]
23077    #[serde(rename = "uid")]
23078    #[serde(skip_serializing_if = "Option::is_none")]
23079    pub uid: Option<String>,
23080}
23081#[doc = "Database\n\nThe database object is used for databases which are typically datastore services that contain an organized collection of structured and unstructured data or a types of data.\n\n[] Category:  | Name: database\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
23082#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23083#[serde(default)]
23084#[non_exhaustive]
23085pub struct Database {
23086    #[doc = "Created Time\n\nThe time when the database was known to have been created.\n\noptional"]
23087    #[serde(rename = "created_time")]
23088    #[serde(skip_serializing_if = "Option::is_none")]
23089    pub created_time: Option<i64>,
23090    #[doc = "Created Time\n\nThe time when the database was known to have been created.\n\noptional"]
23091    #[serde(rename = "created_time_dt")]
23092    #[serde(skip_serializing_if = "Option::is_none")]
23093    pub created_time_dt: Option<String>,
23094    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
23095    #[serde(rename = "data_classification")]
23096    #[serde(skip_serializing_if = "Option::is_none")]
23097    pub data_classification: Option<Box<DataClassification>>,
23098    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
23099    #[serde(rename = "data_classifications")]
23100    #[serde(skip_serializing_if = "Option::is_none")]
23101    pub data_classifications: Option<Vec<DataClassification>>,
23102    #[doc = "Description\n\nThe description of the database.\n\noptional"]
23103    #[serde(rename = "desc")]
23104    #[serde(skip_serializing_if = "Option::is_none")]
23105    pub desc: Option<String>,
23106    #[doc = "Embedding Model\n\nModel used for creating embeddings (if applicable). For example: <code>text-embedding-ada-002</code> or <code>all-MiniLM-L6-v2</code>.\n\noptional"]
23107    #[serde(rename = "embedding_model")]
23108    #[serde(skip_serializing_if = "Option::is_none")]
23109    pub embedding_model: Option<String>,
23110    #[doc = "Groups\n\nThe group names to which the database belongs.\n\noptional"]
23111    #[serde(rename = "groups")]
23112    #[serde(skip_serializing_if = "Option::is_none")]
23113    pub groups: Option<Vec<Group>>,
23114    #[doc = "Modified Time\n\nThe most recent time when any changes, updates, or modifications were made within the database.\n\noptional"]
23115    #[serde(rename = "modified_time")]
23116    #[serde(skip_serializing_if = "Option::is_none")]
23117    pub modified_time: Option<i64>,
23118    #[doc = "Modified Time\n\nThe most recent time when any changes, updates, or modifications were made within the database.\n\noptional"]
23119    #[serde(rename = "modified_time_dt")]
23120    #[serde(skip_serializing_if = "Option::is_none")]
23121    pub modified_time_dt: Option<String>,
23122    #[doc = "Name\n\nThe database name, ordinarily as assigned by a database administrator.\n\nrecommended"]
23123    #[serde(rename = "name")]
23124    #[serde(skip_serializing_if = "Option::is_none")]
23125    pub name: Option<String>,
23126    #[doc = "Size\n\nThe size of the database in bytes.\n\noptional"]
23127    #[serde(rename = "size")]
23128    #[serde(skip_serializing_if = "Option::is_none")]
23129    pub size: Option<i64>,
23130    #[doc = "Type\n\nThe database type.\n\nrecommended"]
23131    #[serde(rename = "type")]
23132    #[serde(skip_serializing_if = "Option::is_none")]
23133    pub r#type: Option<String>,
23134    #[doc = "Type ID\n\nThe normalized identifier of the database type.\n\nrequired"]
23135    #[serde(rename = "type_id")]
23136    #[serde(skip_serializing_if = "Option::is_none")]
23137    pub type_id: Option<i64>,
23138    #[doc = "Unique ID\n\nThe unique identifier of the database.\n\nrecommended"]
23139    #[serde(rename = "uid")]
23140    #[serde(skip_serializing_if = "Option::is_none")]
23141    pub uid: Option<String>,
23142}
23143#[doc = "Databucket\n\nThe databucket object is a basic container that holds data, typically organized through the use of data partitions.\n\n[] Category:  | Name: databucket\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
23144#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23145#[serde(default)]
23146#[non_exhaustive]
23147pub struct Databucket {
23148    #[doc = "Agent List\n\nA list of <code>agent</code> objects associated with a device, endpoint, or resource.\n\noptional"]
23149    #[serde(rename = "agent_list")]
23150    #[serde(skip_serializing_if = "Option::is_none")]
23151    pub agent_list: Option<Vec<Agent>>,
23152    #[doc = "Cloud Partition\n\nThe logical grouping or isolated segment within a cloud provider's infrastructure where the databucket is located.\n\noptional"]
23153    #[serde(rename = "cloud_partition")]
23154    #[serde(skip_serializing_if = "Option::is_none")]
23155    pub cloud_partition: Option<String>,
23156    #[doc = "Created Time\n\nThe time when the databucket was known to have been created.\n\noptional"]
23157    #[serde(rename = "created_time")]
23158    #[serde(skip_serializing_if = "Option::is_none")]
23159    pub created_time: Option<i64>,
23160    #[doc = "Created Time\n\nThe time when the databucket was known to have been created.\n\noptional"]
23161    #[serde(rename = "created_time_dt")]
23162    #[serde(skip_serializing_if = "Option::is_none")]
23163    pub created_time_dt: Option<String>,
23164    #[doc = "Criticality\n\nThe criticality of the databucket as defined by the event source.\n\noptional"]
23165    #[serde(rename = "criticality")]
23166    #[serde(skip_serializing_if = "Option::is_none")]
23167    pub criticality: Option<String>,
23168    #[doc = "Data\n\nAdditional data describing the resource.\n\noptional"]
23169    #[serde(rename = "data")]
23170    #[serde(skip_serializing_if = "Option::is_none")]
23171    pub data: Option<serde_json::Value>,
23172    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
23173    #[serde(rename = "data_classification")]
23174    #[serde(skip_serializing_if = "Option::is_none")]
23175    pub data_classification: Option<Box<DataClassification>>,
23176    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
23177    #[serde(rename = "data_classifications")]
23178    #[serde(skip_serializing_if = "Option::is_none")]
23179    pub data_classifications: Option<Vec<DataClassification>>,
23180    #[doc = "Description\n\nThe description of the databucket.\n\noptional"]
23181    #[serde(rename = "desc")]
23182    #[serde(skip_serializing_if = "Option::is_none")]
23183    pub desc: Option<String>,
23184    #[doc = "Encryption Details\n\nThe encryption details of the databucket. Should be populated if the databucket is encrypted.\n\noptional"]
23185    #[serde(rename = "encryption_details")]
23186    #[serde(skip_serializing_if = "Option::is_none")]
23187    pub encryption_details: Option<Box<EncryptionDetails>>,
23188    #[doc = "File\n\nDetails about the file/object within a databucket.\n\noptional"]
23189    #[serde(rename = "file")]
23190    #[serde(skip_serializing_if = "Option::is_none")]
23191    pub file: Option<Box<File>>,
23192    #[doc = "Group\n\nThe name of the related resource group.\n\noptional"]
23193    #[serde(rename = "group")]
23194    #[serde(skip_serializing_if = "Option::is_none")]
23195    pub group: Option<Box<Group>>,
23196    #[doc = "Groups\n\nThe group names to which the databucket belongs.\n\noptional"]
23197    #[serde(rename = "groups")]
23198    #[serde(skip_serializing_if = "Option::is_none")]
23199    pub groups: Option<Vec<Group>>,
23200    #[doc = "Hostname\n\nThe fully qualified hostname of the databucket.\n\nrecommended"]
23201    #[serde(rename = "hostname")]
23202    #[serde(skip_serializing_if = "Option::is_none")]
23203    pub hostname: Option<String>,
23204    #[doc = "IP Address\n\nThe IP address of the resource, in either IPv4 or IPv6 format.\n\nrecommended"]
23205    #[serde(rename = "ip")]
23206    #[serde(skip_serializing_if = "Option::is_none")]
23207    pub ip: Option<String>,
23208    #[doc = "Back Ups Configured\n\nIndicates whether the device or resource has a backup enabled, such as an automated snapshot or a cloud backup. For example, this is indicated by the <code>cloudBackupEnabled</code> value within JAMF Pro mobile devices or the registration of an AWS ARN with the AWS Backup service.\n\noptional"]
23209    #[serde(rename = "is_backed_up")]
23210    #[serde(skip_serializing_if = "Option::is_none")]
23211    pub is_backed_up: Option<bool>,
23212    #[doc = "Encrypted\n\nIndicates if the databucket is encrypted.\n\noptional"]
23213    #[serde(rename = "is_encrypted")]
23214    #[serde(skip_serializing_if = "Option::is_none")]
23215    pub is_encrypted: Option<bool>,
23216    #[doc = "Public\n\nIndicates if the databucket is publicly accessible.\n\nrecommended"]
23217    #[serde(rename = "is_public")]
23218    #[serde(skip_serializing_if = "Option::is_none")]
23219    pub is_public: Option<bool>,
23220    #[doc = "Labels\n\nThe list of labels associated to the resource.\n\noptional"]
23221    #[serde(rename = "labels")]
23222    #[serde(skip_serializing_if = "Option::is_none")]
23223    pub labels: Option<Vec<String>>,
23224    #[doc = "Modified Time\n\nThe most recent time when any changes, updates, or modifications were made within the databucket.\n\noptional"]
23225    #[serde(rename = "modified_time")]
23226    #[serde(skip_serializing_if = "Option::is_none")]
23227    pub modified_time: Option<i64>,
23228    #[doc = "Modified Time\n\nThe most recent time when any changes, updates, or modifications were made within the databucket.\n\noptional"]
23229    #[serde(rename = "modified_time_dt")]
23230    #[serde(skip_serializing_if = "Option::is_none")]
23231    pub modified_time_dt: Option<String>,
23232    #[doc = "Name\n\nThe databucket name.\n\nrecommended"]
23233    #[serde(rename = "name")]
23234    #[serde(skip_serializing_if = "Option::is_none")]
23235    pub name: Option<String>,
23236    #[doc = "Namespace\n\nThe namespace is useful when similar entities exist that you need to keep separate.\n\noptional"]
23237    #[serde(rename = "namespace")]
23238    #[serde(skip_serializing_if = "Option::is_none")]
23239    pub namespace: Option<String>,
23240    #[doc = "Owner\n\nThe identity of the service or user account that owns the databucket.\n\nrecommended"]
23241    #[serde(rename = "owner")]
23242    #[serde(skip_serializing_if = "Option::is_none")]
23243    pub owner: Option<Box<User>>,
23244    #[doc = "Region\n\nThe cloud region of the databucket.\n\noptional"]
23245    #[serde(rename = "region")]
23246    #[serde(skip_serializing_if = "Option::is_none")]
23247    pub region: Option<String>,
23248    #[doc = "Resource Relationship\n\nA graph representation showing how this databucket relates to and interacts with other entities in the environment. This can include parent/child relationships, dependencies, or other connections.\n\noptional"]
23249    #[serde(rename = "resource_relationship")]
23250    #[serde(skip_serializing_if = "Option::is_none")]
23251    pub resource_relationship: Option<Box<Graph>>,
23252    #[doc = "Size\n\nThe size of the databucket in bytes.\n\noptional"]
23253    #[serde(rename = "size")]
23254    #[serde(skip_serializing_if = "Option::is_none")]
23255    pub size: Option<i64>,
23256    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the resource.\n\noptional"]
23257    #[serde(rename = "tags")]
23258    #[serde(skip_serializing_if = "Option::is_none")]
23259    pub tags: Option<Vec<KeyValueObject>>,
23260    #[doc = "Type\n\nThe databucket type.\n\nrecommended"]
23261    #[serde(rename = "type")]
23262    #[serde(skip_serializing_if = "Option::is_none")]
23263    pub r#type: Option<String>,
23264    #[doc = "Type ID\n\nThe normalized identifier of the databucket type.\n\nrequired"]
23265    #[serde(rename = "type_id")]
23266    #[serde(skip_serializing_if = "Option::is_none")]
23267    pub type_id: Option<i64>,
23268    #[doc = "Unique ID\n\nThe unique identifier of the databucket.\n\nrecommended"]
23269    #[serde(rename = "uid")]
23270    #[serde(skip_serializing_if = "Option::is_none")]
23271    pub uid: Option<String>,
23272    #[doc = "Alternate ID\n\nThe alternative unique identifier of the resource.\n\noptional"]
23273    #[serde(rename = "uid_alt")]
23274    #[serde(skip_serializing_if = "Option::is_none")]
23275    pub uid_alt: Option<String>,
23276    #[doc = "Version\n\nThe version of the resource. For example <code>1.2.3</code>.\n\noptional"]
23277    #[serde(rename = "version")]
23278    #[serde(skip_serializing_if = "Option::is_none")]
23279    pub version: Option<String>,
23280    #[doc = "Cloud Availability Zone\n\nThe specific availability zone within a cloud region where the databucket is located.\n\noptional"]
23281    #[serde(rename = "zone")]
23282    #[serde(skip_serializing_if = "Option::is_none")]
23283    pub zone: Option<String>,
23284}
23285#[doc = "DCE/RPC\n\nThe DCE/RPC, or Distributed Computing Environment/Remote Procedure Call, object describes the remote procedure call system for distributed computing environments.\n\n[] Category:  | Name: dce_rpc"]
23286#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23287#[serde(default)]
23288#[non_exhaustive]
23289pub struct DceRpc {
23290    #[doc = "Command\n\nThe request command (e.g. REQUEST, BIND).\n\nrecommended"]
23291    #[serde(rename = "command")]
23292    #[serde(skip_serializing_if = "Option::is_none")]
23293    pub command: Option<String>,
23294    #[doc = "Command Response\n\nThe reply to the request command (e.g. RESPONSE, BINDACK or FAULT).\n\nrecommended"]
23295    #[serde(rename = "command_response")]
23296    #[serde(skip_serializing_if = "Option::is_none")]
23297    pub command_response: Option<String>,
23298    #[doc = "Flags\n\nThe list of interface flags.\n\nrequired"]
23299    #[serde(rename = "flags")]
23300    #[serde(skip_serializing_if = "Option::is_none")]
23301    pub flags: Option<Vec<String>>,
23302    #[doc = "Opnum\n\nAn operation number used to identify a specific remote procedure call (RPC) method or a method in an interface.\n\nrecommended"]
23303    #[serde(rename = "opnum")]
23304    #[serde(skip_serializing_if = "Option::is_none")]
23305    pub opnum: Option<i64>,
23306    #[doc = "Remote Procedure Call Interface\n\nThe RPC Interface object describes the details pertaining to the remote procedure call interface.\n\nrequired"]
23307    #[serde(rename = "rpc_interface")]
23308    #[serde(skip_serializing_if = "Option::is_none")]
23309    pub rpc_interface: Option<Box<RpcInterface>>,
23310}
23311#[doc = "Device\n\nThe Device object represents an addressable computer system or host, which is typically connected to a computer network and participates in the transmission or processing of data within the computer network.\n\n[] Category:  | Name: device\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
23312#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23313#[serde(default)]
23314#[non_exhaustive]
23315pub struct Device {
23316    #[doc = "Agent List\n\nA list of <code>agent</code> objects associated with a device, endpoint, or resource.\n\noptional"]
23317    #[serde(rename = "agent_list")]
23318    #[serde(skip_serializing_if = "Option::is_none")]
23319    pub agent_list: Option<Vec<Agent>>,
23320    #[doc = "Autoscale UID\n\nThe unique identifier of the cloud autoscale configuration.\n\noptional"]
23321    #[serde(rename = "autoscale_uid")]
23322    #[serde(skip_serializing_if = "Option::is_none")]
23323    pub autoscale_uid: Option<String>,
23324    #[doc = "Boot Time\n\nThe time the system was booted.\n\noptional"]
23325    #[serde(rename = "boot_time")]
23326    #[serde(skip_serializing_if = "Option::is_none")]
23327    pub boot_time: Option<i64>,
23328    #[doc = "Boot Time\n\nThe time the system was booted.\n\noptional"]
23329    #[serde(rename = "boot_time_dt")]
23330    #[serde(skip_serializing_if = "Option::is_none")]
23331    pub boot_time_dt: Option<String>,
23332    #[doc = "Boot UID\n\nA unique identifier of the device that changes after every reboot. For example, the value of <code>/proc/sys/kernel/random/boot_id</code> from Linux's procfs.\n\noptional"]
23333    #[serde(rename = "boot_uid")]
23334    #[serde(skip_serializing_if = "Option::is_none")]
23335    pub boot_uid: Option<String>,
23336    #[doc = "Container\n\nThe information describing an instance of a container. A container is a prepackaged, portable system image that runs isolated on an existing system using a container runtime like containerd.\n\nrecommended"]
23337    #[serde(rename = "container")]
23338    #[serde(skip_serializing_if = "Option::is_none")]
23339    pub container: Option<Box<Container>>,
23340    #[doc = "Created Time\n\nThe time when the device was known to have been created.\n\noptional"]
23341    #[serde(rename = "created_time")]
23342    #[serde(skip_serializing_if = "Option::is_none")]
23343    pub created_time: Option<i64>,
23344    #[doc = "Created Time\n\nThe time when the device was known to have been created.\n\noptional"]
23345    #[serde(rename = "created_time_dt")]
23346    #[serde(skip_serializing_if = "Option::is_none")]
23347    pub created_time_dt: Option<String>,
23348    #[doc = "Description\n\nThe description of the device, ordinarily as reported by the operating system.\n\noptional"]
23349    #[serde(rename = "desc")]
23350    #[serde(skip_serializing_if = "Option::is_none")]
23351    pub desc: Option<String>,
23352    #[doc = "Domain\n\nThe network domain where the device resides. For example: <code>work.example.com</code>.\n\noptional"]
23353    #[serde(rename = "domain")]
23354    #[serde(skip_serializing_if = "Option::is_none")]
23355    pub domain: Option<String>,
23356    #[doc = "EID\n\nAn Embedded Identity Document, is a unique serial number that identifies an eSIM-enabled device.\n\noptional"]
23357    #[serde(rename = "eid")]
23358    #[serde(skip_serializing_if = "Option::is_none")]
23359    pub eid: Option<String>,
23360    #[doc = "First Seen\n\nThe initial discovery time of the device.\n\noptional"]
23361    #[serde(rename = "first_seen_time")]
23362    #[serde(skip_serializing_if = "Option::is_none")]
23363    pub first_seen_time: Option<i64>,
23364    #[doc = "First Seen\n\nThe initial discovery time of the device.\n\noptional"]
23365    #[serde(rename = "first_seen_time_dt")]
23366    #[serde(skip_serializing_if = "Option::is_none")]
23367    pub first_seen_time_dt: Option<String>,
23368    #[doc = "Groups\n\nThe group names to which the device belongs. For example: <code>[\"Windows Laptops\", \"Engineering\"]</code>.\n\noptional"]
23369    #[serde(rename = "groups")]
23370    #[serde(skip_serializing_if = "Option::is_none")]
23371    pub groups: Option<Vec<Group>>,
23372    #[doc = "Hostname\n\nThe device hostname.\n\nrecommended"]
23373    #[serde(rename = "hostname")]
23374    #[serde(skip_serializing_if = "Option::is_none")]
23375    pub hostname: Option<String>,
23376    #[doc = "Hardware Info\n\nThe endpoint hardware information.\n\noptional"]
23377    #[serde(rename = "hw_info")]
23378    #[serde(skip_serializing_if = "Option::is_none")]
23379    pub hw_info: Option<Box<DeviceHwInfo>>,
23380    #[doc = "Hypervisor\n\nThe name of the hypervisor running on the device. For example, <code>Xen</code>, <code>VMware</code>, <code>Hyper-V</code>, <code>VirtualBox</code>, etc.\n\noptional"]
23381    #[serde(rename = "hypervisor")]
23382    #[serde(skip_serializing_if = "Option::is_none")]
23383    pub hypervisor: Option<String>,
23384    #[doc = "ICCID\n\nThe Integrated Circuit Card Identification of a mobile device. Typically it is a unique 18 to 22 digit number that identifies a SIM card.\n\noptional"]
23385    #[serde(rename = "iccid")]
23386    #[serde(skip_serializing_if = "Option::is_none")]
23387    pub iccid: Option<String>,
23388    #[doc = "Image\n\nThe image used as a template to run the virtual machine.\n\noptional"]
23389    #[serde(rename = "image")]
23390    #[serde(skip_serializing_if = "Option::is_none")]
23391    pub image: Option<Box<Image>>,
23392    #[doc = "IMEI\n\nThe International Mobile Equipment Identity that is associated with the device.\n\noptional"]
23393    #[serde(rename = "imei")]
23394    #[serde(skip_serializing_if = "Option::is_none")]
23395    pub imei: Option<String>,
23396    #[doc = "IMEI List\n\nThe International Mobile Equipment Identity values that are associated with the device.\n\noptional"]
23397    #[serde(rename = "imei_list")]
23398    #[serde(skip_serializing_if = "Option::is_none")]
23399    pub imei_list: Option<Vec<String>>,
23400    #[doc = "Instance ID\n\nThe unique identifier of a VM instance.\n\nrecommended"]
23401    #[serde(rename = "instance_uid")]
23402    #[serde(skip_serializing_if = "Option::is_none")]
23403    pub instance_uid: Option<String>,
23404    #[doc = "Network Interface Name\n\nThe name of the network interface (e.g. eth2).\n\nrecommended"]
23405    #[serde(rename = "interface_name")]
23406    #[serde(skip_serializing_if = "Option::is_none")]
23407    pub interface_name: Option<String>,
23408    #[doc = "Network Interface ID\n\nThe unique identifier of the network interface.\n\nrecommended"]
23409    #[serde(rename = "interface_uid")]
23410    #[serde(skip_serializing_if = "Option::is_none")]
23411    pub interface_uid: Option<String>,
23412    #[doc = "IP Address\n\nThe device IP address, in either IPv4 or IPv6 format.\n\noptional"]
23413    #[serde(rename = "ip")]
23414    #[serde(skip_serializing_if = "Option::is_none")]
23415    pub ip: Option<String>,
23416    #[doc = "Back Ups Configured\n\nIndicates whether the device or resource has a backup enabled, such as an automated snapshot or a cloud backup. For example, this is indicated by the <code>cloudBackupEnabled</code> value within JAMF Pro mobile devices or the registration of an AWS ARN with the AWS Backup service.\n\noptional"]
23417    #[serde(rename = "is_backed_up")]
23418    #[serde(skip_serializing_if = "Option::is_none")]
23419    pub is_backed_up: Option<bool>,
23420    #[doc = "Compliant Device\n\nThe event occurred on a compliant device.\n\noptional"]
23421    #[serde(rename = "is_compliant")]
23422    #[serde(skip_serializing_if = "Option::is_none")]
23423    pub is_compliant: Option<bool>,
23424    #[doc = "Managed Device\n\nThe event occurred on a managed device.\n\noptional"]
23425    #[serde(rename = "is_managed")]
23426    #[serde(skip_serializing_if = "Option::is_none")]
23427    pub is_managed: Option<bool>,
23428    #[doc = "Mobile Account Active\n\nIndicates whether the device has an active mobile account. For example, this is indicated by the <code>itunesStoreAccountActive</code> value within JAMF Pro mobile devices.\n\noptional"]
23429    #[serde(rename = "is_mobile_account_active")]
23430    #[serde(skip_serializing_if = "Option::is_none")]
23431    pub is_mobile_account_active: Option<bool>,
23432    #[doc = "Personal Device\n\nThe event occurred on a personal device.\n\noptional"]
23433    #[serde(rename = "is_personal")]
23434    #[serde(skip_serializing_if = "Option::is_none")]
23435    pub is_personal: Option<bool>,
23436    #[doc = "Shared Device\n\nThe event occurred on a shared device.\n\noptional"]
23437    #[serde(rename = "is_shared")]
23438    #[serde(skip_serializing_if = "Option::is_none")]
23439    pub is_shared: Option<bool>,
23440    #[doc = "Supervised Device\n\nThe event occurred on a supervised device. Devices that are supervised are typically mobile devices managed by a Mobile Device Management solution and are restricted from specific behaviors such as Apple AirDrop.\n\noptional"]
23441    #[serde(rename = "is_supervised")]
23442    #[serde(skip_serializing_if = "Option::is_none")]
23443    pub is_supervised: Option<bool>,
23444    #[doc = "Trusted Device\n\nThe event occurred on a trusted device.\n\noptional"]
23445    #[serde(rename = "is_trusted")]
23446    #[serde(skip_serializing_if = "Option::is_none")]
23447    pub is_trusted: Option<bool>,
23448    #[doc = "Last Seen\n\nThe most recent discovery time of the device.\n\noptional"]
23449    #[serde(rename = "last_seen_time")]
23450    #[serde(skip_serializing_if = "Option::is_none")]
23451    pub last_seen_time: Option<i64>,
23452    #[doc = "Last Seen\n\nThe most recent discovery time of the device.\n\noptional"]
23453    #[serde(rename = "last_seen_time_dt")]
23454    #[serde(skip_serializing_if = "Option::is_none")]
23455    pub last_seen_time_dt: Option<String>,
23456    #[doc = "Geo Location\n\nThe geographical location of the device.\n\noptional"]
23457    #[serde(rename = "location")]
23458    #[serde(skip_serializing_if = "Option::is_none")]
23459    pub location: Option<Box<Location>>,
23460    #[doc = "MAC Address\n\nThe Media Access Control (MAC) address of the endpoint.\n\noptional"]
23461    #[serde(rename = "mac")]
23462    #[serde(skip_serializing_if = "Option::is_none")]
23463    pub mac: Option<String>,
23464    #[doc = "MEID\n\nThe Mobile Equipment Identifier. It's a unique number that identifies a Code Division Multiple Access (CDMA) mobile device.\n\noptional"]
23465    #[serde(rename = "meid")]
23466    #[serde(skip_serializing_if = "Option::is_none")]
23467    pub meid: Option<String>,
23468    #[doc = "Model\n\nThe model of the device. For example <code>ThinkPad X1 Carbon</code>.\n\noptional"]
23469    #[serde(rename = "model")]
23470    #[serde(skip_serializing_if = "Option::is_none")]
23471    pub model: Option<String>,
23472    #[doc = "Modified Time\n\nThe time when the device was last known to have been modified.\n\noptional"]
23473    #[serde(rename = "modified_time")]
23474    #[serde(skip_serializing_if = "Option::is_none")]
23475    pub modified_time: Option<i64>,
23476    #[doc = "Modified Time\n\nThe time when the device was last known to have been modified.\n\noptional"]
23477    #[serde(rename = "modified_time_dt")]
23478    #[serde(skip_serializing_if = "Option::is_none")]
23479    pub modified_time_dt: Option<String>,
23480    #[doc = "Name\n\nThe alternate device name, ordinarily as assigned by an administrator. <p><b>Note:</b> The <b>Name</b> could be any other string that helps to identify the device, such as a phone number; for example <code>310-555-1234</code>.</p>\n\noptional"]
23481    #[serde(rename = "name")]
23482    #[serde(skip_serializing_if = "Option::is_none")]
23483    pub name: Option<String>,
23484    #[doc = "Namespace PID\n\nIf running under a process namespace (such as in a container), the process identifier within that process namespace.\n\nrecommended"]
23485    #[serde(rename = "namespace_pid")]
23486    #[serde(skip_serializing_if = "Option::is_none")]
23487    pub namespace_pid: Option<i64>,
23488    #[doc = "Network Interfaces\n\nThe physical or virtual network interfaces that are associated with the device, one for each unique MAC address/IP address/hostname/name combination.<p><b>Note:</b> The first element of the array is the network information that pertains to the event.</p>\n\noptional"]
23489    #[serde(rename = "network_interfaces")]
23490    #[serde(skip_serializing_if = "Option::is_none")]
23491    pub network_interfaces: Option<Vec<NetworkInterface>>,
23492    #[doc = "Organization\n\nOrganization and org unit related to the device.\n\noptional"]
23493    #[serde(rename = "org")]
23494    #[serde(skip_serializing_if = "Option::is_none")]
23495    pub org: Option<Box<Organization>>,
23496    #[doc = "OS\n\nThe endpoint operating system.\n\noptional"]
23497    #[serde(rename = "os")]
23498    #[serde(skip_serializing_if = "Option::is_none")]
23499    pub os: Option<Box<Os>>,
23500    #[doc = "OS Machine UUID\n\nThe operating system assigned Machine ID. In Windows, this is the value stored at the registry path: <code>HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography\\MachineGuid</code>. In Linux, this is stored in the file: <code>/etc/machine-id</code>.\n\noptional"]
23501    #[serde(rename = "os_machine_uuid")]
23502    #[serde(skip_serializing_if = "Option::is_none")]
23503    pub os_machine_uuid: Option<String>,
23504    #[doc = "Owner\n\nThe identity of the service or user account that owns the endpoint or was last logged into it.\n\nrecommended"]
23505    #[serde(rename = "owner")]
23506    #[serde(skip_serializing_if = "Option::is_none")]
23507    pub owner: Option<Box<User>>,
23508    #[doc = "Region\n\nThe region where the virtual machine is located. For example, an AWS Region.\n\nrecommended"]
23509    #[serde(rename = "region")]
23510    #[serde(skip_serializing_if = "Option::is_none")]
23511    pub region: Option<String>,
23512    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
23513    #[serde(rename = "risk_level")]
23514    #[serde(skip_serializing_if = "Option::is_none")]
23515    pub risk_level: Option<String>,
23516    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
23517    #[serde(rename = "risk_level_id")]
23518    #[serde(skip_serializing_if = "Option::is_none")]
23519    pub risk_level_id: Option<i64>,
23520    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
23521    #[serde(rename = "risk_score")]
23522    #[serde(skip_serializing_if = "Option::is_none")]
23523    pub risk_score: Option<i64>,
23524    #[doc = "Subnet\n\nThe subnet mask.\n\noptional"]
23525    #[serde(rename = "subnet")]
23526    #[serde(skip_serializing_if = "Option::is_none")]
23527    pub subnet: Option<String>,
23528    #[doc = "Subnet UID\n\nThe unique identifier of a virtual subnet.\n\noptional"]
23529    #[serde(rename = "subnet_uid")]
23530    #[serde(skip_serializing_if = "Option::is_none")]
23531    pub subnet_uid: Option<String>,
23532    #[doc = "Type\n\nThe device type. For example: <code>unknown</code>, <code>server</code>, <code>desktop</code>, <code>laptop</code>, <code>tablet</code>, <code>mobile</code>, <code>virtual</code>, <code>browser</code>, or <code>other</code>.\n\nrecommended"]
23533    #[serde(rename = "type")]
23534    #[serde(skip_serializing_if = "Option::is_none")]
23535    pub r#type: Option<String>,
23536    #[doc = "Type ID\n\nThe device type ID.\n\nrequired"]
23537    #[serde(rename = "type_id")]
23538    #[serde(skip_serializing_if = "Option::is_none")]
23539    pub type_id: Option<i64>,
23540    #[doc = "Unique Device Identifier\n\nThe Apple assigned Unique Device Identifier (UDID). For iOS, iPadOS, tvOS, watchOS and visionOS devices, this is the UDID. For macOS devices, it is the Provisioning UDID. For example: <code>00008020-008D4548007B4F26</code>\n\noptional"]
23541    #[serde(rename = "udid")]
23542    #[serde(skip_serializing_if = "Option::is_none")]
23543    pub udid: Option<String>,
23544    #[doc = "Unique ID\n\nThe unique identifier of the device. For example the Windows TargetSID or AWS EC2 ARN.\n\nrecommended"]
23545    #[serde(rename = "uid")]
23546    #[serde(skip_serializing_if = "Option::is_none")]
23547    pub uid: Option<String>,
23548    #[doc = "Alternate ID\n\nAn alternate unique identifier of the device if any. For example the ActiveDirectory DN.\n\noptional"]
23549    #[serde(rename = "uid_alt")]
23550    #[serde(skip_serializing_if = "Option::is_none")]
23551    pub uid_alt: Option<String>,
23552    #[doc = "Vendor Name\n\nThe vendor for the device. For example <code>Dell</code> or <code>Lenovo</code>.\n\nrecommended"]
23553    #[serde(rename = "vendor_name")]
23554    #[serde(skip_serializing_if = "Option::is_none")]
23555    pub vendor_name: Option<String>,
23556    #[doc = "VLAN\n\nThe Virtual LAN identifier.\n\noptional"]
23557    #[serde(rename = "vlan_uid")]
23558    #[serde(skip_serializing_if = "Option::is_none")]
23559    pub vlan_uid: Option<String>,
23560    #[doc = "VPC UID\n\nThe unique identifier of the Virtual Private Cloud (VPC).\n\noptional"]
23561    #[serde(rename = "vpc_uid")]
23562    #[serde(skip_serializing_if = "Option::is_none")]
23563    pub vpc_uid: Option<String>,
23564    #[doc = "Network Zone\n\nThe network zone or LAN segment.\n\noptional"]
23565    #[serde(rename = "zone")]
23566    #[serde(skip_serializing_if = "Option::is_none")]
23567    pub zone: Option<String>,
23568}
23569#[doc = "Device Hardware Info\n\nThe Device Hardware Information object contains details and specifications of the physical components that make up a device. This information provides an overview of the hardware capabilities, configuration, and characteristics of the device.\n\n[] Category:  | Name: device_hw_info"]
23570#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23571#[serde(default)]
23572#[non_exhaustive]
23573pub struct DeviceHwInfo {
23574    #[doc = "BIOS Date\n\nThe BIOS date. For example: <code>03/31/16</code>.\n\noptional"]
23575    #[serde(rename = "bios_date")]
23576    #[serde(skip_serializing_if = "Option::is_none")]
23577    pub bios_date: Option<String>,
23578    #[doc = "BIOS Manufacturer\n\nThe BIOS manufacturer. For example: <code>LENOVO</code>.\n\noptional"]
23579    #[serde(rename = "bios_manufacturer")]
23580    #[serde(skip_serializing_if = "Option::is_none")]
23581    pub bios_manufacturer: Option<String>,
23582    #[doc = "BIOS Version\n\nThe BIOS version. For example: <code>LENOVO G5ETA2WW (2.62)</code>.\n\noptional"]
23583    #[serde(rename = "bios_ver")]
23584    #[serde(skip_serializing_if = "Option::is_none")]
23585    pub bios_ver: Option<String>,
23586    #[doc = "Chassis\n\nThe chassis type describes the system enclosure or physical form factor. Such as the following examples for Windows <a target='_blank' href='https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-systemenclosure'>Windows Chassis Types</a>\n\noptional"]
23587    #[serde(rename = "chassis")]
23588    #[serde(skip_serializing_if = "Option::is_none")]
23589    pub chassis: Option<String>,
23590    #[doc = "CPU Architecture\n\nThe CPU architecture, normalized to the caption of the <code>cpu_architecture_id</code> value. In the case of <code>Other</code>, it is defined by the source.\n\noptional"]
23591    #[serde(rename = "cpu_architecture")]
23592    #[serde(skip_serializing_if = "Option::is_none")]
23593    pub cpu_architecture: Option<String>,
23594    #[doc = "CPU Architecture ID\n\nThe normalized identifier of the CPU architecture.\n\noptional"]
23595    #[serde(rename = "cpu_architecture_id")]
23596    #[serde(skip_serializing_if = "Option::is_none")]
23597    pub cpu_architecture_id: Option<i64>,
23598    #[doc = "CPU Bits\n\nThe cpu architecture, the number of bits used for addressing in memory. For example: <code>32</code> or <code>64</code>.\n\noptional"]
23599    #[serde(rename = "cpu_bits")]
23600    #[serde(skip_serializing_if = "Option::is_none")]
23601    pub cpu_bits: Option<i64>,
23602    #[doc = "CPU Cores\n\nThe number of processor cores in all installed processors. For Example: <code>42</code>.\n\noptional"]
23603    #[serde(rename = "cpu_cores")]
23604    #[serde(skip_serializing_if = "Option::is_none")]
23605    pub cpu_cores: Option<i64>,
23606    #[doc = "CPU Count\n\nThe number of physical processors on a system. For example: <code>1</code>.\n\noptional"]
23607    #[serde(rename = "cpu_count")]
23608    #[serde(skip_serializing_if = "Option::is_none")]
23609    pub cpu_count: Option<i64>,
23610    #[doc = "Processor Speed\n\nThe speed of the processor in Mhz. For Example: <code>4200</code>.\n\noptional"]
23611    #[serde(rename = "cpu_speed")]
23612    #[serde(skip_serializing_if = "Option::is_none")]
23613    pub cpu_speed: Option<i64>,
23614    #[doc = "Processor Type\n\nThe processor type. For example: <code>x86 Family 6 Model 37 Stepping 5</code>.\n\noptional"]
23615    #[serde(rename = "cpu_type")]
23616    #[serde(skip_serializing_if = "Option::is_none")]
23617    pub cpu_type: Option<String>,
23618    #[doc = "Desktop Display\n\nThe desktop display affiliated with the event\n\noptional"]
23619    #[serde(rename = "desktop_display")]
23620    #[serde(skip_serializing_if = "Option::is_none")]
23621    pub desktop_display: Option<Box<Display>>,
23622    #[doc = "Keyboard Information\n\nThe keyboard detailed information.\n\noptional"]
23623    #[serde(rename = "keyboard_info")]
23624    #[serde(skip_serializing_if = "Option::is_none")]
23625    pub keyboard_info: Option<Box<KeyboardInfo>>,
23626    #[doc = "RAM Size\n\nThe total amount of installed RAM, in Megabytes. For example: <code>2048</code>.\n\noptional"]
23627    #[serde(rename = "ram_size")]
23628    #[serde(skip_serializing_if = "Option::is_none")]
23629    pub ram_size: Option<i64>,
23630    #[doc = "Serial Number\n\nThe device manufacturer serial number.\n\noptional"]
23631    #[serde(rename = "serial_number")]
23632    #[serde(skip_serializing_if = "Option::is_none")]
23633    pub serial_number: Option<String>,
23634    #[doc = "UUID\n\nThe device manufacturer assigned universally unique hardware identifier. For SMBIOS compatible devices such as those running Linux and Windows, it is the UUID member of the System Information structure in the SMBIOS information. For macOS devices, it is the Hardware UUID (also known as IOPlatformUUID in the I/O Registry).\n\noptional"]
23635    #[serde(rename = "uuid")]
23636    #[serde(skip_serializing_if = "Option::is_none")]
23637    pub uuid: Option<String>,
23638    #[doc = "Vendor Name\n\nThe device manufacturer.\n\noptional"]
23639    #[serde(rename = "vendor_name")]
23640    #[serde(skip_serializing_if = "Option::is_none")]
23641    pub vendor_name: Option<String>,
23642}
23643#[doc = "Digital Signature\n\nThe Digital Signature object contains information about the cryptographic mechanism used to verify the authenticity, integrity, and origin of the file or application.\n\n[] Category:  | Name: digital_signature"]
23644#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23645#[serde(default)]
23646#[non_exhaustive]
23647pub struct DigitalSignature {
23648    #[doc = "Algorithm\n\nThe digital signature algorithm used to create the signature, normalized to the caption of 'algorithm_id'. In the case of 'Other', it is defined by the event source.\n\noptional"]
23649    #[serde(rename = "algorithm")]
23650    #[serde(skip_serializing_if = "Option::is_none")]
23651    pub algorithm: Option<String>,
23652    #[doc = "Algorithm ID\n\nThe identifier of the normalized digital signature algorithm.\n\nrequired"]
23653    #[serde(rename = "algorithm_id")]
23654    #[serde(skip_serializing_if = "Option::is_none")]
23655    pub algorithm_id: Option<i64>,
23656    #[doc = "Certificate\n\nThe certificate object containing information about the digital certificate.\n\nrecommended"]
23657    #[serde(rename = "certificate")]
23658    #[serde(skip_serializing_if = "Option::is_none")]
23659    pub certificate: Option<Box<Certificate>>,
23660    #[doc = "Created Time\n\nThe time when the digital signature was created.\n\noptional"]
23661    #[serde(rename = "created_time")]
23662    #[serde(skip_serializing_if = "Option::is_none")]
23663    pub created_time: Option<i64>,
23664    #[doc = "Created Time\n\nThe time when the digital signature was created.\n\noptional"]
23665    #[serde(rename = "created_time_dt")]
23666    #[serde(skip_serializing_if = "Option::is_none")]
23667    pub created_time_dt: Option<String>,
23668    #[doc = "Developer UID\n\nThe developer ID on the certificate that signed the file.\n\noptional"]
23669    #[serde(rename = "developer_uid")]
23670    #[serde(skip_serializing_if = "Option::is_none")]
23671    pub developer_uid: Option<String>,
23672    #[doc = "Message Digest\n\nThe message digest attribute contains the fixed length message hash representation and the corresponding hashing algorithm information.\n\noptional"]
23673    #[serde(rename = "digest")]
23674    #[serde(skip_serializing_if = "Option::is_none")]
23675    pub digest: Option<Box<Fingerprint>>,
23676    #[doc = "State\n\nThe digital signature state defines the signature state, normalized to the caption of 'state_id'. In the case of 'Other', it is defined by the event source.\n\noptional"]
23677    #[serde(rename = "state")]
23678    #[serde(skip_serializing_if = "Option::is_none")]
23679    pub state: Option<String>,
23680    #[doc = "State ID\n\nThe normalized identifier of the signature state.\n\noptional"]
23681    #[serde(rename = "state_id")]
23682    #[serde(skip_serializing_if = "Option::is_none")]
23683    pub state_id: Option<i64>,
23684}
23685#[doc = "Discovery Details\n\nThe Discovery Details object describes results of a discovery task/job.\n\n[] Category:  | Name: discovery_details"]
23686#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23687#[serde(default)]
23688#[non_exhaustive]
23689pub struct DiscoveryDetails {
23690    #[doc = "Count\n\nThe number of discovered entities of the specified type.\n\nrecommended"]
23691    #[serde(rename = "count")]
23692    #[serde(skip_serializing_if = "Option::is_none")]
23693    pub count: Option<i64>,
23694    #[doc = "Occurrence Details\n\nDetails about where in the target entity, specified information was discovered. Only the attributes, relevant to the target entity type should be populated.\n\noptional"]
23695    #[serde(rename = "occurrence_details")]
23696    #[serde(skip_serializing_if = "Option::is_none")]
23697    pub occurrence_details: Option<Box<OccurrenceDetails>>,
23698    #[doc = "Occurrences\n\nDetails about where in the target entity, specified information was discovered. Only the attributes, relevant to the target entity type should be populated.\n\noptional"]
23699    #[serde(rename = "occurrences")]
23700    #[serde(skip_serializing_if = "Option::is_none")]
23701    pub occurrences: Option<Vec<OccurrenceDetails>>,
23702    #[doc = "Type\n\nThe specific type of information that was discovered. e.g.<code> name, phone_number, etc.</code>\n\nrecommended"]
23703    #[serde(rename = "type")]
23704    #[serde(skip_serializing_if = "Option::is_none")]
23705    pub r#type: Option<String>,
23706    #[doc = "Value\n\nOptionally, the specific value of discovered information.\n\noptional"]
23707    #[serde(rename = "value")]
23708    #[serde(skip_serializing_if = "Option::is_none")]
23709    pub value: Option<String>,
23710}
23711#[doc = "Display\n\nThe Display object contains information about the physical or virtual display connected to a computer system.\n\n[] Category:  | Name: display"]
23712#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23713#[serde(default)]
23714#[non_exhaustive]
23715pub struct Display {
23716    #[doc = "Color Depth\n\nThe numeric color depth.\n\noptional"]
23717    #[serde(rename = "color_depth")]
23718    #[serde(skip_serializing_if = "Option::is_none")]
23719    pub color_depth: Option<i64>,
23720    #[doc = "Physical Height\n\nThe numeric physical height of display.\n\noptional"]
23721    #[serde(rename = "physical_height")]
23722    #[serde(skip_serializing_if = "Option::is_none")]
23723    pub physical_height: Option<i64>,
23724    #[doc = "Physical Orientation\n\nThe numeric physical orientation of display.\n\noptional"]
23725    #[serde(rename = "physical_orientation")]
23726    #[serde(skip_serializing_if = "Option::is_none")]
23727    pub physical_orientation: Option<i64>,
23728    #[doc = "Physical Width\n\nThe numeric physical width of display.\n\noptional"]
23729    #[serde(rename = "physical_width")]
23730    #[serde(skip_serializing_if = "Option::is_none")]
23731    pub physical_width: Option<i64>,
23732    #[doc = "Scale Factor\n\nThe numeric scale factor of display.\n\noptional"]
23733    #[serde(rename = "scale_factor")]
23734    #[serde(skip_serializing_if = "Option::is_none")]
23735    pub scale_factor: Option<i64>,
23736}
23737#[doc = "DNS Answer\n\nThe DNS Answer object represents a specific response provided by the Domain Name System (DNS) when querying for information about a domain or performing a DNS operation. It encapsulates the relevant details and data returned by the DNS server in response to a query.\n\n[] Category:  | Name: dns_answer"]
23738#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23739#[serde(default)]
23740#[non_exhaustive]
23741pub struct DnsAnswer {
23742    #[doc = "Resource Record Class\n\nThe class of DNS data contained in this resource record. See <a target='_blank' href='https://www.rfc-editor.org/rfc/rfc1035.txt'>RFC1035</a>. For example: <code>IN</code>.\n\nrecommended"]
23743    #[serde(rename = "class")]
23744    #[serde(skip_serializing_if = "Option::is_none")]
23745    pub class: Option<String>,
23746    #[doc = "DNS Header Flags\n\nThe list of DNS answer header flag IDs.\n\nrecommended"]
23747    #[serde(rename = "flag_ids")]
23748    #[serde(skip_serializing_if = "Option::is_none")]
23749    pub flag_ids: Option<Vec<i64>>,
23750    #[doc = "DNS Header Flags\n\nThe list of DNS answer header flags.\n\noptional"]
23751    #[serde(rename = "flags")]
23752    #[serde(skip_serializing_if = "Option::is_none")]
23753    pub flags: Option<Vec<String>>,
23754    #[doc = "Packet UID\n\nThe DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response.\n\nrecommended"]
23755    #[serde(rename = "packet_uid")]
23756    #[serde(skip_serializing_if = "Option::is_none")]
23757    pub packet_uid: Option<i64>,
23758    #[doc = "DNS RData\n\nThe data describing the DNS resource. The meaning of this data depends on the type and class of the resource record.\n\nrequired"]
23759    #[serde(rename = "rdata")]
23760    #[serde(skip_serializing_if = "Option::is_none")]
23761    pub rdata: Option<String>,
23762    #[doc = "TTL\n\nThe time interval that the resource record may be cached. Zero value means that the resource record can only be used for the transaction in progress, and should not be cached.\n\nrecommended"]
23763    #[serde(rename = "ttl")]
23764    #[serde(skip_serializing_if = "Option::is_none")]
23765    pub ttl: Option<i64>,
23766    #[doc = "Resource Record Type\n\nThe type of data contained in this resource record. See <a target='_blank' href='https://www.rfc-editor.org/rfc/rfc1035.txt'>RFC1035</a>. For example: <code>CNAME</code>.\n\nrecommended"]
23767    #[serde(rename = "type")]
23768    #[serde(skip_serializing_if = "Option::is_none")]
23769    pub r#type: Option<String>,
23770}
23771#[doc = "DNS Query\n\nThe DNS query object represents a specific request made to the Domain Name System (DNS) to retrieve information about a domain or perform a DNS operation. This object encapsulates the necessary attributes and methods to construct and send DNS queries, specify the query type (e.g., A, AAAA, MX).\n\n[] Category:  | Name: dns_query"]
23772#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23773#[serde(default)]
23774#[non_exhaustive]
23775pub struct DnsQuery {
23776    #[doc = "Resource Record Class\n\nThe class of resource records being queried. See <a target='_blank' href='https://www.rfc-editor.org/rfc/rfc1035.txt'>RFC1035</a>. For example: <code>IN</code>.\n\nrecommended"]
23777    #[serde(rename = "class")]
23778    #[serde(skip_serializing_if = "Option::is_none")]
23779    pub class: Option<String>,
23780    #[doc = "Hostname\n\nThe hostname or domain being queried. For example: <code>www.example.com</code>\n\nrequired"]
23781    #[serde(rename = "hostname")]
23782    #[serde(skip_serializing_if = "Option::is_none")]
23783    pub hostname: Option<String>,
23784    #[doc = "DNS Opcode\n\nThe DNS opcode specifies the type of the query message.\n\noptional"]
23785    #[serde(rename = "opcode")]
23786    #[serde(skip_serializing_if = "Option::is_none")]
23787    pub opcode: Option<String>,
23788    #[doc = "DNS Opcode ID\n\nThe DNS opcode ID specifies the normalized query message type as defined in <a target='_blank' href='https://www.rfc-editor.org/rfc/rfc5395.html'>RFC-5395</a>.\n\nrecommended"]
23789    #[serde(rename = "opcode_id")]
23790    #[serde(skip_serializing_if = "Option::is_none")]
23791    pub opcode_id: Option<i64>,
23792    #[doc = "Packet UID\n\nThe DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response.\n\nrecommended"]
23793    #[serde(rename = "packet_uid")]
23794    #[serde(skip_serializing_if = "Option::is_none")]
23795    pub packet_uid: Option<i64>,
23796    #[doc = "Resource Record Type\n\nThe type of resource records being queried. See <a target='_blank' href='https://www.rfc-editor.org/rfc/rfc1035.txt'>RFC1035</a>. For example: A, AAAA, CNAME, MX, and NS.\n\nrecommended"]
23797    #[serde(rename = "type")]
23798    #[serde(skip_serializing_if = "Option::is_none")]
23799    pub r#type: Option<String>,
23800}
23801#[doc = "Domain Contact\n\nThe contact information related to a domain registration, e.g., registrant, administrator, abuse, billing, or technical contact.\n\n[] Category:  | Name: domain_contact"]
23802#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23803#[serde(default)]
23804#[non_exhaustive]
23805pub struct DomainContact {
23806    #[doc = "Contact Email\n\nThe user's primary email address.\n\nrecommended"]
23807    #[serde(rename = "email_addr")]
23808    #[serde(skip_serializing_if = "Option::is_none")]
23809    pub email_addr: Option<String>,
23810    #[doc = "Contact Location Information\n\nLocation details for the contract such as the city, state/province, country, etc.\n\nrecommended"]
23811    #[serde(rename = "location")]
23812    #[serde(skip_serializing_if = "Option::is_none")]
23813    pub location: Option<Box<Location>>,
23814    #[doc = "Name\n\nThe individual or organization name for the contact.\n\noptional"]
23815    #[serde(rename = "name")]
23816    #[serde(skip_serializing_if = "Option::is_none")]
23817    pub name: Option<String>,
23818    #[doc = "Phone Number\n\nThe number associated with the phone.\n\noptional"]
23819    #[serde(rename = "phone_number")]
23820    #[serde(skip_serializing_if = "Option::is_none")]
23821    pub phone_number: Option<String>,
23822    #[doc = "Domain Contact Type\n\nThe Domain Contact type, normalized to the caption of the <code>type_id</code> value. In the case of 'Other', it is defined by the source\n\noptional"]
23823    #[serde(rename = "type")]
23824    #[serde(skip_serializing_if = "Option::is_none")]
23825    pub r#type: Option<String>,
23826    #[doc = "Domain Contact Type ID\n\nThe normalized domain contact type ID.\n\nrequired"]
23827    #[serde(rename = "type_id")]
23828    #[serde(skip_serializing_if = "Option::is_none")]
23829    pub type_id: Option<i64>,
23830    #[doc = "Unique ID\n\nThe unique identifier of the contact information, typically provided in WHOIS information.\n\noptional"]
23831    #[serde(rename = "uid")]
23832    #[serde(skip_serializing_if = "Option::is_none")]
23833    pub uid: Option<String>,
23834}
23835#[doc = "Edge\n\nRepresents a connection or relationship between two nodes in a graph.\n\n[] Category:  | Name: edge\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
23836#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23837#[serde(default)]
23838#[non_exhaustive]
23839pub struct Edge {
23840    #[doc = "Data\n\nAdditional data about the edge such as weight, distance, or custom properties.\n\noptional"]
23841    #[serde(rename = "data")]
23842    #[serde(skip_serializing_if = "Option::is_none")]
23843    pub data: Option<serde_json::Value>,
23844    #[doc = "Directed\n\nIndicates whether the edge is (<code>true</code>) or undirected (<code>false</code>).\n\noptional"]
23845    #[serde(rename = "is_directed")]
23846    #[serde(skip_serializing_if = "Option::is_none")]
23847    pub is_directed: Option<bool>,
23848    #[doc = "Name\n\nThe human-readable name or label for the edge.\n\nrecommended"]
23849    #[serde(rename = "name")]
23850    #[serde(skip_serializing_if = "Option::is_none")]
23851    pub name: Option<String>,
23852    #[doc = "Relation\n\nThe type of relationship between nodes (e.g. is-attached-to , depends-on, etc).\n\nrecommended"]
23853    #[serde(rename = "relation")]
23854    #[serde(skip_serializing_if = "Option::is_none")]
23855    pub relation: Option<String>,
23856    #[doc = "Source\n\nThe unique identifier of the node where the edge originates.\n\nrequired"]
23857    #[serde(rename = "source")]
23858    #[serde(skip_serializing_if = "Option::is_none")]
23859    pub source: Option<String>,
23860    #[doc = "Target\n\nThe unique identifier of the node where the edge terminates.\n\nrequired"]
23861    #[serde(rename = "target")]
23862    #[serde(skip_serializing_if = "Option::is_none")]
23863    pub target: Option<String>,
23864    #[doc = "Unique ID\n\nUnique identifier of the edge.\n\nrecommended"]
23865    #[serde(rename = "uid")]
23866    #[serde(skip_serializing_if = "Option::is_none")]
23867    pub uid: Option<String>,
23868}
23869#[doc = "Email\n\nThe Email object describes the email metadata such as sender, recipients, and direction, and can include embedded URLs and files.\n\n[] Category:  | Name: email\n\n**Constraints:**\n* at_least_one: `[from`,`to]`\n"]
23870#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23871#[serde(default)]
23872#[non_exhaustive]
23873pub struct Email {
23874    #[doc = "Cc\n\nThe machine-readable email header Cc values, as defined by RFC 5322. For example <code>example.user@usersdomain.com</code>.\n\noptional"]
23875    #[serde(rename = "cc")]
23876    #[serde(skip_serializing_if = "Option::is_none")]
23877    pub cc: Option<Vec<String>>,
23878    #[doc = "Cc Mailboxes\n\nThe human-readable email header Cc Mailbox values. For example <code>'Example User &lt;example.user@usersdomain.com&gt;'</code>.\n\noptional"]
23879    #[serde(rename = "cc_mailboxes")]
23880    #[serde(skip_serializing_if = "Option::is_none")]
23881    pub cc_mailboxes: Option<Vec<String>>,
23882    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
23883    #[serde(rename = "data_classification")]
23884    #[serde(skip_serializing_if = "Option::is_none")]
23885    pub data_classification: Option<Box<DataClassification>>,
23886    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
23887    #[serde(rename = "data_classifications")]
23888    #[serde(skip_serializing_if = "Option::is_none")]
23889    pub data_classifications: Option<Vec<DataClassification>>,
23890    #[doc = "Delivered To\n\nThe machine-readable <strong>Delivered-To</strong> email header field. For example <code>example.user@usersdomain.com</code>\n\noptional"]
23891    #[serde(rename = "delivered_to")]
23892    #[serde(skip_serializing_if = "Option::is_none")]
23893    pub delivered_to: Option<String>,
23894    #[doc = "Delivered To List\n\nThe machine-readable <strong>Delivered-To</strong> email header values. For example <code>example.user@usersdomain.com</code>\n\noptional"]
23895    #[serde(rename = "delivered_to_list")]
23896    #[serde(skip_serializing_if = "Option::is_none")]
23897    pub delivered_to_list: Option<Vec<String>>,
23898    #[doc = "Files\n\nThe files embedded or attached to the email.\n\noptional"]
23899    #[serde(rename = "files")]
23900    #[serde(skip_serializing_if = "Option::is_none")]
23901    pub files: Option<Vec<File>>,
23902    #[doc = "From\n\nThe machine-readable email header From value, as defined by RFC 5322. For example <code>example.user@usersdomain.com</code>.\n\nrecommended"]
23903    #[serde(rename = "from")]
23904    #[serde(skip_serializing_if = "Option::is_none")]
23905    pub from: Option<String>,
23906    #[doc = "From List\n\nThe machine-readable email header From values. This array should contain the value in <code>from</code>. For example <code>example.user@usersdomain.com</code>.\n\noptional"]
23907    #[serde(rename = "from_list")]
23908    #[serde(skip_serializing_if = "Option::is_none")]
23909    pub from_list: Option<Vec<String>>,
23910    #[doc = "From Mailbox\n\nThe human-readable email header From Mailbox value. For example <code>'Example User &lt;example.user@usersdomain.com&gt;'</code>.\n\noptional"]
23911    #[serde(rename = "from_mailbox")]
23912    #[serde(skip_serializing_if = "Option::is_none")]
23913    pub from_mailbox: Option<String>,
23914    #[doc = "From Mailboxes\n\nThe human-readable email header From Mailbox values. This array should contain the value in <code>from_mailbox</code>. For example <code>'Example User &lt;example.user@usersdomain.com&gt;'</code>.\n\noptional"]
23915    #[serde(rename = "from_mailboxes")]
23916    #[serde(skip_serializing_if = "Option::is_none")]
23917    pub from_mailboxes: Option<Vec<String>>,
23918    #[doc = "HTTP Headers\n\nAdditional HTTP headers of an HTTP request or response.\n\noptional"]
23919    #[serde(rename = "http_headers")]
23920    #[serde(skip_serializing_if = "Option::is_none")]
23921    pub http_headers: Option<Vec<HttpHeader>>,
23922    #[doc = "Read\n\nThe indication of whether the email has been read.\n\noptional"]
23923    #[serde(rename = "is_read")]
23924    #[serde(skip_serializing_if = "Option::is_none")]
23925    pub is_read: Option<bool>,
23926    #[doc = "Message UID\n\nThe email header Message-ID value, as defined by RFC 5322.\n\nrecommended"]
23927    #[serde(rename = "message_uid")]
23928    #[serde(skip_serializing_if = "Option::is_none")]
23929    pub message_uid: Option<String>,
23930    #[doc = "Raw Header\n\nThe email authentication header.\n\noptional"]
23931    #[serde(rename = "raw_header")]
23932    #[serde(skip_serializing_if = "Option::is_none")]
23933    pub raw_header: Option<String>,
23934    #[doc = "Reply To\n\nThe machine-readable email header Reply-To value, as defined by RFC 5322. For example <code>example.user@usersdomain.com</code>\n\nrecommended"]
23935    #[serde(rename = "reply_to")]
23936    #[serde(skip_serializing_if = "Option::is_none")]
23937    pub reply_to: Option<String>,
23938    #[doc = "Reply To List\n\nThe machine-readable email header Reply-To values, as defined by RFC 5322. For example <code>example.user@usersdomain.com</code>\n\noptional"]
23939    #[serde(rename = "reply_to_list")]
23940    #[serde(skip_serializing_if = "Option::is_none")]
23941    pub reply_to_list: Option<Vec<String>>,
23942    #[doc = "Reply To Mailboxes\n\nThe human-readable email header Reply To Mailbox values. For example <code>'Example User &lt;example.user@usersdomain.com&gt;'</code>.\n\noptional"]
23943    #[serde(rename = "reply_to_mailboxes")]
23944    #[serde(skip_serializing_if = "Option::is_none")]
23945    pub reply_to_mailboxes: Option<Vec<String>>,
23946    #[doc = "Return Path\n\nThe address found in the 'Return-Path' header, which indicates where bounce messages (non-delivery reports) should be sent. This address is often set by the sending system and may differ from the 'From' or 'Sender' addresses. For example, <code>mailer-daemon@senderserver.com</code>.\n\noptional"]
23947    #[serde(rename = "return_path")]
23948    #[serde(skip_serializing_if = "Option::is_none")]
23949    pub return_path: Option<String>,
23950    #[doc = "Sender\n\nThe machine readable email address of the system or server that actually transmitted the email message, extracted from the email headers per RFC 5322. This differs from the <code>from</code> field, which shows the message author. The sender field is most commonly used when multiple addresses appear in the <code> from_list </code> field, or when the transmitting system is different from the message author (such as when sending on behalf of someone else).\n\noptional"]
23951    #[serde(rename = "sender")]
23952    #[serde(skip_serializing_if = "Option::is_none")]
23953    pub sender: Option<String>,
23954    #[doc = "Sender Mailbox\n\nThe human readable email address of the system or server that actually transmitted the email message, extracted from the email headers per RFC 5322. This differs from the <code>from_mailbox</code> field, which shows the message author. The sender mailbox field is most commonly used when multiple addresses appear in the <code> from_mailboxes </code> field, or when the transmitting system is different from the message author (such as when sending on behalf of someone else).\n\noptional"]
23955    #[serde(rename = "sender_mailbox")]
23956    #[serde(skip_serializing_if = "Option::is_none")]
23957    pub sender_mailbox: Option<String>,
23958    #[doc = "Size\n\nThe size in bytes of the email, including attachments.\n\nrecommended"]
23959    #[serde(rename = "size")]
23960    #[serde(skip_serializing_if = "Option::is_none")]
23961    pub size: Option<i64>,
23962    #[doc = "SMTP From\n\nThe value of the SMTP MAIL FROM command.\n\nrecommended"]
23963    #[serde(rename = "smtp_from")]
23964    #[serde(skip_serializing_if = "Option::is_none")]
23965    pub smtp_from: Option<String>,
23966    #[doc = "SMTP To\n\nThe value of the SMTP envelope RCPT TO command.\n\nrecommended"]
23967    #[serde(rename = "smtp_to")]
23968    #[serde(skip_serializing_if = "Option::is_none")]
23969    pub smtp_to: Option<Vec<String>>,
23970    #[doc = "Subject\n\nThe email header Subject value, as defined by RFC 5322.\n\nrecommended"]
23971    #[serde(rename = "subject")]
23972    #[serde(skip_serializing_if = "Option::is_none")]
23973    pub subject: Option<String>,
23974    #[doc = "To\n\nThe machine-readable email header To values, as defined by RFC 5322. For example <code>example.user@usersdomain.com</code>\n\nrecommended"]
23975    #[serde(rename = "to")]
23976    #[serde(skip_serializing_if = "Option::is_none")]
23977    pub to: Option<Vec<String>>,
23978    #[doc = "To Mailboxes\n\nThe human-readable email header To Mailbox values. For example <code>'Example User &lt;example.user@usersdomain.com&gt;'</code>.\n\noptional"]
23979    #[serde(rename = "to_mailboxes")]
23980    #[serde(skip_serializing_if = "Option::is_none")]
23981    pub to_mailboxes: Option<Vec<String>>,
23982    #[doc = "Email Thread UID\n\nThe unique identifier of the email thread.\n\nrecommended"]
23983    #[serde(rename = "uid")]
23984    #[serde(skip_serializing_if = "Option::is_none")]
23985    pub uid: Option<String>,
23986    #[doc = "URLs\n\nThe URLs embedded in the email.\n\noptional"]
23987    #[serde(rename = "urls")]
23988    #[serde(skip_serializing_if = "Option::is_none")]
23989    pub urls: Option<Vec<Url>>,
23990    #[doc = "X-Originating-IP\n\nThe X-Originating-IP header identifying the emails originating IP address(es).\n\noptional"]
23991    #[serde(rename = "x_originating_ip")]
23992    #[serde(skip_serializing_if = "Option::is_none")]
23993    pub x_originating_ip: Option<Vec<String>>,
23994}
23995#[doc = "Email Authentication\n\nThe Email Authentication object describes the Sender Policy Framework (SPF), DomainKeys Identified Mail (DKIM) and Domain-based Message Authentication, Reporting and Conformance (DMARC) attributes of an email.\n\n[] Category:  | Name: email_auth"]
23996#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
23997#[serde(default)]
23998#[non_exhaustive]
23999pub struct EmailAuth {
24000    #[doc = "DKIM Status\n\nThe DomainKeys Identified Mail (DKIM) status of the email.\n\nrecommended"]
24001    #[serde(rename = "dkim")]
24002    #[serde(skip_serializing_if = "Option::is_none")]
24003    pub dkim: Option<String>,
24004    #[doc = "DKIM Domain\n\nThe DomainKeys Identified Mail (DKIM) signing domain of the email.\n\nrecommended"]
24005    #[serde(rename = "dkim_domain")]
24006    #[serde(skip_serializing_if = "Option::is_none")]
24007    pub dkim_domain: Option<String>,
24008    #[doc = "DKIM Signature\n\nThe DomainKeys Identified Mail (DKIM) signature used by the sending/receiving system.\n\nrecommended"]
24009    #[serde(rename = "dkim_signature")]
24010    #[serde(skip_serializing_if = "Option::is_none")]
24011    pub dkim_signature: Option<String>,
24012    #[doc = "DMARC Status\n\nThe Domain-based Message Authentication, Reporting and Conformance (DMARC) status of the email.\n\nrecommended"]
24013    #[serde(rename = "dmarc")]
24014    #[serde(skip_serializing_if = "Option::is_none")]
24015    pub dmarc: Option<String>,
24016    #[doc = "DMARC Override\n\nThe Domain-based Message Authentication, Reporting and Conformance (DMARC) override action.\n\nrecommended"]
24017    #[serde(rename = "dmarc_override")]
24018    #[serde(skip_serializing_if = "Option::is_none")]
24019    pub dmarc_override: Option<String>,
24020    #[doc = "DMARC Policy\n\nThe Domain-based Message Authentication, Reporting and Conformance (DMARC) policy status.\n\nrecommended"]
24021    #[serde(rename = "dmarc_policy")]
24022    #[serde(skip_serializing_if = "Option::is_none")]
24023    pub dmarc_policy: Option<String>,
24024    #[doc = "SPF Status\n\nThe Sender Policy Framework (SPF) status of the email.\n\nrecommended"]
24025    #[serde(rename = "spf")]
24026    #[serde(skip_serializing_if = "Option::is_none")]
24027    pub spf: Option<String>,
24028}
24029#[doc = "Encryption Details\n\nDetails about the encryption methodology utilized.\n\n[] Category:  | Name: encryption_details"]
24030#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24031#[serde(default)]
24032#[non_exhaustive]
24033pub struct EncryptionDetails {
24034    #[doc = "Encryption Algorithm\n\nThe encryption algorithm used, normalized to the caption of 'algorithm_id\n\noptional"]
24035    #[serde(rename = "algorithm")]
24036    #[serde(skip_serializing_if = "Option::is_none")]
24037    pub algorithm: Option<String>,
24038    #[doc = "Encryption Algorithm ID\n\nThe encryption algorithm used.\n\nrecommended"]
24039    #[serde(rename = "algorithm_id")]
24040    #[serde(skip_serializing_if = "Option::is_none")]
24041    pub algorithm_id: Option<i64>,
24042    #[doc = "Encryption Key Length\n\nThe length of the encryption key used.\n\noptional"]
24043    #[serde(rename = "key_length")]
24044    #[serde(skip_serializing_if = "Option::is_none")]
24045    pub key_length: Option<i64>,
24046    #[doc = "Key UID\n\nThe unique identifier of the key used for encryption. For example, AWS KMS Key ARN.\n\noptional"]
24047    #[serde(rename = "key_uid")]
24048    #[serde(skip_serializing_if = "Option::is_none")]
24049    pub key_uid: Option<String>,
24050    #[doc = "Encryption Type\n\nThe type of the encryption used.\n\nrecommended"]
24051    #[serde(rename = "type")]
24052    #[serde(skip_serializing_if = "Option::is_none")]
24053    pub r#type: Option<String>,
24054}
24055#[doc = "Endpoint\n\nThe Endpoint object describes a physical or virtual device that connects to and exchanges information with a computer network. Some examples of endpoints are mobile devices, desktop computers, virtual machines, embedded devices, and servers. Internet-of-Things devices—like cameras, lighting, refrigerators, security systems, smart speakers, and thermostats—are also endpoints.\n\n[] Category:  | Name: endpoint\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
24056#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24057#[serde(default)]
24058#[non_exhaustive]
24059pub struct Endpoint {
24060    #[doc = "Agent List\n\nA list of <code>agent</code> objects associated with a device, endpoint, or resource.\n\noptional"]
24061    #[serde(rename = "agent_list")]
24062    #[serde(skip_serializing_if = "Option::is_none")]
24063    pub agent_list: Option<Vec<Agent>>,
24064    #[doc = "Container\n\nThe information describing an instance of a container. A container is a prepackaged, portable system image that runs isolated on an existing system using a container runtime like containerd.\n\nrecommended"]
24065    #[serde(rename = "container")]
24066    #[serde(skip_serializing_if = "Option::is_none")]
24067    pub container: Option<Box<Container>>,
24068    #[doc = "Domain\n\nThe name of the domain that the endpoint belongs to or that corresponds to the endpoint.\n\noptional"]
24069    #[serde(rename = "domain")]
24070    #[serde(skip_serializing_if = "Option::is_none")]
24071    pub domain: Option<String>,
24072    #[doc = "Hostname\n\nThe fully qualified name of the endpoint.\n\nrecommended"]
24073    #[serde(rename = "hostname")]
24074    #[serde(skip_serializing_if = "Option::is_none")]
24075    pub hostname: Option<String>,
24076    #[doc = "Hardware Info\n\nThe endpoint hardware information.\n\noptional"]
24077    #[serde(rename = "hw_info")]
24078    #[serde(skip_serializing_if = "Option::is_none")]
24079    pub hw_info: Option<Box<DeviceHwInfo>>,
24080    #[doc = "Instance ID\n\nThe unique identifier of a VM instance.\n\nrecommended"]
24081    #[serde(rename = "instance_uid")]
24082    #[serde(skip_serializing_if = "Option::is_none")]
24083    pub instance_uid: Option<String>,
24084    #[doc = "Network Interface Name\n\nThe name of the network interface (e.g. eth2).\n\nrecommended"]
24085    #[serde(rename = "interface_name")]
24086    #[serde(skip_serializing_if = "Option::is_none")]
24087    pub interface_name: Option<String>,
24088    #[doc = "Network Interface ID\n\nThe unique identifier of the network interface.\n\nrecommended"]
24089    #[serde(rename = "interface_uid")]
24090    #[serde(skip_serializing_if = "Option::is_none")]
24091    pub interface_uid: Option<String>,
24092    #[doc = "IP Address\n\nThe IP address of the endpoint, in either IPv4 or IPv6 format.\n\nrecommended"]
24093    #[serde(rename = "ip")]
24094    #[serde(skip_serializing_if = "Option::is_none")]
24095    pub ip: Option<String>,
24096    #[doc = "Geo Location\n\nThe geographical location of the endpoint.\n\noptional"]
24097    #[serde(rename = "location")]
24098    #[serde(skip_serializing_if = "Option::is_none")]
24099    pub location: Option<Box<Location>>,
24100    #[doc = "MAC Address\n\nThe Media Access Control (MAC) address of the endpoint.\n\noptional"]
24101    #[serde(rename = "mac")]
24102    #[serde(skip_serializing_if = "Option::is_none")]
24103    pub mac: Option<String>,
24104    #[doc = "Name\n\nThe short name of the endpoint.\n\nrecommended"]
24105    #[serde(rename = "name")]
24106    #[serde(skip_serializing_if = "Option::is_none")]
24107    pub name: Option<String>,
24108    #[doc = "Namespace PID\n\nIf running under a process namespace (such as in a container), the process identifier within that process namespace.\n\nrecommended"]
24109    #[serde(rename = "namespace_pid")]
24110    #[serde(skip_serializing_if = "Option::is_none")]
24111    pub namespace_pid: Option<i64>,
24112    #[doc = "OS\n\nThe endpoint operating system.\n\noptional"]
24113    #[serde(rename = "os")]
24114    #[serde(skip_serializing_if = "Option::is_none")]
24115    pub os: Option<Box<Os>>,
24116    #[doc = "Owner\n\nThe identity of the service or user account that owns the endpoint or was last logged into it.\n\nrecommended"]
24117    #[serde(rename = "owner")]
24118    #[serde(skip_serializing_if = "Option::is_none")]
24119    pub owner: Option<Box<User>>,
24120    #[doc = "Subnet UID\n\nThe unique identifier of a virtual subnet.\n\noptional"]
24121    #[serde(rename = "subnet_uid")]
24122    #[serde(skip_serializing_if = "Option::is_none")]
24123    pub subnet_uid: Option<String>,
24124    #[doc = "Type\n\nThe endpoint type. For example: <code>unknown</code>, <code>server</code>, <code>desktop</code>, <code>laptop</code>, <code>tablet</code>, <code>mobile</code>, <code>virtual</code>, <code>browser</code>, or <code>other</code>.\n\noptional"]
24125    #[serde(rename = "type")]
24126    #[serde(skip_serializing_if = "Option::is_none")]
24127    pub r#type: Option<String>,
24128    #[doc = "Type ID\n\nThe endpoint type ID.\n\nrecommended"]
24129    #[serde(rename = "type_id")]
24130    #[serde(skip_serializing_if = "Option::is_none")]
24131    pub type_id: Option<i64>,
24132    #[doc = "Unique ID\n\nThe unique identifier of the endpoint.\n\nrecommended"]
24133    #[serde(rename = "uid")]
24134    #[serde(skip_serializing_if = "Option::is_none")]
24135    pub uid: Option<String>,
24136    #[doc = "VLAN\n\nThe Virtual LAN identifier.\n\noptional"]
24137    #[serde(rename = "vlan_uid")]
24138    #[serde(skip_serializing_if = "Option::is_none")]
24139    pub vlan_uid: Option<String>,
24140    #[doc = "VPC UID\n\nThe unique identifier of the Virtual Private Cloud (VPC).\n\noptional"]
24141    #[serde(rename = "vpc_uid")]
24142    #[serde(skip_serializing_if = "Option::is_none")]
24143    pub vpc_uid: Option<String>,
24144    #[doc = "Network Zone\n\nThe network zone or LAN segment.\n\noptional"]
24145    #[serde(rename = "zone")]
24146    #[serde(skip_serializing_if = "Option::is_none")]
24147    pub zone: Option<String>,
24148}
24149#[doc = "Endpoint Connection\n\nThe Endpoint Connection object contains information detailing a connection attempt to an endpoint.\n\n[] Category:  | Name: endpoint_connection\n\n**Constraints:**\n* at_least_one: `[network_endpoint`,`code]`\n"]
24150#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24151#[serde(default)]
24152#[non_exhaustive]
24153pub struct EndpointConnection {
24154    #[doc = "Response Code\n\nA numerical response status code providing details about the connection.\n\nrecommended"]
24155    #[serde(rename = "code")]
24156    #[serde(skip_serializing_if = "Option::is_none")]
24157    pub code: Option<i64>,
24158    #[doc = "Network Endpoint\n\nProvides characteristics of the network endpoint.\n\nrecommended"]
24159    #[serde(rename = "network_endpoint")]
24160    #[serde(skip_serializing_if = "Option::is_none")]
24161    pub network_endpoint: Option<Box<NetworkEndpoint>>,
24162}
24163#[doc = "Enrichment\n\nThe Enrichment object provides inline enrichment data for specific attributes of interest within an event. It serves as a mechanism to enhance or supplement the information associated with the event by adding additional relevant details or context.\n\n[] Category:  | Name: enrichment"]
24164#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24165#[serde(default)]
24166#[non_exhaustive]
24167pub struct Enrichment {
24168    #[doc = "Created Time\n\nThe time when the enrichment data was generated.\n\nrecommended"]
24169    #[serde(rename = "created_time")]
24170    #[serde(skip_serializing_if = "Option::is_none")]
24171    pub created_time: Option<i64>,
24172    #[doc = "Created Time\n\nThe time when the enrichment data was generated.\n\noptional"]
24173    #[serde(rename = "created_time_dt")]
24174    #[serde(skip_serializing_if = "Option::is_none")]
24175    pub created_time_dt: Option<String>,
24176    #[doc = "Data\n\nThe enrichment data associated with the attribute and value. The meaning of this data depends on the type the enrichment record.\n\nrequired"]
24177    #[serde(rename = "data")]
24178    #[serde(skip_serializing_if = "Option::is_none")]
24179    pub data: Option<serde_json::Value>,
24180    #[doc = "Description\n\nA long description of the enrichment data.\n\noptional"]
24181    #[serde(rename = "desc")]
24182    #[serde(skip_serializing_if = "Option::is_none")]
24183    pub desc: Option<String>,
24184    #[doc = "Name\n\nThe name of the attribute to which the enriched data pertains.\n\nrequired"]
24185    #[serde(rename = "name")]
24186    #[serde(skip_serializing_if = "Option::is_none")]
24187    pub name: Option<String>,
24188    #[doc = "Provider\n\nThe enrichment data provider name.\n\nrecommended"]
24189    #[serde(rename = "provider")]
24190    #[serde(skip_serializing_if = "Option::is_none")]
24191    pub provider: Option<String>,
24192    #[doc = "Reputation Scores\n\nThe reputation of the enrichment data.\n\noptional"]
24193    #[serde(rename = "reputation")]
24194    #[serde(skip_serializing_if = "Option::is_none")]
24195    pub reputation: Option<Box<Reputation>>,
24196    #[doc = "Short Description\n\nA short description of the enrichment data.\n\nrecommended"]
24197    #[serde(rename = "short_desc")]
24198    #[serde(skip_serializing_if = "Option::is_none")]
24199    pub short_desc: Option<String>,
24200    #[doc = "Source URL\n\nThe URL of the source of the enrichment data.\n\nrecommended"]
24201    #[serde(rename = "src_url")]
24202    #[serde(skip_serializing_if = "Option::is_none")]
24203    pub src_url: Option<String>,
24204    #[doc = "Type\n\nThe enrichment type. For example: <code>location</code>.\n\nrecommended"]
24205    #[serde(rename = "type")]
24206    #[serde(skip_serializing_if = "Option::is_none")]
24207    pub r#type: Option<String>,
24208    #[doc = "Value\n\nThe value of the attribute to which the enriched data pertains.\n\nrequired"]
24209    #[serde(rename = "value")]
24210    #[serde(skip_serializing_if = "Option::is_none")]
24211    pub value: Option<String>,
24212}
24213#[doc = "Environment Variable\n\nAn environment variable.\n\n[] Category:  | Name: environment_variable"]
24214#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24215#[serde(default)]
24216#[non_exhaustive]
24217pub struct EnvironmentVariable {
24218    #[doc = "Name\n\nThe name of the environment variable.\n\nrequired"]
24219    #[serde(rename = "name")]
24220    #[serde(skip_serializing_if = "Option::is_none")]
24221    pub name: Option<String>,
24222    #[doc = "Value\n\nThe value of the environment variable.\n\nrequired"]
24223    #[serde(rename = "value")]
24224    #[serde(skip_serializing_if = "Option::is_none")]
24225    pub value: Option<String>,
24226}
24227#[doc = "EPSS\n\nThe Exploit Prediction Scoring System (EPSS) object describes the estimated probability a vulnerability will be exploited. EPSS is a community-driven effort to combine descriptive information about vulnerabilities (CVEs) with evidence of actual exploitation in-the-wild. (<a target='_blank' href='https://www.first.org/epss/'>EPSS</a>).\n\n[] Category:  | Name: epss"]
24228#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24229#[serde(default)]
24230#[non_exhaustive]
24231pub struct Epss {
24232    #[doc = "Created Time\n\nThe timestamp indicating when the EPSS score was calculated.\n\nrecommended"]
24233    #[serde(rename = "created_time")]
24234    #[serde(skip_serializing_if = "Option::is_none")]
24235    pub created_time: Option<i64>,
24236    #[doc = "Created Time\n\nThe timestamp indicating when the EPSS score was calculated.\n\noptional"]
24237    #[serde(rename = "created_time_dt")]
24238    #[serde(skip_serializing_if = "Option::is_none")]
24239    pub created_time_dt: Option<String>,
24240    #[doc = "EPSS Percentile\n\nThe EPSS score's percentile representing relative importance and ranking of the score in the larger EPSS dataset.\n\noptional"]
24241    #[serde(rename = "percentile")]
24242    #[serde(skip_serializing_if = "Option::is_none")]
24243    pub percentile: Option<f64>,
24244    #[doc = "EPPS Score\n\nThe EPSS score representing the probability [0-1] of exploitation in the wild in the next 30 days (following score publication).\n\nrequired"]
24245    #[serde(rename = "score")]
24246    #[serde(skip_serializing_if = "Option::is_none")]
24247    pub score: Option<String>,
24248    #[doc = "Version\n\nThe version of the EPSS model used to calculate the score.\n\nrecommended"]
24249    #[serde(rename = "version")]
24250    #[serde(skip_serializing_if = "Option::is_none")]
24251    pub version: Option<String>,
24252}
24253#[doc = "Windows Evidence Artifacts\n\nExtends the evidences object to add Windows specific fields\n\n[] Category:  | Name: evidences\n\n**Constraints:**\n* at_least_one: `[actor`,`api`,`connection_info`,`data`,`database`,`databucket`,`device`,`dst_endpoint`,`email`,`file`,`process`,`query`,`src_endpoint`,`url`,`user`,`job`,`script`,`reg_key`,`reg_value`,`win_service]`\n"]
24254#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24255#[serde(default)]
24256#[non_exhaustive]
24257pub struct Evidences {
24258    #[doc = "Actor\n\nDescribes details about the user/role/process that was the source of the activity that triggered the detection.\n\nrecommended"]
24259    #[serde(rename = "actor")]
24260    #[serde(skip_serializing_if = "Option::is_none")]
24261    pub actor: Option<Box<Actor>>,
24262    #[doc = "API Details\n\nDescribes details about the API call associated to the activity that triggered the detection.\n\nrecommended"]
24263    #[serde(rename = "api")]
24264    #[serde(skip_serializing_if = "Option::is_none")]
24265    pub api: Option<Box<Api>>,
24266    #[doc = "Connection Info\n\nDescribes details about the network connection associated to the activity that triggered the detection.\n\nrecommended"]
24267    #[serde(rename = "connection_info")]
24268    #[serde(skip_serializing_if = "Option::is_none")]
24269    pub connection_info: Option<Box<NetworkConnectionInfo>>,
24270    #[doc = "Container\n\nDescribes details about the container associated to the activity that triggered the detection.\n\nrecommended"]
24271    #[serde(rename = "container")]
24272    #[serde(skip_serializing_if = "Option::is_none")]
24273    pub container: Option<Box<Container>>,
24274    #[doc = "Data\n\nAdditional evidence data that is not accounted for in the specific evidence attributes.<code> Use only when absolutely necessary.</code>\n\noptional"]
24275    #[serde(rename = "data")]
24276    #[serde(skip_serializing_if = "Option::is_none")]
24277    pub data: Option<serde_json::Value>,
24278    #[doc = "Database\n\nDescribes details about the database associated to the activity that triggered the detection.\n\nrecommended"]
24279    #[serde(rename = "database")]
24280    #[serde(skip_serializing_if = "Option::is_none")]
24281    pub database: Option<Box<Database>>,
24282    #[doc = "Databucket\n\nDescribes details about the databucket associated to the activity that triggered the detection.\n\nrecommended"]
24283    #[serde(rename = "databucket")]
24284    #[serde(skip_serializing_if = "Option::is_none")]
24285    pub databucket: Option<Box<Databucket>>,
24286    #[doc = "Device\n\nAn addressable device, computer system or host associated to the activity that triggered the detection.\n\nrecommended"]
24287    #[serde(rename = "device")]
24288    #[serde(skip_serializing_if = "Option::is_none")]
24289    pub device: Option<Box<Device>>,
24290    #[doc = "Destination Endpoint\n\nDescribes details about the destination of the network activity that triggered the detection.\n\nrecommended"]
24291    #[serde(rename = "dst_endpoint")]
24292    #[serde(skip_serializing_if = "Option::is_none")]
24293    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
24294    #[doc = "Email\n\nThe email object associated to the activity that triggered the detection.\n\nrecommended"]
24295    #[serde(rename = "email")]
24296    #[serde(skip_serializing_if = "Option::is_none")]
24297    pub email: Option<Box<Email>>,
24298    #[doc = "File\n\nDescribes details about the file associated to the activity that triggered the detection.\n\nrecommended"]
24299    #[serde(rename = "file")]
24300    #[serde(skip_serializing_if = "Option::is_none")]
24301    pub file: Option<Box<File>>,
24302    #[doc = "HTTP Request\n\nDescribes details about the http request associated to the activity that triggered the detection.\n\nrecommended"]
24303    #[serde(rename = "http_request")]
24304    #[serde(skip_serializing_if = "Option::is_none")]
24305    pub http_request: Option<Box<HttpRequest>>,
24306    #[doc = "HTTP Response\n\nDescribes details about the http response associated to the activity that triggered the detection.\n\nrecommended"]
24307    #[serde(rename = "http_response")]
24308    #[serde(skip_serializing_if = "Option::is_none")]
24309    pub http_response: Option<Box<HttpResponse>>,
24310    #[doc = "JA4+ Fingerprints\n\nDescribes details about the JA4+ fingerprints that triggered the detection.\n\nrecommended"]
24311    #[serde(rename = "ja4_fingerprint_list")]
24312    #[serde(skip_serializing_if = "Option::is_none")]
24313    pub ja4_fingerprint_list: Option<Vec<Ja4Fingerprint>>,
24314    #[doc = "Job\n\nDescribes details about the scheduled job that was associated with the activity that triggered the detection.\n\nrecommended"]
24315    #[serde(rename = "job")]
24316    #[serde(skip_serializing_if = "Option::is_none")]
24317    pub job: Option<Box<Job>>,
24318    #[doc = "Name\n\nThe naming convention or type identifier of the evidence associated with the security detection. For example, the <code>@odata.type</code> from Microsoft Graph Alerts V2 or <code>display_name</code> from CrowdStrike Falcon Incident Behaviors.\n\noptional"]
24319    #[serde(rename = "name")]
24320    #[serde(skip_serializing_if = "Option::is_none")]
24321    pub name: Option<String>,
24322    #[doc = "Process\n\nDescribes details about the process associated to the activity that triggered the detection.\n\nrecommended"]
24323    #[serde(rename = "process")]
24324    #[serde(skip_serializing_if = "Option::is_none")]
24325    pub process: Option<Box<Process>>,
24326    #[doc = "DNS Query\n\nDescribes details about the DNS query associated to the activity that triggered the detection.\n\nrecommended"]
24327    #[serde(rename = "query")]
24328    #[serde(skip_serializing_if = "Option::is_none")]
24329    pub query: Option<Box<DnsQuery>>,
24330    #[doc = "Registry Key\n\nDescribes details about the registry key that triggered the detection.\n\nrecommended"]
24331    #[serde(rename = "reg_key")]
24332    #[serde(skip_serializing_if = "Option::is_none")]
24333    pub reg_key: Option<Box<WinRegKey>>,
24334    #[doc = "Registry Value\n\nDescribes details about the registry value that triggered the detection.\n\nrecommended"]
24335    #[serde(rename = "reg_value")]
24336    #[serde(skip_serializing_if = "Option::is_none")]
24337    pub reg_value: Option<Box<WinRegValue>>,
24338    #[doc = "Cloud Resources\n\nDescribes details about the cloud resources directly related to activity that triggered the detection. For resources impacted by the detection, use <code>Affected Resources</code> at the top-level of the finding.\n\nrecommended"]
24339    #[serde(rename = "resources")]
24340    #[serde(skip_serializing_if = "Option::is_none")]
24341    pub resources: Option<Vec<ResourceDetails>>,
24342    #[doc = "Script\n\nDescribes details about the script that was associated with the activity that triggered the detection.\n\nrecommended"]
24343    #[serde(rename = "script")]
24344    #[serde(skip_serializing_if = "Option::is_none")]
24345    pub script: Option<Box<Script>>,
24346    #[doc = "Source Endpoint\n\nDescribes details about the source of the network activity that triggered the detection.\n\nrecommended"]
24347    #[serde(rename = "src_endpoint")]
24348    #[serde(skip_serializing_if = "Option::is_none")]
24349    pub src_endpoint: Option<Box<NetworkEndpoint>>,
24350    #[doc = "TLS\n\nDescribes details about the Transport Layer Security (TLS) activity that triggered the detection.\n\nrecommended"]
24351    #[serde(rename = "tls")]
24352    #[serde(skip_serializing_if = "Option::is_none")]
24353    pub tls: Option<Box<Tls>>,
24354    #[doc = "Unique ID\n\nThe unique identifier of the evidence associated with the security detection. For example, the <code>activity_id</code> from CrowdStrike Falcon Alerts or <code>behavior_id</code> from CrowdStrike Falcon Incident Behaviors.\n\noptional"]
24355    #[serde(rename = "uid")]
24356    #[serde(skip_serializing_if = "Option::is_none")]
24357    pub uid: Option<String>,
24358    #[doc = "URL\n\nThe URL object that pertains to the event or object associated to the activity that triggered the detection.\n\nrecommended"]
24359    #[serde(rename = "url")]
24360    #[serde(skip_serializing_if = "Option::is_none")]
24361    pub url: Option<Box<Url>>,
24362    #[doc = "User\n\nDescribes details about the user that was the target or somehow else associated with the activity that triggered the detection.\n\nrecommended"]
24363    #[serde(rename = "user")]
24364    #[serde(skip_serializing_if = "Option::is_none")]
24365    pub user: Option<Box<User>>,
24366    #[doc = "Verdict\n\nThe normalized verdict of the evidence associated with the security detection. \n\noptional"]
24367    #[serde(rename = "verdict")]
24368    #[serde(skip_serializing_if = "Option::is_none")]
24369    pub verdict: Option<String>,
24370    #[doc = "Verdict ID\n\nThe normalized verdict (or status) ID of the evidence associated with the security detection. For example, Microsoft Graph Security Alerts contain a <code>verdict</code> enumeration for each type of <code>evidence</code> associated with the Alert. This is typically set by an automated investigation process or an analyst/investigator assigned to the finding.\n\noptional"]
24371    #[serde(rename = "verdict_id")]
24372    #[serde(skip_serializing_if = "Option::is_none")]
24373    pub verdict_id: Option<i64>,
24374    #[doc = "Windows Service\n\nDescribes details about the Windows service that triggered the detection.\n\nrecommended"]
24375    #[serde(rename = "win_service")]
24376    #[serde(skip_serializing_if = "Option::is_none")]
24377    pub win_service: Option<Box<WinWinService>>,
24378}
24379#[doc = "Schema Extension\n\nThe OCSF Schema Extension object provides detailed information about the schema extension used to construct the event. The schema extensions are registered in the <a target='_blank' href='https://github.com/ocsf/ocsf-schema/blob/main/extensions.md'>extensions.md</a> file.\n\n[] Category:  | Name: extension\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
24380#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24381#[serde(default)]
24382#[non_exhaustive]
24383pub struct Extension {
24384    #[doc = "Name\n\nThe schema extension name. For example: <code>dev</code>.\n\nrecommended"]
24385    #[serde(rename = "name")]
24386    #[serde(skip_serializing_if = "Option::is_none")]
24387    pub name: Option<String>,
24388    #[doc = "Unique ID\n\nThe schema extension unique identifier. For example: <code>999</code>.\n\nrecommended"]
24389    #[serde(rename = "uid")]
24390    #[serde(skip_serializing_if = "Option::is_none")]
24391    pub uid: Option<String>,
24392    #[doc = "Version\n\nThe schema extension version. For example: <code>1.0.0-alpha.2</code>.\n\nrequired"]
24393    #[serde(rename = "version")]
24394    #[serde(skip_serializing_if = "Option::is_none")]
24395    pub version: Option<String>,
24396}
24397#[doc = "Feature\n\nThe Feature object provides information about the software product feature that generated a specific event. It encompasses details related to the capabilities, components, user interface (UI) design, and performance upgrades associated with the feature.\n\n[] Category:  | Name: feature\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
24398#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24399#[serde(default)]
24400#[non_exhaustive]
24401pub struct Feature {
24402    #[doc = "Name\n\nThe name of the feature.\n\nrecommended"]
24403    #[serde(rename = "name")]
24404    #[serde(skip_serializing_if = "Option::is_none")]
24405    pub name: Option<String>,
24406    #[doc = "Unique ID\n\nThe unique identifier of the feature.\n\nrecommended"]
24407    #[serde(rename = "uid")]
24408    #[serde(skip_serializing_if = "Option::is_none")]
24409    pub uid: Option<String>,
24410    #[doc = "Version\n\nThe version of the feature.\n\nrecommended"]
24411    #[serde(rename = "version")]
24412    #[serde(skip_serializing_if = "Option::is_none")]
24413    pub version: Option<String>,
24414}
24415#[doc = "File\n\nThe File object represents the metadata associated with a file stored in a computer system. It encompasses information about the file itself, including its attributes, properties, and organizational details.\n\n[] Category:  | Name: file\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
24416#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24417#[serde(default)]
24418#[non_exhaustive]
24419pub struct File {
24420    #[doc = "Accessed Time\n\nThe time when the file was last accessed.\n\noptional"]
24421    #[serde(rename = "accessed_time")]
24422    #[serde(skip_serializing_if = "Option::is_none")]
24423    pub accessed_time: Option<i64>,
24424    #[doc = "Accessed Time\n\nThe time when the file was last accessed.\n\noptional"]
24425    #[serde(rename = "accessed_time_dt")]
24426    #[serde(skip_serializing_if = "Option::is_none")]
24427    pub accessed_time_dt: Option<String>,
24428    #[doc = "Accessor\n\nThe name of the user who last accessed the object.\n\noptional"]
24429    #[serde(rename = "accessor")]
24430    #[serde(skip_serializing_if = "Option::is_none")]
24431    pub accessor: Option<Box<User>>,
24432    #[doc = "Attributes\n\nThe bitmask value that represents the file attributes.\n\noptional"]
24433    #[serde(rename = "attributes")]
24434    #[serde(skip_serializing_if = "Option::is_none")]
24435    pub attributes: Option<i64>,
24436    #[doc = "Company Name\n\nThe name of the company that published the file. For example: <code>Microsoft Corporation</code>.\n\noptional"]
24437    #[serde(rename = "company_name")]
24438    #[serde(skip_serializing_if = "Option::is_none")]
24439    pub company_name: Option<String>,
24440    #[doc = "Confidentiality\n\nThe file content confidentiality, normalized to the confidentiality_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
24441    #[serde(rename = "confidentiality")]
24442    #[serde(skip_serializing_if = "Option::is_none")]
24443    pub confidentiality: Option<String>,
24444    #[doc = "Confidentiality ID\n\nThe normalized identifier of the file content confidentiality indicator.\n\noptional"]
24445    #[serde(rename = "confidentiality_id")]
24446    #[serde(skip_serializing_if = "Option::is_none")]
24447    pub confidentiality_id: Option<i64>,
24448    #[doc = "Created Time\n\nThe time when the file was created.\n\noptional"]
24449    #[serde(rename = "created_time")]
24450    #[serde(skip_serializing_if = "Option::is_none")]
24451    pub created_time: Option<i64>,
24452    #[doc = "Created Time\n\nThe time when the file was created.\n\noptional"]
24453    #[serde(rename = "created_time_dt")]
24454    #[serde(skip_serializing_if = "Option::is_none")]
24455    pub created_time_dt: Option<String>,
24456    #[doc = "Creator\n\nThe user that created the file.\n\noptional"]
24457    #[serde(rename = "creator")]
24458    #[serde(skip_serializing_if = "Option::is_none")]
24459    pub creator: Option<Box<User>>,
24460    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
24461    #[serde(rename = "data_classification")]
24462    #[serde(skip_serializing_if = "Option::is_none")]
24463    pub data_classification: Option<Box<DataClassification>>,
24464    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
24465    #[serde(rename = "data_classifications")]
24466    #[serde(skip_serializing_if = "Option::is_none")]
24467    pub data_classifications: Option<Vec<DataClassification>>,
24468    #[doc = "Description\n\nThe description of the file, as returned by file system. For example: the description as returned by the Unix file command or the Windows file type.\n\noptional"]
24469    #[serde(rename = "desc")]
24470    #[serde(skip_serializing_if = "Option::is_none")]
24471    pub desc: Option<String>,
24472    #[doc = "Drive Type\n\nThe drive type, normalized to the caption of the <code>drive_type_id</code> value. In the case of <code>Other</code>, it is defined by the source.\n\noptional"]
24473    #[serde(rename = "drive_type")]
24474    #[serde(skip_serializing_if = "Option::is_none")]
24475    pub drive_type: Option<String>,
24476    #[doc = "Drive Type ID\n\nIdentifies the type of a disk drive, i.e. fixed, removable, etc.\n\noptional"]
24477    #[serde(rename = "drive_type_id")]
24478    #[serde(skip_serializing_if = "Option::is_none")]
24479    pub drive_type_id: Option<i64>,
24480    #[doc = "Encryption Details\n\nThe encryption details of the file. Should be populated if the file is encrypted.\n\noptional"]
24481    #[serde(rename = "encryption_details")]
24482    #[serde(skip_serializing_if = "Option::is_none")]
24483    pub encryption_details: Option<Box<EncryptionDetails>>,
24484    #[doc = "File Extension\n\nThe extension of the file, excluding the leading dot. For example: <code>exe</code> from <code>svchost.exe</code>, or <code>gz</code> from <code>export.tar.gz</code>.\n\nrecommended"]
24485    #[serde(rename = "ext")]
24486    #[serde(skip_serializing_if = "Option::is_none")]
24487    pub ext: Option<String>,
24488    #[doc = "Hashes\n\nAn array of hash attributes.\n\nrecommended"]
24489    #[serde(rename = "hashes")]
24490    #[serde(skip_serializing_if = "Option::is_none")]
24491    pub hashes: Option<Vec<Fingerprint>>,
24492    #[doc = "Internal Name\n\nThe name of the file as identified within the file itself. This contrasts with the name by which the file is known on disk. Where available, the internal name is widely used by security practitioners and detection content because the on-disk file name is not reliable. On the Windows OS, most PE files contain a <a href=\"https://learn.microsoft.com/en-us/windows/win32/menurc/versioninfo-resource\">VERSIONINFO</a> resource from which the internal name can be obtained. On macOS, binaries can optionally embed a copy of the application's Info.plist file which in turn contains the name of the executable.\n\noptional"]
24493    #[serde(rename = "internal_name")]
24494    #[serde(skip_serializing_if = "Option::is_none")]
24495    pub internal_name: Option<String>,
24496    #[doc = "Deleted\n\nIndicates if the file was deleted from the filesystem.\n\noptional"]
24497    #[serde(rename = "is_deleted")]
24498    #[serde(skip_serializing_if = "Option::is_none")]
24499    pub is_deleted: Option<bool>,
24500    #[doc = "Encrypted\n\nIndicates if the file is encrypted.\n\noptional"]
24501    #[serde(rename = "is_encrypted")]
24502    #[serde(skip_serializing_if = "Option::is_none")]
24503    pub is_encrypted: Option<bool>,
24504    #[doc = "Public\n\nIndicates if the file is publicly accessible. For example in an object's public access in AWS S3\n\noptional"]
24505    #[serde(rename = "is_public")]
24506    #[serde(skip_serializing_if = "Option::is_none")]
24507    pub is_public: Option<bool>,
24508    #[doc = "Read-Only\n\nIndicates that the file cannot be modified.\n\noptional"]
24509    #[serde(rename = "is_readonly")]
24510    #[serde(skip_serializing_if = "Option::is_none")]
24511    pub is_readonly: Option<bool>,
24512    #[doc = "System\n\nThe indication of whether the object is part of the operating system.\n\noptional"]
24513    #[serde(rename = "is_system")]
24514    #[serde(skip_serializing_if = "Option::is_none")]
24515    pub is_system: Option<bool>,
24516    #[doc = "MIME type\n\nThe Multipurpose Internet Mail Extensions (MIME) type of the file, if applicable.\n\noptional"]
24517    #[serde(rename = "mime_type")]
24518    #[serde(skip_serializing_if = "Option::is_none")]
24519    pub mime_type: Option<String>,
24520    #[doc = "Modified Time\n\nThe time when the file was last modified.\n\noptional"]
24521    #[serde(rename = "modified_time")]
24522    #[serde(skip_serializing_if = "Option::is_none")]
24523    pub modified_time: Option<i64>,
24524    #[doc = "Modified Time\n\nThe time when the file was last modified.\n\noptional"]
24525    #[serde(rename = "modified_time_dt")]
24526    #[serde(skip_serializing_if = "Option::is_none")]
24527    pub modified_time_dt: Option<String>,
24528    #[doc = "Modifier\n\nThe user that last modified the file.\n\noptional"]
24529    #[serde(rename = "modifier")]
24530    #[serde(skip_serializing_if = "Option::is_none")]
24531    pub modifier: Option<Box<User>>,
24532    #[doc = "Name\n\nThe name of the file. For example: <code>svchost.exe</code>\n\nrequired"]
24533    #[serde(rename = "name")]
24534    #[serde(skip_serializing_if = "Option::is_none")]
24535    pub name: Option<String>,
24536    #[doc = "Owner\n\nThe user that owns the file/object.\n\noptional"]
24537    #[serde(rename = "owner")]
24538    #[serde(skip_serializing_if = "Option::is_none")]
24539    pub owner: Option<Box<User>>,
24540    #[doc = "Parent Folder\n\nThe parent folder in which the file resides. For example: <code>c:\\windows\\system32</code>\n\noptional"]
24541    #[serde(rename = "parent_folder")]
24542    #[serde(skip_serializing_if = "Option::is_none")]
24543    pub parent_folder: Option<String>,
24544    #[doc = "Path\n\nThe full path to the file. For example: <code>c:\\windows\\system32\\svchost.exe</code>.\n\nrecommended"]
24545    #[serde(rename = "path")]
24546    #[serde(skip_serializing_if = "Option::is_none")]
24547    pub path: Option<String>,
24548    #[doc = "Product\n\nThe product that created or installed the file.\n\noptional"]
24549    #[serde(rename = "product")]
24550    #[serde(skip_serializing_if = "Option::is_none")]
24551    pub product: Option<Box<Product>>,
24552    #[doc = "Security Descriptor\n\nThe object security descriptor.\n\noptional"]
24553    #[serde(rename = "security_descriptor")]
24554    #[serde(skip_serializing_if = "Option::is_none")]
24555    pub security_descriptor: Option<String>,
24556    #[doc = "Digital Signature\n\nThe digital signature of the file.\n\noptional"]
24557    #[serde(rename = "signature")]
24558    #[serde(skip_serializing_if = "Option::is_none")]
24559    pub signature: Option<Box<DigitalSignature>>,
24560    #[doc = "Digital Signatures\n\nA collection of <code>Digital Signature</code> objects.\n\noptional"]
24561    #[serde(rename = "signatures")]
24562    #[serde(skip_serializing_if = "Option::is_none")]
24563    pub signatures: Option<Vec<DigitalSignature>>,
24564    #[doc = "Size\n\nThe size of data, in bytes.\n\noptional"]
24565    #[serde(rename = "size")]
24566    #[serde(skip_serializing_if = "Option::is_none")]
24567    pub size: Option<i64>,
24568    #[doc = "Storage Class\n\nThe storage class of the file. For example in AWS S3: <code>STANDARD, STANDARD_IA, GLACIER</code>.\n\noptional"]
24569    #[serde(rename = "storage_class")]
24570    #[serde(skip_serializing_if = "Option::is_none")]
24571    pub storage_class: Option<String>,
24572    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the file.\n\noptional"]
24573    #[serde(rename = "tags")]
24574    #[serde(skip_serializing_if = "Option::is_none")]
24575    pub tags: Option<Vec<KeyValueObject>>,
24576    #[doc = "Type\n\nThe file type.\n\noptional"]
24577    #[serde(rename = "type")]
24578    #[serde(skip_serializing_if = "Option::is_none")]
24579    pub r#type: Option<String>,
24580    #[doc = "Type ID\n\nThe file type ID. Note the distinction between a <code>Regular File</code> and an <code>Executable File</code>. If the distinction is not known, or not indicated by the log, use <code>Regular File</code>. In this case, it should not be assumed that a Regular File is not executable.\n\nrequired"]
24581    #[serde(rename = "type_id")]
24582    #[serde(skip_serializing_if = "Option::is_none")]
24583    pub type_id: Option<i64>,
24584    #[doc = "Unique ID\n\nThe unique identifier of the file as defined by the storage system, such the file system file ID.\n\noptional"]
24585    #[serde(rename = "uid")]
24586    #[serde(skip_serializing_if = "Option::is_none")]
24587    pub uid: Option<String>,
24588    #[doc = "File URI\n\nThe file URI, such as those reporting by static analysis tools. E.g., <code>file:///C:/dev/sarif/sarif-tutorials/samples/Introduction/simple-example.js</code>\n\noptional"]
24589    #[serde(rename = "uri")]
24590    #[serde(skip_serializing_if = "Option::is_none")]
24591    pub uri: Option<String>,
24592    #[doc = "URL\n\nThe URL of the file, when applicable.\n\noptional"]
24593    #[serde(rename = "url")]
24594    #[serde(skip_serializing_if = "Option::is_none")]
24595    pub url: Option<Box<Url>>,
24596    #[doc = "Version\n\nThe file version. For example: <code>8.0.7601.17514</code>.\n\noptional"]
24597    #[serde(rename = "version")]
24598    #[serde(skip_serializing_if = "Option::is_none")]
24599    pub version: Option<String>,
24600    #[doc = "Volume\n\nThe volume on the storage device where the file is located.\n\noptional"]
24601    #[serde(rename = "volume")]
24602    #[serde(skip_serializing_if = "Option::is_none")]
24603    pub volume: Option<String>,
24604    #[doc = "Extended Attributes\n\nAn unordered collection of zero or more name/value pairs where each pair represents a file or folder extended attribute.</p>For example: Windows alternate data stream attributes (ADS stream name, ADS size, etc.), user-defined or application-defined attributes, ACL, owner, primary group, etc. Examples from DCS: </p><ul><li><strong>ads_name</strong></li><li><strong>ads_size</strong></li><li><strong>dacl</strong></li><li><strong>owner</strong></li><li><strong>primary_group</strong></li><li><strong>link_name</strong> - name of the link associated to the file.</li><li><strong>hard_link_count</strong> - the number of links that are associated to the file.</li></ul>\n\noptional"]
24605    #[serde(rename = "xattributes")]
24606    #[serde(skip_serializing_if = "Option::is_none")]
24607    pub xattributes: Option<serde_json::Value>,
24608}
24609#[doc = "Finding\n\nThe Finding object describes metadata related to a security finding generated by a security tool or system.\n\n[] Category:  | Name: finding"]
24610#[deprecated(note = "Use the new <code>finding_info</code> object. (Since 1.0.0)")]
24611#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24612#[serde(default)]
24613#[non_exhaustive]
24614pub struct Finding {
24615    #[doc = "Created Time\n\nThe time when the finding was created.\n\noptional"]
24616    #[serde(rename = "created_time")]
24617    #[serde(skip_serializing_if = "Option::is_none")]
24618    pub created_time: Option<i64>,
24619    #[doc = "Created Time\n\nThe time when the finding was created.\n\noptional"]
24620    #[serde(rename = "created_time_dt")]
24621    #[serde(skip_serializing_if = "Option::is_none")]
24622    pub created_time_dt: Option<String>,
24623    #[doc = "Description\n\nThe description of the reported finding.\n\noptional"]
24624    #[serde(rename = "desc")]
24625    #[serde(skip_serializing_if = "Option::is_none")]
24626    pub desc: Option<String>,
24627    #[doc = "First Seen\n\nThe time when the finding was first observed.\n\noptional"]
24628    #[serde(rename = "first_seen_time")]
24629    #[serde(skip_serializing_if = "Option::is_none")]
24630    pub first_seen_time: Option<i64>,
24631    #[doc = "First Seen\n\nThe time when the finding was first observed.\n\noptional"]
24632    #[serde(rename = "first_seen_time_dt")]
24633    #[serde(skip_serializing_if = "Option::is_none")]
24634    pub first_seen_time_dt: Option<String>,
24635    #[doc = "Last Seen\n\nThe time when the finding was most recently observed.\n\noptional"]
24636    #[serde(rename = "last_seen_time")]
24637    #[serde(skip_serializing_if = "Option::is_none")]
24638    pub last_seen_time: Option<i64>,
24639    #[doc = "Last Seen\n\nThe time when the finding was most recently observed.\n\noptional"]
24640    #[serde(rename = "last_seen_time_dt")]
24641    #[serde(skip_serializing_if = "Option::is_none")]
24642    pub last_seen_time_dt: Option<String>,
24643    #[doc = "Modified Time\n\nThe time when the finding was last modified.\n\noptional"]
24644    #[serde(rename = "modified_time")]
24645    #[serde(skip_serializing_if = "Option::is_none")]
24646    pub modified_time: Option<i64>,
24647    #[doc = "Modified Time\n\nThe time when the finding was last modified.\n\noptional"]
24648    #[serde(rename = "modified_time_dt")]
24649    #[serde(skip_serializing_if = "Option::is_none")]
24650    pub modified_time_dt: Option<String>,
24651    #[doc = "Product\n\nDetails about the product that reported the finding.\n\noptional"]
24652    #[serde(rename = "product")]
24653    #[serde(skip_serializing_if = "Option::is_none")]
24654    pub product: Option<Box<Product>>,
24655    #[doc = "Product Identifier\n\nThe unique identifier of the product that reported the finding.\n\noptional"]
24656    #[serde(rename = "product_uid")]
24657    #[serde(skip_serializing_if = "Option::is_none")]
24658    pub product_uid: Option<String>,
24659    #[doc = "Related Events/Findings\n\nDescribes events and/or other findings related to the finding as identified by the security product. Note that these events may or may not be in OCSF.\n\noptional"]
24660    #[serde(rename = "related_events")]
24661    #[serde(skip_serializing_if = "Option::is_none")]
24662    pub related_events: Option<Vec<RelatedEvent>>,
24663    #[doc = "Remediation Guidance\n\nDescribes the recommended remediation steps to address identified issue(s).\n\noptional"]
24664    #[serde(rename = "remediation")]
24665    #[serde(skip_serializing_if = "Option::is_none")]
24666    pub remediation: Option<Box<Remediation>>,
24667    #[doc = "Source URL\n\nThe URL pointing to the source of the finding.\n\noptional"]
24668    #[serde(rename = "src_url")]
24669    #[serde(skip_serializing_if = "Option::is_none")]
24670    pub src_url: Option<String>,
24671    #[doc = "Supporting Data\n\nAdditional data supporting a finding as provided by security tool\n\noptional"]
24672    #[serde(rename = "supporting_data")]
24673    #[serde(skip_serializing_if = "Option::is_none")]
24674    pub supporting_data: Option<serde_json::Value>,
24675    #[doc = "Title\n\nA title or a brief phrase summarizing the reported finding.\n\nrequired"]
24676    #[serde(rename = "title")]
24677    #[serde(skip_serializing_if = "Option::is_none")]
24678    pub title: Option<String>,
24679    #[doc = "Types\n\nOne or more types of the reported finding.\n\noptional"]
24680    #[serde(rename = "types")]
24681    #[serde(skip_serializing_if = "Option::is_none")]
24682    pub types: Option<Vec<String>>,
24683    #[doc = "Unique ID\n\nThe unique identifier of the reported finding.\n\nrequired"]
24684    #[serde(rename = "uid")]
24685    #[serde(skip_serializing_if = "Option::is_none")]
24686    pub uid: Option<String>,
24687}
24688#[doc = "Finding Information\n\nThe Finding Information object describes metadata related to a security finding generated by a security tool or system.\n\n[] Category:  | Name: finding_info"]
24689#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24690#[serde(default)]
24691#[non_exhaustive]
24692pub struct FindingInfo {
24693    #[doc = "Analytic\n\nThe analytic technique used to analyze and derive insights from the data or information that led to the finding or conclusion.\n\nrecommended"]
24694    #[serde(rename = "analytic")]
24695    #[serde(skip_serializing_if = "Option::is_none")]
24696    pub analytic: Option<Box<Analytic>>,
24697    #[doc = "Attack Graph\n\nAn Attack Graph describes possible routes an attacker could take through an environment. It describes relationships between resources and their findings, such as malware detections, vulnerabilities, misconfigurations, and other security actions.\n\noptional"]
24698    #[serde(rename = "attack_graph")]
24699    #[serde(skip_serializing_if = "Option::is_none")]
24700    pub attack_graph: Option<Box<Graph>>,
24701    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nThe <a target='_blank' href='https://attack.mitre.org'>MITRE ATT&CK®</a> technique and associated tactics related to the finding.\n\noptional"]
24702    #[serde(rename = "attacks")]
24703    #[serde(skip_serializing_if = "Option::is_none")]
24704    pub attacks: Option<Vec<Attack>>,
24705    #[doc = "Created Time\n\nThe time when the finding was created.\n\noptional"]
24706    #[serde(rename = "created_time")]
24707    #[serde(skip_serializing_if = "Option::is_none")]
24708    pub created_time: Option<i64>,
24709    #[doc = "Created Time\n\nThe time when the finding was created.\n\noptional"]
24710    #[serde(rename = "created_time_dt")]
24711    #[serde(skip_serializing_if = "Option::is_none")]
24712    pub created_time_dt: Option<String>,
24713    #[doc = "Data Sources\n\nA list of data sources utilized in generation of the finding.\n\noptional"]
24714    #[serde(rename = "data_sources")]
24715    #[serde(skip_serializing_if = "Option::is_none")]
24716    pub data_sources: Option<Vec<String>>,
24717    #[doc = "Description\n\nThe description of the reported finding.\n\noptional"]
24718    #[serde(rename = "desc")]
24719    #[serde(skip_serializing_if = "Option::is_none")]
24720    pub desc: Option<String>,
24721    #[doc = "First Seen\n\nThe time when the finding was first observed. e.g. The time when a vulnerability was first observed. <p>It can differ from the <code>created_time</code> timestamp, which reflects the time this finding was created.</p>\n\noptional"]
24722    #[serde(rename = "first_seen_time")]
24723    #[serde(skip_serializing_if = "Option::is_none")]
24724    pub first_seen_time: Option<i64>,
24725    #[doc = "First Seen\n\nThe time when the finding was first observed. e.g. The time when a vulnerability was first observed. <p>It can differ from the <code>created_time</code> timestamp, which reflects the time this finding was created.</p>\n\noptional"]
24726    #[serde(rename = "first_seen_time_dt")]
24727    #[serde(skip_serializing_if = "Option::is_none")]
24728    pub first_seen_time_dt: Option<String>,
24729    #[doc = "Kill Chain\n\nThe <a target='_blank' href='https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html'>Cyber Kill Chain®</a> provides a detailed description of each phase and its associated activities within the broader context of a cyber attack.\n\noptional"]
24730    #[serde(rename = "kill_chain")]
24731    #[serde(skip_serializing_if = "Option::is_none")]
24732    pub kill_chain: Option<Vec<KillChainPhase>>,
24733    #[doc = "Last Seen\n\nThe time when the finding was most recently observed. e.g. The time when a vulnerability was most recently observed. <p>It can differ from the <code>modified_time</code> timestamp, which reflects the time this finding was last modified.</p>\n\noptional"]
24734    #[serde(rename = "last_seen_time")]
24735    #[serde(skip_serializing_if = "Option::is_none")]
24736    pub last_seen_time: Option<i64>,
24737    #[doc = "Last Seen\n\nThe time when the finding was most recently observed. e.g. The time when a vulnerability was most recently observed. <p>It can differ from the <code>modified_time</code> timestamp, which reflects the time this finding was last modified.</p>\n\noptional"]
24738    #[serde(rename = "last_seen_time_dt")]
24739    #[serde(skip_serializing_if = "Option::is_none")]
24740    pub last_seen_time_dt: Option<String>,
24741    #[doc = "Modified Time\n\nThe time when the finding was last modified.\n\noptional"]
24742    #[serde(rename = "modified_time")]
24743    #[serde(skip_serializing_if = "Option::is_none")]
24744    pub modified_time: Option<i64>,
24745    #[doc = "Modified Time\n\nThe time when the finding was last modified.\n\noptional"]
24746    #[serde(rename = "modified_time_dt")]
24747    #[serde(skip_serializing_if = "Option::is_none")]
24748    pub modified_time_dt: Option<String>,
24749    #[doc = "Product\n\nDetails about the product that reported the finding.\n\noptional"]
24750    #[serde(rename = "product")]
24751    #[serde(skip_serializing_if = "Option::is_none")]
24752    pub product: Option<Box<Product>>,
24753    #[doc = "Product Identifier\n\nThe unique identifier of the product that reported the finding.\n\noptional"]
24754    #[serde(rename = "product_uid")]
24755    #[serde(skip_serializing_if = "Option::is_none")]
24756    pub product_uid: Option<String>,
24757    #[doc = "Related Analytics\n\nOther analytics related to this finding.\n\noptional"]
24758    #[serde(rename = "related_analytics")]
24759    #[serde(skip_serializing_if = "Option::is_none")]
24760    pub related_analytics: Option<Vec<Analytic>>,
24761    #[doc = "Related Events/Findings\n\nDescribes events and/or other findings related to the finding as identified by the security product. Note that these events may or may not be in OCSF.\n\noptional"]
24762    #[serde(rename = "related_events")]
24763    #[serde(skip_serializing_if = "Option::is_none")]
24764    pub related_events: Option<Vec<RelatedEvent>>,
24765    #[doc = "Related Events/Findings Count\n\nNumber of related events or findings.\n\noptional"]
24766    #[serde(rename = "related_events_count")]
24767    #[serde(skip_serializing_if = "Option::is_none")]
24768    pub related_events_count: Option<i64>,
24769    #[doc = "Source URL\n\nThe URL pointing to the source of the finding.\n\noptional"]
24770    #[serde(rename = "src_url")]
24771    #[serde(skip_serializing_if = "Option::is_none")]
24772    pub src_url: Option<String>,
24773    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated with the finding.\n\noptional"]
24774    #[serde(rename = "tags")]
24775    #[serde(skip_serializing_if = "Option::is_none")]
24776    pub tags: Option<Vec<KeyValueObject>>,
24777    #[doc = "Title\n\nA title or a brief phrase summarizing the reported finding.\n\nrecommended"]
24778    #[serde(rename = "title")]
24779    #[serde(skip_serializing_if = "Option::is_none")]
24780    pub title: Option<String>,
24781    #[doc = "Traits\n\nThe list of key traits or characteristics extracted from the finding.\n\noptional"]
24782    #[serde(rename = "traits")]
24783    #[serde(skip_serializing_if = "Option::is_none")]
24784    pub traits: Option<Vec<Trait>>,
24785    #[doc = "Types\n\nOne or more types of the reported finding.\n\noptional"]
24786    #[serde(rename = "types")]
24787    #[serde(skip_serializing_if = "Option::is_none")]
24788    pub types: Option<Vec<String>>,
24789    #[doc = "Unique ID\n\nThe unique identifier of the reported finding.\n\nrequired"]
24790    #[serde(rename = "uid")]
24791    #[serde(skip_serializing_if = "Option::is_none")]
24792    pub uid: Option<String>,
24793    #[doc = "Alternate ID\n\nThe alternative unique identifier of the reported finding.\n\noptional"]
24794    #[serde(rename = "uid_alt")]
24795    #[serde(skip_serializing_if = "Option::is_none")]
24796    pub uid_alt: Option<String>,
24797}
24798#[doc = "Fingerprint\n\nThe Fingerprint object provides detailed information about a digital fingerprint, which is a compact representation of data used to identify a longer piece of information, such as a public key or file content. It contains the algorithm and value of the fingerprint, enabling efficient and reliable identification of the associated data.\n\n[] Category:  | Name: fingerprint"]
24799#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24800#[serde(default)]
24801#[non_exhaustive]
24802pub struct Fingerprint {
24803    #[doc = "Algorithm\n\nThe hash algorithm used to create the digital fingerprint, normalized to the caption of <code>algorithm_id</code>. In the case of <code>Other</code>, it is defined by the event source.\n\noptional"]
24804    #[serde(rename = "algorithm")]
24805    #[serde(skip_serializing_if = "Option::is_none")]
24806    pub algorithm: Option<String>,
24807    #[doc = "Algorithm ID\n\nThe identifier of the normalized hash algorithm, which was used to create the digital fingerprint.\n\nrequired"]
24808    #[serde(rename = "algorithm_id")]
24809    #[serde(skip_serializing_if = "Option::is_none")]
24810    pub algorithm_id: Option<i64>,
24811    #[doc = "Value\n\nThe digital fingerprint value.\n\nrequired"]
24812    #[serde(rename = "value")]
24813    #[serde(skip_serializing_if = "Option::is_none")]
24814    pub value: Option<String>,
24815}
24816#[doc = "Firewall Rule\n\nThe Firewall Rule object represents a specific rule within a firewall policy or event. It contains information about a rule's configuration, properties, and associated actions that define how network traffic is handled by the firewall.\n\n[] Category:  | Name: firewall_rule\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
24817#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24818#[serde(default)]
24819#[non_exhaustive]
24820pub struct FirewallRule {
24821    #[doc = "Category\n\nThe rule category.\n\noptional"]
24822    #[serde(rename = "category")]
24823    #[serde(skip_serializing_if = "Option::is_none")]
24824    pub category: Option<String>,
24825    #[doc = "Condition\n\nThe rule trigger condition for the rule. For example: SQL_INJECTION.\n\noptional"]
24826    #[serde(rename = "condition")]
24827    #[serde(skip_serializing_if = "Option::is_none")]
24828    pub condition: Option<String>,
24829    #[doc = "Description\n\nThe description of the rule that generated the event.\n\noptional"]
24830    #[serde(rename = "desc")]
24831    #[serde(skip_serializing_if = "Option::is_none")]
24832    pub desc: Option<String>,
24833    #[doc = "Duration Milliseconds\n\nThe rule response time duration, usually used for challenge completion time.\n\noptional"]
24834    #[serde(rename = "duration")]
24835    #[serde(skip_serializing_if = "Option::is_none")]
24836    pub duration: Option<i64>,
24837    #[doc = "Match Details\n\nThe data in a request that rule matched. For example: '[\"10\",\"and\",\"1\"]'.\n\noptional"]
24838    #[serde(rename = "match_details")]
24839    #[serde(skip_serializing_if = "Option::is_none")]
24840    pub match_details: Option<Vec<String>>,
24841    #[doc = "Match Location\n\nThe location of the matched data in the source which resulted in the triggered firewall rule. For example: HEADER.\n\noptional"]
24842    #[serde(rename = "match_location")]
24843    #[serde(skip_serializing_if = "Option::is_none")]
24844    pub match_location: Option<String>,
24845    #[doc = "Name\n\nThe name of the rule that generated the event.\n\nrecommended"]
24846    #[serde(rename = "name")]
24847    #[serde(skip_serializing_if = "Option::is_none")]
24848    pub name: Option<String>,
24849    #[doc = "Rate Limit\n\nThe rate limit for a rate-based rule.\n\noptional"]
24850    #[serde(rename = "rate_limit")]
24851    #[serde(skip_serializing_if = "Option::is_none")]
24852    pub rate_limit: Option<i64>,
24853    #[doc = "Sensitivity\n\nThe sensitivity of the firewall rule in the matched event. For example: HIGH.\n\noptional"]
24854    #[serde(rename = "sensitivity")]
24855    #[serde(skip_serializing_if = "Option::is_none")]
24856    pub sensitivity: Option<String>,
24857    #[doc = "Type\n\nThe rule type.\n\noptional"]
24858    #[serde(rename = "type")]
24859    #[serde(skip_serializing_if = "Option::is_none")]
24860    pub r#type: Option<String>,
24861    #[doc = "Unique ID\n\nThe unique identifier of the rule that generated the event.\n\nrecommended"]
24862    #[serde(rename = "uid")]
24863    #[serde(skip_serializing_if = "Option::is_none")]
24864    pub uid: Option<String>,
24865    #[doc = "Version\n\nThe rule version. For example: <code>1.1</code>.\n\noptional"]
24866    #[serde(rename = "version")]
24867    #[serde(skip_serializing_if = "Option::is_none")]
24868    pub version: Option<String>,
24869}
24870#[doc = "Function Invocation\n\nThe Function Invocation object provides details regarding the invocation of a function.\n\n[] Category:  | Name: function_invocation\n\n**Constraints:**\n* at_least_one: `[parameters`,`return_value`,`error]`\n"]
24871#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24872#[serde(default)]
24873#[non_exhaustive]
24874pub struct FunctionInvocation {
24875    #[doc = "Error Code\n\nThe error indication returned from the function. This may differ from the return value (e.g. when <code>errno</code> is used).\n\noptional"]
24876    #[serde(rename = "error")]
24877    #[serde(skip_serializing_if = "Option::is_none")]
24878    pub error: Option<String>,
24879    #[doc = "Parameters\n\nThe parameters passed into a function invocation.\n\noptional"]
24880    #[serde(rename = "parameters")]
24881    #[serde(skip_serializing_if = "Option::is_none")]
24882    pub parameters: Option<Vec<Parameter>>,
24883    #[doc = "Return Value\n\nThe value returned from a function.\n\noptional"]
24884    #[serde(rename = "return_value")]
24885    #[serde(skip_serializing_if = "Option::is_none")]
24886    pub return_value: Option<String>,
24887}
24888#[doc = "Graph\n\nA graph data structure representation with nodes and edges.\n\n[] Category:  | Name: graph\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
24889#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24890#[serde(default)]
24891#[non_exhaustive]
24892pub struct Graph {
24893    #[doc = "Description\n\nThe graph description - provides additional details about the graph's purpose and contents.\n\noptional"]
24894    #[serde(rename = "desc")]
24895    #[serde(skip_serializing_if = "Option::is_none")]
24896    pub desc: Option<String>,
24897    #[doc = "Edges\n\nThe edges/connections between nodes in the graph - contains the collection of <code>edge</code> objects defining relationships between nodes.\n\noptional"]
24898    #[serde(rename = "edges")]
24899    #[serde(skip_serializing_if = "Option::is_none")]
24900    pub edges: Option<Vec<Edge>>,
24901    #[doc = "Directed\n\nIndicates if the graph is directed (<code>true</code>) or undirected (<code>false</code>).\n\noptional"]
24902    #[serde(rename = "is_directed")]
24903    #[serde(skip_serializing_if = "Option::is_none")]
24904    pub is_directed: Option<bool>,
24905    #[doc = "Name\n\nThe graph name - a human readable identifier for the graph.\n\nrecommended"]
24906    #[serde(rename = "name")]
24907    #[serde(skip_serializing_if = "Option::is_none")]
24908    pub name: Option<String>,
24909    #[doc = "Nodes\n\nThe nodes/vertices of the graph - contains the collection of <code>node</code> objects that make up the graph.\n\nrequired"]
24910    #[serde(rename = "nodes")]
24911    #[serde(skip_serializing_if = "Option::is_none")]
24912    pub nodes: Option<Vec<Node>>,
24913    #[doc = "Query Language\n\nThe graph query language, normalized to the caption of the <code>query_language_id</code> value.\n\noptional"]
24914    #[serde(rename = "query_language")]
24915    #[serde(skip_serializing_if = "Option::is_none")]
24916    pub query_language: Option<String>,
24917    #[doc = "Query Language ID\n\nThe normalized identifier of a graph query language that can be used to interact with the graph.\n\nrecommended"]
24918    #[serde(rename = "query_language_id")]
24919    #[serde(skip_serializing_if = "Option::is_none")]
24920    pub query_language_id: Option<i64>,
24921    #[doc = "Type\n\nThe graph type. Typically useful to represent the specific type of graph that is used.\n\noptional"]
24922    #[serde(rename = "type")]
24923    #[serde(skip_serializing_if = "Option::is_none")]
24924    pub r#type: Option<String>,
24925    #[doc = "Unique ID\n\nUnique identifier of the graph - a unique ID to reference this specific graph.\n\nrecommended"]
24926    #[serde(rename = "uid")]
24927    #[serde(skip_serializing_if = "Option::is_none")]
24928    pub uid: Option<String>,
24929}
24930#[doc = "Group\n\nThe Group object represents a collection or association of entities, such as users, policies, or devices. It serves as a logical grouping mechanism to organize and manage entities with similar characteristics or permissions within a system or organization, including but not limited to purposes of access control.\n\n[] Category:  | Name: group\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
24931#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24932#[serde(default)]
24933#[non_exhaustive]
24934pub struct Group {
24935    #[doc = "Description\n\nThe group description.\n\noptional"]
24936    #[serde(rename = "desc")]
24937    #[serde(skip_serializing_if = "Option::is_none")]
24938    pub desc: Option<String>,
24939    #[doc = "Domain\n\nThe domain where the group is defined. For example: the LDAP or Active Directory domain.\n\noptional"]
24940    #[serde(rename = "domain")]
24941    #[serde(skip_serializing_if = "Option::is_none")]
24942    pub domain: Option<String>,
24943    #[doc = "Name\n\nThe group name.\n\nrecommended"]
24944    #[serde(rename = "name")]
24945    #[serde(skip_serializing_if = "Option::is_none")]
24946    pub name: Option<String>,
24947    #[doc = "Privileges\n\nThe group privileges.\n\noptional"]
24948    #[serde(rename = "privileges")]
24949    #[serde(skip_serializing_if = "Option::is_none")]
24950    pub privileges: Option<Vec<String>>,
24951    #[doc = "Account Type\n\nThe type of the group or account.\n\noptional"]
24952    #[serde(rename = "type")]
24953    #[serde(skip_serializing_if = "Option::is_none")]
24954    pub r#type: Option<String>,
24955    #[doc = "Unique ID\n\nThe unique identifier of the group. For example, for Windows events this is the security identifier (SID) of the group.\n\nrecommended"]
24956    #[serde(rename = "uid")]
24957    #[serde(skip_serializing_if = "Option::is_none")]
24958    pub uid: Option<String>,
24959}
24960#[doc = "HASSH\n\nThe HASSH object contains SSH network fingerprinting values for specific client/server implementations. It provides a standardized way of identifying and categorizing SSH connections based on their unique characteristics and behavior.\n\n[] Category:  | Name: hassh"]
24961#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24962#[serde(default)]
24963#[non_exhaustive]
24964pub struct Hassh {
24965    #[doc = "Algorithm\n\nThe concatenation of key exchange, encryption, authentication and compression algorithms (separated by ';'). NOTE: This is not the underlying algorithm for the hash implementation.\n\nrecommended"]
24966    #[serde(rename = "algorithm")]
24967    #[serde(skip_serializing_if = "Option::is_none")]
24968    pub algorithm: Option<String>,
24969    #[doc = "Fingerprint\n\nThe hash of the key exchange, encryption, authentication and compression algorithms.\n\nrequired"]
24970    #[serde(rename = "fingerprint")]
24971    #[serde(skip_serializing_if = "Option::is_none")]
24972    pub fingerprint: Option<Box<Fingerprint>>,
24973}
24974#[doc = "HTTP Cookie\n\nThe HTTP Cookie object, also known as a web cookie or browser cookie, contains details and values pertaining to a small piece of data that a server sends to a user's web browser. This data is then stored by the browser and sent back to the server with subsequent requests, allowing the server to remember and track certain information about the user's browsing session or preferences.\n\n[] Category:  | Name: http_cookie"]
24975#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24976#[serde(default)]
24977#[non_exhaustive]
24978pub struct HttpCookie {
24979    #[doc = "Domain\n\nThe domain name for the server from which the http_cookie is served.\n\noptional"]
24980    #[serde(rename = "domain")]
24981    #[serde(skip_serializing_if = "Option::is_none")]
24982    pub domain: Option<String>,
24983    #[doc = "Expiration Time\n\nThe expiration time of the HTTP cookie.\n\noptional"]
24984    #[serde(rename = "expiration_time")]
24985    #[serde(skip_serializing_if = "Option::is_none")]
24986    pub expiration_time: Option<i64>,
24987    #[doc = "Expiration Time\n\nThe expiration time of the HTTP cookie.\n\noptional"]
24988    #[serde(rename = "expiration_time_dt")]
24989    #[serde(skip_serializing_if = "Option::is_none")]
24990    pub expiration_time_dt: Option<String>,
24991    #[doc = "HTTP Only\n\nA cookie attribute to make it inaccessible via JavaScript\n\noptional"]
24992    #[serde(rename = "http_only")]
24993    #[serde(skip_serializing_if = "Option::is_none")]
24994    pub http_only: Option<bool>,
24995    #[doc = "HTTP Only\n\nThis attribute prevents the cookie from being accessed via JavaScript.\n\noptional"]
24996    #[serde(rename = "is_http_only")]
24997    #[serde(skip_serializing_if = "Option::is_none")]
24998    pub is_http_only: Option<bool>,
24999    #[doc = "Secure\n\nThe cookie attribute indicates that cookies are sent to the server only when the request is encrypted using the HTTPS protocol.\n\noptional"]
25000    #[serde(rename = "is_secure")]
25001    #[serde(skip_serializing_if = "Option::is_none")]
25002    pub is_secure: Option<bool>,
25003    #[doc = "Name\n\nThe HTTP cookie name.\n\nrequired"]
25004    #[serde(rename = "name")]
25005    #[serde(skip_serializing_if = "Option::is_none")]
25006    pub name: Option<String>,
25007    #[doc = "Path\n\nThe path of the HTTP cookie.\n\noptional"]
25008    #[serde(rename = "path")]
25009    #[serde(skip_serializing_if = "Option::is_none")]
25010    pub path: Option<String>,
25011    #[doc = "SameSite\n\nThe cookie attribute that lets servers specify whether/when cookies are sent with cross-site requests. Values are: Strict, Lax or None\n\noptional"]
25012    #[serde(rename = "samesite")]
25013    #[serde(skip_serializing_if = "Option::is_none")]
25014    pub samesite: Option<String>,
25015    #[doc = "Secure\n\nThe cookie attribute to only send cookies to the server with an encrypted request over the HTTPS protocol.\n\noptional"]
25016    #[serde(rename = "secure")]
25017    #[serde(skip_serializing_if = "Option::is_none")]
25018    pub secure: Option<bool>,
25019    #[doc = "Value\n\nThe HTTP cookie value.\n\nrequired"]
25020    #[serde(rename = "value")]
25021    #[serde(skip_serializing_if = "Option::is_none")]
25022    pub value: Option<String>,
25023}
25024#[doc = "HTTP Header\n\nThe HTTP Header object represents the headers sent in an HTTP request or response. HTTP headers are key-value pairs that convey additional information about the HTTP message, including details about the content, caching, authentication, encoding, and other aspects of the communication.\n\n[] Category:  | Name: http_header"]
25025#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25026#[serde(default)]
25027#[non_exhaustive]
25028pub struct HttpHeader {
25029    #[doc = "Name\n\nThe name of the HTTP header.\n\nrequired"]
25030    #[serde(rename = "name")]
25031    #[serde(skip_serializing_if = "Option::is_none")]
25032    pub name: Option<String>,
25033    #[doc = "Value\n\nThe value of the HTTP header.\n\nrequired"]
25034    #[serde(rename = "value")]
25035    #[serde(skip_serializing_if = "Option::is_none")]
25036    pub value: Option<String>,
25037}
25038#[doc = "HTTP Request\n\nThe HTTP Request object represents the attributes of a request made to a web server. It encapsulates the details and metadata associated with an HTTP request, including the request method, headers, URL, query parameters, body content, and other relevant information.\n\n[] Category:  | Name: http_request"]
25039#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25040#[serde(default)]
25041#[non_exhaustive]
25042pub struct HttpRequest {
25043    #[doc = "HTTP Arguments\n\nThe arguments sent along with the HTTP request.\n\noptional"]
25044    #[serde(rename = "args")]
25045    #[serde(skip_serializing_if = "Option::is_none")]
25046    pub args: Option<String>,
25047    #[doc = "Request Body Length\n\nThe actual length of the HTTP request body, in number of bytes, independent of a potentially existing Content-Length header.\n\noptional"]
25048    #[serde(rename = "body_length")]
25049    #[serde(skip_serializing_if = "Option::is_none")]
25050    pub body_length: Option<i64>,
25051    #[doc = "HTTP Headers\n\nAdditional HTTP headers of an HTTP request or response.\n\nrecommended"]
25052    #[serde(rename = "http_headers")]
25053    #[serde(skip_serializing_if = "Option::is_none")]
25054    pub http_headers: Option<Vec<HttpHeader>>,
25055    #[doc = "HTTP Method\n\nThe <a target='_blank' href='https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods'>HTTP request method</a> indicates the desired action to be performed for a given resource.\n\nrecommended"]
25056    #[serde(rename = "http_method")]
25057    #[serde(skip_serializing_if = "Option::is_none")]
25058    pub http_method: Option<String>,
25059    #[doc = "Request Length\n\nThe length of the entire HTTP request, in number of bytes.\n\noptional"]
25060    #[serde(rename = "length")]
25061    #[serde(skip_serializing_if = "Option::is_none")]
25062    pub length: Option<i64>,
25063    #[doc = "HTTP Referrer\n\nThe request header that identifies the address of the previous web page, which is linked to the current web page or resource being requested.\n\noptional"]
25064    #[serde(rename = "referrer")]
25065    #[serde(skip_serializing_if = "Option::is_none")]
25066    pub referrer: Option<String>,
25067    #[doc = "Unique ID\n\nThe unique identifier of the http request.\n\noptional"]
25068    #[serde(rename = "uid")]
25069    #[serde(skip_serializing_if = "Option::is_none")]
25070    pub uid: Option<String>,
25071    #[doc = "URL\n\nThe URL object that pertains to the request.\n\nrecommended"]
25072    #[serde(rename = "url")]
25073    #[serde(skip_serializing_if = "Option::is_none")]
25074    pub url: Option<Box<Url>>,
25075    #[doc = "HTTP User-Agent\n\nThe request header that identifies the operating system and web browser.\n\nrecommended"]
25076    #[serde(rename = "user_agent")]
25077    #[serde(skip_serializing_if = "Option::is_none")]
25078    pub user_agent: Option<String>,
25079    #[doc = "HTTP Version\n\nThe Hypertext Transfer Protocol (HTTP) version.\n\nrecommended"]
25080    #[serde(rename = "version")]
25081    #[serde(skip_serializing_if = "Option::is_none")]
25082    pub version: Option<String>,
25083    #[doc = "X-Forwarded-For\n\nThe X-Forwarded-For header identifying the originating IP address(es) of a client connecting to a web server through an HTTP proxy or a load balancer.\n\noptional"]
25084    #[serde(rename = "x_forwarded_for")]
25085    #[serde(skip_serializing_if = "Option::is_none")]
25086    pub x_forwarded_for: Option<Vec<String>>,
25087}
25088#[doc = "HTTP Response\n\nThe HTTP Response object contains detailed information about the response sent from a web server to the requester. It encompasses attributes and metadata that describe the response status, headers, body content, and other relevant information.\n\n[] Category:  | Name: http_response"]
25089#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25090#[serde(default)]
25091#[non_exhaustive]
25092pub struct HttpResponse {
25093    #[doc = "Response Body Length\n\nThe actual length of the HTTP response body, in number of bytes, independent of a potentially existing Content-Length header.\n\noptional"]
25094    #[serde(rename = "body_length")]
25095    #[serde(skip_serializing_if = "Option::is_none")]
25096    pub body_length: Option<i64>,
25097    #[doc = "Response Code\n\nThe Hypertext Transfer Protocol (HTTP) status code returned from the web server to the client. For example, 200.\n\nrequired"]
25098    #[serde(rename = "code")]
25099    #[serde(skip_serializing_if = "Option::is_none")]
25100    pub code: Option<i64>,
25101    #[doc = "HTTP Content Type\n\nThe request header that identifies the original <a target='_blank' href='https://www.iana.org/assignments/media-types/media-types.xhtml'>media type </a> of the resource (prior to any content encoding applied for sending).\n\noptional"]
25102    #[serde(rename = "content_type")]
25103    #[serde(skip_serializing_if = "Option::is_none")]
25104    pub content_type: Option<String>,
25105    #[doc = "HTTP Headers\n\nAdditional HTTP headers of an HTTP request or response.\n\nrecommended"]
25106    #[serde(rename = "http_headers")]
25107    #[serde(skip_serializing_if = "Option::is_none")]
25108    pub http_headers: Option<Vec<HttpHeader>>,
25109    #[doc = "Latency\n\nThe HTTP response latency measured in milliseconds.\n\noptional"]
25110    #[serde(rename = "latency")]
25111    #[serde(skip_serializing_if = "Option::is_none")]
25112    pub latency: Option<i64>,
25113    #[doc = "Response Length\n\nThe length of the entire HTTP response, in number of bytes.\n\noptional"]
25114    #[serde(rename = "length")]
25115    #[serde(skip_serializing_if = "Option::is_none")]
25116    pub length: Option<i64>,
25117    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\noptional"]
25118    #[serde(rename = "message")]
25119    #[serde(skip_serializing_if = "Option::is_none")]
25120    pub message: Option<String>,
25121    #[doc = "Status\n\nThe response status. For example: A successful HTTP status of 'OK' which corresponds to a code of 200.\n\noptional"]
25122    #[serde(rename = "status")]
25123    #[serde(skip_serializing_if = "Option::is_none")]
25124    pub status: Option<String>,
25125}
25126#[doc = "Identity Activity Metrics\n\nThe Identity Activity Metrics object captures usage patterns, authentication activity, credential usage and other metrics for identities across cloud and on-premises environments. Example identities include AWS IAM Users, Roles, Azure AD Principals, GCP Service Accounts, on-premises Active Directory accounts.\n\n[] Category:  | Name: identity_activity_metrics"]
25127#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25128#[serde(default)]
25129#[non_exhaustive]
25130pub struct IdentityActivityMetrics {
25131    #[doc = "First Seen\n\nThe timestamp when this identity was first observed or created in the system. This helps establish the identity's age and lifecycle stage for risk assessment.\n\noptional"]
25132    #[serde(rename = "first_seen_time")]
25133    #[serde(skip_serializing_if = "Option::is_none")]
25134    pub first_seen_time: Option<i64>,
25135    #[doc = "First Seen\n\nThe timestamp when this identity was first observed or created in the system. This helps establish the identity's age and lifecycle stage for risk assessment.\n\noptional"]
25136    #[serde(rename = "first_seen_time_dt")]
25137    #[serde(skip_serializing_if = "Option::is_none")]
25138    pub first_seen_time_dt: Option<String>,
25139    #[doc = "Last Authentication Time\n\nThe timestamp when this identity last successfully authenticated to any system or service. This differs from <code>last_seen_time</code> as it specifically tracks authentication events rather than all activities.\n\noptional"]
25140    #[serde(rename = "last_authentication_time")]
25141    #[serde(skip_serializing_if = "Option::is_none")]
25142    pub last_authentication_time: Option<i64>,
25143    #[doc = "Last Authentication Time\n\nThe timestamp when this identity last successfully authenticated to any system or service. This differs from <code>last_seen_time</code> as it specifically tracks authentication events rather than all activities.\n\noptional"]
25144    #[serde(rename = "last_authentication_time_dt")]
25145    #[serde(skip_serializing_if = "Option::is_none")]
25146    pub last_authentication_time_dt: Option<String>,
25147    #[doc = "Last Seen\n\nThe timestamp of the most recent activity performed by this identity, including authentication, resource access, or API calls. This is the most comprehensive indicator of identity usage recency.\n\nrecommended"]
25148    #[serde(rename = "last_seen_time")]
25149    #[serde(skip_serializing_if = "Option::is_none")]
25150    pub last_seen_time: Option<i64>,
25151    #[doc = "Last Seen\n\nThe timestamp of the most recent activity performed by this identity, including authentication, resource access, or API calls. This is the most comprehensive indicator of identity usage recency.\n\noptional"]
25152    #[serde(rename = "last_seen_time_dt")]
25153    #[serde(skip_serializing_if = "Option::is_none")]
25154    pub last_seen_time_dt: Option<String>,
25155    #[doc = "Password Last Used Time\n\nThe timestamp when password-based authentication was last used by this identity. This helps distinguish between password and other authentication methods (MFA, SSO, certificates) and identify password-specific usage patterns.\n\noptional"]
25156    #[serde(rename = "password_last_used_time")]
25157    #[serde(skip_serializing_if = "Option::is_none")]
25158    pub password_last_used_time: Option<i64>,
25159    #[doc = "Password Last Used Time\n\nThe timestamp when password-based authentication was last used by this identity. This helps distinguish between password and other authentication methods (MFA, SSO, certificates) and identify password-specific usage patterns.\n\noptional"]
25160    #[serde(rename = "password_last_used_time_dt")]
25161    #[serde(skip_serializing_if = "Option::is_none")]
25162    pub password_last_used_time_dt: Option<String>,
25163    #[doc = "Programmatic Credentials\n\nDetails about the programmatic credentials associated with this identity, such as API keys, service account keys, access tokens, and client certificates used for automated access.\n\noptional"]
25164    #[serde(rename = "programmatic_credentials")]
25165    #[serde(skip_serializing_if = "Option::is_none")]
25166    pub programmatic_credentials: Option<Vec<ProgrammaticCredential>>,
25167}
25168#[doc = "Identity Provider\n\nThe Identity Provider object contains detailed information about a provider responsible for creating, maintaining, and managing identity information while offering authentication services to applications. An Identity Provider (IdP) serves as a trusted authority that verifies the identity of users and issues authentication tokens or assertions to enable secure access to applications or services.\n\n[] Category:  | Name: idp\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
25169#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25170#[serde(default)]
25171#[non_exhaustive]
25172pub struct Idp {
25173    #[doc = "Authentication Factors\n\nThe Authentication Factors object describes the different types of Multi-Factor Authentication (MFA) methods and/or devices supported by the Identity Provider.\n\noptional"]
25174    #[serde(rename = "auth_factors")]
25175    #[serde(skip_serializing_if = "Option::is_none")]
25176    pub auth_factors: Option<Vec<AuthFactor>>,
25177    #[doc = "Domain\n\nThe primary domain associated with the Identity Provider.\n\noptional"]
25178    #[serde(rename = "domain")]
25179    #[serde(skip_serializing_if = "Option::is_none")]
25180    pub domain: Option<String>,
25181    #[doc = "Certificate Fingerprint\n\nThe fingerprint of the X.509 certificate used by the Identity Provider.\n\noptional"]
25182    #[serde(rename = "fingerprint")]
25183    #[serde(skip_serializing_if = "Option::is_none")]
25184    pub fingerprint: Option<Box<Fingerprint>>,
25185    #[doc = "MFA Enforced\n\nThe Identity Provider enforces Multi Factor Authentication (MFA).\n\noptional"]
25186    #[serde(rename = "has_mfa")]
25187    #[serde(skip_serializing_if = "Option::is_none")]
25188    pub has_mfa: Option<bool>,
25189    #[doc = "Issuer Details\n\nThe unique identifier (often a URL) used by the Identity Provider as its issuer.\n\noptional"]
25190    #[serde(rename = "issuer")]
25191    #[serde(skip_serializing_if = "Option::is_none")]
25192    pub issuer: Option<String>,
25193    #[doc = "Name\n\nThe name of the Identity Provider.\n\nrecommended"]
25194    #[serde(rename = "name")]
25195    #[serde(skip_serializing_if = "Option::is_none")]
25196    pub name: Option<String>,
25197    #[doc = "Supported Protocol\n\nThe supported protocol of the Identity Provider. E.g., <code>SAML</code>, <code>OIDC</code>, or <code>OAuth2</code>.\n\noptional"]
25198    #[serde(rename = "protocol_name")]
25199    #[serde(skip_serializing_if = "Option::is_none")]
25200    pub protocol_name: Option<String>,
25201    #[doc = "SCIM\n\nThe System for Cross-domain Identity Management (SCIM) resource object provides a structured set of attributes related to SCIM protocols used for identity provisioning and management across cloud-based platforms. It standardizes user and group provisioning details, enabling identity synchronization and lifecycle management with compatible Identity Providers (IdPs) and applications. SCIM is defined in <a target='_blank' href='https://datatracker.ietf.org/doc/html/rfc7643'>RFC-7634</a>\n\noptional"]
25202    #[serde(rename = "scim")]
25203    #[serde(skip_serializing_if = "Option::is_none")]
25204    pub scim: Option<Box<Scim>>,
25205    #[doc = "SSO\n\nThe Single Sign-On (SSO) object provides a structure for normalizing SSO attributes, configuration, and/or settings from Identity Providers.\n\noptional"]
25206    #[serde(rename = "sso")]
25207    #[serde(skip_serializing_if = "Option::is_none")]
25208    pub sso: Option<Box<Sso>>,
25209    #[doc = "State\n\nThe configuration state of the Identity Provider, normalized to the caption of the <code>state_id</code> value. In the case of <code>Other</code>, it is defined by the event source.\n\noptional"]
25210    #[serde(rename = "state")]
25211    #[serde(skip_serializing_if = "Option::is_none")]
25212    pub state: Option<String>,
25213    #[doc = "State ID\n\nThe normalized state ID of the Identity Provider to reflect its configuration or activation status.\n\noptional"]
25214    #[serde(rename = "state_id")]
25215    #[serde(skip_serializing_if = "Option::is_none")]
25216    pub state_id: Option<i64>,
25217    #[doc = "Tenant UID\n\nThe tenant ID associated with the Identity Provider.\n\noptional"]
25218    #[serde(rename = "tenant_uid")]
25219    #[serde(skip_serializing_if = "Option::is_none")]
25220    pub tenant_uid: Option<String>,
25221    #[doc = "Unique ID\n\nThe unique identifier of the Identity Provider.\n\nrecommended"]
25222    #[serde(rename = "uid")]
25223    #[serde(skip_serializing_if = "Option::is_none")]
25224    pub uid: Option<String>,
25225    #[doc = "Configuration URL\n\nThe URL for accessing the configuration or metadata of the Identity Provider.\n\noptional"]
25226    #[serde(rename = "url_string")]
25227    #[serde(skip_serializing_if = "Option::is_none")]
25228    pub url_string: Option<String>,
25229}
25230#[doc = "Image\n\nThe Image object provides a description of a specific Virtual Machine (VM) or Container image.\n\n[] Category:  | Name: image\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
25231#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25232#[serde(default)]
25233#[non_exhaustive]
25234pub struct Image {
25235    #[doc = "Labels\n\nThe list of labels associated to the image.\n\noptional"]
25236    #[serde(rename = "labels")]
25237    #[serde(skip_serializing_if = "Option::is_none")]
25238    pub labels: Option<Vec<String>>,
25239    #[doc = "Name\n\nThe image name. For example: <code>elixir</code>.\n\nrecommended"]
25240    #[serde(rename = "name")]
25241    #[serde(skip_serializing_if = "Option::is_none")]
25242    pub name: Option<String>,
25243    #[doc = "Path\n\nThe full path to the image file.\n\noptional"]
25244    #[serde(rename = "path")]
25245    #[serde(skip_serializing_if = "Option::is_none")]
25246    pub path: Option<String>,
25247    #[doc = "Image Tag\n\nThe image tag. For example: <code>1.11-alpine</code>.\n\noptional"]
25248    #[serde(rename = "tag")]
25249    #[serde(skip_serializing_if = "Option::is_none")]
25250    pub tag: Option<String>,
25251    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the image.\n\noptional"]
25252    #[serde(rename = "tags")]
25253    #[serde(skip_serializing_if = "Option::is_none")]
25254    pub tags: Option<Vec<KeyValueObject>>,
25255    #[doc = "Unique ID\n\nThe unique image ID. For example: <code>77af4d6b9913</code>.\n\nrequired"]
25256    #[serde(rename = "uid")]
25257    #[serde(skip_serializing_if = "Option::is_none")]
25258    pub uid: Option<String>,
25259}
25260#[doc = "JA4+ Fingerprint\n\nThe JA4+ fingerprint object provides detailed fingerprint information about various aspects of network traffic which is both machine and human readable.\n\n[] Category:  | Name: ja4_fingerprint"]
25261#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25262#[serde(default)]
25263#[non_exhaustive]
25264pub struct Ja4Fingerprint {
25265    #[doc = "JA4 Section A\n\nThe 'a' section of the JA4 fingerprint.\n\noptional"]
25266    #[serde(rename = "section_a")]
25267    #[serde(skip_serializing_if = "Option::is_none")]
25268    pub section_a: Option<String>,
25269    #[doc = "JA4 Section B\n\nThe 'b' section of the JA4 fingerprint.\n\noptional"]
25270    #[serde(rename = "section_b")]
25271    #[serde(skip_serializing_if = "Option::is_none")]
25272    pub section_b: Option<String>,
25273    #[doc = "JA4 Section C\n\nThe 'c' section of the JA4 fingerprint.\n\noptional"]
25274    #[serde(rename = "section_c")]
25275    #[serde(skip_serializing_if = "Option::is_none")]
25276    pub section_c: Option<String>,
25277    #[doc = "JA4 Section D\n\nThe 'd' section of the JA4 fingerprint.\n\noptional"]
25278    #[serde(rename = "section_d")]
25279    #[serde(skip_serializing_if = "Option::is_none")]
25280    pub section_d: Option<String>,
25281    #[doc = "Type\n\nThe JA4+ fingerprint type as defined by <a href='https://blog.foxio.io/ja4+-network-fingerprinting target='_blank'>FoxIO</a>, normalized to the caption of 'type_id'. In the case of 'Other', it is defined by the event source.\n\noptional"]
25282    #[serde(rename = "type")]
25283    #[serde(skip_serializing_if = "Option::is_none")]
25284    pub r#type: Option<String>,
25285    #[doc = "Type ID\n\nThe identifier of the JA4+ fingerprint type.\n\nrequired"]
25286    #[serde(rename = "type_id")]
25287    #[serde(skip_serializing_if = "Option::is_none")]
25288    pub type_id: Option<i64>,
25289    #[doc = "Value\n\nThe JA4+ fingerprint value.\n\nrequired"]
25290    #[serde(rename = "value")]
25291    #[serde(skip_serializing_if = "Option::is_none")]
25292    pub value: Option<String>,
25293}
25294#[doc = "Job\n\nThe Job object provides information about a scheduled job or task, including its name, command line, and state. It encompasses attributes that describe the properties and status of the scheduled job.\n\n[] Category:  | Name: job"]
25295#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25296#[serde(default)]
25297#[non_exhaustive]
25298pub struct Job {
25299    #[doc = "Command Line\n\nThe job command line.\n\nrecommended"]
25300    #[serde(rename = "cmd_line")]
25301    #[serde(skip_serializing_if = "Option::is_none")]
25302    pub cmd_line: Option<String>,
25303    #[doc = "Created Time\n\nThe time when the job was created.\n\nrecommended"]
25304    #[serde(rename = "created_time")]
25305    #[serde(skip_serializing_if = "Option::is_none")]
25306    pub created_time: Option<i64>,
25307    #[doc = "Created Time\n\nThe time when the job was created.\n\noptional"]
25308    #[serde(rename = "created_time_dt")]
25309    #[serde(skip_serializing_if = "Option::is_none")]
25310    pub created_time_dt: Option<String>,
25311    #[doc = "Description\n\nThe description of the job.\n\nrecommended"]
25312    #[serde(rename = "desc")]
25313    #[serde(skip_serializing_if = "Option::is_none")]
25314    pub desc: Option<String>,
25315    #[doc = "File\n\nThe file that pertains to the job.\n\noptional"]
25316    #[serde(rename = "file")]
25317    #[serde(skip_serializing_if = "Option::is_none")]
25318    pub file: Option<Box<File>>,
25319    #[doc = "Last Run\n\nThe time when the job was last run.\n\nrecommended"]
25320    #[serde(rename = "last_run_time")]
25321    #[serde(skip_serializing_if = "Option::is_none")]
25322    pub last_run_time: Option<i64>,
25323    #[doc = "Last Run\n\nThe time when the job was last run.\n\noptional"]
25324    #[serde(rename = "last_run_time_dt")]
25325    #[serde(skip_serializing_if = "Option::is_none")]
25326    pub last_run_time_dt: Option<String>,
25327    #[doc = "Name\n\nThe name of the job.\n\nrequired"]
25328    #[serde(rename = "name")]
25329    #[serde(skip_serializing_if = "Option::is_none")]
25330    pub name: Option<String>,
25331    #[doc = "Next Run\n\nThe time when the job will next be run.\n\noptional"]
25332    #[serde(rename = "next_run_time")]
25333    #[serde(skip_serializing_if = "Option::is_none")]
25334    pub next_run_time: Option<i64>,
25335    #[doc = "Next Run\n\nThe time when the job will next be run.\n\noptional"]
25336    #[serde(rename = "next_run_time_dt")]
25337    #[serde(skip_serializing_if = "Option::is_none")]
25338    pub next_run_time_dt: Option<String>,
25339    #[doc = "Run State\n\nThe run state of the job.\n\noptional"]
25340    #[serde(rename = "run_state")]
25341    #[serde(skip_serializing_if = "Option::is_none")]
25342    pub run_state: Option<String>,
25343    #[doc = "Run State ID\n\nThe run state ID of the job.\n\nrecommended"]
25344    #[serde(rename = "run_state_id")]
25345    #[serde(skip_serializing_if = "Option::is_none")]
25346    pub run_state_id: Option<i64>,
25347    #[doc = "User\n\nThe user that created the job.\n\noptional"]
25348    #[serde(rename = "user")]
25349    #[serde(skip_serializing_if = "Option::is_none")]
25350    pub user: Option<Box<User>>,
25351}
25352#[doc = "KB Article\n\nThe KB Article object contains metadata that describes the patch or update.\n\n[] Category:  | Name: kb_article\n\n**Constraints:**\n* at_least_one: `[uid`,`src_url]`\n"]
25353#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25354#[serde(default)]
25355#[non_exhaustive]
25356pub struct KbArticle {
25357    #[doc = "Average Timespan\n\nThe average time to patch.\n\noptional"]
25358    #[serde(rename = "avg_timespan")]
25359    #[serde(skip_serializing_if = "Option::is_none")]
25360    pub avg_timespan: Option<Box<Timespan>>,
25361    #[doc = "Patch Bulletin\n\nThe kb article bulletin identifier.\n\noptional"]
25362    #[serde(rename = "bulletin")]
25363    #[serde(skip_serializing_if = "Option::is_none")]
25364    pub bulletin: Option<String>,
25365    #[doc = "Classification\n\nThe vendors classification of the kb article.\n\noptional"]
25366    #[serde(rename = "classification")]
25367    #[serde(skip_serializing_if = "Option::is_none")]
25368    pub classification: Option<String>,
25369    #[doc = "Created Time\n\nThe date the kb article was released by the vendor.\n\noptional"]
25370    #[serde(rename = "created_time")]
25371    #[serde(skip_serializing_if = "Option::is_none")]
25372    pub created_time: Option<i64>,
25373    #[doc = "Created Time\n\nThe date the kb article was released by the vendor.\n\noptional"]
25374    #[serde(rename = "created_time_dt")]
25375    #[serde(skip_serializing_if = "Option::is_none")]
25376    pub created_time_dt: Option<String>,
25377    #[doc = "Install State\n\nThe install state of the kb article.\n\nrecommended"]
25378    #[serde(rename = "install_state")]
25379    #[serde(skip_serializing_if = "Option::is_none")]
25380    pub install_state: Option<String>,
25381    #[doc = "Install State ID\n\nThe normalized install state ID of the kb article.\n\nrecommended"]
25382    #[serde(rename = "install_state_id")]
25383    #[serde(skip_serializing_if = "Option::is_none")]
25384    pub install_state_id: Option<i64>,
25385    #[doc = "The patch is superseded.\n\nThe kb article has been replaced by another.\n\noptional"]
25386    #[serde(rename = "is_superseded")]
25387    #[serde(skip_serializing_if = "Option::is_none")]
25388    pub is_superseded: Option<bool>,
25389    #[doc = "OS\n\nThe operating system the kb article applies.\n\nrecommended"]
25390    #[serde(rename = "os")]
25391    #[serde(skip_serializing_if = "Option::is_none")]
25392    pub os: Option<Box<Os>>,
25393    #[doc = "Product\n\nThe product details the kb article applies.\n\noptional"]
25394    #[serde(rename = "product")]
25395    #[serde(skip_serializing_if = "Option::is_none")]
25396    pub product: Option<Box<Product>>,
25397    #[doc = "Severity\n\nThe severity of the kb article.\n\nrecommended"]
25398    #[serde(rename = "severity")]
25399    #[serde(skip_serializing_if = "Option::is_none")]
25400    pub severity: Option<String>,
25401    #[doc = "Size\n\nThe size in bytes for the kb article.\n\noptional"]
25402    #[serde(rename = "size")]
25403    #[serde(skip_serializing_if = "Option::is_none")]
25404    pub size: Option<i64>,
25405    #[doc = "Source URL\n\nThe kb article link from the source vendor.\n\noptional"]
25406    #[serde(rename = "src_url")]
25407    #[serde(skip_serializing_if = "Option::is_none")]
25408    pub src_url: Option<String>,
25409    #[doc = "Title\n\nThe title of the kb article.\n\nrecommended"]
25410    #[serde(rename = "title")]
25411    #[serde(skip_serializing_if = "Option::is_none")]
25412    pub title: Option<String>,
25413    #[doc = "Unique ID\n\nThe unique identifier for the kb article.\n\nrecommended"]
25414    #[serde(rename = "uid")]
25415    #[serde(skip_serializing_if = "Option::is_none")]
25416    pub uid: Option<String>,
25417}
25418#[doc = "Kernel Resource\n\nThe Kernel Resource object provides information about a specific kernel resource, including its name and type. It describes essential attributes associated with a resource managed by the kernel of an operating system.\n\n[] Category:  | Name: kernel"]
25419#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25420#[serde(default)]
25421#[non_exhaustive]
25422pub struct Kernel {
25423    #[doc = "System\n\nThe indication of whether the object is part of the operating system.\n\noptional"]
25424    #[serde(rename = "is_system")]
25425    #[serde(skip_serializing_if = "Option::is_none")]
25426    pub is_system: Option<bool>,
25427    #[doc = "Name\n\nThe name of the kernel resource.\n\nrequired"]
25428    #[serde(rename = "name")]
25429    #[serde(skip_serializing_if = "Option::is_none")]
25430    pub name: Option<String>,
25431    #[doc = "Path\n\nThe full path of the kernel resource.\n\noptional"]
25432    #[serde(rename = "path")]
25433    #[serde(skip_serializing_if = "Option::is_none")]
25434    pub path: Option<String>,
25435    #[doc = "System Call\n\nThe system call that was invoked.\n\noptional"]
25436    #[serde(rename = "system_call")]
25437    #[serde(skip_serializing_if = "Option::is_none")]
25438    pub system_call: Option<String>,
25439    #[doc = "Type\n\nThe type of the kernel resource.\n\noptional"]
25440    #[serde(rename = "type")]
25441    #[serde(skip_serializing_if = "Option::is_none")]
25442    pub r#type: Option<String>,
25443    #[doc = "Type ID\n\nThe type of the kernel resource.\n\nrequired"]
25444    #[serde(rename = "type_id")]
25445    #[serde(skip_serializing_if = "Option::is_none")]
25446    pub type_id: Option<i64>,
25447}
25448#[doc = "Kernel Extension\n\nThe Kernel Extension object describes a kernel driver that has been loaded or unloaded into the operating system (OS) kernel.\n\n[] Category:  | Name: kernel_driver"]
25449#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25450#[serde(default)]
25451#[non_exhaustive]
25452pub struct KernelDriver {
25453    #[doc = "File\n\nThe driver/extension file object.\n\nrequired"]
25454    #[serde(rename = "file")]
25455    #[serde(skip_serializing_if = "Option::is_none")]
25456    pub file: Option<Box<File>>,
25457}
25458#[doc = "Key:Value object\n\nA generic object allowing to define a <code>{key:value}</code> pair.\n\n[] Category:  | Name: key_value_object\n\n**Constraints:**\n* at_least_one: `[value`,`values]`\n"]
25459#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25460#[serde(default)]
25461#[non_exhaustive]
25462pub struct KeyValueObject {
25463    #[doc = "Name\n\nThe name of the key.\n\nrequired"]
25464    #[serde(rename = "name")]
25465    #[serde(skip_serializing_if = "Option::is_none")]
25466    pub name: Option<String>,
25467    #[doc = "Value\n\nThe value associated to the key.\n\nrecommended"]
25468    #[serde(rename = "value")]
25469    #[serde(skip_serializing_if = "Option::is_none")]
25470    pub value: Option<String>,
25471    #[doc = "Values\n\nOptional, the values associated to the key. You can populate this attribute, when you have multiple values for the same key.\n\nrecommended"]
25472    #[serde(rename = "values")]
25473    #[serde(skip_serializing_if = "Option::is_none")]
25474    pub values: Option<Vec<String>>,
25475}
25476#[doc = "Keyboard Information\n\nThe Keyboard Information object contains details and attributes related to a computer or device keyboard. It encompasses information that describes the characteristics, capabilities, and configuration of the keyboard.\n\n[] Category:  | Name: keyboard_info"]
25477#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25478#[serde(default)]
25479#[non_exhaustive]
25480pub struct KeyboardInfo {
25481    #[doc = "Function Keys\n\nThe number of function keys on client keyboard.\n\noptional"]
25482    #[serde(rename = "function_keys")]
25483    #[serde(skip_serializing_if = "Option::is_none")]
25484    pub function_keys: Option<i64>,
25485    #[doc = "IME\n\nThe Input Method Editor (IME) file name.\n\noptional"]
25486    #[serde(rename = "ime")]
25487    #[serde(skip_serializing_if = "Option::is_none")]
25488    pub ime: Option<String>,
25489    #[doc = "Keyboard Layout\n\nThe keyboard locale identifier name (e.g., en-US).\n\noptional"]
25490    #[serde(rename = "keyboard_layout")]
25491    #[serde(skip_serializing_if = "Option::is_none")]
25492    pub keyboard_layout: Option<String>,
25493    #[doc = "Keyboard Subtype\n\nThe keyboard numeric code.\n\noptional"]
25494    #[serde(rename = "keyboard_subtype")]
25495    #[serde(skip_serializing_if = "Option::is_none")]
25496    pub keyboard_subtype: Option<i64>,
25497    #[doc = "Keyboard Type\n\nThe keyboard type (e.g., xt, ico).\n\noptional"]
25498    #[serde(rename = "keyboard_type")]
25499    #[serde(skip_serializing_if = "Option::is_none")]
25500    pub keyboard_type: Option<String>,
25501}
25502#[doc = "Kill Chain Phase\n\nThe Kill Chain Phase object represents a single phase of a cyber attack, including the initial reconnaissance and planning stages up to the final objective of the attacker. It provides a detailed description of each phase and its associated activities within the broader context of a cyber attack. See <a target='_blank' href='https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html'>Cyber Kill Chain®</a>.\n\n[] Category:  | Name: kill_chain_phase"]
25503#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25504#[serde(default)]
25505#[non_exhaustive]
25506pub struct KillChainPhase {
25507    #[doc = "Kill Chain Phase\n\nThe cyber kill chain phase.\n\nrecommended"]
25508    #[serde(rename = "phase")]
25509    #[serde(skip_serializing_if = "Option::is_none")]
25510    pub phase: Option<String>,
25511    #[doc = "Kill Chain Phase ID\n\nThe cyber kill chain phase identifier.\n\nrequired"]
25512    #[serde(rename = "phase_id")]
25513    #[serde(skip_serializing_if = "Option::is_none")]
25514    pub phase_id: Option<i64>,
25515}
25516#[doc = "LDAP Person\n\nThe additional LDAP attributes that describe a person.\n\n[] Category:  | Name: ldap_person"]
25517#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25518#[serde(default)]
25519#[non_exhaustive]
25520pub struct LdapPerson {
25521    #[doc = "Cost Center\n\nThe cost center associated with the user.\n\noptional"]
25522    #[serde(rename = "cost_center")]
25523    #[serde(skip_serializing_if = "Option::is_none")]
25524    pub cost_center: Option<String>,
25525    #[doc = "Created Time\n\nThe timestamp when the user was created.\n\noptional"]
25526    #[serde(rename = "created_time")]
25527    #[serde(skip_serializing_if = "Option::is_none")]
25528    pub created_time: Option<i64>,
25529    #[doc = "Created Time\n\nThe timestamp when the user was created.\n\noptional"]
25530    #[serde(rename = "created_time_dt")]
25531    #[serde(skip_serializing_if = "Option::is_none")]
25532    pub created_time_dt: Option<String>,
25533    #[doc = "Deleted Time\n\nThe timestamp when the user was deleted. In Active Directory (AD), when a user is deleted they are moved to a temporary container and then removed after 30 days. So, this field can be populated even after a user is deleted for the next 30 days.\n\noptional"]
25534    #[serde(rename = "deleted_time")]
25535    #[serde(skip_serializing_if = "Option::is_none")]
25536    pub deleted_time: Option<i64>,
25537    #[doc = "Deleted Time\n\nThe timestamp when the user was deleted. In Active Directory (AD), when a user is deleted they are moved to a temporary container and then removed after 30 days. So, this field can be populated even after a user is deleted for the next 30 days.\n\noptional"]
25538    #[serde(rename = "deleted_time_dt")]
25539    #[serde(skip_serializing_if = "Option::is_none")]
25540    pub deleted_time_dt: Option<String>,
25541    #[doc = "Display Name\n\nThe display name of the LDAP person. According to RFC 2798, this is the preferred name of a person to be used when displaying entries.\n\noptional"]
25542    #[serde(rename = "display_name")]
25543    #[serde(skip_serializing_if = "Option::is_none")]
25544    pub display_name: Option<String>,
25545    #[doc = "Email Addresses\n\nA list of additional email addresses for the user.\n\noptional"]
25546    #[serde(rename = "email_addrs")]
25547    #[serde(skip_serializing_if = "Option::is_none")]
25548    pub email_addrs: Option<Vec<String>>,
25549    #[doc = "Employee ID\n\nThe employee identifier assigned to the user by the organization.\n\noptional"]
25550    #[serde(rename = "employee_uid")]
25551    #[serde(skip_serializing_if = "Option::is_none")]
25552    pub employee_uid: Option<String>,
25553    #[doc = "Given Name\n\nThe given or first name of the user.\n\noptional"]
25554    #[serde(rename = "given_name")]
25555    #[serde(skip_serializing_if = "Option::is_none")]
25556    pub given_name: Option<String>,
25557    #[doc = "Hire Time\n\nThe timestamp when the user was or will be hired by the organization.\n\noptional"]
25558    #[serde(rename = "hire_time")]
25559    #[serde(skip_serializing_if = "Option::is_none")]
25560    pub hire_time: Option<i64>,
25561    #[doc = "Hire Time\n\nThe timestamp when the user was or will be hired by the organization.\n\noptional"]
25562    #[serde(rename = "hire_time_dt")]
25563    #[serde(skip_serializing_if = "Option::is_none")]
25564    pub hire_time_dt: Option<String>,
25565    #[doc = "Job Title\n\nThe user's job title.\n\noptional"]
25566    #[serde(rename = "job_title")]
25567    #[serde(skip_serializing_if = "Option::is_none")]
25568    pub job_title: Option<String>,
25569    #[doc = "Labels\n\nThe labels associated with the user. For example in AD this could be the <code>userType</code>, <code>employeeType</code>. For example: <code>Member, Employee</code>.\n\noptional"]
25570    #[serde(rename = "labels")]
25571    #[serde(skip_serializing_if = "Option::is_none")]
25572    pub labels: Option<Vec<String>>,
25573    #[doc = "Last Login\n\nThe last time when the user logged in.\n\noptional"]
25574    #[serde(rename = "last_login_time")]
25575    #[serde(skip_serializing_if = "Option::is_none")]
25576    pub last_login_time: Option<i64>,
25577    #[doc = "Last Login\n\nThe last time when the user logged in.\n\noptional"]
25578    #[serde(rename = "last_login_time_dt")]
25579    #[serde(skip_serializing_if = "Option::is_none")]
25580    pub last_login_time_dt: Option<String>,
25581    #[doc = "LDAP Common Name\n\nThe LDAP and X.500 <code>commonName</code> attribute, typically the full name of the person. For example, <code>John Doe</code>.\n\noptional"]
25582    #[serde(rename = "ldap_cn")]
25583    #[serde(skip_serializing_if = "Option::is_none")]
25584    pub ldap_cn: Option<String>,
25585    #[doc = "LDAP Distinguished Name\n\nThe X.500 Distinguished Name (DN) is a structured string that uniquely identifies an entry, such as a user, in an X.500 directory service For example, <code>cn=John Doe,ou=People,dc=example,dc=com</code>.\n\noptional"]
25586    #[serde(rename = "ldap_dn")]
25587    #[serde(skip_serializing_if = "Option::is_none")]
25588    pub ldap_dn: Option<String>,
25589    #[doc = "Leave Time\n\nThe timestamp when the user left or will be leaving the organization.\n\noptional"]
25590    #[serde(rename = "leave_time")]
25591    #[serde(skip_serializing_if = "Option::is_none")]
25592    pub leave_time: Option<i64>,
25593    #[doc = "Leave Time\n\nThe timestamp when the user left or will be leaving the organization.\n\noptional"]
25594    #[serde(rename = "leave_time_dt")]
25595    #[serde(skip_serializing_if = "Option::is_none")]
25596    pub leave_time_dt: Option<String>,
25597    #[doc = "Geo Location\n\nThe geographical location associated with a user. This is typically the user's usual work location.\n\noptional"]
25598    #[serde(rename = "location")]
25599    #[serde(skip_serializing_if = "Option::is_none")]
25600    pub location: Option<Box<Location>>,
25601    #[doc = "Manager\n\nThe user's manager. This helps in understanding an org hierarchy. This should only ever be populated once in an event. I.e. there should not be a manager's manager in an event.\n\noptional"]
25602    #[serde(rename = "manager")]
25603    #[serde(skip_serializing_if = "Option::is_none")]
25604    pub manager: Option<Box<User>>,
25605    #[doc = "Modified Time\n\nThe timestamp when the user entry was last modified.\n\noptional"]
25606    #[serde(rename = "modified_time")]
25607    #[serde(skip_serializing_if = "Option::is_none")]
25608    pub modified_time: Option<i64>,
25609    #[doc = "Modified Time\n\nThe timestamp when the user entry was last modified.\n\noptional"]
25610    #[serde(rename = "modified_time_dt")]
25611    #[serde(skip_serializing_if = "Option::is_none")]
25612    pub modified_time_dt: Option<String>,
25613    #[doc = "Office Location\n\nThe primary office location associated with the user. This could be any string and isn't a specific address. For example, <code>South East Virtual</code>.\n\noptional"]
25614    #[serde(rename = "office_location")]
25615    #[serde(skip_serializing_if = "Option::is_none")]
25616    pub office_location: Option<String>,
25617    #[doc = "Telephone Number\n\nThe telephone number of the user. Corresponds to the LDAP <code>Telephone-Number</code> CN.\n\noptional"]
25618    #[serde(rename = "phone_number")]
25619    #[serde(skip_serializing_if = "Option::is_none")]
25620    pub phone_number: Option<String>,
25621    #[doc = "Surname\n\nThe last or family name for the user.\n\noptional"]
25622    #[serde(rename = "surname")]
25623    #[serde(skip_serializing_if = "Option::is_none")]
25624    pub surname: Option<String>,
25625    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the user.\n\noptional"]
25626    #[serde(rename = "tags")]
25627    #[serde(skip_serializing_if = "Option::is_none")]
25628    pub tags: Option<Vec<KeyValueObject>>,
25629}
25630#[doc = "Load Balancer\n\nThe load balancer object describes the load balancer entity and contains additional information regarding the distribution of traffic across a network.\n\n[] Category:  | Name: load_balancer\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
25631#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25632#[serde(default)]
25633#[non_exhaustive]
25634pub struct LoadBalancer {
25635    #[doc = "Classification\n\nThe request classification as defined by the load balancer.\n\noptional"]
25636    #[serde(rename = "classification")]
25637    #[serde(skip_serializing_if = "Option::is_none")]
25638    pub classification: Option<String>,
25639    #[doc = "Response Code\n\nThe numeric response status code detailing the connection from the load balancer to the destination target.\n\nrecommended"]
25640    #[serde(rename = "code")]
25641    #[serde(skip_serializing_if = "Option::is_none")]
25642    pub code: Option<i64>,
25643    #[doc = "Destination Endpoint\n\nThe destination to which the load balancer is distributing traffic.\n\nrecommended"]
25644    #[serde(rename = "dst_endpoint")]
25645    #[serde(skip_serializing_if = "Option::is_none")]
25646    pub dst_endpoint: Option<Box<NetworkEndpoint>>,
25647    #[doc = "Endpoint Connections\n\nAn object detailing the load balancer connection attempts and responses.\n\nrecommended"]
25648    #[serde(rename = "endpoint_connections")]
25649    #[serde(skip_serializing_if = "Option::is_none")]
25650    pub endpoint_connections: Option<Vec<EndpointConnection>>,
25651    #[doc = "Error Message\n\nThe load balancer error message.\n\noptional"]
25652    #[serde(rename = "error_message")]
25653    #[serde(skip_serializing_if = "Option::is_none")]
25654    pub error_message: Option<String>,
25655    #[doc = "IP Address\n\nThe IP address of the load balancer node that handled the client request. Note: the load balancer may have other IP addresses, and this is not an IP address of the target/distribution endpoint - see <code>dst_endpoint</code>.\n\noptional"]
25656    #[serde(rename = "ip")]
25657    #[serde(skip_serializing_if = "Option::is_none")]
25658    pub ip: Option<String>,
25659    #[doc = "Message\n\nThe load balancer message.\n\noptional"]
25660    #[serde(rename = "message")]
25661    #[serde(skip_serializing_if = "Option::is_none")]
25662    pub message: Option<String>,
25663    #[doc = "Metrics\n\nGeneral purpose metrics associated with the load balancer.\n\noptional"]
25664    #[serde(rename = "metrics")]
25665    #[serde(skip_serializing_if = "Option::is_none")]
25666    pub metrics: Option<Vec<Metric>>,
25667    #[doc = "Name\n\nThe name of the load balancer.\n\nrecommended"]
25668    #[serde(rename = "name")]
25669    #[serde(skip_serializing_if = "Option::is_none")]
25670    pub name: Option<String>,
25671    #[doc = "Status Detail\n\nThe status detail contains additional status information about the load balancer distribution event.\n\noptional"]
25672    #[serde(rename = "status_detail")]
25673    #[serde(skip_serializing_if = "Option::is_none")]
25674    pub status_detail: Option<String>,
25675    #[doc = "Unique ID\n\nThe unique identifier for the load balancer.\n\nrecommended"]
25676    #[serde(rename = "uid")]
25677    #[serde(skip_serializing_if = "Option::is_none")]
25678    pub uid: Option<String>,
25679}
25680#[doc = "Geo Location\n\nThe Geo Location object describes a geographical location, usually associated with an IP address.\n\n[] Category:  | Name: location\n\n**Constraints:**\n* at_least_one: `[city`,`country`,`postal_code`,`region]`\n"]
25681#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25682#[serde(default)]
25683#[non_exhaustive]
25684pub struct Location {
25685    #[doc = "Aerial Height\n\nExpressed as either height above takeoff location or height above ground level (AGL) for a UAS current location. This value is provided in meters and must have a minimum resolution of 1 m. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: -1000 m</code>.\n\noptional"]
25686    #[serde(rename = "aerial_height")]
25687    #[serde(skip_serializing_if = "Option::is_none")]
25688    pub aerial_height: Option<String>,
25689    #[doc = "City\n\nThe name of the city.\n\nrecommended"]
25690    #[serde(rename = "city")]
25691    #[serde(skip_serializing_if = "Option::is_none")]
25692    pub city: Option<String>,
25693    #[doc = "Continent\n\nThe name of the continent.\n\nrecommended"]
25694    #[serde(rename = "continent")]
25695    #[serde(skip_serializing_if = "Option::is_none")]
25696    pub continent: Option<String>,
25697    #[doc = "Coordinates\n\nA two-element array, containing a longitude/latitude pair. The format conforms with <a target='_blank' href='https://geojson.org'>GeoJSON</a>. For example: <code>[-73.983, 40.719]</code>.\n\noptional"]
25698    #[serde(rename = "coordinates")]
25699    #[serde(skip_serializing_if = "Option::is_none")]
25700    pub coordinates: Option<Vec<f64>>,
25701    #[doc = "Country\n\nThe ISO 3166-1 Alpha-2 country code.<p><b>Note:</b> The two letter country code should be capitalized. For example: <code>US</code> or <code>CA</code>.</p>\n\nrecommended"]
25702    #[serde(rename = "country")]
25703    #[serde(skip_serializing_if = "Option::is_none")]
25704    pub country: Option<String>,
25705    #[doc = "Description\n\nThe description of the geographical location.\n\noptional"]
25706    #[serde(rename = "desc")]
25707    #[serde(skip_serializing_if = "Option::is_none")]
25708    pub desc: Option<String>,
25709    #[doc = "Geodetic Altitude\n\nThe aircraft distance above or below the ellipsoid as measured along a line that passes through the aircraft and is normal to the surface of the WGS-84 ellipsoid. This value is provided in meters and must have a minimum resolution of 1 m. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: -1000 m</code>.\n\noptional"]
25710    #[serde(rename = "geodetic_altitude")]
25711    #[serde(skip_serializing_if = "Option::is_none")]
25712    pub geodetic_altitude: Option<String>,
25713    #[doc = "Geodetic Vertical Accuracy\n\nProvides quality/containment on geodetic altitude. This is based on ADS-B Geodetic Vertical Accuracy (GVA). Measured in meters.\n\noptional"]
25714    #[serde(rename = "geodetic_vertical_accuracy")]
25715    #[serde(skip_serializing_if = "Option::is_none")]
25716    pub geodetic_vertical_accuracy: Option<String>,
25717    #[doc = "Geohash\n\n<p>Geohash of the geo-coordinates (latitude and longitude).</p><a target='_blank' href='https://en.wikipedia.org/wiki/Geohash'>Geohashing</a> is a geocoding system used to encode geographic coordinates in decimal degrees, to a single string.\n\noptional"]
25718    #[serde(rename = "geohash")]
25719    #[serde(skip_serializing_if = "Option::is_none")]
25720    pub geohash: Option<String>,
25721    #[doc = "Horizontal Accuracy\n\nProvides quality/containment on horizontal position. This is based on ADS-B NACp. Measured in meters.\n\noptional"]
25722    #[serde(rename = "horizontal_accuracy")]
25723    #[serde(skip_serializing_if = "Option::is_none")]
25724    pub horizontal_accuracy: Option<String>,
25725    #[doc = "On Premises\n\nThe indication of whether the location is on premises.\n\noptional"]
25726    #[serde(rename = "is_on_premises")]
25727    #[serde(skip_serializing_if = "Option::is_none")]
25728    pub is_on_premises: Option<bool>,
25729    #[doc = "ISP Name\n\nThe name of the Internet Service Provider (ISP).\n\noptional"]
25730    #[serde(rename = "isp")]
25731    #[serde(skip_serializing_if = "Option::is_none")]
25732    pub isp: Option<String>,
25733    #[doc = "Latitude\n\nThe geographical Latitude coordinate represented in Decimal Degrees (DD). For example: <code>42.361145</code>.\n\noptional"]
25734    #[serde(rename = "lat")]
25735    #[serde(skip_serializing_if = "Option::is_none")]
25736    pub lat: Option<f64>,
25737    #[doc = "Longitude\n\nThe geographical Longitude coordinate represented in Decimal Degrees (DD). For example: <code>-71.057083</code>.\n\noptional"]
25738    #[serde(rename = "long")]
25739    #[serde(skip_serializing_if = "Option::is_none")]
25740    pub long: Option<f64>,
25741    #[doc = "Postal Code\n\nThe postal code of the location.\n\noptional"]
25742    #[serde(rename = "postal_code")]
25743    #[serde(skip_serializing_if = "Option::is_none")]
25744    pub postal_code: Option<String>,
25745    #[doc = "Pressure Altitude\n\nThe uncorrected barometric pressure altitude (based on reference standard 29.92 inHg, 1013.25 mb) provides a reference for algorithms that utilize 'altitude deltas' between aircraft. This value is provided in meters and must have a minimum resolution of 1 m.. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: -1000 m</code>.\n\noptional"]
25746    #[serde(rename = "pressure_altitude")]
25747    #[serde(skip_serializing_if = "Option::is_none")]
25748    pub pressure_altitude: Option<String>,
25749    #[doc = "Provider\n\nThe provider of the geographical location data.\n\noptional"]
25750    #[serde(rename = "provider")]
25751    #[serde(skip_serializing_if = "Option::is_none")]
25752    pub provider: Option<String>,
25753    #[doc = "Region\n\nThe alphanumeric code that identifies the principal subdivision (e.g. province or state) of the country. For example, 'CH-VD' for the Canton of Vaud, Switzerland\n\noptional"]
25754    #[serde(rename = "region")]
25755    #[serde(skip_serializing_if = "Option::is_none")]
25756    pub region: Option<String>,
25757}
25758#[doc = "Logger\n\nThe Logger object represents the device and product where events are stored with times for receipt and transmission.  This may be at the source device where the event occurred, a remote scanning device, intermediate hops, or the ultimate destination.\n\n[] Category:  | Name: logger\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
25759#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25760#[serde(default)]
25761#[non_exhaustive]
25762pub struct Logger {
25763    #[doc = "Device\n\nThe device where the events are logged.\n\nrecommended"]
25764    #[serde(rename = "device")]
25765    #[serde(skip_serializing_if = "Option::is_none")]
25766    pub device: Option<Box<Device>>,
25767    #[doc = "Event UID\n\nThe unique identifier of the event assigned by the logger.\n\noptional"]
25768    #[serde(rename = "event_uid")]
25769    #[serde(skip_serializing_if = "Option::is_none")]
25770    pub event_uid: Option<String>,
25771    #[doc = "Is Truncated\n\nIndicates whether the OCSF event data has been truncated due to size limitations. When <code>true</code>, some event data may have been omitted to fit within system constraints.\n\noptional"]
25772    #[serde(rename = "is_truncated")]
25773    #[serde(skip_serializing_if = "Option::is_none")]
25774    pub is_truncated: Option<bool>,
25775    #[doc = "Log Format\n\nThe format of data in the log. For example JSON, syslog or CSV.\n\noptional"]
25776    #[serde(rename = "log_format")]
25777    #[serde(skip_serializing_if = "Option::is_none")]
25778    pub log_format: Option<String>,
25779    #[doc = "Log Level\n\nThe level at which an event was logged. This can be log provider specific. For example the audit level.\n\noptional"]
25780    #[serde(rename = "log_level")]
25781    #[serde(skip_serializing_if = "Option::is_none")]
25782    pub log_level: Option<String>,
25783    #[doc = "Log Name\n\nThe log name for the logging provider log, or the file name of the system log. This may be an intermediate store-and-forward log or a vendor destination log. For example /archive/server1/var/log/messages.0 or /var/log/.\n\nrecommended"]
25784    #[serde(rename = "log_name")]
25785    #[serde(skip_serializing_if = "Option::is_none")]
25786    pub log_name: Option<String>,
25787    #[doc = "Log Provider\n\nThe logging provider or logging service that logged the event. This may be an intermediate application store-and-forward log or a vendor destination log.\n\nrecommended"]
25788    #[serde(rename = "log_provider")]
25789    #[serde(skip_serializing_if = "Option::is_none")]
25790    pub log_provider: Option<String>,
25791    #[doc = "Log Version\n\nThe event log schema version of the original event. For example the syslog version or the Cisco Log Schema version\n\noptional"]
25792    #[serde(rename = "log_version")]
25793    #[serde(skip_serializing_if = "Option::is_none")]
25794    pub log_version: Option<String>,
25795    #[doc = "Logged Time\n\n<p>The time when the logging system collected and logged the event.</p>This attribute is distinct from the event time in that event time typically contain the time extracted from the original event. Most of the time, these two times will be different.\n\nrecommended"]
25796    #[serde(rename = "logged_time")]
25797    #[serde(skip_serializing_if = "Option::is_none")]
25798    pub logged_time: Option<i64>,
25799    #[doc = "Logged Time\n\n<p>The time when the logging system collected and logged the event.</p>This attribute is distinct from the event time in that event time typically contain the time extracted from the original event. Most of the time, these two times will be different.\n\noptional"]
25800    #[serde(rename = "logged_time_dt")]
25801    #[serde(skip_serializing_if = "Option::is_none")]
25802    pub logged_time_dt: Option<String>,
25803    #[doc = "Name\n\nThe name of the logging product instance.\n\nrecommended"]
25804    #[serde(rename = "name")]
25805    #[serde(skip_serializing_if = "Option::is_none")]
25806    pub name: Option<String>,
25807    #[doc = "Product\n\nThe product logging the event.  This may be the event source product, a management server product, a scanning product, a SIEM, etc.\n\nrecommended"]
25808    #[serde(rename = "product")]
25809    #[serde(skip_serializing_if = "Option::is_none")]
25810    pub product: Option<Box<Product>>,
25811    #[doc = "Transmission Time\n\nThe time when the event was transmitted from the logging device to it's next destination.\n\nrecommended"]
25812    #[serde(rename = "transmit_time")]
25813    #[serde(skip_serializing_if = "Option::is_none")]
25814    pub transmit_time: Option<i64>,
25815    #[doc = "Transmission Time\n\nThe time when the event was transmitted from the logging device to it's next destination.\n\noptional"]
25816    #[serde(rename = "transmit_time_dt")]
25817    #[serde(skip_serializing_if = "Option::is_none")]
25818    pub transmit_time_dt: Option<String>,
25819    #[doc = "Unique ID\n\nThe unique identifier of the logging product instance.\n\nrecommended"]
25820    #[serde(rename = "uid")]
25821    #[serde(skip_serializing_if = "Option::is_none")]
25822    pub uid: Option<String>,
25823    #[doc = "Untruncated Size\n\nThe original size of the OCSF event data in kilobytes before any truncation occurred. This field is typically populated when <code>is_truncated</code> is <code>true</code> to indicate the full size of the original event.\n\noptional"]
25824    #[serde(rename = "untruncated_size")]
25825    #[serde(skip_serializing_if = "Option::is_none")]
25826    pub untruncated_size: Option<i64>,
25827    #[doc = "Version\n\nThe version of the logging provider.\n\noptional"]
25828    #[serde(rename = "version")]
25829    #[serde(skip_serializing_if = "Option::is_none")]
25830    pub version: Option<String>,
25831}
25832#[doc = "Long String\n\nThis object is a used to capture strings which may be truncated by a security product due to their length.\n\n[] Category:  | Name: long_string"]
25833#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25834#[serde(default)]
25835#[non_exhaustive]
25836pub struct LongString {
25837    #[doc = "Is Truncated\n\nIndicates that <code>value</code> has been truncated. May be omitted if truncation has not occurred.\n\noptional"]
25838    #[serde(rename = "is_truncated")]
25839    #[serde(skip_serializing_if = "Option::is_none")]
25840    pub is_truncated: Option<bool>,
25841    #[doc = "Untruncated Size\n\nThe size in bytes of the string represented by <code>value</code> before truncation. Should be omitted if truncation has not occurred.\n\noptional"]
25842    #[serde(rename = "untruncated_size")]
25843    #[serde(skip_serializing_if = "Option::is_none")]
25844    pub untruncated_size: Option<i64>,
25845    #[doc = "Value\n\nThe string value, truncated if <code>is_truncated</code> is <code>true</code>.\n\nrequired"]
25846    #[serde(rename = "value")]
25847    #[serde(skip_serializing_if = "Option::is_none")]
25848    pub value: Option<String>,
25849}
25850#[doc = "Malware\n\nThe Malware object describes the classification of known malicious software, which is intentionally designed to cause damage to a computer, server, client, or computer network.\n\n[] Category:  | Name: malware\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
25851#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25852#[serde(default)]
25853#[non_exhaustive]
25854pub struct Malware {
25855    #[doc = "Classification IDs\n\nThe list of normalized identifiers of the malware classifications.\n\nrequired"]
25856    #[serde(rename = "classification_ids")]
25857    #[serde(skip_serializing_if = "Option::is_none")]
25858    pub classification_ids: Option<Vec<i64>>,
25859    #[doc = "Classifications\n\nThe list of malware classifications, normalized to the captions of the <code>classification_ids</code> values. In the case of 'Other', they are defined by the event source.\n\noptional"]
25860    #[serde(rename = "classifications")]
25861    #[serde(skip_serializing_if = "Option::is_none")]
25862    pub classifications: Option<Vec<String>>,
25863    #[doc = "CVE List\n\nThe list of Common Vulnerabilities and Exposures (CVE) identifiers associated with the malware. Reference: <a target='_blank' href='https://cve.mitre.org/'>CVE</a>\n\noptional"]
25864    #[serde(rename = "cves")]
25865    #[serde(skip_serializing_if = "Option::is_none")]
25866    pub cves: Option<Vec<Cve>>,
25867    #[doc = "Files\n\nThe list of file objects representing files that were identified as infected by the malware.\n\noptional"]
25868    #[serde(rename = "files")]
25869    #[serde(skip_serializing_if = "Option::is_none")]
25870    pub files: Option<Vec<File>>,
25871    #[doc = "Name\n\nThe malware name, as reported by the detection engine.\n\nrecommended"]
25872    #[serde(rename = "name")]
25873    #[serde(skip_serializing_if = "Option::is_none")]
25874    pub name: Option<String>,
25875    #[doc = "Number of Infected Entities\n\nThe number of files that were identified to be infected by the malware.\n\noptional"]
25876    #[serde(rename = "num_infected")]
25877    #[serde(skip_serializing_if = "Option::is_none")]
25878    pub num_infected: Option<i64>,
25879    #[doc = "Path\n\nThe filesystem path of the malware that was observed.\n\nrecommended"]
25880    #[serde(rename = "path")]
25881    #[serde(skip_serializing_if = "Option::is_none")]
25882    pub path: Option<String>,
25883    #[doc = "Provider\n\nThe name or identifier of the security solution or service that provided the malware detection information.\n\nrecommended"]
25884    #[serde(rename = "provider")]
25885    #[serde(skip_serializing_if = "Option::is_none")]
25886    pub provider: Option<String>,
25887    #[doc = "Severity\n\nThe severity of the malware, normalized to the captions of the <code>severity_id</code> values. In the case of 'Other', they are defined by the event source.\n\noptional"]
25888    #[serde(rename = "severity")]
25889    #[serde(skip_serializing_if = "Option::is_none")]
25890    pub severity: Option<String>,
25891    #[doc = "Severity ID\n\nThe normalized identifier of the malware severity.\n\nrecommended"]
25892    #[serde(rename = "severity_id")]
25893    #[serde(skip_serializing_if = "Option::is_none")]
25894    pub severity_id: Option<i64>,
25895    #[doc = "Unique ID\n\nA unique identifier for the specific malware instance, as assigned by the detection engine (e.g., virus signature ID or IPS rule ID).\n\nrecommended"]
25896    #[serde(rename = "uid")]
25897    #[serde(skip_serializing_if = "Option::is_none")]
25898    pub uid: Option<String>,
25899}
25900#[doc = "Malware Scan Info\n\nThe malware scan information object describes characteristics, metadata of a malware scanning job.\n\n[] Category:  | Name: malware_scan_info\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
25901#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25902#[serde(default)]
25903#[non_exhaustive]
25904pub struct MalwareScanInfo {
25905    #[doc = "End Time\n\nThe timestamp indicating when the scan job completed execution.\n\noptional"]
25906    #[serde(rename = "end_time")]
25907    #[serde(skip_serializing_if = "Option::is_none")]
25908    pub end_time: Option<i64>,
25909    #[doc = "End Time\n\nThe timestamp indicating when the scan job completed execution.\n\noptional"]
25910    #[serde(rename = "end_time_dt")]
25911    #[serde(skip_serializing_if = "Option::is_none")]
25912    pub end_time_dt: Option<String>,
25913    #[doc = "Name\n\nThe administrator-supplied or application-generated name of the scan. For example: \"Home office weekly user database scan\", \"Scan folders for viruses\", \"Full system virus scan\"\n\nrecommended"]
25914    #[serde(rename = "name")]
25915    #[serde(skip_serializing_if = "Option::is_none")]
25916    pub name: Option<String>,
25917    #[doc = "Scanned Files\n\nThe total number of files analyzed during the scan.\n\noptional"]
25918    #[serde(rename = "num_files")]
25919    #[serde(skip_serializing_if = "Option::is_none")]
25920    pub num_files: Option<i64>,
25921    #[doc = "Number of Infected Entities\n\nThe total number of files identified as infected with malware during the scan.\n\noptional"]
25922    #[serde(rename = "num_infected")]
25923    #[serde(skip_serializing_if = "Option::is_none")]
25924    pub num_infected: Option<i64>,
25925    #[doc = "Number of Volumes\n\nThe total number of storage volumes examined during the malware scan.\n\noptional"]
25926    #[serde(rename = "num_volumes")]
25927    #[serde(skip_serializing_if = "Option::is_none")]
25928    pub num_volumes: Option<i64>,
25929    #[doc = "Size\n\nThe total size in bytes of all files that were scanned.\n\noptional"]
25930    #[serde(rename = "size")]
25931    #[serde(skip_serializing_if = "Option::is_none")]
25932    pub size: Option<i64>,
25933    #[doc = "Start Time\n\nThe timestamp indicating when the scan job began execution.\n\noptional"]
25934    #[serde(rename = "start_time")]
25935    #[serde(skip_serializing_if = "Option::is_none")]
25936    pub start_time: Option<i64>,
25937    #[doc = "Start Time\n\nThe timestamp indicating when the scan job began execution.\n\noptional"]
25938    #[serde(rename = "start_time_dt")]
25939    #[serde(skip_serializing_if = "Option::is_none")]
25940    pub start_time_dt: Option<String>,
25941    #[doc = "Type\n\nThe type of scan.\n\noptional"]
25942    #[serde(rename = "type")]
25943    #[serde(skip_serializing_if = "Option::is_none")]
25944    pub r#type: Option<String>,
25945    #[doc = "Type ID\n\nThe type id of the scan.\n\nrequired"]
25946    #[serde(rename = "type_id")]
25947    #[serde(skip_serializing_if = "Option::is_none")]
25948    pub type_id: Option<i64>,
25949    #[doc = "Scan UID\n\nThe application-defined unique identifier assigned to an instance of a scan.\n\nrecommended"]
25950    #[serde(rename = "uid")]
25951    #[serde(skip_serializing_if = "Option::is_none")]
25952    pub uid: Option<String>,
25953    #[doc = "Unique Malware Count\n\nThe number of unique malware detected across all infected files.\n\noptional"]
25954    #[serde(rename = "unique_malware_count")]
25955    #[serde(skip_serializing_if = "Option::is_none")]
25956    pub unique_malware_count: Option<i64>,
25957}
25958#[doc = "Managed Entity\n\nThe Managed Entity object describes the type and version of an entity, such as a user, device, or policy.  For types in the <code>type_id</code> enum list, an associated attribute should be populated.  If the type of entity is not in the <code>type_id</code> list, information can be put into the <code>data</code> attribute, <code>type_id</code> should be 'Other' and the <code>type</code> attribute should label the entity type.\n\n[] Category:  | Name: managed_entity\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
25959#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
25960#[serde(default)]
25961#[non_exhaustive]
25962pub struct ManagedEntity {
25963    #[doc = "Data\n\nThe managed entity content as a JSON object.\n\noptional"]
25964    #[serde(rename = "data")]
25965    #[serde(skip_serializing_if = "Option::is_none")]
25966    pub data: Option<serde_json::Value>,
25967    #[doc = "Device\n\nAn addressable device, computer system or host.\n\nrecommended"]
25968    #[serde(rename = "device")]
25969    #[serde(skip_serializing_if = "Option::is_none")]
25970    pub device: Option<Box<Device>>,
25971    #[doc = "Email\n\nThe email object.\n\nrecommended"]
25972    #[serde(rename = "email")]
25973    #[serde(skip_serializing_if = "Option::is_none")]
25974    pub email: Option<Box<Email>>,
25975    #[doc = "Group\n\nThe group object associated with an entity such as user, policy, or rule.\n\nrecommended"]
25976    #[serde(rename = "group")]
25977    #[serde(skip_serializing_if = "Option::is_none")]
25978    pub group: Option<Box<Group>>,
25979    #[doc = "Geo Location\n\nThe detailed geographical location usually associated with an IP address.\n\noptional"]
25980    #[serde(rename = "location")]
25981    #[serde(skip_serializing_if = "Option::is_none")]
25982    pub location: Option<Box<Location>>,
25983    #[doc = "Name\n\nThe name of the managed entity. It should match the name of the specific entity object's name if populated, or the name of the managed entity if the <code>type_id</code> is 'Other'.\n\nrecommended"]
25984    #[serde(rename = "name")]
25985    #[serde(skip_serializing_if = "Option::is_none")]
25986    pub name: Option<String>,
25987    #[doc = "Organization\n\nThe Organization object containing details about the managed organizational entity. This object includes properties such as the organization name, unique identifier, type, and other organizational metadata. This attribute should be populated when <code>type_id</code> is <code>4</code> (Organization).\n\nrecommended"]
25988    #[serde(rename = "org")]
25989    #[serde(skip_serializing_if = "Option::is_none")]
25990    pub org: Option<Box<Organization>>,
25991    #[doc = "Policy\n\nDescribes details of a managed policy.\n\nrecommended"]
25992    #[serde(rename = "policy")]
25993    #[serde(skip_serializing_if = "Option::is_none")]
25994    pub policy: Option<Box<Policy>>,
25995    #[doc = "Type\n\nThe managed entity type. For example: <code>Policy</code>, <code>User</code>, <code>Organization</code>, <code>Device</code>.\n\nrecommended"]
25996    #[serde(rename = "type")]
25997    #[serde(skip_serializing_if = "Option::is_none")]
25998    pub r#type: Option<String>,
25999    #[doc = "Type ID\n\nThe type of the Managed Entity. It is recommended to also populate the <code>type</code> attribute with the associated label, or the source specific name if <code>Other</code>.\n\nrecommended"]
26000    #[serde(rename = "type_id")]
26001    #[serde(skip_serializing_if = "Option::is_none")]
26002    pub type_id: Option<i64>,
26003    #[doc = "Unique ID\n\nThe identifier of the managed entity. It should match the <code>uid</code> of the specific entity's object UID if populated, or the source specific ID if the <code>type_id</code> is 'Other'.\n\nrecommended"]
26004    #[serde(rename = "uid")]
26005    #[serde(skip_serializing_if = "Option::is_none")]
26006    pub uid: Option<String>,
26007    #[doc = "User\n\nThe user that pertains to the event or object.\n\nrecommended"]
26008    #[serde(rename = "user")]
26009    #[serde(skip_serializing_if = "Option::is_none")]
26010    pub user: Option<Box<User>>,
26011    #[doc = "Version\n\nThe version of the managed entity. For example: <code>1.2.3</code>.\n\nrecommended"]
26012    #[serde(rename = "version")]
26013    #[serde(skip_serializing_if = "Option::is_none")]
26014    pub version: Option<String>,
26015}
26016#[doc = "Message Context\n\nCommunication context for AI system interactions including protocols, roles, clients, and session information for MCP and other AI communication systems.\n\n[] Category:  | Name: message_context\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
26017#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26018#[serde(default)]
26019#[non_exhaustive]
26020pub struct MessageContext {
26021    #[doc = "AI Role\n\nThe normalized caption of the <code>ai_role_id</code>.\n\noptional"]
26022    #[serde(rename = "ai_role")]
26023    #[serde(skip_serializing_if = "Option::is_none")]
26024    pub ai_role: Option<String>,
26025    #[doc = "AI Role ID\n\nSpecifies the functional role of the AI within the context of this message, such as retrieving information, assisting reasoning, executing a tool, or generating content.\n\nrecommended"]
26026    #[serde(rename = "ai_role_id")]
26027    #[serde(skip_serializing_if = "Option::is_none")]
26028    pub ai_role_id: Option<i64>,
26029    #[doc = "Application\n\nThe initiating client application. In AI systems, this represents the client-side application or framework that initiates requests (e.g., LangChain application, web browser, mobile app, SDK implementation).\n\nrecommended"]
26030    #[serde(rename = "application")]
26031    #[serde(skip_serializing_if = "Option::is_none")]
26032    pub application: Option<Box<Application>>,
26033    #[doc = "Completion Tokens\n\nNumber of tokens in the model's response/completion for this message.\n\noptional"]
26034    #[serde(rename = "completion_tokens")]
26035    #[serde(skip_serializing_if = "Option::is_none")]
26036    pub completion_tokens: Option<i64>,
26037    #[doc = "Name\n\nThe name or identifier of the message context. In AI systems, this could be the conversation ID, session name, thread identifier, or interaction name (e.g., 'user-session-123', 'conversation-abc', 'chat-thread-456').\n\nrecommended"]
26038    #[serde(rename = "name")]
26039    #[serde(skip_serializing_if = "Option::is_none")]
26040    pub name: Option<String>,
26041    #[doc = "Prompt Tokens\n\nNumber of tokens in the input prompt for this message.\n\noptional"]
26042    #[serde(rename = "prompt_tokens")]
26043    #[serde(skip_serializing_if = "Option::is_none")]
26044    pub prompt_tokens: Option<i64>,
26045    #[doc = "Service\n\nThe server or service handling the request. In AI systems, this represents the AI service, API endpoint, or agent that processes and responds to requests (e.g., OpenAI API service, Claude API service, internal AI model service).\n\nrecommended"]
26046    #[serde(rename = "service")]
26047    #[serde(skip_serializing_if = "Option::is_none")]
26048    pub service: Option<Box<Service>>,
26049    #[doc = "Total Tokens\n\nTotal number of tokens used for this message (prompt + completion).\n\noptional"]
26050    #[serde(rename = "total_tokens")]
26051    #[serde(skip_serializing_if = "Option::is_none")]
26052    pub total_tokens: Option<i64>,
26053    #[doc = "Unique ID\n\nThe unique identifier of the message context. This could be a session ID, conversation ID, or other unique identifier that allows correlation of messages within the same context.\n\nrecommended"]
26054    #[serde(rename = "uid")]
26055    #[serde(skip_serializing_if = "Option::is_none")]
26056    pub uid: Option<String>,
26057}
26058#[doc = "Metadata\n\nThe Metadata object describes the metadata associated with the event.\n\n[] Category:  | Name: metadata"]
26059#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26060#[serde(default)]
26061#[non_exhaustive]
26062pub struct Metadata {
26063    #[doc = "Correlation UID\n\nA unique identifier used to correlate this OCSF event with other related OCSF events, distinct from the event's <code>uid</code> value. This enables linking multiple OCSF events that are part of the same activity, transaction, or security incident across different systems or time periods.\n\noptional"]
26064    #[serde(rename = "correlation_uid")]
26065    #[serde(skip_serializing_if = "Option::is_none")]
26066    pub correlation_uid: Option<String>,
26067    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
26068    #[serde(rename = "data_classification")]
26069    #[serde(skip_serializing_if = "Option::is_none")]
26070    pub data_classification: Option<Box<DataClassification>>,
26071    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
26072    #[serde(rename = "data_classifications")]
26073    #[serde(skip_serializing_if = "Option::is_none")]
26074    pub data_classifications: Option<Vec<DataClassification>>,
26075    #[doc = "Debug Information\n\nDebug information about non-fatal issues with this OCSF event. Each issue is a line in this string array.\n\noptional"]
26076    #[serde(rename = "debug")]
26077    #[serde(skip_serializing_if = "Option::is_none")]
26078    pub debug: Option<Vec<String>>,
26079    #[doc = "Event Code\n\nThe identifier of the original event. For example the numerical Windows Event Code or Cisco syslog code.\n\noptional"]
26080    #[serde(rename = "event_code")]
26081    #[serde(skip_serializing_if = "Option::is_none")]
26082    pub event_code: Option<String>,
26083    #[doc = "Schema Extension\n\nThe schema extension used to create the event.\n\noptional"]
26084    #[serde(rename = "extension")]
26085    #[serde(skip_serializing_if = "Option::is_none")]
26086    pub extension: Option<Box<Extension>>,
26087    #[doc = "Schema Extensions\n\nThe schema extensions used to create the event.\n\noptional"]
26088    #[serde(rename = "extensions")]
26089    #[serde(skip_serializing_if = "Option::is_none")]
26090    pub extensions: Option<Vec<Extension>>,
26091    #[doc = "Is Truncated\n\nIndicates whether the OCSF event data has been truncated due to size limitations. When <code>true</code>, some event data may have been omitted to fit within system constraints.\n\noptional"]
26092    #[serde(rename = "is_truncated")]
26093    #[serde(skip_serializing_if = "Option::is_none")]
26094    pub is_truncated: Option<bool>,
26095    #[doc = "Labels\n\nThe list of labels attached to the event. For example: <code>[\"sample\", \"dev\"]</code>\n\noptional"]
26096    #[serde(rename = "labels")]
26097    #[serde(skip_serializing_if = "Option::is_none")]
26098    pub labels: Option<Vec<String>>,
26099    #[doc = "Log Source Format\n\nThe format of data in the log where the data originated. For example CSV, XML, Windows Multiline, JSON, syslog or Cisco Log Schema.\n\noptional"]
26100    #[serde(rename = "log_format")]
26101    #[serde(skip_serializing_if = "Option::is_none")]
26102    pub log_format: Option<String>,
26103    #[doc = "Log Level\n\nThe level at which an event was logged. This can be log provider specific. For example the audit level.\n\noptional"]
26104    #[serde(rename = "log_level")]
26105    #[serde(skip_serializing_if = "Option::is_none")]
26106    pub log_level: Option<String>,
26107    #[doc = "Log Name\n\nThe event log name, typically for the consumer of the event. For example, the storage bucket name, SIEM repository index name, etc.\n\nrecommended"]
26108    #[serde(rename = "log_name")]
26109    #[serde(skip_serializing_if = "Option::is_none")]
26110    pub log_name: Option<String>,
26111    #[doc = "Log Provider\n\nThe logging provider or logging service that logged the event. For example AWS CloudWatch or Splunk.\n\noptional"]
26112    #[serde(rename = "log_provider")]
26113    #[serde(skip_serializing_if = "Option::is_none")]
26114    pub log_provider: Option<String>,
26115    #[doc = "Log Source\n\nThe log system or component where the data originated. For example, a file path, syslog server name or a Windows hostname and logging subsystem such as Security.\n\noptional"]
26116    #[serde(rename = "log_source")]
26117    #[serde(skip_serializing_if = "Option::is_none")]
26118    pub log_source: Option<String>,
26119    #[doc = "Log Version\n\nThe event log schema version of the original event. For example the syslog version or the Cisco Log Schema version\n\noptional"]
26120    #[serde(rename = "log_version")]
26121    #[serde(skip_serializing_if = "Option::is_none")]
26122    pub log_version: Option<String>,
26123    #[doc = "Logged Time\n\n<p>The time when the logging system collected and logged the event.</p>This attribute is distinct from the event time in that event time typically contain the time extracted from the original event. Most of the time, these two times will be different.\n\noptional"]
26124    #[serde(rename = "logged_time")]
26125    #[serde(skip_serializing_if = "Option::is_none")]
26126    pub logged_time: Option<i64>,
26127    #[doc = "Logged Time\n\n<p>The time when the logging system collected and logged the event.</p>This attribute is distinct from the event time in that event time typically contain the time extracted from the original event. Most of the time, these two times will be different.\n\noptional"]
26128    #[serde(rename = "logged_time_dt")]
26129    #[serde(skip_serializing_if = "Option::is_none")]
26130    pub logged_time_dt: Option<String>,
26131    #[doc = "Loggers\n\nAn array of Logger objects that describe the pipeline of devices and logging products between the event source and its eventual destination. Note, this attribute can be used when there is a complex end-to-end path of event flow and/or to track the chain of custody of the data.\n\noptional"]
26132    #[serde(rename = "loggers")]
26133    #[serde(skip_serializing_if = "Option::is_none")]
26134    pub loggers: Option<Vec<Logger>>,
26135    #[doc = "Modified Time\n\nThe time when the event was last modified or enriched.\n\noptional"]
26136    #[serde(rename = "modified_time")]
26137    #[serde(skip_serializing_if = "Option::is_none")]
26138    pub modified_time: Option<i64>,
26139    #[doc = "Modified Time\n\nThe time when the event was last modified or enriched.\n\noptional"]
26140    #[serde(rename = "modified_time_dt")]
26141    #[serde(skip_serializing_if = "Option::is_none")]
26142    pub modified_time_dt: Option<String>,
26143    #[doc = "Original Event ID\n\nThe unique identifier assigned to the event in its original logging system before transformation to OCSF format. This field preserves the source system's native event identifier, enabling traceability back to the raw log entry. For example, a Windows Event Record ID, a syslog message ID, a Splunk _cd value, or a database transaction log sequence number.\n\noptional"]
26144    #[serde(rename = "original_event_uid")]
26145    #[serde(skip_serializing_if = "Option::is_none")]
26146    pub original_event_uid: Option<String>,
26147    #[doc = "Original Time\n\nThe original event time as reported by the event source. For example, the time in the original format from system event log such as Syslog on Unix/Linux and the System event file on Windows. Omit if event is generated instead of collected via logs.\n\nrecommended"]
26148    #[serde(rename = "original_time")]
26149    #[serde(skip_serializing_if = "Option::is_none")]
26150    pub original_time: Option<String>,
26151    #[doc = "Processed Time\n\nThe event processed time, such as an ETL operation.\n\noptional"]
26152    #[serde(rename = "processed_time")]
26153    #[serde(skip_serializing_if = "Option::is_none")]
26154    pub processed_time: Option<i64>,
26155    #[doc = "Processed Time\n\nThe event processed time, such as an ETL operation.\n\noptional"]
26156    #[serde(rename = "processed_time_dt")]
26157    #[serde(skip_serializing_if = "Option::is_none")]
26158    pub processed_time_dt: Option<String>,
26159    #[doc = "Product\n\nThe product that reported the event.\n\nrequired"]
26160    #[serde(rename = "product")]
26161    #[serde(skip_serializing_if = "Option::is_none")]
26162    pub product: Option<Box<Product>>,
26163    #[doc = "Profiles\n\nThe list of profiles used to create the event.  Profiles should be referenced by their <code>name</code> attribute for core profiles, or <code>extension/name</code> for profiles from extensions.\n\noptional"]
26164    #[serde(rename = "profiles")]
26165    #[serde(skip_serializing_if = "Option::is_none")]
26166    pub profiles: Option<Vec<String>>,
26167    #[doc = "Reporter\n\nThe entity from which the event or finding was first reported.\n\nrecommended"]
26168    #[serde(rename = "reporter")]
26169    #[serde(skip_serializing_if = "Option::is_none")]
26170    pub reporter: Option<Box<Reporter>>,
26171    #[doc = "Sequence Number\n\nSequence number of the event. The sequence number is a value available in some events, to make the exact ordering of events unambiguous, regardless of the event time precision.\n\noptional"]
26172    #[serde(rename = "sequence")]
26173    #[serde(skip_serializing_if = "Option::is_none")]
26174    pub sequence: Option<i64>,
26175    #[doc = "Source\n\nThe source of the event or finding. This can be any distinguishing name for the logical origin of the data — for example, 'CloudTrail Events', or a use case like 'Attack Simulations' or 'Vulnerability Scans'.\n\noptional"]
26176    #[serde(rename = "source")]
26177    #[serde(skip_serializing_if = "Option::is_none")]
26178    pub source: Option<String>,
26179    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the event.\n\noptional"]
26180    #[serde(rename = "tags")]
26181    #[serde(skip_serializing_if = "Option::is_none")]
26182    pub tags: Option<Vec<KeyValueObject>>,
26183    #[doc = "Tenant UID\n\nThe unique tenant identifier.\n\nrecommended"]
26184    #[serde(rename = "tenant_uid")]
26185    #[serde(skip_serializing_if = "Option::is_none")]
26186    pub tenant_uid: Option<String>,
26187    #[doc = "Transformation Info\n\nAn array of transformation info that describes the mappings or transforms applied to the data.\n\noptional"]
26188    #[serde(rename = "transformation_info_list")]
26189    #[serde(skip_serializing_if = "Option::is_none")]
26190    pub transformation_info_list: Option<Vec<TransformationInfo>>,
26191    #[doc = "Transmission Time\n\nThe time when the event was transmitted from the logging device to it's next destination.\n\noptional"]
26192    #[serde(rename = "transmit_time")]
26193    #[serde(skip_serializing_if = "Option::is_none")]
26194    pub transmit_time: Option<i64>,
26195    #[doc = "Transmission Time\n\nThe time when the event was transmitted from the logging device to it's next destination.\n\noptional"]
26196    #[serde(rename = "transmit_time_dt")]
26197    #[serde(skip_serializing_if = "Option::is_none")]
26198    pub transmit_time_dt: Option<String>,
26199    #[doc = "Type\n\nThe type of the event or finding as a subset of the <code>source</code> of the event. This can be any distinguishing characteristic of the data. For example 'Management Events' or 'Device Penetration Test'.\n\noptional"]
26200    #[serde(rename = "type")]
26201    #[serde(skip_serializing_if = "Option::is_none")]
26202    pub r#type: Option<String>,
26203    #[doc = "Event UID\n\nA unique identifier assigned to the OCSF event. This ID is specific to the OCSF event itself and is distinct from the original event identifier in the source system (see <code>original_event_uid</code>).\n\noptional"]
26204    #[serde(rename = "uid")]
26205    #[serde(skip_serializing_if = "Option::is_none")]
26206    pub uid: Option<String>,
26207    #[doc = "Untruncated Size\n\nThe original size of the OCSF event data in kilobytes before any truncation occurred. This field is typically populated when <code>is_truncated</code> is <code>true</code> to indicate the full size of the original event.\n\noptional"]
26208    #[serde(rename = "untruncated_size")]
26209    #[serde(skip_serializing_if = "Option::is_none")]
26210    pub untruncated_size: Option<i64>,
26211    #[doc = "Version\n\nThe version of the OCSF schema, using Semantic Versioning Specification (<a target='_blank' href='https://semver.org'>SemVer</a>). For example: <code>1.0.0.</code> Event consumers use the version to determine the available event attributes.\n\nrequired"]
26212    #[serde(rename = "version")]
26213    #[serde(skip_serializing_if = "Option::is_none")]
26214    pub version: Option<String>,
26215}
26216#[doc = "Metric\n\nThe Metric object defines a simple name/value pair entity for a metric.\n\n[] Category:  | Name: metric"]
26217#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26218#[serde(default)]
26219#[non_exhaustive]
26220pub struct Metric {
26221    #[doc = "Name\n\nThe name of the metric.\n\nrequired"]
26222    #[serde(rename = "name")]
26223    #[serde(skip_serializing_if = "Option::is_none")]
26224    pub name: Option<String>,
26225    #[doc = "Value\n\nThe value of the metric.\n\nrequired"]
26226    #[serde(rename = "value")]
26227    #[serde(skip_serializing_if = "Option::is_none")]
26228    pub value: Option<String>,
26229}
26230#[doc = "MITRE Mitigation\n\nThe MITRE Mitigation object describes the ATT&CK® or ATLAS™ Mitigation ID and/or name that is associated to an attack.\n\n[] Category:  | Name: mitigation\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
26231#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26232#[serde(default)]
26233#[non_exhaustive]
26234pub struct Mitigation {
26235    #[doc = "Countermeasures\n\nThe D3FEND countermeasures that are associated with the attack technique. For example: ATT&CK Technique <code>T1003</code> is addressed by Mitigation <code>M1027</code>, and D3FEND Technique <code>D3-OTP</code>.\n\noptional"]
26236    #[serde(rename = "countermeasures")]
26237    #[serde(skip_serializing_if = "Option::is_none")]
26238    pub countermeasures: Option<Vec<D3fend>>,
26239    #[doc = "Name\n\nThe Mitigation name that is associated with the attack technique. For example: <code>Password Policies</code>, or <code>Code Signing</code>.\n\nrecommended"]
26240    #[serde(rename = "name")]
26241    #[serde(skip_serializing_if = "Option::is_none")]
26242    pub name: Option<String>,
26243    #[doc = "Source URL\n\nThe versioned permalink of the Mitigation. For example: <code>https://attack.mitre.org/versions/v14/mitigations/M1027</code>.\n\noptional"]
26244    #[serde(rename = "src_url")]
26245    #[serde(skip_serializing_if = "Option::is_none")]
26246    pub src_url: Option<String>,
26247    #[doc = "Unique ID\n\nThe Mitigation ID that is associated with the attack technique. For example: <code>M1027</code>, or <code>AML.M0013</code>.\n\nrecommended"]
26248    #[serde(rename = "uid")]
26249    #[serde(skip_serializing_if = "Option::is_none")]
26250    pub uid: Option<String>,
26251}
26252#[doc = "Module\n\nThe Module object describes the attributes of a module.\n\n[] Category:  | Name: module\n\n**Constraints:**\n* at_least_one: `[load_type_id`,`function_name]`\n"]
26253#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26254#[serde(default)]
26255#[non_exhaustive]
26256pub struct Module {
26257    #[doc = "Base Address\n\nThe memory address where the module was loaded.\n\nrecommended"]
26258    #[serde(rename = "base_address")]
26259    #[serde(skip_serializing_if = "Option::is_none")]
26260    pub base_address: Option<String>,
26261    #[doc = "File\n\nThe module file object.\n\nrecommended"]
26262    #[serde(rename = "file")]
26263    #[serde(skip_serializing_if = "Option::is_none")]
26264    pub file: Option<Box<File>>,
26265    #[doc = "Function Invocation\n\nDetails about the invocation of the function given in <code>function_name</code>.\n\noptional"]
26266    #[serde(rename = "function_invocation")]
26267    #[serde(skip_serializing_if = "Option::is_none")]
26268    pub function_invocation: Option<Box<FunctionInvocation>>,
26269    #[doc = "Function Name\n\nThe invoked function in the module. For load and unload events, this is the entry-point function of the module. The system calls the entry-point function whenever a process or thread loads or unloads the module.\n\nrecommended"]
26270    #[serde(rename = "function_name")]
26271    #[serde(skip_serializing_if = "Option::is_none")]
26272    pub function_name: Option<String>,
26273    #[doc = "Load Type\n\nThe load type, normalized to the caption of the load_type_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
26274    #[serde(rename = "load_type")]
26275    #[serde(skip_serializing_if = "Option::is_none")]
26276    pub load_type: Option<String>,
26277    #[doc = "Load Type ID\n\nThe normalized identifier for how the module was loaded in memory.\n\nrecommended"]
26278    #[serde(rename = "load_type_id")]
26279    #[serde(skip_serializing_if = "Option::is_none")]
26280    pub load_type_id: Option<i64>,
26281    #[doc = "Start Address\n\nThe start address of the execution.\n\nrecommended"]
26282    #[serde(rename = "start_address")]
26283    #[serde(skip_serializing_if = "Option::is_none")]
26284    pub start_address: Option<String>,
26285    #[doc = "Type\n\nThe module type.\n\nrecommended"]
26286    #[serde(rename = "type")]
26287    #[serde(skip_serializing_if = "Option::is_none")]
26288    pub r#type: Option<String>,
26289}
26290#[doc = "Network Connection Information\n\nThe Network Connection Information object describes characteristics of an OSI Transport Layer communication, including TCP and UDP.\n\n[] Category:  | Name: network_connection_info"]
26291#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26292#[serde(default)]
26293#[non_exhaustive]
26294pub struct NetworkConnectionInfo {
26295    #[doc = "Boundary\n\nThe boundary of the connection, normalized to the caption of 'boundary_id'. In the case of 'Other', it is defined by the event source. <p> For cloud connections, this translates to the traffic-boundary(same VPC, through IGW, etc.). For traditional networks, this is described as Local, Internal, or External.</p>\n\noptional"]
26296    #[serde(rename = "boundary")]
26297    #[serde(skip_serializing_if = "Option::is_none")]
26298    pub boundary: Option<String>,
26299    #[doc = "Boundary ID\n\n<p>The normalized identifier of the boundary of the connection. </p><p> For cloud connections, this translates to the traffic-boundary (same VPC, through IGW, etc.). For traditional networks, this is described as Local, Internal, or External.</p>\n\nrecommended"]
26300    #[serde(rename = "boundary_id")]
26301    #[serde(skip_serializing_if = "Option::is_none")]
26302    pub boundary_id: Option<i64>,
26303    #[doc = "Community ID\n\nThe Community ID of the network connection.\n\noptional"]
26304    #[serde(rename = "community_uid")]
26305    #[serde(skip_serializing_if = "Option::is_none")]
26306    pub community_uid: Option<String>,
26307    #[doc = "Direction\n\nThe direction of the initiated connection, traffic, or email, normalized to the caption of the direction_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
26308    #[serde(rename = "direction")]
26309    #[serde(skip_serializing_if = "Option::is_none")]
26310    pub direction: Option<String>,
26311    #[doc = "Direction ID\n\nThe normalized identifier of the direction of the initiated connection, traffic, or email.\n\nrequired"]
26312    #[serde(rename = "direction_id")]
26313    #[serde(skip_serializing_if = "Option::is_none")]
26314    pub direction_id: Option<i64>,
26315    #[doc = "Connection Flag History\n\nThe Connection Flag History summarizes events in a network connection. For example flags <code> ShAD </code> representing SYN, SYN/ACK, ACK and Data exchange.\n\noptional"]
26316    #[serde(rename = "flag_history")]
26317    #[serde(skip_serializing_if = "Option::is_none")]
26318    pub flag_history: Option<String>,
26319    #[doc = "Protocol Name\n\nThe IP protocol name in lowercase, as defined by the Internet Assigned Numbers Authority (IANA). For example: <code>tcp</code> or <code>udp</code>.\n\nrecommended"]
26320    #[serde(rename = "protocol_name")]
26321    #[serde(skip_serializing_if = "Option::is_none")]
26322    pub protocol_name: Option<String>,
26323    #[doc = "Protocol Number\n\nThe IP protocol number, as defined by the Internet Assigned Numbers Authority (IANA). For example: <code>6</code> for TCP and <code>17</code> for UDP.\n\nrecommended"]
26324    #[serde(rename = "protocol_num")]
26325    #[serde(skip_serializing_if = "Option::is_none")]
26326    pub protocol_num: Option<i64>,
26327    #[doc = "IP Version\n\nThe Internet Protocol version.\n\noptional"]
26328    #[serde(rename = "protocol_ver")]
26329    #[serde(skip_serializing_if = "Option::is_none")]
26330    pub protocol_ver: Option<String>,
26331    #[doc = "IP Version ID\n\nThe Internet Protocol version identifier.\n\nrecommended"]
26332    #[serde(rename = "protocol_ver_id")]
26333    #[serde(skip_serializing_if = "Option::is_none")]
26334    pub protocol_ver_id: Option<i64>,
26335    #[doc = "Session\n\nThe authenticated user or service session.\n\noptional"]
26336    #[serde(rename = "session")]
26337    #[serde(skip_serializing_if = "Option::is_none")]
26338    pub session: Option<Box<Session>>,
26339    #[doc = "TCP Flags\n\nThe network connection TCP header flags (i.e., control bits).\n\noptional"]
26340    #[serde(rename = "tcp_flags")]
26341    #[serde(skip_serializing_if = "Option::is_none")]
26342    pub tcp_flags: Option<i64>,
26343    #[doc = "Connection UID\n\nThe unique identifier of the connection.\n\nrecommended"]
26344    #[serde(rename = "uid")]
26345    #[serde(skip_serializing_if = "Option::is_none")]
26346    pub uid: Option<String>,
26347}
26348#[doc = "Network Endpoint\n\nThe Network Endpoint object describes characteristics of a network endpoint. These can be a source or destination of a network connection.\n\n[] Category:  | Name: network_endpoint\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
26349#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26350#[serde(default)]
26351#[non_exhaustive]
26352pub struct NetworkEndpoint {
26353    #[doc = "Agent List\n\nA list of <code>agent</code> objects associated with a device, endpoint, or resource.\n\noptional"]
26354    #[serde(rename = "agent_list")]
26355    #[serde(skip_serializing_if = "Option::is_none")]
26356    pub agent_list: Option<Vec<Agent>>,
26357    #[doc = "Autonomous System\n\nThe Autonomous System details associated with an IP address.\n\noptional"]
26358    #[serde(rename = "autonomous_system")]
26359    #[serde(skip_serializing_if = "Option::is_none")]
26360    pub autonomous_system: Option<Box<AutonomousSystem>>,
26361    #[doc = "Container\n\nThe information describing an instance of a container. A container is a prepackaged, portable system image that runs isolated on an existing system using a container runtime like containerd.\n\nrecommended"]
26362    #[serde(rename = "container")]
26363    #[serde(skip_serializing_if = "Option::is_none")]
26364    pub container: Option<Box<Container>>,
26365    #[doc = "Domain\n\nThe name of the domain that the endpoint belongs to or that corresponds to the endpoint.\n\noptional"]
26366    #[serde(rename = "domain")]
26367    #[serde(skip_serializing_if = "Option::is_none")]
26368    pub domain: Option<String>,
26369    #[doc = "Hostname\n\nThe fully qualified name of the endpoint.\n\nrecommended"]
26370    #[serde(rename = "hostname")]
26371    #[serde(skip_serializing_if = "Option::is_none")]
26372    pub hostname: Option<String>,
26373    #[doc = "Hardware Info\n\nThe endpoint hardware information.\n\noptional"]
26374    #[serde(rename = "hw_info")]
26375    #[serde(skip_serializing_if = "Option::is_none")]
26376    pub hw_info: Option<Box<DeviceHwInfo>>,
26377    #[doc = "Instance ID\n\nThe unique identifier of a VM instance.\n\nrecommended"]
26378    #[serde(rename = "instance_uid")]
26379    #[serde(skip_serializing_if = "Option::is_none")]
26380    pub instance_uid: Option<String>,
26381    #[doc = "Network Interface Name\n\nThe name of the network interface (e.g. eth2).\n\nrecommended"]
26382    #[serde(rename = "interface_name")]
26383    #[serde(skip_serializing_if = "Option::is_none")]
26384    pub interface_name: Option<String>,
26385    #[doc = "Network Interface ID\n\nThe unique identifier of the network interface.\n\nrecommended"]
26386    #[serde(rename = "interface_uid")]
26387    #[serde(skip_serializing_if = "Option::is_none")]
26388    pub interface_uid: Option<String>,
26389    #[doc = "Intermediate IP Addresses\n\nThe intermediate IP Addresses. For example, the IP addresses in the HTTP X-Forwarded-For header.\n\noptional"]
26390    #[serde(rename = "intermediate_ips")]
26391    #[serde(skip_serializing_if = "Option::is_none")]
26392    pub intermediate_ips: Option<Vec<String>>,
26393    #[doc = "IP Address\n\nThe IP address of the endpoint, in either IPv4 or IPv6 format.\n\nrecommended"]
26394    #[serde(rename = "ip")]
26395    #[serde(skip_serializing_if = "Option::is_none")]
26396    pub ip: Option<String>,
26397    #[doc = "ISP Name\n\nThe name of the Internet Service Provider (ISP).\n\noptional"]
26398    #[serde(rename = "isp")]
26399    #[serde(skip_serializing_if = "Option::is_none")]
26400    pub isp: Option<String>,
26401    #[doc = "ISP Org\n\nThe organization name of the Internet Service Provider (ISP). This represents the parent organization or company that owns/operates the ISP. For example, Comcast Corporation would be the ISP org for Xfinity internet service. This attribute helps identify the ultimate provider when ISPs operate under different brand names.\n\noptional"]
26402    #[serde(rename = "isp_org")]
26403    #[serde(skip_serializing_if = "Option::is_none")]
26404    pub isp_org: Option<String>,
26405    #[doc = "Geo Location\n\nThe geographical location of the endpoint.\n\noptional"]
26406    #[serde(rename = "location")]
26407    #[serde(skip_serializing_if = "Option::is_none")]
26408    pub location: Option<Box<Location>>,
26409    #[doc = "MAC Address\n\nThe Media Access Control (MAC) address of the endpoint.\n\noptional"]
26410    #[serde(rename = "mac")]
26411    #[serde(skip_serializing_if = "Option::is_none")]
26412    pub mac: Option<String>,
26413    #[doc = "Name\n\nThe short name of the endpoint.\n\nrecommended"]
26414    #[serde(rename = "name")]
26415    #[serde(skip_serializing_if = "Option::is_none")]
26416    pub name: Option<String>,
26417    #[doc = "Namespace PID\n\nIf running under a process namespace (such as in a container), the process identifier within that process namespace.\n\nrecommended"]
26418    #[serde(rename = "namespace_pid")]
26419    #[serde(skip_serializing_if = "Option::is_none")]
26420    pub namespace_pid: Option<i64>,
26421    #[doc = "Network Scope\n\nIndicates whether the endpoint resides inside the customer’s network, outside on the Internet, or if its location relative to the customer’s network cannot be determined. The value is normalized to the caption of the <code>network_scope_id</code>.\n\noptional"]
26422    #[serde(rename = "network_scope")]
26423    #[serde(skip_serializing_if = "Option::is_none")]
26424    pub network_scope: Option<String>,
26425    #[doc = "Network Scope ID\n\nThe normalized identifier of the endpoint’s network scope. The normalized network scope identifier indicates whether the endpoint resides inside the customer’s network, outside on the Internet, or if its location relative to the customer’s network cannot be determined.\n\noptional"]
26426    #[serde(rename = "network_scope_id")]
26427    #[serde(skip_serializing_if = "Option::is_none")]
26428    pub network_scope_id: Option<i64>,
26429    #[doc = "OS\n\nThe endpoint operating system.\n\noptional"]
26430    #[serde(rename = "os")]
26431    #[serde(skip_serializing_if = "Option::is_none")]
26432    pub os: Option<Box<Os>>,
26433    #[doc = "Owner\n\nThe identity of the service or user account that owns the endpoint or was last logged into it.\n\nrecommended"]
26434    #[serde(rename = "owner")]
26435    #[serde(skip_serializing_if = "Option::is_none")]
26436    pub owner: Option<Box<User>>,
26437    #[doc = "Port\n\nThe port used for communication within the network connection.\n\nrecommended"]
26438    #[serde(rename = "port")]
26439    #[serde(skip_serializing_if = "Option::is_none")]
26440    pub port: Option<i64>,
26441    #[doc = "Proxy Endpoint\n\nThe network proxy information pertaining to a specific endpoint. This can be used to describe information pertaining to network address translation (NAT).\n\noptional"]
26442    #[serde(rename = "proxy_endpoint")]
26443    #[serde(skip_serializing_if = "Option::is_none")]
26444    pub proxy_endpoint: Option<Box<NetworkProxy>>,
26445    #[doc = "Subnet UID\n\nThe unique identifier of a virtual subnet.\n\noptional"]
26446    #[serde(rename = "subnet_uid")]
26447    #[serde(skip_serializing_if = "Option::is_none")]
26448    pub subnet_uid: Option<String>,
26449    #[doc = "Service Name\n\nThe service name in service-to-service connections. For example, AWS VPC logs the pkt-src-aws-service and pkt-dst-aws-service fields identify the connection is coming from or going to an AWS service.\n\nrecommended"]
26450    #[serde(rename = "svc_name")]
26451    #[serde(skip_serializing_if = "Option::is_none")]
26452    pub svc_name: Option<String>,
26453    #[doc = "Type\n\nThe network endpoint type. For example: <code>unknown</code>, <code>server</code>, <code>desktop</code>, <code>laptop</code>, <code>tablet</code>, <code>mobile</code>, <code>virtual</code>, <code>browser</code>, or <code>other</code>.\n\noptional"]
26454    #[serde(rename = "type")]
26455    #[serde(skip_serializing_if = "Option::is_none")]
26456    pub r#type: Option<String>,
26457    #[doc = "Type ID\n\nThe network endpoint type ID.\n\nrecommended"]
26458    #[serde(rename = "type_id")]
26459    #[serde(skip_serializing_if = "Option::is_none")]
26460    pub type_id: Option<i64>,
26461    #[doc = "Unique ID\n\nThe unique identifier of the endpoint.\n\nrecommended"]
26462    #[serde(rename = "uid")]
26463    #[serde(skip_serializing_if = "Option::is_none")]
26464    pub uid: Option<String>,
26465    #[doc = "VLAN\n\nThe Virtual LAN identifier.\n\noptional"]
26466    #[serde(rename = "vlan_uid")]
26467    #[serde(skip_serializing_if = "Option::is_none")]
26468    pub vlan_uid: Option<String>,
26469    #[doc = "VPC UID\n\nThe unique identifier of the Virtual Private Cloud (VPC).\n\noptional"]
26470    #[serde(rename = "vpc_uid")]
26471    #[serde(skip_serializing_if = "Option::is_none")]
26472    pub vpc_uid: Option<String>,
26473    #[doc = "Network Zone\n\nThe network zone or LAN segment.\n\noptional"]
26474    #[serde(rename = "zone")]
26475    #[serde(skip_serializing_if = "Option::is_none")]
26476    pub zone: Option<String>,
26477}
26478#[doc = "Network Interface\n\nThe Network Interface object describes the type and associated attributes of a physical or virtual network interface.\n\n[] Category:  | Name: network_interface\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
26479#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26480#[serde(default)]
26481#[non_exhaustive]
26482pub struct NetworkInterface {
26483    #[doc = "Hostname\n\nThe hostname associated with the network interface.\n\nrecommended"]
26484    #[serde(rename = "hostname")]
26485    #[serde(skip_serializing_if = "Option::is_none")]
26486    pub hostname: Option<String>,
26487    #[doc = "IP Address\n\nThe IP address associated with the network interface.\n\nrecommended"]
26488    #[serde(rename = "ip")]
26489    #[serde(skip_serializing_if = "Option::is_none")]
26490    pub ip: Option<String>,
26491    #[doc = "MAC Address\n\nThe MAC address of the network interface.\n\nrecommended"]
26492    #[serde(rename = "mac")]
26493    #[serde(skip_serializing_if = "Option::is_none")]
26494    pub mac: Option<String>,
26495    #[doc = "Name\n\nThe name of the network interface.\n\nrecommended"]
26496    #[serde(rename = "name")]
26497    #[serde(skip_serializing_if = "Option::is_none")]
26498    pub name: Option<String>,
26499    #[doc = "Namespace\n\nThe namespace is useful in merger or acquisition situations. For example, when similar entities exist that you need to keep separate.\n\noptional"]
26500    #[serde(rename = "namespace")]
26501    #[serde(skip_serializing_if = "Option::is_none")]
26502    pub namespace: Option<String>,
26503    #[doc = "Open Ports\n\nThe list of open ports on a network interface, including port numbers and associated protocol information.\n\noptional"]
26504    #[serde(rename = "open_ports")]
26505    #[serde(skip_serializing_if = "Option::is_none")]
26506    pub open_ports: Option<Vec<PortInfo>>,
26507    #[doc = "Subnet Prefix Length\n\nThe subnet prefix length determines the number of bits used to represent the network part of the IP address. The remaining bits are reserved for identifying individual hosts within that subnet.\n\noptional"]
26508    #[serde(rename = "subnet_prefix")]
26509    #[serde(skip_serializing_if = "Option::is_none")]
26510    pub subnet_prefix: Option<i64>,
26511    #[doc = "Type\n\nThe type of network interface.\n\noptional"]
26512    #[serde(rename = "type")]
26513    #[serde(skip_serializing_if = "Option::is_none")]
26514    pub r#type: Option<String>,
26515    #[doc = "Type ID\n\nThe network interface type identifier.\n\nrecommended"]
26516    #[serde(rename = "type_id")]
26517    #[serde(skip_serializing_if = "Option::is_none")]
26518    pub type_id: Option<i64>,
26519    #[doc = "Unique ID\n\nThe unique identifier for the network interface.\n\noptional"]
26520    #[serde(rename = "uid")]
26521    #[serde(skip_serializing_if = "Option::is_none")]
26522    pub uid: Option<String>,
26523}
26524#[doc = "Network Proxy Endpoint\n\nThe network proxy endpoint object describes a proxy server, which acts as an intermediary between a client requesting a resource and the server providing that resource.\n\n[] Category:  | Name: network_proxy\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
26525#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26526#[serde(default)]
26527#[non_exhaustive]
26528pub struct NetworkProxy {
26529    #[doc = "Agent List\n\nA list of <code>agent</code> objects associated with a device, endpoint, or resource.\n\noptional"]
26530    #[serde(rename = "agent_list")]
26531    #[serde(skip_serializing_if = "Option::is_none")]
26532    pub agent_list: Option<Vec<Agent>>,
26533    #[doc = "Autonomous System\n\nThe Autonomous System details associated with an IP address.\n\noptional"]
26534    #[serde(rename = "autonomous_system")]
26535    #[serde(skip_serializing_if = "Option::is_none")]
26536    pub autonomous_system: Option<Box<AutonomousSystem>>,
26537    #[doc = "Container\n\nThe information describing an instance of a container. A container is a prepackaged, portable system image that runs isolated on an existing system using a container runtime like containerd.\n\nrecommended"]
26538    #[serde(rename = "container")]
26539    #[serde(skip_serializing_if = "Option::is_none")]
26540    pub container: Option<Box<Container>>,
26541    #[doc = "Domain\n\nThe name of the domain that the endpoint belongs to or that corresponds to the endpoint.\n\noptional"]
26542    #[serde(rename = "domain")]
26543    #[serde(skip_serializing_if = "Option::is_none")]
26544    pub domain: Option<String>,
26545    #[doc = "Hostname\n\nThe fully qualified name of the endpoint.\n\nrecommended"]
26546    #[serde(rename = "hostname")]
26547    #[serde(skip_serializing_if = "Option::is_none")]
26548    pub hostname: Option<String>,
26549    #[doc = "Hardware Info\n\nThe endpoint hardware information.\n\noptional"]
26550    #[serde(rename = "hw_info")]
26551    #[serde(skip_serializing_if = "Option::is_none")]
26552    pub hw_info: Option<Box<DeviceHwInfo>>,
26553    #[doc = "Instance ID\n\nThe unique identifier of a VM instance.\n\nrecommended"]
26554    #[serde(rename = "instance_uid")]
26555    #[serde(skip_serializing_if = "Option::is_none")]
26556    pub instance_uid: Option<String>,
26557    #[doc = "Network Interface Name\n\nThe name of the network interface (e.g. eth2).\n\nrecommended"]
26558    #[serde(rename = "interface_name")]
26559    #[serde(skip_serializing_if = "Option::is_none")]
26560    pub interface_name: Option<String>,
26561    #[doc = "Network Interface ID\n\nThe unique identifier of the network interface.\n\nrecommended"]
26562    #[serde(rename = "interface_uid")]
26563    #[serde(skip_serializing_if = "Option::is_none")]
26564    pub interface_uid: Option<String>,
26565    #[doc = "Intermediate IP Addresses\n\nThe intermediate IP Addresses. For example, the IP addresses in the HTTP X-Forwarded-For header.\n\noptional"]
26566    #[serde(rename = "intermediate_ips")]
26567    #[serde(skip_serializing_if = "Option::is_none")]
26568    pub intermediate_ips: Option<Vec<String>>,
26569    #[doc = "IP Address\n\nThe IP address of the endpoint, in either IPv4 or IPv6 format.\n\nrecommended"]
26570    #[serde(rename = "ip")]
26571    #[serde(skip_serializing_if = "Option::is_none")]
26572    pub ip: Option<String>,
26573    #[doc = "ISP Name\n\nThe name of the Internet Service Provider (ISP).\n\noptional"]
26574    #[serde(rename = "isp")]
26575    #[serde(skip_serializing_if = "Option::is_none")]
26576    pub isp: Option<String>,
26577    #[doc = "ISP Org\n\nThe organization name of the Internet Service Provider (ISP). This represents the parent organization or company that owns/operates the ISP. For example, Comcast Corporation would be the ISP org for Xfinity internet service. This attribute helps identify the ultimate provider when ISPs operate under different brand names.\n\noptional"]
26578    #[serde(rename = "isp_org")]
26579    #[serde(skip_serializing_if = "Option::is_none")]
26580    pub isp_org: Option<String>,
26581    #[doc = "Geo Location\n\nThe geographical location of the endpoint.\n\noptional"]
26582    #[serde(rename = "location")]
26583    #[serde(skip_serializing_if = "Option::is_none")]
26584    pub location: Option<Box<Location>>,
26585    #[doc = "MAC Address\n\nThe Media Access Control (MAC) address of the endpoint.\n\noptional"]
26586    #[serde(rename = "mac")]
26587    #[serde(skip_serializing_if = "Option::is_none")]
26588    pub mac: Option<String>,
26589    #[doc = "Name\n\nThe short name of the endpoint.\n\nrecommended"]
26590    #[serde(rename = "name")]
26591    #[serde(skip_serializing_if = "Option::is_none")]
26592    pub name: Option<String>,
26593    #[doc = "Namespace PID\n\nIf running under a process namespace (such as in a container), the process identifier within that process namespace.\n\nrecommended"]
26594    #[serde(rename = "namespace_pid")]
26595    #[serde(skip_serializing_if = "Option::is_none")]
26596    pub namespace_pid: Option<i64>,
26597    #[doc = "Network Scope\n\nIndicates whether the endpoint resides inside the customer’s network, outside on the Internet, or if its location relative to the customer’s network cannot be determined. The value is normalized to the caption of the <code>network_scope_id</code>.\n\noptional"]
26598    #[serde(rename = "network_scope")]
26599    #[serde(skip_serializing_if = "Option::is_none")]
26600    pub network_scope: Option<String>,
26601    #[doc = "Network Scope ID\n\nThe normalized identifier of the endpoint’s network scope. The normalized network scope identifier indicates whether the endpoint resides inside the customer’s network, outside on the Internet, or if its location relative to the customer’s network cannot be determined.\n\noptional"]
26602    #[serde(rename = "network_scope_id")]
26603    #[serde(skip_serializing_if = "Option::is_none")]
26604    pub network_scope_id: Option<i64>,
26605    #[doc = "OS\n\nThe endpoint operating system.\n\noptional"]
26606    #[serde(rename = "os")]
26607    #[serde(skip_serializing_if = "Option::is_none")]
26608    pub os: Option<Box<Os>>,
26609    #[doc = "Owner\n\nThe identity of the service or user account that owns the endpoint or was last logged into it.\n\nrecommended"]
26610    #[serde(rename = "owner")]
26611    #[serde(skip_serializing_if = "Option::is_none")]
26612    pub owner: Option<Box<User>>,
26613    #[doc = "Port\n\nThe port used for communication within the network connection.\n\nrecommended"]
26614    #[serde(rename = "port")]
26615    #[serde(skip_serializing_if = "Option::is_none")]
26616    pub port: Option<i64>,
26617    #[doc = "Proxy Endpoint\n\nThe network proxy information pertaining to a specific endpoint. This can be used to describe information pertaining to network address translation (NAT).\n\noptional"]
26618    #[serde(rename = "proxy_endpoint")]
26619    #[serde(skip_serializing_if = "Option::is_none")]
26620    pub proxy_endpoint: Option<Box<NetworkProxy>>,
26621    #[doc = "Subnet UID\n\nThe unique identifier of a virtual subnet.\n\noptional"]
26622    #[serde(rename = "subnet_uid")]
26623    #[serde(skip_serializing_if = "Option::is_none")]
26624    pub subnet_uid: Option<String>,
26625    #[doc = "Service Name\n\nThe service name in service-to-service connections. For example, AWS VPC logs the pkt-src-aws-service and pkt-dst-aws-service fields identify the connection is coming from or going to an AWS service.\n\nrecommended"]
26626    #[serde(rename = "svc_name")]
26627    #[serde(skip_serializing_if = "Option::is_none")]
26628    pub svc_name: Option<String>,
26629    #[doc = "Type\n\nThe network endpoint type. For example: <code>unknown</code>, <code>server</code>, <code>desktop</code>, <code>laptop</code>, <code>tablet</code>, <code>mobile</code>, <code>virtual</code>, <code>browser</code>, or <code>other</code>.\n\noptional"]
26630    #[serde(rename = "type")]
26631    #[serde(skip_serializing_if = "Option::is_none")]
26632    pub r#type: Option<String>,
26633    #[doc = "Type ID\n\nThe network endpoint type ID.\n\nrecommended"]
26634    #[serde(rename = "type_id")]
26635    #[serde(skip_serializing_if = "Option::is_none")]
26636    pub type_id: Option<i64>,
26637    #[doc = "Unique ID\n\nThe unique identifier of the endpoint.\n\nrecommended"]
26638    #[serde(rename = "uid")]
26639    #[serde(skip_serializing_if = "Option::is_none")]
26640    pub uid: Option<String>,
26641    #[doc = "VLAN\n\nThe Virtual LAN identifier.\n\noptional"]
26642    #[serde(rename = "vlan_uid")]
26643    #[serde(skip_serializing_if = "Option::is_none")]
26644    pub vlan_uid: Option<String>,
26645    #[doc = "VPC UID\n\nThe unique identifier of the Virtual Private Cloud (VPC).\n\noptional"]
26646    #[serde(rename = "vpc_uid")]
26647    #[serde(skip_serializing_if = "Option::is_none")]
26648    pub vpc_uid: Option<String>,
26649    #[doc = "Network Zone\n\nThe network zone or LAN segment.\n\noptional"]
26650    #[serde(rename = "zone")]
26651    #[serde(skip_serializing_if = "Option::is_none")]
26652    pub zone: Option<String>,
26653}
26654#[doc = "Network Traffic\n\nThe Network Traffic object describes characteristics of network traffic over a time period. The metrics represent network data transferred between source and destination during an observation window.\n\n[] Category:  | Name: network_traffic"]
26655#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26656#[serde(default)]
26657#[non_exhaustive]
26658pub struct NetworkTraffic {
26659    #[doc = "Total Bytes\n\nThe total number of bytes transferred in both directions (sum of bytes_in and bytes_out).\n\nrecommended"]
26660    #[serde(rename = "bytes")]
26661    #[serde(skip_serializing_if = "Option::is_none")]
26662    pub bytes: Option<i64>,
26663    #[doc = "Bytes In\n\nThe number of bytes sent from the destination to the source (inbound direction).\n\noptional"]
26664    #[serde(rename = "bytes_in")]
26665    #[serde(skip_serializing_if = "Option::is_none")]
26666    pub bytes_in: Option<i64>,
26667    #[doc = "Bytes Missed\n\nThe number of bytes that were missed during observation, typically due to packet loss or sampling limitations.\n\noptional"]
26668    #[serde(rename = "bytes_missed")]
26669    #[serde(skip_serializing_if = "Option::is_none")]
26670    pub bytes_missed: Option<i64>,
26671    #[doc = "Bytes Out\n\nThe number of bytes sent from the source to the destination (outbound direction).\n\noptional"]
26672    #[serde(rename = "bytes_out")]
26673    #[serde(skip_serializing_if = "Option::is_none")]
26674    pub bytes_out: Option<i64>,
26675    #[doc = "Chunks\n\nThe total number of chunks transferred in both directions (sum of chunks_in and chunks_out).\n\noptional"]
26676    #[serde(rename = "chunks")]
26677    #[serde(skip_serializing_if = "Option::is_none")]
26678    pub chunks: Option<i64>,
26679    #[doc = "Chunks In\n\nThe number of chunks sent from the destination to the source (inbound direction).\n\noptional"]
26680    #[serde(rename = "chunks_in")]
26681    #[serde(skip_serializing_if = "Option::is_none")]
26682    pub chunks_in: Option<i64>,
26683    #[doc = "Chunks Out\n\nThe number of chunks sent from the source to the destination (outbound direction).\n\noptional"]
26684    #[serde(rename = "chunks_out")]
26685    #[serde(skip_serializing_if = "Option::is_none")]
26686    pub chunks_out: Option<i64>,
26687    #[doc = "End Time\n\nThe end time of the observation or reporting period.\n\noptional"]
26688    #[serde(rename = "end_time")]
26689    #[serde(skip_serializing_if = "Option::is_none")]
26690    pub end_time: Option<i64>,
26691    #[doc = "End Time\n\nThe end time of the observation or reporting period.\n\noptional"]
26692    #[serde(rename = "end_time_dt")]
26693    #[serde(skip_serializing_if = "Option::is_none")]
26694    pub end_time_dt: Option<String>,
26695    #[doc = "Total Packets\n\nThe total number of packets transferred in both directions (sum of packets_in and packets_out).\n\nrecommended"]
26696    #[serde(rename = "packets")]
26697    #[serde(skip_serializing_if = "Option::is_none")]
26698    pub packets: Option<i64>,
26699    #[doc = "Packets In\n\nThe number of packets sent from the destination to the source (inbound direction).\n\noptional"]
26700    #[serde(rename = "packets_in")]
26701    #[serde(skip_serializing_if = "Option::is_none")]
26702    pub packets_in: Option<i64>,
26703    #[doc = "Packets Out\n\nThe number of packets sent from the source to the destination (outbound direction).\n\noptional"]
26704    #[serde(rename = "packets_out")]
26705    #[serde(skip_serializing_if = "Option::is_none")]
26706    pub packets_out: Option<i64>,
26707    #[doc = "Start Time\n\nThe start time of the observation or reporting period.\n\noptional"]
26708    #[serde(rename = "start_time")]
26709    #[serde(skip_serializing_if = "Option::is_none")]
26710    pub start_time: Option<i64>,
26711    #[doc = "Start Time\n\nThe start time of the observation or reporting period.\n\noptional"]
26712    #[serde(rename = "start_time_dt")]
26713    #[serde(skip_serializing_if = "Option::is_none")]
26714    pub start_time_dt: Option<String>,
26715    #[doc = "Time Span\n\nThe time span object representing the duration of the observation or reporting period.\n\noptional"]
26716    #[serde(rename = "timespan")]
26717    #[serde(skip_serializing_if = "Option::is_none")]
26718    pub timespan: Option<Box<Timespan>>,
26719}
26720#[doc = "Node\n\nRepresents a node or a vertex in a graph structure.\n\n[] Category:  | Name: node"]
26721#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26722#[serde(default)]
26723#[non_exhaustive]
26724pub struct Node {
26725    #[doc = "Data\n\nAdditional data about the node stored as key-value pairs. Can include custom properties specific to the node.\n\noptional"]
26726    #[serde(rename = "data")]
26727    #[serde(skip_serializing_if = "Option::is_none")]
26728    pub data: Option<serde_json::Value>,
26729    #[doc = "Description\n\nA human-readable description of the node's purpose or meaning in the graph.\n\noptional"]
26730    #[serde(rename = "desc")]
26731    #[serde(skip_serializing_if = "Option::is_none")]
26732    pub desc: Option<String>,
26733    #[doc = "Name\n\nA human-readable name or label for the node. Should be descriptive and unique within the graph context.\n\nrecommended"]
26734    #[serde(rename = "name")]
26735    #[serde(skip_serializing_if = "Option::is_none")]
26736    pub name: Option<String>,
26737    #[doc = "Type\n\nCategorizes the node into a specific class or type. Useful for grouping and filtering nodes.\n\noptional"]
26738    #[serde(rename = "type")]
26739    #[serde(skip_serializing_if = "Option::is_none")]
26740    pub r#type: Option<String>,
26741    #[doc = "Unique ID\n\nA unique string or numeric identifier that distinguishes this node from all others in the graph. Must be unique across all nodes.\n\nrequired"]
26742    #[serde(rename = "uid")]
26743    #[serde(skip_serializing_if = "Option::is_none")]
26744    pub uid: Option<String>,
26745}
26746#[doc = "Object\n\nAn unordered collection of attributes. It defines a set of attributes available in all objects. It can be also used as a generic object to log objects that are not otherwise defined by the schema.\n\n[] Category:  | Name: object"]
26747#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26748#[serde(default)]
26749#[non_exhaustive]
26750pub struct Object {}
26751#[doc = "Observable\n\nThe observable object is a pivot element that contains related information found in many places in the event.\n\n[] Category:  | Name: observable"]
26752#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26753#[serde(default)]
26754#[non_exhaustive]
26755pub struct Observable {
26756    #[doc = "Event UID\n\nThe unique identifier (<code>metadata.uid</code>) of the source OCSF event from which this observable was extracted. This field enables linking observables back to their originating event data when observables are stored in a separate location or system.\n\noptional"]
26757    #[serde(rename = "event_uid")]
26758    #[serde(skip_serializing_if = "Option::is_none")]
26759    pub event_uid: Option<String>,
26760    #[doc = "Name\n\nThe full name of the observable attribute. The <code>name</code> is a pointer/reference to an attribute within the OCSF event data. For example: <code>file.name</code>. Array attributes may be represented in one of three ways. For example: <code>resources.uid</code>, <code>resources[].uid</code>, <code>resources[0].uid</code>.\n\nrecommended"]
26761    #[serde(rename = "name")]
26762    #[serde(skip_serializing_if = "Option::is_none")]
26763    pub name: Option<String>,
26764    #[doc = "Reputation Scores\n\nContains the original and normalized reputation scores.\n\noptional"]
26765    #[serde(rename = "reputation")]
26766    #[serde(skip_serializing_if = "Option::is_none")]
26767    pub reputation: Option<Box<Reputation>>,
26768    #[doc = "Type\n\nThe observable value type name.\n\noptional"]
26769    #[serde(rename = "type")]
26770    #[serde(skip_serializing_if = "Option::is_none")]
26771    pub r#type: Option<String>,
26772    #[doc = "Type ID\n\nThe observable value type identifier.\n\nrequired"]
26773    #[serde(rename = "type_id")]
26774    #[serde(skip_serializing_if = "Option::is_none")]
26775    pub type_id: Option<i64>,
26776    #[doc = "Type ID\n\nThe OCSF event type UID (<code>type_uid</code>) of the source event that this observable was extracted from. This field enables filtering and categorizing observables by their originating event type. For example: <code>300101</code> for Network Activity (class_uid 3001) with activity_id 1.\n\noptional"]
26777    #[serde(rename = "type_uid")]
26778    #[serde(skip_serializing_if = "Option::is_none")]
26779    pub type_uid: Option<i64>,
26780    #[doc = "Value\n\nThe value associated with the observable attribute. The meaning of the value depends on the observable type.<br/>If the <code>name</code> refers to a scalar attribute, then the <code>value</code> is the value of the attribute.<br/>If the <code>name</code> refers to an object attribute, then the <code>value</code> is not populated.\n\noptional"]
26781    #[serde(rename = "value")]
26782    #[serde(skip_serializing_if = "Option::is_none")]
26783    pub value: Option<String>,
26784}
26785#[doc = "Observation\n\nA record of an observed value or event that captures the timing and frequency of its occurrence. Used to track when values/events were first detected, last detected, and their total occurrence count.\n\n[] Category:  | Name: observation"]
26786#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26787#[serde(default)]
26788#[non_exhaustive]
26789pub struct Observation {
26790    #[doc = "Count\n\nInteger representing the total number of times this specific value/event was observed across all occurrences. Helps establish prevalence and patterns.\n\nrecommended"]
26791    #[serde(rename = "count")]
26792    #[serde(skip_serializing_if = "Option::is_none")]
26793    pub count: Option<i64>,
26794    #[doc = "Time Span\n\nThe time window when the value or event was first observed. It is used to analyze activity patterns, detect trends, or correlate events within a specific timeframe.\n\nrecommended"]
26795    #[serde(rename = "timespan")]
26796    #[serde(skip_serializing_if = "Option::is_none")]
26797    pub timespan: Option<Box<Timespan>>,
26798    #[doc = "Value\n\nThe specific value, event, indicator or data point that was observed and recorded. This is the core piece of information being tracked.\n\nrequired"]
26799    #[serde(rename = "value")]
26800    #[serde(skip_serializing_if = "Option::is_none")]
26801    pub value: Option<String>,
26802}
26803#[doc = "Occurrence Details\n\nDetails about where in the target entity, specified information was discovered. Only the attributes, relevant to the target entity type should be populated.\n\n[] Category:  | Name: occurrence_details\n\n**Constraints:**\n* at_least_one: `[cell_name`,`column_name`,`column_number`,`end_line`,`json_path`,`page_number`,`record_index_in_array`,`row_number`,`start_line]`\n"]
26804#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26805#[serde(default)]
26806#[non_exhaustive]
26807pub struct OccurrenceDetails {
26808    #[doc = "Cell Name\n\nThe cell name/reference in a spreadsheet. e.g <code>A2</code>\n\noptional"]
26809    #[serde(rename = "cell_name")]
26810    #[serde(skip_serializing_if = "Option::is_none")]
26811    pub cell_name: Option<String>,
26812    #[doc = "Column Name\n\nThe column name in a spreadsheet, where the information was discovered.\n\noptional"]
26813    #[serde(rename = "column_name")]
26814    #[serde(skip_serializing_if = "Option::is_none")]
26815    pub column_name: Option<String>,
26816    #[doc = "Column Number\n\nThe column number in a spreadsheet or a plain text document, where the information was discovered.\n\noptional"]
26817    #[serde(rename = "column_number")]
26818    #[serde(skip_serializing_if = "Option::is_none")]
26819    pub column_number: Option<i64>,
26820    #[doc = "End Line\n\nThe line number of the last line of the file, where the information was discovered.\n\noptional"]
26821    #[serde(rename = "end_line")]
26822    #[serde(skip_serializing_if = "Option::is_none")]
26823    pub end_line: Option<i64>,
26824    #[doc = "JSON Path\n\nThe JSON path of the attribute in a json record, where the information was discovered\n\noptional"]
26825    #[serde(rename = "json_path")]
26826    #[serde(skip_serializing_if = "Option::is_none")]
26827    pub json_path: Option<String>,
26828    #[doc = "Page Number\n\nThe page number in a document, where the information was discovered.\n\noptional"]
26829    #[serde(rename = "page_number")]
26830    #[serde(skip_serializing_if = "Option::is_none")]
26831    pub page_number: Option<i64>,
26832    #[doc = "Record Index in Array\n\nThe index of the record in the array of records, where the information was discovered. e.g. the index of a record in an array of JSON records in a file.\n\noptional"]
26833    #[serde(rename = "record_index_in_array")]
26834    #[serde(skip_serializing_if = "Option::is_none")]
26835    pub record_index_in_array: Option<i64>,
26836    #[doc = "Row Number\n\nThe row number in a spreadsheet, where the information was discovered.\n\noptional"]
26837    #[serde(rename = "row_number")]
26838    #[serde(skip_serializing_if = "Option::is_none")]
26839    pub row_number: Option<i64>,
26840    #[doc = "Start Line\n\nThe line number of the first line of the file, where the information was discovered.\n\noptional"]
26841    #[serde(rename = "start_line")]
26842    #[serde(skip_serializing_if = "Option::is_none")]
26843    pub start_line: Option<i64>,
26844}
26845#[doc = "Organization\n\nThe Organization object describes characteristics of an organization or company and its division if any. Additionally, it also describes cloud and Software-as-a-Service (SaaS) logical hierarchies such as AWS Organizations, Google Cloud Organizations, Oracle Cloud Tenancies, and similar constructs.\n\n[] Category:  | Name: organization\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
26846#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26847#[serde(default)]
26848#[non_exhaustive]
26849pub struct Organization {
26850    #[doc = "Name\n\nThe name of the organization, Oracle Cloud Tenancy, Google Cloud Organization, or AWS Organization. For example, <code> Widget, Inc. </code> or the <code> AWS Organization name </code>.\n\nrecommended"]
26851    #[serde(rename = "name")]
26852    #[serde(skip_serializing_if = "Option::is_none")]
26853    pub name: Option<String>,
26854    #[doc = "Org Unit Name\n\nThe name of an organizational unit, Google Cloud Folder, or AWS Org Unit. For example, the <code> GCP Project Name </code>, or <code> Dev_Prod_OU </code>.\n\nrecommended"]
26855    #[serde(rename = "ou_name")]
26856    #[serde(skip_serializing_if = "Option::is_none")]
26857    pub ou_name: Option<String>,
26858    #[doc = "Org Unit ID\n\nThe unique identifier of an organizational unit, Google Cloud Folder, or AWS Org Unit. For example, an  <code> Oracle Cloud Tenancy ID </code>, <code> AWS OU ID </code>, or <code> GCP Folder ID </code>.\n\noptional"]
26859    #[serde(rename = "ou_uid")]
26860    #[serde(skip_serializing_if = "Option::is_none")]
26861    pub ou_uid: Option<String>,
26862    #[doc = "Unique ID\n\nThe unique identifier of the organization, Oracle Cloud Tenancy, Google Cloud Organization, or AWS Organization. For example, an <code> AWS Org ID </code> or <code> Oracle Cloud Domain ID </code>.\n\nrecommended"]
26863    #[serde(rename = "uid")]
26864    #[serde(skip_serializing_if = "Option::is_none")]
26865    pub uid: Option<String>,
26866}
26867#[doc = "Operating System (OS)\n\nThe Operating System (OS) object describes characteristics of an OS, such as Linux or Windows.\n\n[] Category:  | Name: os"]
26868#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26869#[serde(default)]
26870#[non_exhaustive]
26871pub struct Os {
26872    #[doc = "OS Build\n\nThe operating system build number.\n\noptional"]
26873    #[serde(rename = "build")]
26874    #[serde(skip_serializing_if = "Option::is_none")]
26875    pub build: Option<String>,
26876    #[doc = "Country\n\nThe operating system country code, as defined by the ISO 3166-1 standard (Alpha-2 code).<p><b>Note:</b> The two letter country code should be capitalized. For example: <code>US</code> or <code>CA</code>.</p>\n\noptional"]
26877    #[serde(rename = "country")]
26878    #[serde(skip_serializing_if = "Option::is_none")]
26879    pub country: Option<String>,
26880    #[doc = "The product CPE identifier\n\nThe Common Platform Enumeration (CPE) name as described by (<a target='_blank' href='https://nvd.nist.gov/products/cpe'>NIST</a>) For example: <code>cpe:/a:apple:safari:16.2</code>.\n\noptional"]
26881    #[serde(rename = "cpe_name")]
26882    #[serde(skip_serializing_if = "Option::is_none")]
26883    pub cpe_name: Option<String>,
26884    #[doc = "CPU Bits\n\nThe cpu architecture, the number of bits used for addressing in memory. For example: <code>32</code> or <code>64</code>.\n\noptional"]
26885    #[serde(rename = "cpu_bits")]
26886    #[serde(skip_serializing_if = "Option::is_none")]
26887    pub cpu_bits: Option<i64>,
26888    #[doc = "OS Edition\n\nThe operating system edition. For example: <code>Professional</code>.\n\noptional"]
26889    #[serde(rename = "edition")]
26890    #[serde(skip_serializing_if = "Option::is_none")]
26891    pub edition: Option<String>,
26892    #[doc = "Kernel Release\n\nThe kernel release of the operating system. On Unix-based systems, this is determined from the <code>uname -r</code> command output, for example \"5.15.0-122-generic\".\n\noptional"]
26893    #[serde(rename = "kernel_release")]
26894    #[serde(skip_serializing_if = "Option::is_none")]
26895    pub kernel_release: Option<String>,
26896    #[doc = "Language\n\nThe two letter lower case language codes, as defined by <a target='_blank' href='https://en.wikipedia.org/wiki/ISO_639-1'>ISO 639-1</a>. For example: <code>en</code> (English), <code>de</code> (German), or <code>fr</code> (French).\n\noptional"]
26897    #[serde(rename = "lang")]
26898    #[serde(skip_serializing_if = "Option::is_none")]
26899    pub lang: Option<String>,
26900    #[doc = "Name\n\nThe operating system name.\n\nrequired"]
26901    #[serde(rename = "name")]
26902    #[serde(skip_serializing_if = "Option::is_none")]
26903    pub name: Option<String>,
26904    #[doc = "OS Service Pack\n\nThe name of the latest Service Pack.\n\noptional"]
26905    #[serde(rename = "sp_name")]
26906    #[serde(skip_serializing_if = "Option::is_none")]
26907    pub sp_name: Option<String>,
26908    #[doc = "OS Service Pack Version\n\nThe version number of the latest Service Pack.\n\noptional"]
26909    #[serde(rename = "sp_ver")]
26910    #[serde(skip_serializing_if = "Option::is_none")]
26911    pub sp_ver: Option<i64>,
26912    #[doc = "Type\n\nThe type of the operating system.\n\noptional"]
26913    #[serde(rename = "type")]
26914    #[serde(skip_serializing_if = "Option::is_none")]
26915    pub r#type: Option<String>,
26916    #[doc = "Type ID\n\nThe type identifier of the operating system.\n\nrequired"]
26917    #[serde(rename = "type_id")]
26918    #[serde(skip_serializing_if = "Option::is_none")]
26919    pub type_id: Option<i64>,
26920    #[doc = "Version\n\nThe version of the OS running on the device that originated the event. For example: \"Windows 10\", \"OS X 10.7\", or \"iOS 9\".\n\noptional"]
26921    #[serde(rename = "version")]
26922    #[serde(skip_serializing_if = "Option::is_none")]
26923    pub version: Option<String>,
26924}
26925#[doc = "OSINT\n\nThe OSINT (Open Source Intelligence) object contains details related to an indicator such as the indicator itself, related indicators, geolocation, registrar information, subdomains, analyst commentary, and other contextual information. This information can be used to further enrich a detection or finding by providing decisioning support to other analysts and engineers.\n\n[] Category:  | Name: osint"]
26926#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
26927#[serde(default)]
26928#[non_exhaustive]
26929pub struct Osint {
26930    #[doc = "Related DNS Answers\n\nAny pertinent DNS answers information related to an indicator or OSINT analysis.\n\noptional"]
26931    #[serde(rename = "answers")]
26932    #[serde(skip_serializing_if = "Option::is_none")]
26933    pub answers: Option<Vec<DnsAnswer>>,
26934    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nMITRE ATT&CK Tactics, Techniques, and/or Procedures (TTPs) pertinent to an indicator or OSINT analysis.\n\noptional"]
26935    #[serde(rename = "attacks")]
26936    #[serde(skip_serializing_if = "Option::is_none")]
26937    pub attacks: Option<Vec<Attack>>,
26938    #[doc = "Autonomous System\n\nAny pertinent autonomous system information related to an indicator or OSINT analysis.\n\noptional"]
26939    #[serde(rename = "autonomous_system")]
26940    #[serde(skip_serializing_if = "Option::is_none")]
26941    pub autonomous_system: Option<Box<AutonomousSystem>>,
26942    #[doc = "Campaign\n\nThe campaign object describes details about the campaign that was the source of the activity.\n\noptional"]
26943    #[serde(rename = "campaign")]
26944    #[serde(skip_serializing_if = "Option::is_none")]
26945    pub campaign: Option<Box<Campaign>>,
26946    #[doc = "Category\n\nCategorizes the threat indicator based on its functional or operational role.\n\noptional"]
26947    #[serde(rename = "category")]
26948    #[serde(skip_serializing_if = "Option::is_none")]
26949    pub category: Option<String>,
26950    #[doc = "Analyst Comments\n\nAnalyst commentary or source commentary about an indicator or OSINT analysis.\n\noptional"]
26951    #[serde(rename = "comment")]
26952    #[serde(skip_serializing_if = "Option::is_none")]
26953    pub comment: Option<String>,
26954    #[doc = "Confidence\n\nThe confidence of an indicator being malicious and/or pertinent, normalized to the caption of the confidence_id value. In the case of 'Other', it is defined by the event source or analyst.\n\noptional"]
26955    #[serde(rename = "confidence")]
26956    #[serde(skip_serializing_if = "Option::is_none")]
26957    pub confidence: Option<String>,
26958    #[doc = "Confidence ID\n\nThe normalized confidence refers to the accuracy of collected information related to the OSINT or how pertinent an indicator or analysis is to a specific event or finding. A low confidence means that the information collected or analysis conducted lacked detail or is not accurate enough to qualify an indicator as fully malicious.\n\nrecommended"]
26959    #[serde(rename = "confidence_id")]
26960    #[serde(skip_serializing_if = "Option::is_none")]
26961    pub confidence_id: Option<i64>,
26962    #[doc = "Created Time\n\nThe timestamp when the indicator was initially created or identified.\n\noptional"]
26963    #[serde(rename = "created_time")]
26964    #[serde(skip_serializing_if = "Option::is_none")]
26965    pub created_time: Option<i64>,
26966    #[doc = "Created Time\n\nThe timestamp when the indicator was initially created or identified.\n\noptional"]
26967    #[serde(rename = "created_time_dt")]
26968    #[serde(skip_serializing_if = "Option::is_none")]
26969    pub created_time_dt: Option<String>,
26970    #[doc = "Creator\n\nThe identifier of the user, system, or organization that contributed the indicator.\n\noptional"]
26971    #[serde(rename = "creator")]
26972    #[serde(skip_serializing_if = "Option::is_none")]
26973    pub creator: Option<Box<User>>,
26974    #[doc = "Description\n\nA detailed explanation of the indicator, including its context, purpose, and relevance.\n\noptional"]
26975    #[serde(rename = "desc")]
26976    #[serde(skip_serializing_if = "Option::is_none")]
26977    pub desc: Option<String>,
26978    #[doc = "Detection Pattern\n\nThe specific detection pattern or signature associated with the indicator.\n\noptional"]
26979    #[serde(rename = "detection_pattern")]
26980    #[serde(skip_serializing_if = "Option::is_none")]
26981    pub detection_pattern: Option<String>,
26982    #[doc = "Detection Pattern\n\nThe detection pattern type, normalized to the caption of the detection_pattern_type_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
26983    #[serde(rename = "detection_pattern_type")]
26984    #[serde(skip_serializing_if = "Option::is_none")]
26985    pub detection_pattern_type: Option<String>,
26986    #[doc = "Detection Pattern Type ID\n\nSpecifies the type of detection pattern used to identify the associated threat indicator.\n\noptional"]
26987    #[serde(rename = "detection_pattern_type_id")]
26988    #[serde(skip_serializing_if = "Option::is_none")]
26989    pub detection_pattern_type_id: Option<i64>,
26990    #[doc = "Related Email\n\nAny email information pertinent to an indicator or OSINT analysis.\n\noptional"]
26991    #[serde(rename = "email")]
26992    #[serde(skip_serializing_if = "Option::is_none")]
26993    pub email: Option<Box<Email>>,
26994    #[doc = "Related Email Authentication\n\nAny email authentication information pertinent to an indicator or OSINT analysis.\n\noptional"]
26995    #[serde(rename = "email_auth")]
26996    #[serde(skip_serializing_if = "Option::is_none")]
26997    pub email_auth: Option<Box<EmailAuth>>,
26998    #[doc = "Expiration Time\n\nThe expiration date of the indicator, after which it is no longer considered reliable.\n\noptional"]
26999    #[serde(rename = "expiration_time")]
27000    #[serde(skip_serializing_if = "Option::is_none")]
27001    pub expiration_time: Option<i64>,
27002    #[doc = "Expiration Time\n\nThe expiration date of the indicator, after which it is no longer considered reliable.\n\noptional"]
27003    #[serde(rename = "expiration_time_dt")]
27004    #[serde(skip_serializing_if = "Option::is_none")]
27005    pub expiration_time_dt: Option<String>,
27006    #[doc = "External ID\n\nA unique identifier assigned by an external system for cross-referencing.\n\noptional"]
27007    #[serde(rename = "external_uid")]
27008    #[serde(skip_serializing_if = "Option::is_none")]
27009    pub external_uid: Option<String>,
27010    #[doc = "Related File\n\nAny pertinent file information related to an indicator or OSINT analysis.\n\noptional"]
27011    #[serde(rename = "file")]
27012    #[serde(skip_serializing_if = "Option::is_none")]
27013    pub file: Option<Box<File>>,
27014    #[doc = "Intrusion Sets\n\nA grouping of adversarial behaviors and resources believed to be associated with specific threat actors or campaigns. Intrusion sets often encompass multiple campaigns and are used to organize related activities under a common label.\n\noptional"]
27015    #[serde(rename = "intrusion_sets")]
27016    #[serde(skip_serializing_if = "Option::is_none")]
27017    pub intrusion_sets: Option<Vec<String>>,
27018    #[doc = "Kill Chain\n\nLockheed Martin Kill Chain Phases pertinent to an indicator or OSINT analysis.\n\noptional"]
27019    #[serde(rename = "kill_chain")]
27020    #[serde(skip_serializing_if = "Option::is_none")]
27021    pub kill_chain: Option<Vec<KillChainPhase>>,
27022    #[doc = "Labels\n\nTags or keywords associated with the indicator to enhance searchability.\n\noptional"]
27023    #[serde(rename = "labels")]
27024    #[serde(skip_serializing_if = "Option::is_none")]
27025    pub labels: Option<Vec<String>>,
27026    #[doc = "Geo Location\n\nAny pertinent geolocation information related to an indicator or OSINT analysis.\n\noptional"]
27027    #[serde(rename = "location")]
27028    #[serde(skip_serializing_if = "Option::is_none")]
27029    pub location: Option<Box<Location>>,
27030    #[doc = "Malware\n\nA list of Malware objects, describing details about the identified malware.\n\noptional"]
27031    #[serde(rename = "malware")]
27032    #[serde(skip_serializing_if = "Option::is_none")]
27033    pub malware: Option<Vec<Malware>>,
27034    #[doc = "Modified Time\n\nThe timestamp of the last modification or update to the indicator.\n\noptional"]
27035    #[serde(rename = "modified_time")]
27036    #[serde(skip_serializing_if = "Option::is_none")]
27037    pub modified_time: Option<i64>,
27038    #[doc = "Modified Time\n\nThe timestamp of the last modification or update to the indicator.\n\noptional"]
27039    #[serde(rename = "modified_time_dt")]
27040    #[serde(skip_serializing_if = "Option::is_none")]
27041    pub modified_time_dt: Option<String>,
27042    #[doc = "Name\n\nThe <code>name</code> is a pointer/reference to an attribute within the OCSF event data. For example: file.name.\n\noptional"]
27043    #[serde(rename = "name")]
27044    #[serde(skip_serializing_if = "Option::is_none")]
27045    pub name: Option<String>,
27046    #[doc = "References\n\nProvides a reference to an external source of information related to the CTI being represented. This may include a URL, a document, or some other type of reference that provides additional context or information about the CTI.\n\noptional"]
27047    #[serde(rename = "references")]
27048    #[serde(skip_serializing_if = "Option::is_none")]
27049    pub references: Option<Vec<String>>,
27050    #[doc = "Related Analytics\n\nAny analytics related to an indicator or OSINT analysis.\n\noptional"]
27051    #[serde(rename = "related_analytics")]
27052    #[serde(skip_serializing_if = "Option::is_none")]
27053    pub related_analytics: Option<Vec<Analytic>>,
27054    #[doc = "Reputation Scores\n\nRelated reputational analysis from third-party engines and analysts for a given indicator or OSINT analysis.\n\noptional"]
27055    #[serde(rename = "reputation")]
27056    #[serde(skip_serializing_if = "Option::is_none")]
27057    pub reputation: Option<Box<Reputation>>,
27058    #[doc = "Risk Score\n\nA numerical representation of the threat indicator’s risk level.\n\noptional"]
27059    #[serde(rename = "risk_score")]
27060    #[serde(skip_serializing_if = "Option::is_none")]
27061    pub risk_score: Option<i64>,
27062    #[doc = "Related Script Data\n\nAny pertinent script information related to an indicator or OSINT analysis.\n\noptional"]
27063    #[serde(rename = "script")]
27064    #[serde(skip_serializing_if = "Option::is_none")]
27065    pub script: Option<Box<Script>>,
27066    #[doc = "Severity\n\nRepresents the severity level of the threat indicator, typically reflecting its potential impact or damage.\n\noptional"]
27067    #[serde(rename = "severity")]
27068    #[serde(skip_serializing_if = "Option::is_none")]
27069    pub severity: Option<String>,
27070    #[doc = "Severity ID\n\nThe normalized severity level of the threat indicator, typically reflecting its potential impact or damage.\n\noptional"]
27071    #[serde(rename = "severity_id")]
27072    #[serde(skip_serializing_if = "Option::is_none")]
27073    pub severity_id: Option<i64>,
27074    #[doc = "Related Digital Signatures\n\nAny digital signatures or hashes related to an indicator or OSINT analysis.\n\noptional"]
27075    #[serde(rename = "signatures")]
27076    #[serde(skip_serializing_if = "Option::is_none")]
27077    pub signatures: Option<Vec<DigitalSignature>>,
27078    #[doc = "Source URL\n\nThe source URL of an indicator or OSINT analysis, e.g., a URL back to a TIP, report, or otherwise.\n\noptional"]
27079    #[serde(rename = "src_url")]
27080    #[serde(skip_serializing_if = "Option::is_none")]
27081    pub src_url: Option<String>,
27082    #[doc = "Related Subdomains\n\nAny pertinent subdomain information - such as those generated by a Domain Generation Algorithm - related to an indicator or OSINT analysis.\n\noptional"]
27083    #[serde(rename = "subdomains")]
27084    #[serde(skip_serializing_if = "Option::is_none")]
27085    pub subdomains: Option<Vec<String>>,
27086    #[doc = "Related Subnet\n\nA CIDR or network block related to an indicator or OSINT analysis.\n\noptional"]
27087    #[serde(rename = "subnet")]
27088    #[serde(skip_serializing_if = "Option::is_none")]
27089    pub subnet: Option<String>,
27090    #[doc = "Threat Actor\n\nA threat actor is an individual or group that conducts malicious cyber activities, often with financial, political, or ideological motives.\n\noptional"]
27091    #[serde(rename = "threat_actor")]
27092    #[serde(skip_serializing_if = "Option::is_none")]
27093    pub threat_actor: Option<Box<ThreatActor>>,
27094    #[doc = "Traffic Light Protocol\n\nThe <a target='_blank' href='https://www.first.org/tlp/'>Traffic Light Protocol</a> was created to facilitate greater sharing of potentially sensitive information and more effective collaboration. TLP provides a simple and intuitive schema for indicating with whom potentially sensitive information can be shared.\n\nrecommended"]
27095    #[serde(rename = "tlp")]
27096    #[serde(skip_serializing_if = "Option::is_none")]
27097    pub tlp: Option<String>,
27098    #[doc = "Type\n\nThe OSINT indicator type.\n\noptional"]
27099    #[serde(rename = "type")]
27100    #[serde(skip_serializing_if = "Option::is_none")]
27101    pub r#type: Option<String>,
27102    #[doc = "Indicator Type ID\n\nThe OSINT indicator type ID.\n\nrequired"]
27103    #[serde(rename = "type_id")]
27104    #[serde(skip_serializing_if = "Option::is_none")]
27105    pub type_id: Option<i64>,
27106    #[doc = "Unique ID\n\nThe unique identifier for the OSINT object.\n\noptional"]
27107    #[serde(rename = "uid")]
27108    #[serde(skip_serializing_if = "Option::is_none")]
27109    pub uid: Option<String>,
27110    #[doc = "Uploaded Time\n\nThe timestamp indicating when the associated indicator or intelligence was added to the system or repository.\n\noptional"]
27111    #[serde(rename = "uploaded_time")]
27112    #[serde(skip_serializing_if = "Option::is_none")]
27113    pub uploaded_time: Option<i64>,
27114    #[doc = "Uploaded Time\n\nThe timestamp indicating when the associated indicator or intelligence was added to the system or repository.\n\noptional"]
27115    #[serde(rename = "uploaded_time_dt")]
27116    #[serde(skip_serializing_if = "Option::is_none")]
27117    pub uploaded_time_dt: Option<String>,
27118    #[doc = "Indicator\n\nThe actual indicator value in scope, e.g., a SHA-256 hash hexdigest or a domain name.\n\nrequired"]
27119    #[serde(rename = "value")]
27120    #[serde(skip_serializing_if = "Option::is_none")]
27121    pub value: Option<String>,
27122    #[doc = "Vendor Name\n\nThe vendor name of a tool which generates intelligence or provides indicators.\n\noptional"]
27123    #[serde(rename = "vendor_name")]
27124    #[serde(skip_serializing_if = "Option::is_none")]
27125    pub vendor_name: Option<String>,
27126    #[doc = "Related Vulnerabilities\n\nAny vulnerabilities related to an indicator or OSINT analysis.\n\noptional"]
27127    #[serde(rename = "vulnerabilities")]
27128    #[serde(skip_serializing_if = "Option::is_none")]
27129    pub vulnerabilities: Option<Vec<Vulnerability>>,
27130    #[doc = "WHOIS\n\nAny pertinent WHOIS information related to an indicator or OSINT analysis.\n\noptional"]
27131    #[serde(rename = "whois")]
27132    #[serde(skip_serializing_if = "Option::is_none")]
27133    pub whois: Option<Box<Whois>>,
27134}
27135#[doc = "Software Package\n\nThe Software Package object describes details about a software package.\n\n[] Category:  | Name: package"]
27136#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27137#[serde(default)]
27138#[non_exhaustive]
27139pub struct Package {
27140    #[doc = "Architecture\n\nArchitecture is a shorthand name describing the type of computer hardware the packaged software is meant to run on.\n\nrecommended"]
27141    #[serde(rename = "architecture")]
27142    #[serde(skip_serializing_if = "Option::is_none")]
27143    pub architecture: Option<String>,
27144    #[doc = "The product CPE identifier\n\nThe Common Platform Enumeration (CPE) name as described by (<a target='_blank' href='https://nvd.nist.gov/products/cpe'>NIST</a>) For example: <code>cpe:/a:apple:safari:16.2</code>.\n\noptional"]
27145    #[serde(rename = "cpe_name")]
27146    #[serde(skip_serializing_if = "Option::is_none")]
27147    pub cpe_name: Option<String>,
27148    #[doc = "Epoch\n\nThe software package epoch. Epoch is a way to define weighted dependencies based on version numbers.\n\noptional"]
27149    #[serde(rename = "epoch")]
27150    #[serde(skip_serializing_if = "Option::is_none")]
27151    pub epoch: Option<i64>,
27152    #[doc = "Hash\n\nCryptographic hash to identify the binary instance of a software component. This can include any component such file, package, or library.\n\noptional"]
27153    #[serde(rename = "hash")]
27154    #[serde(skip_serializing_if = "Option::is_none")]
27155    pub hash: Option<Box<Fingerprint>>,
27156    #[doc = "Software License\n\nThe software license applied to this package.\n\noptional"]
27157    #[serde(rename = "license")]
27158    #[serde(skip_serializing_if = "Option::is_none")]
27159    pub license: Option<String>,
27160    #[doc = "Software License URL\n\nThe URL pointing to the license applied on package or software. This is typically a <code>LICENSE.md</code> file within a repository.\n\noptional"]
27161    #[serde(rename = "license_url")]
27162    #[serde(skip_serializing_if = "Option::is_none")]
27163    pub license_url: Option<String>,
27164    #[doc = "Name\n\nThe software package name.\n\nrequired"]
27165    #[serde(rename = "name")]
27166    #[serde(skip_serializing_if = "Option::is_none")]
27167    pub name: Option<String>,
27168    #[doc = "Package Manager\n\nThe software packager manager utilized to manage a package on a system, e.g. npm, yum, dpkg etc.\n\noptional"]
27169    #[serde(rename = "package_manager")]
27170    #[serde(skip_serializing_if = "Option::is_none")]
27171    pub package_manager: Option<String>,
27172    #[doc = "Package Manager URL\n\nThe URL of the package or library at the package manager, or the specific URL or URI of an internal package manager link such as <code>AWS CodeArtifact</code> or <code>Artifactory</code>.\n\noptional"]
27173    #[serde(rename = "package_manager_url")]
27174    #[serde(skip_serializing_if = "Option::is_none")]
27175    pub package_manager_url: Option<String>,
27176    #[doc = "Package URL\n\nA purl is a URL string used to identify and locate a software package in a mostly universal and uniform way across programming languages, package managers, packaging conventions, tools, APIs and databases.\n\noptional"]
27177    #[serde(rename = "purl")]
27178    #[serde(skip_serializing_if = "Option::is_none")]
27179    pub purl: Option<String>,
27180    #[doc = "Software Release Details\n\nRelease is the number of times a version of the software has been packaged.\n\noptional"]
27181    #[serde(rename = "release")]
27182    #[serde(skip_serializing_if = "Option::is_none")]
27183    pub release: Option<String>,
27184    #[doc = "Source URL\n\nThe link to the specific library or package such as within <code>GitHub</code>, this is different from the link to the package manager where the library or package is hosted.\n\noptional"]
27185    #[serde(rename = "src_url")]
27186    #[serde(skip_serializing_if = "Option::is_none")]
27187    pub src_url: Option<String>,
27188    #[doc = "Type\n\nThe type of software package, normalized to the caption of the <code>type_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
27189    #[serde(rename = "type")]
27190    #[serde(skip_serializing_if = "Option::is_none")]
27191    pub r#type: Option<String>,
27192    #[doc = "Type ID\n\nThe type of software package.\n\nrecommended"]
27193    #[serde(rename = "type_id")]
27194    #[serde(skip_serializing_if = "Option::is_none")]
27195    pub type_id: Option<i64>,
27196    #[doc = "Package UID\n\nA unique identifier for the package or library reported by the source tool. E.g., the <code>libId</code> within the <code>sbom</code> field of an OX Security Issue or the SPDX <code>components.*.bom-ref</code>.\n\noptional"]
27197    #[serde(rename = "uid")]
27198    #[serde(skip_serializing_if = "Option::is_none")]
27199    pub uid: Option<String>,
27200    #[doc = "Vendor Name\n\nThe name of the vendor who published the software package.\n\noptional"]
27201    #[serde(rename = "vendor_name")]
27202    #[serde(skip_serializing_if = "Option::is_none")]
27203    pub vendor_name: Option<String>,
27204    #[doc = "Version\n\nThe software package version.\n\nrequired"]
27205    #[serde(rename = "version")]
27206    #[serde(skip_serializing_if = "Option::is_none")]
27207    pub version: Option<String>,
27208}
27209#[doc = "Parameter\n\nThe Parameter object provides details regarding a parameter of a a function.\n\n[] Category:  | Name: parameter\n\n**Constraints:**\n* at_least_one: `[name`,`pre_value`,`post_value]`\n"]
27210#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27211#[serde(default)]
27212#[non_exhaustive]
27213pub struct Parameter {
27214    #[doc = "Name\n\nThe parameter name.\n\noptional"]
27215    #[serde(rename = "name")]
27216    #[serde(skip_serializing_if = "Option::is_none")]
27217    pub name: Option<String>,
27218    #[doc = "Post-Value\n\nThe parameter value after function execution.\n\noptional"]
27219    #[serde(rename = "post_value")]
27220    #[serde(skip_serializing_if = "Option::is_none")]
27221    pub post_value: Option<String>,
27222    #[doc = "Pre-Value\n\nThe parameter value before function execution.\n\noptional"]
27223    #[serde(rename = "pre_value")]
27224    #[serde(skip_serializing_if = "Option::is_none")]
27225    pub pre_value: Option<String>,
27226}
27227#[doc = "Peripheral Device\n\nThe peripheral device object describes the properties of external, connectable, and detachable hardware.\n\n[] Category:  | Name: peripheral_device\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
27228#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27229#[serde(default)]
27230#[non_exhaustive]
27231pub struct PeripheralDevice {
27232    #[doc = "Class\n\nThe class of the peripheral device.\n\noptional"]
27233    #[serde(rename = "class")]
27234    #[serde(skip_serializing_if = "Option::is_none")]
27235    pub class: Option<String>,
27236    #[doc = "Model\n\nThe peripheral device model.\n\nrecommended"]
27237    #[serde(rename = "model")]
27238    #[serde(skip_serializing_if = "Option::is_none")]
27239    pub model: Option<String>,
27240    #[doc = "Name\n\nThe name of the peripheral device.\n\nrequired"]
27241    #[serde(rename = "name")]
27242    #[serde(skip_serializing_if = "Option::is_none")]
27243    pub name: Option<String>,
27244    #[doc = "Serial Number\n\nThe peripheral device serial number.\n\nrecommended"]
27245    #[serde(rename = "serial_number")]
27246    #[serde(skip_serializing_if = "Option::is_none")]
27247    pub serial_number: Option<String>,
27248    #[doc = "Peripheral Device Type\n\nThe Peripheral Device type, normalized to the caption of the <code>type_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
27249    #[serde(rename = "type")]
27250    #[serde(skip_serializing_if = "Option::is_none")]
27251    pub r#type: Option<String>,
27252    #[doc = "Peripheral Device Type ID\n\nThe normalized peripheral device type ID.\n\nrecommended"]
27253    #[serde(rename = "type_id")]
27254    #[serde(skip_serializing_if = "Option::is_none")]
27255    pub type_id: Option<i64>,
27256    #[doc = "Unique ID\n\nThe unique identifier of the peripheral device.\n\nrecommended"]
27257    #[serde(rename = "uid")]
27258    #[serde(skip_serializing_if = "Option::is_none")]
27259    pub uid: Option<String>,
27260    #[doc = "Vendor ID List\n\nThe list of vendor IDs for the peripheral device.\n\nrecommended"]
27261    #[serde(rename = "vendor_id_list")]
27262    #[serde(skip_serializing_if = "Option::is_none")]
27263    pub vendor_id_list: Option<Vec<String>>,
27264    #[doc = "Vendor Name\n\nThe primary vendor name for the peripheral device.\n\nrecommended"]
27265    #[serde(rename = "vendor_name")]
27266    #[serde(skip_serializing_if = "Option::is_none")]
27267    pub vendor_name: Option<String>,
27268}
27269#[doc = "Permission Analysis Result\n\nThe Permission Analysis object describes analysis results of permissions, policies directly associated with an identity (user, role, or service account). This evaluates what permissions an identity has been granted through attached policies, which privileges are actively used versus unused, and identifies potential over-privileged access. Use this for identity-centric security assessments such as privilege audits, dormant permission discovery, and least-privilege compliance analysis.\n\n[] Category:  | Name: permission_analysis_result"]
27270#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27271#[serde(default)]
27272#[non_exhaustive]
27273pub struct PermissionAnalysisResult {
27274    #[doc = "Condition Keys\n\nThe condition keys and their values that were evaluated during policy analysis, including contextual constraints that affect permission grants. These conditions define when and how permissions are applied. Examples: <code>aws:SourceIp:1.2.3.4</code>, <code>aws:RequestedRegion:us-east-1</code>.\n\noptional"]
27275    #[serde(rename = "condition_keys")]
27276    #[serde(skip_serializing_if = "Option::is_none")]
27277    pub condition_keys: Option<Vec<KeyValueObject>>,
27278    #[doc = "Granted Privileges\n\nThe specific privileges, actions, or permissions that are explicitly granted by the analyzed policy. Examples: AWS actions like <code>s3:GetObject</code>, <code>ec2:RunInstances</code>, <code>iam:CreateUser</code>; Azure actions like <code>Microsoft.Storage/storageAccounts/read</code>; or GCP permissions like <code>storage.objects.get</code>.\n\noptional"]
27279    #[serde(rename = "granted_privileges")]
27280    #[serde(skip_serializing_if = "Option::is_none")]
27281    pub granted_privileges: Option<Vec<String>>,
27282    #[doc = "Policy\n\nDetailed information about the policy document that was analyzed, including policy metadata, version, type (identity-based, resource-based, etc.), and structural details. This provides context for understanding the scope and nature of the permission analysis.\n\nrecommended"]
27283    #[serde(rename = "policy")]
27284    #[serde(skip_serializing_if = "Option::is_none")]
27285    pub policy: Option<Box<Policy>>,
27286    #[doc = "Unused Privileges Count\n\nThe total count of privileges or actions defined in the policy that have not been utilized within the analysis timeframe. This metric helps identify over-privileged access and opportunities for privilege reduction to follow the principle of least privilege. High counts may indicate policy bloat or excessive permissions.\n\noptional"]
27287    #[serde(rename = "unused_privileges_count")]
27288    #[serde(skip_serializing_if = "Option::is_none")]
27289    pub unused_privileges_count: Option<i64>,
27290    #[doc = "Unused Services Count\n\nThe total count of cloud services or resource types referenced in the policy that have not been accessed or utilized within the analysis timeframe. This helps identify unused service permissions that could be removed to reduce attack surface. Examples: AWS services like S3, SQS, IAM, Lambda; Azure services like Storage, Compute, KeyVault; or GCP services like Cloud Storage, Compute Engine, BigQuery.\n\noptional"]
27291    #[serde(rename = "unused_services_count")]
27292    #[serde(skip_serializing_if = "Option::is_none")]
27293    pub unused_services_count: Option<i64>,
27294}
27295#[doc = "Policy\n\nThe Policy object describes the policies that are applicable. <p>Policy attributes provide traceability to the operational state of the security product at the time that the event was captured, facilitating forensics, troubleshooting, and policy tuning/adjustments.</p>\n\n[] Category:  | Name: policy\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
27296#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27297#[serde(default)]
27298#[non_exhaustive]
27299pub struct Policy {
27300    #[doc = "Data\n\nAdditional data about the policy such as the underlying JSON policy itself or other details.\n\noptional"]
27301    #[serde(rename = "data")]
27302    #[serde(skip_serializing_if = "Option::is_none")]
27303    pub data: Option<serde_json::Value>,
27304    #[doc = "Description\n\nThe description of the policy.\n\noptional"]
27305    #[serde(rename = "desc")]
27306    #[serde(skip_serializing_if = "Option::is_none")]
27307    pub desc: Option<String>,
27308    #[doc = "Group\n\nThe policy group.\n\noptional"]
27309    #[serde(rename = "group")]
27310    #[serde(skip_serializing_if = "Option::is_none")]
27311    pub group: Option<Box<Group>>,
27312    #[doc = "Applied\n\nA determination if the content of a policy was applied to a target or request, or not.\n\nrecommended"]
27313    #[serde(rename = "is_applied")]
27314    #[serde(skip_serializing_if = "Option::is_none")]
27315    pub is_applied: Option<bool>,
27316    #[doc = "Name\n\nThe policy name. For example: <code>AdministratorAccess Policy</code>.\n\nrecommended"]
27317    #[serde(rename = "name")]
27318    #[serde(skip_serializing_if = "Option::is_none")]
27319    pub name: Option<String>,
27320    #[doc = "Type\n\nThe policy type. For example: <code>Identity Policy, Resource Policy, Service Control Policy, etc./code>.\n\noptional"]
27321    #[serde(rename = "type")]
27322    #[serde(skip_serializing_if = "Option::is_none")]
27323    pub r#type: Option<String>,
27324    #[doc = "Unique ID\n\nA unique identifier of the policy instance.\n\nrecommended"]
27325    #[serde(rename = "uid")]
27326    #[serde(skip_serializing_if = "Option::is_none")]
27327    pub uid: Option<String>,
27328    #[doc = "Version\n\nThe policy version number.\n\nrecommended"]
27329    #[serde(rename = "version")]
27330    #[serde(skip_serializing_if = "Option::is_none")]
27331    pub version: Option<String>,
27332}
27333#[doc = "Port Information\n\nThe Port Information object describes a port and its associated protocol details.\n\n[] Category:  | Name: port_info"]
27334#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27335#[serde(default)]
27336#[non_exhaustive]
27337pub struct PortInfo {
27338    #[doc = "Port\n\nThe port number. For example: <code>80</code>, <code>443</code>, <code>22</code>.\n\nrequired"]
27339    #[serde(rename = "port")]
27340    #[serde(skip_serializing_if = "Option::is_none")]
27341    pub port: Option<i64>,
27342    #[doc = "Protocol Name\n\nThe IP protocol name in lowercase, as defined by the Internet Assigned Numbers Authority (IANA). For example: <code>tcp</code> or <code>udp</code>.\n\nrecommended"]
27343    #[serde(rename = "protocol_name")]
27344    #[serde(skip_serializing_if = "Option::is_none")]
27345    pub protocol_name: Option<String>,
27346    #[doc = "Protocol Number\n\nThe IP protocol number, as defined by the Internet Assigned Numbers Authority (IANA). For example: <code>6</code> for TCP and <code>17</code> for UDP.\n\noptional"]
27347    #[serde(rename = "protocol_num")]
27348    #[serde(skip_serializing_if = "Option::is_none")]
27349    pub protocol_num: Option<i64>,
27350}
27351#[doc = "Process\n\nExtends the process object to add Windows specific fields.\n\n[] Category:  | Name: process\n\n**Constraints:**\n* at_least_one: `[pid`,`uid`,`cpid]`\n"]
27352#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27353#[serde(default)]
27354#[non_exhaustive]
27355pub struct Process {
27356    #[doc = "Ancestry\n\nAn array of Process Entities describing the extended parentage of this process object. Direct parent information should be expressed through the <code>parent_process</code> attribute. The first array element is the direct parent of this process object. Subsequent list elements go up the process parentage hierarchy. That is, the array is sorted from newest to oldest process. It is recommended to only populate this field for the top-level process object.\n\noptional"]
27357    #[serde(rename = "ancestry")]
27358    #[serde(skip_serializing_if = "Option::is_none")]
27359    pub ancestry: Option<Vec<ProcessEntity>>,
27360    #[doc = "Audit User ID\n\nThe audit user assigned at login by the audit subsystem.\n\noptional"]
27361    #[serde(rename = "auid")]
27362    #[serde(skip_serializing_if = "Option::is_none")]
27363    pub auid: Option<i64>,
27364    #[doc = "Command Line\n\nThe full command line used to launch an application, service, process, or job. For example: <code>ssh user@10.0.0.10</code>. If the command line is unavailable or missing, the empty string <code>''</code> is to be used.\n\nrecommended"]
27365    #[serde(rename = "cmd_line")]
27366    #[serde(skip_serializing_if = "Option::is_none")]
27367    pub cmd_line: Option<String>,
27368    #[doc = "Container\n\nThe information describing an instance of a container. A container is a prepackaged, portable system image that runs isolated on an existing system using a container runtime like containerd.\n\nrecommended"]
27369    #[serde(rename = "container")]
27370    #[serde(skip_serializing_if = "Option::is_none")]
27371    pub container: Option<Box<Container>>,
27372    #[doc = "Common Process Identifier\n\nA unique process identifier that can be assigned deterministically by multiple system data producers.\n\nrecommended"]
27373    #[serde(rename = "cpid")]
27374    #[serde(skip_serializing_if = "Option::is_none")]
27375    pub cpid: Option<String>,
27376    #[doc = "Created Time\n\nThe time when the process was created/started.\n\nrecommended"]
27377    #[serde(rename = "created_time")]
27378    #[serde(skip_serializing_if = "Option::is_none")]
27379    pub created_time: Option<i64>,
27380    #[doc = "Created Time\n\nThe time when the process was created/started.\n\noptional"]
27381    #[serde(rename = "created_time_dt")]
27382    #[serde(skip_serializing_if = "Option::is_none")]
27383    pub created_time_dt: Option<String>,
27384    #[doc = "Effective Group ID\n\nThe effective group under which this process is running.\n\noptional"]
27385    #[serde(rename = "egid")]
27386    #[serde(skip_serializing_if = "Option::is_none")]
27387    pub egid: Option<i64>,
27388    #[doc = "Environment Variables\n\nEnvironment variables associated with the process.\n\noptional"]
27389    #[serde(rename = "environment_variables")]
27390    #[serde(skip_serializing_if = "Option::is_none")]
27391    pub environment_variables: Option<Vec<EnvironmentVariable>>,
27392    #[doc = "Effective User ID\n\nThe effective user under which this process is running.\n\noptional"]
27393    #[serde(rename = "euid")]
27394    #[serde(skip_serializing_if = "Option::is_none")]
27395    pub euid: Option<i64>,
27396    #[doc = "File\n\nThe process file object.\n\nrecommended"]
27397    #[serde(rename = "file")]
27398    #[serde(skip_serializing_if = "Option::is_none")]
27399    pub file: Option<Box<File>>,
27400    #[doc = "Group\n\nThe group under which this process is running.\n\nrecommended"]
27401    #[serde(rename = "group")]
27402    #[serde(skip_serializing_if = "Option::is_none")]
27403    pub group: Option<Box<Group>>,
27404    #[doc = "Hosted Services\n\nThe Windows services that this process is hosting.\n\noptional"]
27405    #[serde(rename = "hosted_services")]
27406    #[serde(skip_serializing_if = "Option::is_none")]
27407    pub hosted_services: Option<Vec<WinWinService>>,
27408    #[doc = "Integrity\n\nThe process integrity level, normalized to the caption of the integrity_id value. In the case of 'Other', it is defined by the event source (Windows only).\n\noptional"]
27409    #[serde(rename = "integrity")]
27410    #[serde(skip_serializing_if = "Option::is_none")]
27411    pub integrity: Option<String>,
27412    #[doc = "Integrity Level\n\nThe normalized identifier of the process integrity level (Windows only).\n\noptional"]
27413    #[serde(rename = "integrity_id")]
27414    #[serde(skip_serializing_if = "Option::is_none")]
27415    pub integrity_id: Option<i64>,
27416    #[doc = "Lineage\n\nThe lineage of the process, represented by a list of paths for each ancestor process. For example: <code>['/usr/sbin/sshd', '/usr/bin/bash', '/usr/bin/whoami']</code>.\n\noptional"]
27417    #[serde(rename = "lineage")]
27418    #[serde(skip_serializing_if = "Option::is_none")]
27419    pub lineage: Option<Vec<String>>,
27420    #[doc = "Loaded Modules\n\nThe list of loaded module names.\n\noptional"]
27421    #[serde(rename = "loaded_modules")]
27422    #[serde(skip_serializing_if = "Option::is_none")]
27423    pub loaded_modules: Option<Vec<String>>,
27424    #[doc = "Name\n\nThe friendly name of the process, for example: <code>Notepad++</code>.\n\nrecommended"]
27425    #[serde(rename = "name")]
27426    #[serde(skip_serializing_if = "Option::is_none")]
27427    pub name: Option<String>,
27428    #[doc = "Namespace PID\n\nIf running under a process namespace (such as in a container), the process identifier within that process namespace.\n\nrecommended"]
27429    #[serde(rename = "namespace_pid")]
27430    #[serde(skip_serializing_if = "Option::is_none")]
27431    pub namespace_pid: Option<i64>,
27432    #[doc = "Parent Process\n\nThe parent process of this process object. It is recommended to only populate this field for the top-level process object, to prevent deep nesting. Additional ancestry information can be supplied in the <code>ancestry</code> attribute.\n\nrecommended"]
27433    #[serde(rename = "parent_process")]
27434    #[serde(skip_serializing_if = "Option::is_none")]
27435    pub parent_process: Option<Box<Process>>,
27436    #[doc = "Path\n\nThe process file path.\n\noptional"]
27437    #[serde(rename = "path")]
27438    #[serde(skip_serializing_if = "Option::is_none")]
27439    pub path: Option<String>,
27440    #[doc = "Process ID\n\nThe process identifier, as reported by the operating system. Process ID (PID) is a number used by the operating system to uniquely identify an active process.\n\nrecommended"]
27441    #[serde(rename = "pid")]
27442    #[serde(skip_serializing_if = "Option::is_none")]
27443    pub pid: Option<i64>,
27444    #[doc = "Process Thread ID\n\nThe identifier of the process thread associated with the event, as returned by the operating system.\n\noptional"]
27445    #[serde(rename = "ptid")]
27446    #[serde(skip_serializing_if = "Option::is_none")]
27447    pub ptid: Option<i64>,
27448    #[doc = "Sandbox\n\nThe name of the containment jail (i.e., sandbox). For example, hardened_ps, high_security_ps, oracle_ps, netsvcs_ps, or default_ps.\n\noptional"]
27449    #[serde(rename = "sandbox")]
27450    #[serde(skip_serializing_if = "Option::is_none")]
27451    pub sandbox: Option<String>,
27452    #[doc = "Session\n\nThe user session under which this process is running.\n\noptional"]
27453    #[serde(rename = "session")]
27454    #[serde(skip_serializing_if = "Option::is_none")]
27455    pub session: Option<Box<Session>>,
27456    #[doc = "Terminated Time\n\nThe time when the process was terminated.\n\noptional"]
27457    #[serde(rename = "terminated_time")]
27458    #[serde(skip_serializing_if = "Option::is_none")]
27459    pub terminated_time: Option<i64>,
27460    #[doc = "Terminated Time\n\nThe time when the process was terminated.\n\noptional"]
27461    #[serde(rename = "terminated_time_dt")]
27462    #[serde(skip_serializing_if = "Option::is_none")]
27463    pub terminated_time_dt: Option<String>,
27464    #[doc = "Thread ID\n\nThe identifier of the thread associated with the event, as returned by the operating system.\n\noptional"]
27465    #[serde(rename = "tid")]
27466    #[serde(skip_serializing_if = "Option::is_none")]
27467    pub tid: Option<i64>,
27468    #[doc = "Unique ID\n\nA unique identifier for this process assigned by the producer (tool).  Facilitates correlation of a process event with other events for that process.\n\nrecommended"]
27469    #[serde(rename = "uid")]
27470    #[serde(skip_serializing_if = "Option::is_none")]
27471    pub uid: Option<String>,
27472    #[doc = "User\n\nThe user under which this process is running.\n\nrecommended"]
27473    #[serde(rename = "user")]
27474    #[serde(skip_serializing_if = "Option::is_none")]
27475    pub user: Option<Box<User>>,
27476    #[doc = "Working Directory\n\nThe working directory of a process.\n\noptional"]
27477    #[serde(rename = "working_directory")]
27478    #[serde(skip_serializing_if = "Option::is_none")]
27479    pub working_directory: Option<String>,
27480    #[doc = "Extended Attributes\n\nAn unordered collection of zero or more name/value pairs that represent a process extended attribute.\n\noptional"]
27481    #[serde(rename = "xattributes")]
27482    #[serde(skip_serializing_if = "Option::is_none")]
27483    pub xattributes: Option<serde_json::Value>,
27484}
27485#[doc = "Process Entity\n\nThe Process Entity object provides critical fields for referencing a process.\n\n[] Category:  | Name: process_entity\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
27486#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27487#[serde(default)]
27488#[non_exhaustive]
27489pub struct ProcessEntity {
27490    #[doc = "Command Line\n\nThe full command line used to launch an application, service, process, or job. For example: <code>ssh user@10.0.0.10</code>. If the command line is unavailable or missing, the empty string <code>''</code> is to be used.\n\nrecommended"]
27491    #[serde(rename = "cmd_line")]
27492    #[serde(skip_serializing_if = "Option::is_none")]
27493    pub cmd_line: Option<String>,
27494    #[doc = "Common Process Identifier\n\nA unique process identifier that can be assigned deterministically by multiple system data producers.\n\nrecommended"]
27495    #[serde(rename = "cpid")]
27496    #[serde(skip_serializing_if = "Option::is_none")]
27497    pub cpid: Option<String>,
27498    #[doc = "Created Time\n\nThe time when the process was created/started.\n\nrecommended"]
27499    #[serde(rename = "created_time")]
27500    #[serde(skip_serializing_if = "Option::is_none")]
27501    pub created_time: Option<i64>,
27502    #[doc = "Created Time\n\nThe time when the process was created/started.\n\noptional"]
27503    #[serde(rename = "created_time_dt")]
27504    #[serde(skip_serializing_if = "Option::is_none")]
27505    pub created_time_dt: Option<String>,
27506    #[doc = "Name\n\nThe friendly name of the process, for example: <code>Notepad++</code>.\n\nrecommended"]
27507    #[serde(rename = "name")]
27508    #[serde(skip_serializing_if = "Option::is_none")]
27509    pub name: Option<String>,
27510    #[doc = "Path\n\nThe process file path.\n\noptional"]
27511    #[serde(rename = "path")]
27512    #[serde(skip_serializing_if = "Option::is_none")]
27513    pub path: Option<String>,
27514    #[doc = "Process ID\n\nThe process identifier, as reported by the operating system. Process ID (PID) is a number used by the operating system to uniquely identify an active process.\n\nrecommended"]
27515    #[serde(rename = "pid")]
27516    #[serde(skip_serializing_if = "Option::is_none")]
27517    pub pid: Option<i64>,
27518    #[doc = "Unique ID\n\nA unique identifier for this process assigned by the producer (tool).  Facilitates correlation of a process event with other events for that process.\n\nrecommended"]
27519    #[serde(rename = "uid")]
27520    #[serde(skip_serializing_if = "Option::is_none")]
27521    pub uid: Option<String>,
27522}
27523#[doc = "Product\n\nThe Product object describes characteristics of a software product.\n\n[] Category:  | Name: product\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
27524#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27525#[serde(default)]
27526#[non_exhaustive]
27527pub struct Product {
27528    #[doc = "The product CPE identifier\n\nThe Common Platform Enumeration (CPE) name as described by (<a target='_blank' href='https://nvd.nist.gov/products/cpe'>NIST</a>) For example: <code>cpe:/a:apple:safari:16.2</code>.\n\noptional"]
27529    #[serde(rename = "cpe_name")]
27530    #[serde(skip_serializing_if = "Option::is_none")]
27531    pub cpe_name: Option<String>,
27532    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
27533    #[serde(rename = "data_classification")]
27534    #[serde(skip_serializing_if = "Option::is_none")]
27535    pub data_classification: Option<Box<DataClassification>>,
27536    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
27537    #[serde(rename = "data_classifications")]
27538    #[serde(skip_serializing_if = "Option::is_none")]
27539    pub data_classifications: Option<Vec<DataClassification>>,
27540    #[doc = "Feature\n\nThe feature that reported the event.\n\noptional"]
27541    #[serde(rename = "feature")]
27542    #[serde(skip_serializing_if = "Option::is_none")]
27543    pub feature: Option<Box<Feature>>,
27544    #[doc = "Language\n\nThe two letter lower case language codes, as defined by <a target='_blank' href='https://en.wikipedia.org/wiki/ISO_639-1'>ISO 639-1</a>. For example: <code>en</code> (English), <code>de</code> (German), or <code>fr</code> (French).\n\noptional"]
27545    #[serde(rename = "lang")]
27546    #[serde(skip_serializing_if = "Option::is_none")]
27547    pub lang: Option<String>,
27548    #[doc = "Name\n\nThe name of the product.\n\nrecommended"]
27549    #[serde(rename = "name")]
27550    #[serde(skip_serializing_if = "Option::is_none")]
27551    pub name: Option<String>,
27552    #[doc = "Path\n\nThe installation path of the product.\n\noptional"]
27553    #[serde(rename = "path")]
27554    #[serde(skip_serializing_if = "Option::is_none")]
27555    pub path: Option<String>,
27556    #[doc = "Unique ID\n\nThe unique identifier of the product.\n\nrecommended"]
27557    #[serde(rename = "uid")]
27558    #[serde(skip_serializing_if = "Option::is_none")]
27559    pub uid: Option<String>,
27560    #[doc = "URL String\n\nThe URL pointing towards the product.\n\noptional"]
27561    #[serde(rename = "url_string")]
27562    #[serde(skip_serializing_if = "Option::is_none")]
27563    pub url_string: Option<String>,
27564    #[doc = "Vendor Name\n\nThe name of the vendor of the product.\n\nrecommended"]
27565    #[serde(rename = "vendor_name")]
27566    #[serde(skip_serializing_if = "Option::is_none")]
27567    pub vendor_name: Option<String>,
27568    #[doc = "Version\n\nThe version of the product, as defined by the event source. For example: <code>2013.1.3-beta</code>.\n\nrecommended"]
27569    #[serde(rename = "version")]
27570    #[serde(skip_serializing_if = "Option::is_none")]
27571    pub version: Option<String>,
27572}
27573#[doc = "Programmatic Credential\n\nThe Programmatic Credential object describes service-specific credentials used for direct API access and system integration. These credentials are typically issued by individual services or platforms for accessing their APIs and resources, focusing on credential lifecycle management and usage tracking. Examples include API keys, service account keys, client certificates, and vendor-specific access tokens.\n\n[] Category:  | Name: programmatic_credential"]
27574#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27575#[serde(default)]
27576#[non_exhaustive]
27577pub struct ProgrammaticCredential {
27578    #[doc = "Last Used Time\n\nThe timestamp when this programmatic credential was last used for authentication or API access. This helps track credential usage patterns, identify dormant credentials that may pose security risks, and support credential lifecycle management. The timestamp should reflect the most recent successful authentication or API call using this credential.\n\noptional"]
27579    #[serde(rename = "last_used_time")]
27580    #[serde(skip_serializing_if = "Option::is_none")]
27581    pub last_used_time: Option<i64>,
27582    #[doc = "Last Used Time\n\nThe timestamp when this programmatic credential was last used for authentication or API access. This helps track credential usage patterns, identify dormant credentials that may pose security risks, and support credential lifecycle management. The timestamp should reflect the most recent successful authentication or API call using this credential.\n\noptional"]
27583    #[serde(rename = "last_used_time_dt")]
27584    #[serde(skip_serializing_if = "Option::is_none")]
27585    pub last_used_time_dt: Option<String>,
27586    #[doc = "Type\n\nThe type or category of programmatic credential, normalized to the caption of the type_id value. In the case of 'Other', it is defined by the event source. Examples include 'API Key', 'Service Account Key', 'Access Token', 'Client Certificate', 'OAuth Token', 'Personal Access Token', etc.\n\nrecommended"]
27587    #[serde(rename = "type")]
27588    #[serde(skip_serializing_if = "Option::is_none")]
27589    pub r#type: Option<String>,
27590    #[doc = "Unique ID\n\nThe unique identifier of the programmatic credential. This could be an API key ID, service account key ID, access token identifier, certificate serial number, or other unique identifier that distinguishes this credential from others. Examples: AWS Access Key ID, GCP Service Account Key ID, Azure Application ID, or OAuth2 token identifier.\n\nrequired"]
27591    #[serde(rename = "uid")]
27592    #[serde(skip_serializing_if = "Option::is_none")]
27593    pub uid: Option<String>,
27594}
27595#[doc = "Query Evidence\n\nThe resulting evidence information that was queried.\n\n[] Category:  | Name: query_evidence\n\n**Constraints:**\n* just_one: `[connection_info`,`file`,`folder`,`group`,`job`,`kernel`,`module`,`network_interfaces`,`peripheral_device`,`process`,`reg_key`,`reg_value`,`service`,`session`,`startup_item`,`user]`\n"]
27596#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27597#[serde(default)]
27598#[non_exhaustive]
27599pub struct QueryEvidence {
27600    #[doc = "Connection Info\n\nThe network connection information related to a Network Connection query type.\n\nrecommended"]
27601    #[serde(rename = "connection_info")]
27602    #[serde(skip_serializing_if = "Option::is_none")]
27603    pub connection_info: Option<Box<NetworkConnectionInfo>>,
27604    #[doc = "File\n\nThe file that is the target of the query when query_type_id indicates a File query.\n\nrecommended"]
27605    #[serde(rename = "file")]
27606    #[serde(skip_serializing_if = "Option::is_none")]
27607    pub file: Option<Box<File>>,
27608    #[doc = "Folder\n\nThe folder that is the target of the query when query_type_id indicates a Folder query.\n\nrecommended"]
27609    #[serde(rename = "folder")]
27610    #[serde(skip_serializing_if = "Option::is_none")]
27611    pub folder: Option<Box<File>>,
27612    #[doc = "Group\n\nThe administrative group that is the target of the query when query_type_id indicates an Admin Group query.\n\nrecommended"]
27613    #[serde(rename = "group")]
27614    #[serde(skip_serializing_if = "Option::is_none")]
27615    pub group: Option<Box<Group>>,
27616    #[doc = "Job\n\nThe job object that pertains to the event when query_type_id indicates a Job query.\n\nrecommended"]
27617    #[serde(rename = "job")]
27618    #[serde(skip_serializing_if = "Option::is_none")]
27619    pub job: Option<Box<Job>>,
27620    #[doc = "Kernel\n\nThe kernel object that pertains to the event when query_type_id indicates a Kernel query.\n\nrecommended"]
27621    #[serde(rename = "kernel")]
27622    #[serde(skip_serializing_if = "Option::is_none")]
27623    pub kernel: Option<Box<Kernel>>,
27624    #[doc = "Module\n\nThe module that pertains to the event when query_type_id indicates a Module query.\n\nrecommended"]
27625    #[serde(rename = "module")]
27626    #[serde(skip_serializing_if = "Option::is_none")]
27627    pub module: Option<Box<Module>>,
27628    #[doc = "Network Interfaces\n\nThe physical or virtual network interfaces that are associated with the device when query_type_id indicates a Network Interfaces query.\n\nrecommended"]
27629    #[serde(rename = "network_interfaces")]
27630    #[serde(skip_serializing_if = "Option::is_none")]
27631    pub network_interfaces: Option<Vec<NetworkInterface>>,
27632    #[doc = "Peripheral Device\n\nThe peripheral device that triggered the event when query_type_id indicates a Peripheral Device query.\n\nrecommended"]
27633    #[serde(rename = "peripheral_device")]
27634    #[serde(skip_serializing_if = "Option::is_none")]
27635    pub peripheral_device: Option<Box<PeripheralDevice>>,
27636    #[doc = "Process\n\nThe process that pertains to the event when query_type_id indicates a Process query.\n\nrecommended"]
27637    #[serde(rename = "process")]
27638    #[serde(skip_serializing_if = "Option::is_none")]
27639    pub process: Option<Box<Process>>,
27640    #[doc = "Query Type\n\nThe normalized caption of query_type_id or the source-specific query type.\n\noptional"]
27641    #[serde(rename = "query_type")]
27642    #[serde(skip_serializing_if = "Option::is_none")]
27643    pub query_type: Option<String>,
27644    #[doc = "Query Type ID\n\nThe normalized type of system query performed against a device or system component.\n\nrequired"]
27645    #[serde(rename = "query_type_id")]
27646    #[serde(skip_serializing_if = "Option::is_none")]
27647    pub query_type_id: Option<i64>,
27648    #[doc = "Registry Key\n\nThe registry key object describes a Windows registry key.\n\nrecommended"]
27649    #[serde(rename = "reg_key")]
27650    #[serde(skip_serializing_if = "Option::is_none")]
27651    pub reg_key: Option<Box<WinRegKey>>,
27652    #[doc = "Registry Value\n\nThe registry key object describes a Windows registry value.\n\nrecommended"]
27653    #[serde(rename = "reg_value")]
27654    #[serde(skip_serializing_if = "Option::is_none")]
27655    pub reg_value: Option<Box<WinRegValue>>,
27656    #[doc = "Service\n\nThe service that pertains to the event when query_type_id indicates a Service query.\n\nrecommended"]
27657    #[serde(rename = "service")]
27658    #[serde(skip_serializing_if = "Option::is_none")]
27659    pub service: Option<Box<Service>>,
27660    #[doc = "Session\n\nThe authenticated user or service session when query_type_id indicates a Session query.\n\nrecommended"]
27661    #[serde(rename = "session")]
27662    #[serde(skip_serializing_if = "Option::is_none")]
27663    pub session: Option<Box<Session>>,
27664    #[doc = "Startup Item\n\nThe startup item object that pertains to the event when query_type_id indicates a Startup Item query.\n\nrecommended"]
27665    #[serde(rename = "startup_item")]
27666    #[serde(skip_serializing_if = "Option::is_none")]
27667    pub startup_item: Option<Box<StartupItem>>,
27668    #[doc = "Network Connection State\n\nThe state of the socket, normalized to the caption of the state_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
27669    #[serde(rename = "state")]
27670    #[serde(skip_serializing_if = "Option::is_none")]
27671    pub state: Option<String>,
27672    #[doc = "TCP State ID\n\nThe state of the TCP socket for the network connection.\n\noptional"]
27673    #[serde(rename = "tcp_state_id")]
27674    #[serde(skip_serializing_if = "Option::is_none")]
27675    pub tcp_state_id: Option<i64>,
27676    #[doc = "User\n\nThe user that pertains to the event when query_type_id indicates a User query.\n\nrecommended"]
27677    #[serde(rename = "user")]
27678    #[serde(skip_serializing_if = "Option::is_none")]
27679    pub user: Option<Box<User>>,
27680    #[doc = "Users\n\nThe users that belong to the administrative group when query_type_id indicates a Users query.\n\noptional"]
27681    #[serde(rename = "users")]
27682    #[serde(skip_serializing_if = "Option::is_none")]
27683    pub users: Option<Vec<User>>,
27684}
27685#[doc = "Query Information\n\nThe query info object holds information related to data access within a datastore. To access, manipulate, delete, or retrieve data from a datastore, a query must be written using a specific syntax.\n\n[] Category:  | Name: query_info\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
27686#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27687#[serde(default)]
27688#[non_exhaustive]
27689pub struct QueryInfo {
27690    #[doc = "Total Bytes\n\nThe size of the data returned from the query.\n\noptional"]
27691    #[serde(rename = "bytes")]
27692    #[serde(skip_serializing_if = "Option::is_none")]
27693    pub bytes: Option<i64>,
27694    #[doc = "Data\n\nThe data returned from the query execution.\n\noptional"]
27695    #[serde(rename = "data")]
27696    #[serde(skip_serializing_if = "Option::is_none")]
27697    pub data: Option<serde_json::Value>,
27698    #[doc = "Name\n\nThe query name for a saved or scheduled query.\n\nrecommended"]
27699    #[serde(rename = "name")]
27700    #[serde(skip_serializing_if = "Option::is_none")]
27701    pub name: Option<String>,
27702    #[doc = "Query String\n\nA string representing the query code being run. For example: <code>SELECT * FROM my_table</code>\n\nrequired"]
27703    #[serde(rename = "query_string")]
27704    #[serde(skip_serializing_if = "Option::is_none")]
27705    pub query_string: Option<String>,
27706    #[doc = "Query Time\n\nThe time when the query was run.\n\noptional"]
27707    #[serde(rename = "query_time")]
27708    #[serde(skip_serializing_if = "Option::is_none")]
27709    pub query_time: Option<i64>,
27710    #[doc = "Query Time\n\nThe time when the query was run.\n\noptional"]
27711    #[serde(rename = "query_time_dt")]
27712    #[serde(skip_serializing_if = "Option::is_none")]
27713    pub query_time_dt: Option<String>,
27714    #[doc = "Unique ID\n\nThe unique identifier of the query.\n\nrecommended"]
27715    #[serde(rename = "uid")]
27716    #[serde(skip_serializing_if = "Option::is_none")]
27717    pub uid: Option<String>,
27718}
27719#[doc = "Related Event/Finding\n\nThe Related Event object describes an event or another finding related to a finding. It may or may not be an OCSF event.\n\n[] Category:  | Name: related_event"]
27720#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27721#[serde(default)]
27722#[non_exhaustive]
27723pub struct RelatedEvent {
27724    #[doc = "MITRE ATT&CK® and ATLAS™ Details\n\nAn array of MITRE ATT&CK® objects describing identified tactics, techniques & sub-techniques. The objects are compatible with MITRE ATLAS™ tactics, techniques & sub-techniques.\n\noptional"]
27725    #[serde(rename = "attacks")]
27726    #[serde(skip_serializing_if = "Option::is_none")]
27727    pub attacks: Option<Vec<Attack>>,
27728    #[doc = "Count\n\nThe number of times that activity in the same logical group occurred, as reported by the related Finding.\n\noptional"]
27729    #[serde(rename = "count")]
27730    #[serde(skip_serializing_if = "Option::is_none")]
27731    pub count: Option<i64>,
27732    #[doc = "Created Time\n\nThe time when the related event/finding was created.\n\noptional"]
27733    #[serde(rename = "created_time")]
27734    #[serde(skip_serializing_if = "Option::is_none")]
27735    pub created_time: Option<i64>,
27736    #[doc = "Created Time\n\nThe time when the related event/finding was created.\n\noptional"]
27737    #[serde(rename = "created_time_dt")]
27738    #[serde(skip_serializing_if = "Option::is_none")]
27739    pub created_time_dt: Option<String>,
27740    #[doc = "Description\n\nA description of the related event/finding.\n\noptional"]
27741    #[serde(rename = "desc")]
27742    #[serde(skip_serializing_if = "Option::is_none")]
27743    pub desc: Option<String>,
27744    #[doc = "First Seen\n\nThe time when the finding was first observed. e.g. The time when a vulnerability was first observed.<br>It can differ from the <code>created_time</code> timestamp, which reflects the time this finding was created.\n\noptional"]
27745    #[serde(rename = "first_seen_time")]
27746    #[serde(skip_serializing_if = "Option::is_none")]
27747    pub first_seen_time: Option<i64>,
27748    #[doc = "First Seen\n\nThe time when the finding was first observed. e.g. The time when a vulnerability was first observed.<br>It can differ from the <code>created_time</code> timestamp, which reflects the time this finding was created.\n\noptional"]
27749    #[serde(rename = "first_seen_time_dt")]
27750    #[serde(skip_serializing_if = "Option::is_none")]
27751    pub first_seen_time_dt: Option<String>,
27752    #[doc = "Kill Chain\n\nThe <a target='_blank' href='https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html'>Cyber Kill Chain®</a> provides a detailed description of each phase and its associated activities within the broader context of a cyber attack.\n\noptional"]
27753    #[serde(rename = "kill_chain")]
27754    #[serde(skip_serializing_if = "Option::is_none")]
27755    pub kill_chain: Option<Vec<KillChainPhase>>,
27756    #[doc = "Last Seen\n\nThe time when the finding was most recently observed. e.g. The time when a vulnerability was most recently observed.<br>It can differ from the <code>modified_time</code> timestamp, which reflects the time this finding was last modified.\n\noptional"]
27757    #[serde(rename = "last_seen_time")]
27758    #[serde(skip_serializing_if = "Option::is_none")]
27759    pub last_seen_time: Option<i64>,
27760    #[doc = "Last Seen\n\nThe time when the finding was most recently observed. e.g. The time when a vulnerability was most recently observed.<br>It can differ from the <code>modified_time</code> timestamp, which reflects the time this finding was last modified.\n\noptional"]
27761    #[serde(rename = "last_seen_time_dt")]
27762    #[serde(skip_serializing_if = "Option::is_none")]
27763    pub last_seen_time_dt: Option<String>,
27764    #[doc = "Modified Time\n\nThe time when the related event/finding was last modified.\n\noptional"]
27765    #[serde(rename = "modified_time")]
27766    #[serde(skip_serializing_if = "Option::is_none")]
27767    pub modified_time: Option<i64>,
27768    #[doc = "Modified Time\n\nThe time when the related event/finding was last modified.\n\noptional"]
27769    #[serde(rename = "modified_time_dt")]
27770    #[serde(skip_serializing_if = "Option::is_none")]
27771    pub modified_time_dt: Option<String>,
27772    #[doc = "Observables\n\nThe observables associated with the event or a finding.\n\noptional"]
27773    #[serde(rename = "observables")]
27774    #[serde(skip_serializing_if = "Option::is_none")]
27775    pub observables: Option<Vec<Observable>>,
27776    #[doc = "Product\n\nDetails about the product that reported the related event/finding.\n\noptional"]
27777    #[serde(rename = "product")]
27778    #[serde(skip_serializing_if = "Option::is_none")]
27779    pub product: Option<Box<Product>>,
27780    #[doc = "Product Identifier\n\nThe unique identifier of the product that reported the related event.\n\noptional"]
27781    #[serde(rename = "product_uid")]
27782    #[serde(skip_serializing_if = "Option::is_none")]
27783    pub product_uid: Option<String>,
27784    #[doc = "Severity\n\nThe event/finding severity, normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
27785    #[serde(rename = "severity")]
27786    #[serde(skip_serializing_if = "Option::is_none")]
27787    pub severity: Option<String>,
27788    #[doc = "Severity ID\n\n<p>The normalized identifier of the event/finding severity.</p>The normalized severity is a measurement the effort and expense required to manage and resolve an event or incident. Smaller numerical values represent lower impact events, and larger numerical values represent higher impact events.\n\nrecommended"]
27789    #[serde(rename = "severity_id")]
27790    #[serde(skip_serializing_if = "Option::is_none")]
27791    pub severity_id: Option<i64>,
27792    #[doc = "Status\n\nThe related event status. Should correspond to the label of the status_id (or 'Other' status value for status_id = 99) of the related event.\n\noptional"]
27793    #[serde(rename = "status")]
27794    #[serde(skip_serializing_if = "Option::is_none")]
27795    pub status: Option<String>,
27796    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated with the related event/finding.\n\noptional"]
27797    #[serde(rename = "tags")]
27798    #[serde(skip_serializing_if = "Option::is_none")]
27799    pub tags: Option<Vec<KeyValueObject>>,
27800    #[doc = "Title\n\nA title or a brief phrase summarizing the related event/finding.\n\noptional"]
27801    #[serde(rename = "title")]
27802    #[serde(skip_serializing_if = "Option::is_none")]
27803    pub title: Option<String>,
27804    #[doc = "Traits\n\nThe list of key traits or characteristics extracted from the related event/finding that influenced or contributed to the overall finding's outcome.\n\noptional"]
27805    #[serde(rename = "traits")]
27806    #[serde(skip_serializing_if = "Option::is_none")]
27807    pub traits: Option<Vec<Trait>>,
27808    #[doc = "Type\n\nThe type of the related event/finding.</p>Populate if the related event/finding is <code>NOT</code> in OCSF. If it is in OCSF, then utilize <code>type_name, type_uid</code> instead.\n\noptional"]
27809    #[serde(rename = "type")]
27810    #[serde(skip_serializing_if = "Option::is_none")]
27811    pub r#type: Option<String>,
27812    #[doc = "Type Name\n\nThe type of the related OCSF event, as defined by <code>type_uid</code>.<p>For example: <code>Process Activity: Launch.</code></p>Populate if the related event/finding is in OCSF.\n\noptional"]
27813    #[serde(rename = "type_name")]
27814    #[serde(skip_serializing_if = "Option::is_none")]
27815    pub type_name: Option<String>,
27816    #[doc = "Type ID\n\nThe unique identifier of the related OCSF event type. <p>For example: <code>100701.</code></p>Populate if the related event/finding is in OCSF.\n\nrecommended"]
27817    #[serde(rename = "type_uid")]
27818    #[serde(skip_serializing_if = "Option::is_none")]
27819    pub type_uid: Option<i64>,
27820    #[doc = "Unique ID\n\nThe unique identifier of the related event/finding.</p> If the related event/finding is in OCSF, then this value must be equal to <code>metadata.uid</code> in the corresponding event.\n\nrequired"]
27821    #[serde(rename = "uid")]
27822    #[serde(skip_serializing_if = "Option::is_none")]
27823    pub uid: Option<String>,
27824}
27825#[doc = "Remediation\n\nThe Remediation object describes the recommended remediation steps to address identified issue(s).\n\n[] Category:  | Name: remediation"]
27826#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27827#[serde(default)]
27828#[non_exhaustive]
27829pub struct Remediation {
27830    #[doc = "CIS Controls\n\nAn array of Center for Internet Security (CIS) Controls that can be optionally mapped to provide additional remediation details.\n\noptional"]
27831    #[serde(rename = "cis_controls")]
27832    #[serde(skip_serializing_if = "Option::is_none")]
27833    pub cis_controls: Option<Vec<CisControl>>,
27834    #[doc = "Description\n\nThe description of the remediation strategy.\n\nrequired"]
27835    #[serde(rename = "desc")]
27836    #[serde(skip_serializing_if = "Option::is_none")]
27837    pub desc: Option<String>,
27838    #[doc = "Knowledgebase Articles\n\nA list of KB articles or patches related to an endpoint. A KB Article contains metadata that describes the patch or an update.\n\noptional"]
27839    #[serde(rename = "kb_article_list")]
27840    #[serde(skip_serializing_if = "Option::is_none")]
27841    pub kb_article_list: Option<Vec<KbArticle>>,
27842    #[doc = "Knowledgebase Articles\n\nThe KB article/s related to the entity. A KB Article contains metadata that describes the patch or an update.\n\noptional"]
27843    #[serde(rename = "kb_articles")]
27844    #[serde(skip_serializing_if = "Option::is_none")]
27845    pub kb_articles: Option<Vec<String>>,
27846    #[doc = "References\n\nA list of supporting URL/s, references that help describe the remediation strategy.\n\noptional"]
27847    #[serde(rename = "references")]
27848    #[serde(skip_serializing_if = "Option::is_none")]
27849    pub references: Option<Vec<String>>,
27850}
27851#[doc = "Reporter\n\nThe entity from which an event or finding was reported.\n\n[] Category:  | Name: reporter\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
27852#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27853#[serde(default)]
27854#[non_exhaustive]
27855pub struct Reporter {
27856    #[doc = "Hostname\n\nThe hostname of the entity from which the event or finding was reported.\n\nrecommended"]
27857    #[serde(rename = "hostname")]
27858    #[serde(skip_serializing_if = "Option::is_none")]
27859    pub hostname: Option<String>,
27860    #[doc = "IP Address\n\nThe IP address of the entity from which the event or finding was reported.\n\nrecommended"]
27861    #[serde(rename = "ip")]
27862    #[serde(skip_serializing_if = "Option::is_none")]
27863    pub ip: Option<String>,
27864    #[doc = "Name\n\nThe name of the entity from which the event or finding was reported.\n\nrecommended"]
27865    #[serde(rename = "name")]
27866    #[serde(skip_serializing_if = "Option::is_none")]
27867    pub name: Option<String>,
27868    #[doc = "Organization\n\nThe organization properties of the entity that reported the event or finding.\n\noptional"]
27869    #[serde(rename = "org")]
27870    #[serde(skip_serializing_if = "Option::is_none")]
27871    pub org: Option<Box<Organization>>,
27872    #[doc = "Unique ID\n\nThe unique identifier of the entity from which the event or finding was reported.\n\nrecommended"]
27873    #[serde(rename = "uid")]
27874    #[serde(skip_serializing_if = "Option::is_none")]
27875    pub uid: Option<String>,
27876}
27877#[doc = "Reputation\n\nThe Reputation object describes the reputation/risk score of an entity (e.g. device, user, domain).\n\n[] Category:  | Name: reputation"]
27878#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27879#[serde(default)]
27880#[non_exhaustive]
27881pub struct Reputation {
27882    #[doc = "Reputation Score\n\nThe reputation score as reported by the event source.\n\nrequired"]
27883    #[serde(rename = "base_score")]
27884    #[serde(skip_serializing_if = "Option::is_none")]
27885    pub base_score: Option<f64>,
27886    #[doc = "Provider\n\nThe provider of the reputation information.\n\nrecommended"]
27887    #[serde(rename = "provider")]
27888    #[serde(skip_serializing_if = "Option::is_none")]
27889    pub provider: Option<String>,
27890    #[doc = "Reputation Score\n\nThe reputation score, normalized to the caption of the score_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
27891    #[serde(rename = "score")]
27892    #[serde(skip_serializing_if = "Option::is_none")]
27893    pub score: Option<String>,
27894    #[doc = "Reputation Score ID\n\nThe normalized reputation score identifier.\n\nrequired"]
27895    #[serde(rename = "score_id")]
27896    #[serde(skip_serializing_if = "Option::is_none")]
27897    pub score_id: Option<i64>,
27898}
27899#[doc = "Request Elements\n\nThe Request Elements object describes characteristics of an API request.\n\n[] Category:  | Name: request"]
27900#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27901#[serde(default)]
27902#[non_exhaustive]
27903pub struct Request {
27904    #[doc = "Containers\n\nWhen working with containerized applications, the set of containers which write to the standard the output of a particular logging driver. For example, this may be the set of containers involved in handling api requests and responses for a containerized application.\n\noptional"]
27905    #[serde(rename = "containers")]
27906    #[serde(skip_serializing_if = "Option::is_none")]
27907    pub containers: Option<Vec<Container>>,
27908    #[doc = "Data\n\nThe additional data that is associated with the api request.\n\noptional"]
27909    #[serde(rename = "data")]
27910    #[serde(skip_serializing_if = "Option::is_none")]
27911    pub data: Option<serde_json::Value>,
27912    #[doc = "Flags\n\nThe communication flags that are associated with the api request.\n\noptional"]
27913    #[serde(rename = "flags")]
27914    #[serde(skip_serializing_if = "Option::is_none")]
27915    pub flags: Option<Vec<String>>,
27916    #[doc = "Unique ID\n\nThe unique request identifier.\n\nrequired"]
27917    #[serde(rename = "uid")]
27918    #[serde(skip_serializing_if = "Option::is_none")]
27919    pub uid: Option<String>,
27920}
27921#[doc = "Resource Details\n\nThe Resource Details object describes details about resources that were affected by the activity/event.\n\n[] Category:  | Name: resource_details\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
27922#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
27923#[serde(default)]
27924#[non_exhaustive]
27925pub struct ResourceDetails {
27926    #[doc = "Agent List\n\nA list of <code>agent</code> objects associated with a device, endpoint, or resource.\n\noptional"]
27927    #[serde(rename = "agent_list")]
27928    #[serde(skip_serializing_if = "Option::is_none")]
27929    pub agent_list: Option<Vec<Agent>>,
27930    #[doc = "Cloud Partition\n\nThe logical grouping or isolated segment within a cloud provider's infrastructure where the resource is located. Examples include AWS partitions (aws, aws-cn, aws-us-gov), Azure cloud environments (AzureCloud, AzureUSGovernment, AzureChinaCloud), or similar logical divisions in other cloud providers.\n\noptional"]
27931    #[serde(rename = "cloud_partition")]
27932    #[serde(skip_serializing_if = "Option::is_none")]
27933    pub cloud_partition: Option<String>,
27934    #[doc = "Created Time\n\nThe time when the resource was created.\n\noptional"]
27935    #[serde(rename = "created_time")]
27936    #[serde(skip_serializing_if = "Option::is_none")]
27937    pub created_time: Option<i64>,
27938    #[doc = "Created Time\n\nThe time when the resource was created.\n\noptional"]
27939    #[serde(rename = "created_time_dt")]
27940    #[serde(skip_serializing_if = "Option::is_none")]
27941    pub created_time_dt: Option<String>,
27942    #[doc = "Criticality\n\nThe criticality of the resource as defined by the event source.\n\noptional"]
27943    #[serde(rename = "criticality")]
27944    #[serde(skip_serializing_if = "Option::is_none")]
27945    pub criticality: Option<String>,
27946    #[doc = "Data\n\nAdditional data describing the resource.\n\noptional"]
27947    #[serde(rename = "data")]
27948    #[serde(skip_serializing_if = "Option::is_none")]
27949    pub data: Option<serde_json::Value>,
27950    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
27951    #[serde(rename = "data_classification")]
27952    #[serde(skip_serializing_if = "Option::is_none")]
27953    pub data_classification: Option<Box<DataClassification>>,
27954    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
27955    #[serde(rename = "data_classifications")]
27956    #[serde(skip_serializing_if = "Option::is_none")]
27957    pub data_classifications: Option<Vec<DataClassification>>,
27958    #[doc = "Group\n\nThe name of the related resource group.\n\noptional"]
27959    #[serde(rename = "group")]
27960    #[serde(skip_serializing_if = "Option::is_none")]
27961    pub group: Option<Box<Group>>,
27962    #[doc = "Hostname\n\nThe fully qualified name of the resource.\n\nrecommended"]
27963    #[serde(rename = "hostname")]
27964    #[serde(skip_serializing_if = "Option::is_none")]
27965    pub hostname: Option<String>,
27966    #[doc = "IP Address\n\nThe IP address of the resource, in either IPv4 or IPv6 format.\n\nrecommended"]
27967    #[serde(rename = "ip")]
27968    #[serde(skip_serializing_if = "Option::is_none")]
27969    pub ip: Option<String>,
27970    #[doc = "Back Ups Configured\n\nIndicates whether the device or resource has a backup enabled, such as an automated snapshot or a cloud backup. For example, this is indicated by the <code>cloudBackupEnabled</code> value within JAMF Pro mobile devices or the registration of an AWS ARN with the AWS Backup service.\n\noptional"]
27971    #[serde(rename = "is_backed_up")]
27972    #[serde(skip_serializing_if = "Option::is_none")]
27973    pub is_backed_up: Option<bool>,
27974    #[doc = "Labels\n\nThe list of labels associated to the resource.\n\noptional"]
27975    #[serde(rename = "labels")]
27976    #[serde(skip_serializing_if = "Option::is_none")]
27977    pub labels: Option<Vec<String>>,
27978    #[doc = "Modified Time\n\nThe time when the resource was last modified.\n\noptional"]
27979    #[serde(rename = "modified_time")]
27980    #[serde(skip_serializing_if = "Option::is_none")]
27981    pub modified_time: Option<i64>,
27982    #[doc = "Modified Time\n\nThe time when the resource was last modified.\n\noptional"]
27983    #[serde(rename = "modified_time_dt")]
27984    #[serde(skip_serializing_if = "Option::is_none")]
27985    pub modified_time_dt: Option<String>,
27986    #[doc = "Name\n\nThe name of the resource.\n\nrecommended"]
27987    #[serde(rename = "name")]
27988    #[serde(skip_serializing_if = "Option::is_none")]
27989    pub name: Option<String>,
27990    #[doc = "Namespace\n\nThe namespace is useful when similar entities exist that you need to keep separate.\n\noptional"]
27991    #[serde(rename = "namespace")]
27992    #[serde(skip_serializing_if = "Option::is_none")]
27993    pub namespace: Option<String>,
27994    #[doc = "Owner\n\nThe details of the entity that owns the resource. This object includes properties such as the owner's name, unique identifier, type, domain, and other relevant attributes that help identify the resource owner within the environment.\n\nrecommended"]
27995    #[serde(rename = "owner")]
27996    #[serde(skip_serializing_if = "Option::is_none")]
27997    pub owner: Option<Box<User>>,
27998    #[doc = "Region\n\nThe cloud region where the resource is hosted, as defined by the cloud provider. This represents the physical or logical geographic area containing the infrastructure supporting the resource. Examples include AWS regions (us-east-1, eu-west-1), Azure regions (East US, West Europe), GCP regions (us-central1, europe-west1), or Oracle Cloud regions (us-ashburn-1, uk-london-1).\n\noptional"]
27999    #[serde(rename = "region")]
28000    #[serde(skip_serializing_if = "Option::is_none")]
28001    pub region: Option<String>,
28002    #[doc = "Resource Relationship\n\nA graph representation showing how this resource relates to and interacts with other entities in the environment. This can include parent/child relationships, dependencies, or other connections.\n\noptional"]
28003    #[serde(rename = "resource_relationship")]
28004    #[serde(skip_serializing_if = "Option::is_none")]
28005    pub resource_relationship: Option<Box<Graph>>,
28006    #[doc = "Role\n\nThe role of the resource in the context of the event or finding, normalized to the caption of the role_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
28007    #[serde(rename = "role")]
28008    #[serde(skip_serializing_if = "Option::is_none")]
28009    pub role: Option<String>,
28010    #[doc = "Role ID\n\nThe normalized identifier of the resource's role in the context of the event or finding.\n\nrecommended"]
28011    #[serde(rename = "role_id")]
28012    #[serde(skip_serializing_if = "Option::is_none")]
28013    pub role_id: Option<i64>,
28014    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the resource.\n\noptional"]
28015    #[serde(rename = "tags")]
28016    #[serde(skip_serializing_if = "Option::is_none")]
28017    pub tags: Option<Vec<KeyValueObject>>,
28018    #[doc = "Type\n\nThe resource type as defined by the event source.\n\noptional"]
28019    #[serde(rename = "type")]
28020    #[serde(skip_serializing_if = "Option::is_none")]
28021    pub r#type: Option<String>,
28022    #[doc = "Unique ID\n\nThe unique identifier of the resource.\n\nrecommended"]
28023    #[serde(rename = "uid")]
28024    #[serde(skip_serializing_if = "Option::is_none")]
28025    pub uid: Option<String>,
28026    #[doc = "Alternate ID\n\nThe alternative unique identifier of the resource.\n\noptional"]
28027    #[serde(rename = "uid_alt")]
28028    #[serde(skip_serializing_if = "Option::is_none")]
28029    pub uid_alt: Option<String>,
28030    #[doc = "Version\n\nThe version of the resource. For example <code>1.2.3</code>.\n\noptional"]
28031    #[serde(rename = "version")]
28032    #[serde(skip_serializing_if = "Option::is_none")]
28033    pub version: Option<String>,
28034    #[doc = "Cloud Availability Zone\n\nThe availability zone within a cloud region where the resource is located. Examples include AWS availability zones (us-east-1a, us-east-1b), Azure availability zones (1, 2, 3 within a region), GCP zones (us-central1-a, us-central1-b), or Oracle Cloud availability domains (AD-1, AD-2, AD-3).\n\noptional"]
28035    #[serde(rename = "zone")]
28036    #[serde(skip_serializing_if = "Option::is_none")]
28037    pub zone: Option<String>,
28038}
28039#[doc = "Response Elements\n\nThe Response Elements object describes characteristics of an API response.\n\n[] Category:  | Name: response"]
28040#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28041#[serde(default)]
28042#[non_exhaustive]
28043pub struct Response {
28044    #[doc = "Response Code\n\nThe numeric response sent to a request.\n\nrecommended"]
28045    #[serde(rename = "code")]
28046    #[serde(skip_serializing_if = "Option::is_none")]
28047    pub code: Option<i64>,
28048    #[doc = "Containers\n\nWhen working with containerized applications, the set of containers which write to the standard the output of a particular logging driver. For example, this may be the set of containers involved in handling api requests and responses for a containerized application.\n\noptional"]
28049    #[serde(rename = "containers")]
28050    #[serde(skip_serializing_if = "Option::is_none")]
28051    pub containers: Option<Vec<Container>>,
28052    #[doc = "Data\n\nThe additional data that is associated with the api response.\n\noptional"]
28053    #[serde(rename = "data")]
28054    #[serde(skip_serializing_if = "Option::is_none")]
28055    pub data: Option<serde_json::Value>,
28056    #[doc = "Error Code\n\nError Code\n\nrecommended"]
28057    #[serde(rename = "error")]
28058    #[serde(skip_serializing_if = "Option::is_none")]
28059    pub error: Option<String>,
28060    #[doc = "Error Message\n\nError Message\n\nrecommended"]
28061    #[serde(rename = "error_message")]
28062    #[serde(skip_serializing_if = "Option::is_none")]
28063    pub error_message: Option<String>,
28064    #[doc = "Flags\n\nThe communication flags that are associated with the api response.\n\noptional"]
28065    #[serde(rename = "flags")]
28066    #[serde(skip_serializing_if = "Option::is_none")]
28067    pub flags: Option<Vec<String>>,
28068    #[doc = "Message\n\nThe description of the event/finding, as defined by the source.\n\nrecommended"]
28069    #[serde(rename = "message")]
28070    #[serde(skip_serializing_if = "Option::is_none")]
28071    pub message: Option<String>,
28072}
28073#[doc = "RPC Interface\n\nThe RPC Interface represents the remote procedure call interface used in the DCE/RPC session.\n\n[] Category:  | Name: rpc_interface"]
28074#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28075#[serde(default)]
28076#[non_exhaustive]
28077pub struct RpcInterface {
28078    #[doc = "Acknowledgement Reason\n\nAn integer that provides a reason code or additional information about the acknowledgment result.\n\nrecommended"]
28079    #[serde(rename = "ack_reason")]
28080    #[serde(skip_serializing_if = "Option::is_none")]
28081    pub ack_reason: Option<i64>,
28082    #[doc = "Acknowledgement Result\n\nAn integer that denotes the acknowledgment result of the DCE/RPC call.\n\nrecommended"]
28083    #[serde(rename = "ack_result")]
28084    #[serde(skip_serializing_if = "Option::is_none")]
28085    pub ack_result: Option<i64>,
28086    #[doc = "UUID\n\nThe unique identifier of the particular remote procedure or service.\n\nrequired"]
28087    #[serde(rename = "uuid")]
28088    #[serde(skip_serializing_if = "Option::is_none")]
28089    pub uuid: Option<String>,
28090    #[doc = "Version\n\nThe version of the DCE/RPC protocol being used in the session.\n\nrequired"]
28091    #[serde(rename = "version")]
28092    #[serde(skip_serializing_if = "Option::is_none")]
28093    pub version: Option<String>,
28094}
28095#[doc = "Rule\n\nThe Rule object describes characteristics of a rule associated with a policy or an event.\n\n[] Category:  | Name: rule\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
28096#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28097#[serde(default)]
28098#[non_exhaustive]
28099pub struct Rule {
28100    #[doc = "Category\n\nThe rule category.\n\noptional"]
28101    #[serde(rename = "category")]
28102    #[serde(skip_serializing_if = "Option::is_none")]
28103    pub category: Option<String>,
28104    #[doc = "Description\n\nThe description of the rule that generated the event.\n\noptional"]
28105    #[serde(rename = "desc")]
28106    #[serde(skip_serializing_if = "Option::is_none")]
28107    pub desc: Option<String>,
28108    #[doc = "Name\n\nThe name of the rule that generated the event.\n\nrecommended"]
28109    #[serde(rename = "name")]
28110    #[serde(skip_serializing_if = "Option::is_none")]
28111    pub name: Option<String>,
28112    #[doc = "Type\n\nThe rule type.\n\noptional"]
28113    #[serde(rename = "type")]
28114    #[serde(skip_serializing_if = "Option::is_none")]
28115    pub r#type: Option<String>,
28116    #[doc = "Unique ID\n\nThe unique identifier of the rule that generated the event.\n\nrecommended"]
28117    #[serde(rename = "uid")]
28118    #[serde(skip_serializing_if = "Option::is_none")]
28119    pub uid: Option<String>,
28120    #[doc = "Version\n\nThe rule version. For example: <code>1.1</code>.\n\noptional"]
28121    #[serde(rename = "version")]
28122    #[serde(skip_serializing_if = "Option::is_none")]
28123    pub version: Option<String>,
28124}
28125#[doc = "Subject Alternative Name\n\nThe Subject Alternative name (SAN) object describes a SAN secured by a digital certificate\n\n[] Category:  | Name: san"]
28126#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28127#[serde(default)]
28128#[non_exhaustive]
28129pub struct San {
28130    #[doc = "Name\n\nName of SAN (e.g. The actual IP Address or domain.)\n\nrequired"]
28131    #[serde(rename = "name")]
28132    #[serde(skip_serializing_if = "Option::is_none")]
28133    pub name: Option<String>,
28134    #[doc = "Type\n\nType descriptor of SAN (e.g. IP Address/domain/etc.)\n\nrequired"]
28135    #[serde(rename = "type")]
28136    #[serde(skip_serializing_if = "Option::is_none")]
28137    pub r#type: Option<String>,
28138}
28139#[doc = "Software Bill of Materials\n\nThe Software Bill of Materials object describes characteristics of a generated SBOM.\n\n[] Category:  | Name: sbom"]
28140#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28141#[serde(default)]
28142#[non_exhaustive]
28143pub struct Sbom {
28144    #[doc = "Created Time\n\nThe time when the SBOM was created.\n\nrecommended"]
28145    #[serde(rename = "created_time")]
28146    #[serde(skip_serializing_if = "Option::is_none")]
28147    pub created_time: Option<i64>,
28148    #[doc = "Created Time\n\nThe time when the SBOM was created.\n\noptional"]
28149    #[serde(rename = "created_time_dt")]
28150    #[serde(skip_serializing_if = "Option::is_none")]
28151    pub created_time_dt: Option<String>,
28152    #[doc = "Software Package\n\nThe software package or library that is being discovered or inventoried by an SBOM.\n\nrequired"]
28153    #[serde(rename = "package")]
28154    #[serde(skip_serializing_if = "Option::is_none")]
28155    pub package: Option<Box<Package>>,
28156    #[doc = "Product\n\nDetails about the upstream product that generated the SBOM e.g. <code>cdxgen</code> or <code>Syft</code>.\n\nrecommended"]
28157    #[serde(rename = "product")]
28158    #[serde(skip_serializing_if = "Option::is_none")]
28159    pub product: Option<Box<Product>>,
28160    #[doc = "Software Components\n\nThe list of software components used in the software package.\n\nrequired"]
28161    #[serde(rename = "software_components")]
28162    #[serde(skip_serializing_if = "Option::is_none")]
28163    pub software_components: Option<Vec<SoftwareComponent>>,
28164    #[doc = "Type\n\nThe type of SBOM, normalized to the caption of the <code>type_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
28165    #[serde(rename = "type")]
28166    #[serde(skip_serializing_if = "Option::is_none")]
28167    pub r#type: Option<String>,
28168    #[doc = "Type ID\n\nThe type of SBOM.\n\nrecommended"]
28169    #[serde(rename = "type_id")]
28170    #[serde(skip_serializing_if = "Option::is_none")]
28171    pub type_id: Option<i64>,
28172    #[doc = "SBOM ID\n\nA unique identifier for the SBOM or the SBOM generation by a source tool, such as the SPDX <code>metadata.component.bom-ref</code>.\n\noptional"]
28173    #[serde(rename = "uid")]
28174    #[serde(skip_serializing_if = "Option::is_none")]
28175    pub uid: Option<String>,
28176    #[doc = "Version\n\nThe specification (spec) version of the particular SBOM, e.g., <code>1.6</code>.\n\noptional"]
28177    #[serde(rename = "version")]
28178    #[serde(skip_serializing_if = "Option::is_none")]
28179    pub version: Option<String>,
28180}
28181#[doc = "Scan\n\nThe Scan object describes characteristics of a proactive scan.\n\n[] Category:  | Name: scan\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
28182#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28183#[serde(default)]
28184#[non_exhaustive]
28185pub struct Scan {
28186    #[doc = "Name\n\nThe administrator-supplied or application-generated name of the scan. For example: \"Home office weekly user database scan\", \"Scan folders for viruses\", \"Full system virus scan\"\n\nrecommended"]
28187    #[serde(rename = "name")]
28188    #[serde(skip_serializing_if = "Option::is_none")]
28189    pub name: Option<String>,
28190    #[doc = "Type\n\nThe type of scan.\n\noptional"]
28191    #[serde(rename = "type")]
28192    #[serde(skip_serializing_if = "Option::is_none")]
28193    pub r#type: Option<String>,
28194    #[doc = "Type ID\n\nThe type id of the scan.\n\nrequired"]
28195    #[serde(rename = "type_id")]
28196    #[serde(skip_serializing_if = "Option::is_none")]
28197    pub type_id: Option<i64>,
28198    #[doc = "Scan UID\n\nThe application-defined unique identifier assigned to an instance of a scan.\n\nrecommended"]
28199    #[serde(rename = "uid")]
28200    #[serde(skip_serializing_if = "Option::is_none")]
28201    pub uid: Option<String>,
28202}
28203#[doc = "SCIM\n\nThe System for Cross-domain Identity Management (SCIM) Configuration object provides a structured set of attributes related to SCIM protocols used for identity provisioning and management across cloud-based platforms. It standardizes user and group provisioning details, enabling identity synchronization and lifecycle management with compatible Identity Providers (IdPs) and applications. SCIM is defined in <a target='_blank' href='https://datatracker.ietf.org/doc/html/rfc7643'>RFC-7634</a>\n\n[] Category:  | Name: scim"]
28204#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28205#[serde(default)]
28206#[non_exhaustive]
28207pub struct Scim {
28208    #[doc = "Auth Protocol\n\nThe authorization protocol as defined by the caption of <code>auth_protocol_id</code>. In the case of <code>Other</code>, it is defined by the event source.\n\noptional"]
28209    #[serde(rename = "auth_protocol")]
28210    #[serde(skip_serializing_if = "Option::is_none")]
28211    pub auth_protocol: Option<String>,
28212    #[doc = "Auth Protocol ID\n\nThe normalized identifier of the authorization protocol used by the SCIM resource.\n\noptional"]
28213    #[serde(rename = "auth_protocol_id")]
28214    #[serde(skip_serializing_if = "Option::is_none")]
28215    pub auth_protocol_id: Option<i64>,
28216    #[doc = "Created Time\n\nWhen the SCIM resource was added to the service provider.\n\noptional"]
28217    #[serde(rename = "created_time")]
28218    #[serde(skip_serializing_if = "Option::is_none")]
28219    pub created_time: Option<i64>,
28220    #[doc = "Created Time\n\nWhen the SCIM resource was added to the service provider.\n\noptional"]
28221    #[serde(rename = "created_time_dt")]
28222    #[serde(skip_serializing_if = "Option::is_none")]
28223    pub created_time_dt: Option<String>,
28224    #[doc = "Last Error Message\n\nMessage or code associated with the last encountered error.\n\noptional"]
28225    #[serde(rename = "error_message")]
28226    #[serde(skip_serializing_if = "Option::is_none")]
28227    pub error_message: Option<String>,
28228    #[doc = "SCIM Group Provisioning Enabled\n\nIndicates whether the SCIM resource is configured to provision groups, automatically or otherwise.\n\noptional"]
28229    #[serde(rename = "is_group_provisioning_enabled")]
28230    #[serde(skip_serializing_if = "Option::is_none")]
28231    pub is_group_provisioning_enabled: Option<bool>,
28232    #[doc = "SCIM User Provisioning Enabled\n\nIndicates whether the SCIM resource is configured to provision users, automatically or otherwise.\n\noptional"]
28233    #[serde(rename = "is_user_provisioning_enabled")]
28234    #[serde(skip_serializing_if = "Option::is_none")]
28235    pub is_user_provisioning_enabled: Option<bool>,
28236    #[doc = "Last Sync Time\n\nTimestamp of the most recent successful synchronization.\n\noptional"]
28237    #[serde(rename = "last_run_time")]
28238    #[serde(skip_serializing_if = "Option::is_none")]
28239    pub last_run_time: Option<i64>,
28240    #[doc = "Last Sync Time\n\nTimestamp of the most recent successful synchronization.\n\noptional"]
28241    #[serde(rename = "last_run_time_dt")]
28242    #[serde(skip_serializing_if = "Option::is_none")]
28243    pub last_run_time_dt: Option<String>,
28244    #[doc = "Modified Time\n\nThe most recent time when the SCIM resource was updated at the service provider.\n\noptional"]
28245    #[serde(rename = "modified_time")]
28246    #[serde(skip_serializing_if = "Option::is_none")]
28247    pub modified_time: Option<i64>,
28248    #[doc = "Modified Time\n\nThe most recent time when the SCIM resource was updated at the service provider.\n\noptional"]
28249    #[serde(rename = "modified_time_dt")]
28250    #[serde(skip_serializing_if = "Option::is_none")]
28251    pub modified_time_dt: Option<String>,
28252    #[doc = "Name\n\nThe name of the SCIM resource.\n\nrecommended"]
28253    #[serde(rename = "name")]
28254    #[serde(skip_serializing_if = "Option::is_none")]
28255    pub name: Option<String>,
28256    #[doc = "Supported Protocol\n\nThe supported protocol for the SCIM resource. E.g., <code>SAML</code>, <code>OIDC</code>, or <code>OAuth2</code>.\n\noptional"]
28257    #[serde(rename = "protocol_name")]
28258    #[serde(skip_serializing_if = "Option::is_none")]
28259    pub protocol_name: Option<String>,
28260    #[doc = "Rate Limit\n\nMaximum number of requests allowed by the SCIM resource within a specified time frame to avoid throttling.\n\noptional"]
28261    #[serde(rename = "rate_limit")]
28262    #[serde(skip_serializing_if = "Option::is_none")]
28263    pub rate_limit: Option<i64>,
28264    #[doc = "SCIM Group Schema\n\nSCIM provides a schema for representing groups, identified using the following schema URI: <code>urn:ietf:params:scim:schemas:core:2.0:Group</code> as defined in <a target='_blank' href='https://datatracker.ietf.org/doc/html/rfc7643'>RFC-7634</a>. This attribute will capture key-value pairs for the scheme implemented in a SCIM resource.\n\nrecommended"]
28265    #[serde(rename = "scim_group_schema")]
28266    #[serde(skip_serializing_if = "Option::is_none")]
28267    pub scim_group_schema: Option<serde_json::Value>,
28268    #[doc = "SCIM User Schema\n\nSCIM provides a resource type for user resources. The core schema for user is identified using the following schema URI: <code>urn:ietf:params:scim:schemas:core:2.0:User</code> as defined in <a target='_blank' href='https://datatracker.ietf.org/doc/html/rfc7643'>RFC-7634</a>. his attribute will capture key-value pairs for the scheme implemented in a SCIM resource. This object is inclusive of both the basic and Enterprise User Schema Extension.\n\nrecommended"]
28269    #[serde(rename = "scim_user_schema")]
28270    #[serde(skip_serializing_if = "Option::is_none")]
28271    pub scim_user_schema: Option<serde_json::Value>,
28272    #[doc = "State\n\nThe provisioning state of the SCIM resource, normalized to the caption of the <code>state_id</code> value. In the case of <code>Other</code>, it is defined by the event source.\n\noptional"]
28273    #[serde(rename = "state")]
28274    #[serde(skip_serializing_if = "Option::is_none")]
28275    pub state: Option<String>,
28276    #[doc = "State ID\n\nThe normalized state ID of the SCIM resource to reflect its activation status.\n\noptional"]
28277    #[serde(rename = "state_id")]
28278    #[serde(skip_serializing_if = "Option::is_none")]
28279    pub state_id: Option<i64>,
28280    #[doc = "Unique ID\n\nA unique identifier for a SCIM resource as defined by the service provider.\n\nrecommended"]
28281    #[serde(rename = "uid")]
28282    #[serde(skip_serializing_if = "Option::is_none")]
28283    pub uid: Option<String>,
28284    #[doc = "External ID\n\nA String that is an identifier for the resource as defined by the provisioning client. The <code>externalId</code> may simplify identification of a resource between the provisioning client and the service provider by allowing the client to use a filter to locate the resource with an identifier from the provisioning domain, obviating the need to store a local mapping between the provisioning domain's identifier of the resource and the identifier used by the service provider.\n\noptional"]
28285    #[serde(rename = "uid_alt")]
28286    #[serde(skip_serializing_if = "Option::is_none")]
28287    pub uid_alt: Option<String>,
28288    #[doc = "SCIM Endpoint URL\n\nThe primary URL for SCIM API requests.\n\noptional"]
28289    #[serde(rename = "url_string")]
28290    #[serde(skip_serializing_if = "Option::is_none")]
28291    pub url_string: Option<String>,
28292    #[doc = "Service Provider\n\nName of the vendor or service provider implementing SCIM. E.g., <code>Okta</code>, <code>Auth0</code>, <code>Microsoft</code>.\n\noptional"]
28293    #[serde(rename = "vendor_name")]
28294    #[serde(skip_serializing_if = "Option::is_none")]
28295    pub vendor_name: Option<String>,
28296    #[doc = "SCIM Version\n\nSCIM protocol version supported e.g., <code>SCIM 2.0</code>.\n\nrecommended"]
28297    #[serde(rename = "version")]
28298    #[serde(skip_serializing_if = "Option::is_none")]
28299    pub version: Option<String>,
28300}
28301#[doc = "Script\n\nThe Script object describes a script or command that can be executed by a shell, script engine, or interpreter. Examples include Bash, JavsScript, PowerShell, Python, VBScript, etc. Note that the term <em>script</em> here denotes not only a script contained within a file but also a script or command typed interactively by a user, supplied on the command line, or provided by some other file-less mechanism.\n\n[] Category:  | Name: script"]
28302#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28303#[serde(default)]
28304#[non_exhaustive]
28305pub struct Script {
28306    #[doc = "File\n\nPresent if this script is associated with a file. Not present in the case of a file-less script.\n\noptional"]
28307    #[serde(rename = "file")]
28308    #[serde(skip_serializing_if = "Option::is_none")]
28309    pub file: Option<Box<File>>,
28310    #[doc = "Hashes\n\nAn array of the script's cryptographic hashes. Note that these hashes are calculated on the script in its original encoding, and not on the normalized UTF-8 encoding found in the <code>script_content</code> attribute.\n\nrecommended"]
28311    #[serde(rename = "hashes")]
28312    #[serde(skip_serializing_if = "Option::is_none")]
28313    pub hashes: Option<Vec<Fingerprint>>,
28314    #[doc = "Name\n\nUnique identifier for the script or macro, independent of the containing file, used for tracking, auditing, and security analysis.\n\noptional"]
28315    #[serde(rename = "name")]
28316    #[serde(skip_serializing_if = "Option::is_none")]
28317    pub name: Option<String>,
28318    #[doc = "Parent Unique ID\n\nThis attribute relates a sub-script to a parent script having the matching <code>uid</code> attribute. In the case of PowerShell, sub-script execution can be identified by matching the activity correlation ID of the raw ETW events provided by the OS.\n\noptional"]
28319    #[serde(rename = "parent_uid")]
28320    #[serde(skip_serializing_if = "Option::is_none")]
28321    pub parent_uid: Option<String>,
28322    #[doc = "Script Content\n\nThe script content, normalized to UTF-8 encoding irrespective of its original encoding. When emitting this attribute, it may be appropriate to truncate large scripts. When consuming this attribute, large scripts should be anticipated.\n\nrequired"]
28323    #[serde(rename = "script_content")]
28324    #[serde(skip_serializing_if = "Option::is_none")]
28325    pub script_content: Option<Box<LongString>>,
28326    #[doc = "Type\n\nThe script type, normalized to the caption of the <code>type_id</code> value. In the case of 'Other', it is defined by the event source.\n\noptional"]
28327    #[serde(rename = "type")]
28328    #[serde(skip_serializing_if = "Option::is_none")]
28329    pub r#type: Option<String>,
28330    #[doc = "Type ID\n\nThe normalized script type ID.\n\nrequired"]
28331    #[serde(rename = "type_id")]
28332    #[serde(skip_serializing_if = "Option::is_none")]
28333    pub type_id: Option<i64>,
28334    #[doc = "Unique ID\n\nSome script engines assign a unique ID to each individual execution of a given script. This attribute captures that unique ID. In the case of PowerShell, the unique ID corresponds to the <code>ScriptBlockId</code> in the raw ETW events provided by the OS.\n\noptional"]
28335    #[serde(rename = "uid")]
28336    #[serde(skip_serializing_if = "Option::is_none")]
28337    pub uid: Option<String>,
28338}
28339#[doc = "Security State\n\nThe Security State object describes the security related state of a managed entity.\n\n[] Category:  | Name: security_state"]
28340#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28341#[serde(default)]
28342#[non_exhaustive]
28343pub struct SecurityState {
28344    #[doc = "Security State\n\nThe security state, normalized to the caption of the state_id value. In the case of 'Other', it is defined by the source.\n\noptional"]
28345    #[serde(rename = "state")]
28346    #[serde(skip_serializing_if = "Option::is_none")]
28347    pub state: Option<String>,
28348    #[doc = "Security State ID\n\nThe security state of the managed entity.\n\nrecommended"]
28349    #[serde(rename = "state_id")]
28350    #[serde(skip_serializing_if = "Option::is_none")]
28351    pub state_id: Option<i64>,
28352}
28353#[doc = "Service\n\nThe Service object describes characteristics of a service, <code> e.g. AWS EC2. </code>\n\n[] Category:  | Name: service\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
28354#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28355#[serde(default)]
28356#[non_exhaustive]
28357pub struct Service {
28358    #[doc = "Labels\n\nThe list of labels associated with the service.\n\noptional"]
28359    #[serde(rename = "labels")]
28360    #[serde(skip_serializing_if = "Option::is_none")]
28361    pub labels: Option<Vec<String>>,
28362    #[doc = "Name\n\nThe name of the service.\n\nrecommended"]
28363    #[serde(rename = "name")]
28364    #[serde(skip_serializing_if = "Option::is_none")]
28365    pub name: Option<String>,
28366    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the service.\n\noptional"]
28367    #[serde(rename = "tags")]
28368    #[serde(skip_serializing_if = "Option::is_none")]
28369    pub tags: Option<Vec<KeyValueObject>>,
28370    #[doc = "Unique ID\n\nThe unique identifier of the service.\n\nrecommended"]
28371    #[serde(rename = "uid")]
28372    #[serde(skip_serializing_if = "Option::is_none")]
28373    pub uid: Option<String>,
28374    #[doc = "Version\n\nThe version of the service.\n\nrecommended"]
28375    #[serde(rename = "version")]
28376    #[serde(skip_serializing_if = "Option::is_none")]
28377    pub version: Option<String>,
28378}
28379#[doc = "Session\n\nThe Session object describes details about an authenticated session. e.g. Session Creation Time, Session Issuer.\n\n[] Category:  | Name: session"]
28380#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28381#[serde(default)]
28382#[non_exhaustive]
28383pub struct Session {
28384    #[doc = "Count\n\nThe number of identical sessions spawned from the same source IP, destination IP, application, and content/threat type seen over a period of time.\n\noptional"]
28385    #[serde(rename = "count")]
28386    #[serde(skip_serializing_if = "Option::is_none")]
28387    pub count: Option<i64>,
28388    #[doc = "Created Time\n\nThe time when the session was created.\n\nrecommended"]
28389    #[serde(rename = "created_time")]
28390    #[serde(skip_serializing_if = "Option::is_none")]
28391    pub created_time: Option<i64>,
28392    #[doc = "Created Time\n\nThe time when the session was created.\n\noptional"]
28393    #[serde(rename = "created_time_dt")]
28394    #[serde(skip_serializing_if = "Option::is_none")]
28395    pub created_time_dt: Option<String>,
28396    #[doc = "User Credential ID\n\nThe unique identifier of the user's credential. For example, AWS Access Key ID.\n\noptional"]
28397    #[serde(rename = "credential_uid")]
28398    #[serde(skip_serializing_if = "Option::is_none")]
28399    pub credential_uid: Option<String>,
28400    #[doc = "Expiration Reason\n\nThe reason which triggered the session expiration.\n\noptional"]
28401    #[serde(rename = "expiration_reason")]
28402    #[serde(skip_serializing_if = "Option::is_none")]
28403    pub expiration_reason: Option<String>,
28404    #[doc = "Expiration Time\n\nThe session expiration time.\n\noptional"]
28405    #[serde(rename = "expiration_time")]
28406    #[serde(skip_serializing_if = "Option::is_none")]
28407    pub expiration_time: Option<i64>,
28408    #[doc = "Expiration Time\n\nThe session expiration time.\n\noptional"]
28409    #[serde(rename = "expiration_time_dt")]
28410    #[serde(skip_serializing_if = "Option::is_none")]
28411    pub expiration_time_dt: Option<String>,
28412    #[doc = "Multi Factor Authentication\n\nIndicates whether Multi Factor Authentication was used during authentication.\n\noptional"]
28413    #[serde(rename = "is_mfa")]
28414    #[serde(skip_serializing_if = "Option::is_none")]
28415    pub is_mfa: Option<bool>,
28416    #[doc = "Remote\n\nThe indication of whether the session is remote.\n\nrecommended"]
28417    #[serde(rename = "is_remote")]
28418    #[serde(skip_serializing_if = "Option::is_none")]
28419    pub is_remote: Option<bool>,
28420    #[doc = "VPN Session\n\nThe indication of whether the session is a VPN session.\n\noptional"]
28421    #[serde(rename = "is_vpn")]
28422    #[serde(skip_serializing_if = "Option::is_none")]
28423    pub is_vpn: Option<bool>,
28424    #[doc = "Issuer Details\n\nThe identifier of the session issuer.\n\nrecommended"]
28425    #[serde(rename = "issuer")]
28426    #[serde(skip_serializing_if = "Option::is_none")]
28427    pub issuer: Option<String>,
28428    #[doc = "Terminal\n\nThe Pseudo Terminal associated with the session. Ex: the tty or pts value.\n\noptional"]
28429    #[serde(rename = "terminal")]
28430    #[serde(skip_serializing_if = "Option::is_none")]
28431    pub terminal: Option<String>,
28432    #[doc = "Unique ID\n\nThe unique identifier of the session.\n\nrecommended"]
28433    #[serde(rename = "uid")]
28434    #[serde(skip_serializing_if = "Option::is_none")]
28435    pub uid: Option<String>,
28436    #[doc = "Alternate ID\n\nThe alternate unique identifier of the session. e.g. AWS ARN - <code>arn:aws:sts::123344444444:assumed-role/Admin/example-session</code>.\n\noptional"]
28437    #[serde(rename = "uid_alt")]
28438    #[serde(skip_serializing_if = "Option::is_none")]
28439    pub uid_alt: Option<String>,
28440    #[doc = "UUID\n\nThe universally unique identifier of the session.\n\noptional"]
28441    #[serde(rename = "uuid")]
28442    #[serde(skip_serializing_if = "Option::is_none")]
28443    pub uuid: Option<String>,
28444}
28445#[doc = "Software Component\n\nThe Software Component object describes characteristics of a software component within a software package.\n\n[] Category:  | Name: software_component"]
28446#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28447#[serde(default)]
28448#[non_exhaustive]
28449pub struct SoftwareComponent {
28450    #[doc = "Author\n\nThe author(s) who published the software component.\n\nrecommended"]
28451    #[serde(rename = "author")]
28452    #[serde(skip_serializing_if = "Option::is_none")]
28453    pub author: Option<String>,
28454    #[doc = "Hash\n\nCryptographic hash to identify the binary instance of a software component.\n\noptional"]
28455    #[serde(rename = "hash")]
28456    #[serde(skip_serializing_if = "Option::is_none")]
28457    pub hash: Option<Box<Fingerprint>>,
28458    #[doc = "Software License\n\nThe software license applied to this component.\n\noptional"]
28459    #[serde(rename = "license")]
28460    #[serde(skip_serializing_if = "Option::is_none")]
28461    pub license: Option<String>,
28462    #[doc = "Name\n\nThe software component name.\n\nrequired"]
28463    #[serde(rename = "name")]
28464    #[serde(skip_serializing_if = "Option::is_none")]
28465    pub name: Option<String>,
28466    #[doc = "Package URL\n\nThe Package URL (PURL) to identify the software component. This is a URL that uniquely identifies the component, including the component's name, version, and type. The URL is used to locate and retrieve the component's metadata and content.\n\nrecommended"]
28467    #[serde(rename = "purl")]
28468    #[serde(skip_serializing_if = "Option::is_none")]
28469    pub purl: Option<String>,
28470    #[doc = "Related Component\n\nThe package URL (PURL) of the component that this software component has a relationship with.\n\nrecommended"]
28471    #[serde(rename = "related_component")]
28472    #[serde(skip_serializing_if = "Option::is_none")]
28473    pub related_component: Option<String>,
28474    #[doc = "Relationship\n\nThe relationship between two software components, normalized to the caption of the <code>relationship_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
28475    #[serde(rename = "relationship")]
28476    #[serde(skip_serializing_if = "Option::is_none")]
28477    pub relationship: Option<String>,
28478    #[doc = "Relationship ID\n\nThe normalized identifier of the relationship between two software components.\n\nrecommended"]
28479    #[serde(rename = "relationship_id")]
28480    #[serde(skip_serializing_if = "Option::is_none")]
28481    pub relationship_id: Option<i64>,
28482    #[doc = "Type\n\nThe type of software component, normalized to the caption of the <code>type_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
28483    #[serde(rename = "type")]
28484    #[serde(skip_serializing_if = "Option::is_none")]
28485    pub r#type: Option<String>,
28486    #[doc = "Type ID\n\nThe type of software component.\n\nrecommended"]
28487    #[serde(rename = "type_id")]
28488    #[serde(skip_serializing_if = "Option::is_none")]
28489    pub type_id: Option<i64>,
28490    #[doc = "Version\n\nThe software component version.\n\nrequired"]
28491    #[serde(rename = "version")]
28492    #[serde(skip_serializing_if = "Option::is_none")]
28493    pub version: Option<String>,
28494}
28495#[doc = "Span\n\nRepresents a single unit of work or operation within a distributed trace. A span typically tracks the execution of a request across a service, capturing important details such as the operation, timestamps, and status. Spans help break down the overall trace into smaller, manageable parts, enabling detailed analysis of the performance and behavior of specific operations within the system. They are crucial for understanding latency, dependencies, and bottlenecks in complex distributed systems.\n\n[] Category:  | Name: span"]
28496#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28497#[serde(default)]
28498#[non_exhaustive]
28499pub struct Span {
28500    #[doc = "Duration Milliseconds\n\nThe total time, in milliseconds, that the span represents, calculated as the difference between start_time and end_time. It reflects the operation's performance and latency, independent of event timestamps, and accounts for normalized times used by observability tools to ensure consistency across distributed systems.\n\noptional"]
28501    #[serde(rename = "duration")]
28502    #[serde(skip_serializing_if = "Option::is_none")]
28503    pub duration: Option<i64>,
28504    #[doc = "End Time\n\nThe end timestamp of the span, essential for identifying latency and performance bottlenecks. Like the start time, this timestamp is normalized across the observability system to ensure consistency, even when events are recorded across distributed services with unsynchronized clocks. Normalized time allows for accurate duration calculations and helps observability tools track performance across services, regardless of the individual system time settings.\n\nrequired"]
28505    #[serde(rename = "end_time")]
28506    #[serde(skip_serializing_if = "Option::is_none")]
28507    pub end_time: Option<i64>,
28508    #[doc = "End Time\n\nThe end timestamp of the span, essential for identifying latency and performance bottlenecks. Like the start time, this timestamp is normalized across the observability system to ensure consistency, even when events are recorded across distributed services with unsynchronized clocks. Normalized time allows for accurate duration calculations and helps observability tools track performance across services, regardless of the individual system time settings.\n\noptional"]
28509    #[serde(rename = "end_time_dt")]
28510    #[serde(skip_serializing_if = "Option::is_none")]
28511    pub end_time_dt: Option<String>,
28512    #[doc = "Message\n\nThe message in a span (often referred to as a span event) serves as a way to record significant moments or occurrences during the span's lifecycle. This content typically manifests as log entries, annotations, or semi-structured events as a string, providing additional granularity and context about what happens at specific points during the execution of an operation.\n\noptional"]
28513    #[serde(rename = "message")]
28514    #[serde(skip_serializing_if = "Option::is_none")]
28515    pub message: Option<String>,
28516    #[doc = "Operation\n\nDescribes an action performed in a span, such as API requests, database queries, or computations.\n\noptional"]
28517    #[serde(rename = "operation")]
28518    #[serde(skip_serializing_if = "Option::is_none")]
28519    pub operation: Option<String>,
28520    #[doc = "Parent Unique ID\n\nThe ID of the parent span for this span object, establishing its relationship in the trace hierarchy.\n\noptional"]
28521    #[serde(rename = "parent_uid")]
28522    #[serde(skip_serializing_if = "Option::is_none")]
28523    pub parent_uid: Option<String>,
28524    #[doc = "Service\n\nIdentifies the service or component that generates the span, helping trace its path through the distributed system.\n\noptional"]
28525    #[serde(rename = "service")]
28526    #[serde(skip_serializing_if = "Option::is_none")]
28527    pub service: Option<Box<Service>>,
28528    #[doc = "Start Time\n\nThe start timestamp of the span, essential for identifying latency and performance bottlenecks. This timestamp is normalized across the observability system, ensuring consistency even when events occur across distributed services with potentially unsynchronized clocks. By using normalized time, observability tools can provide accurate, uniform measurements of operation performance and latency, regardless of where or when the events actually occur.\n\nrequired"]
28529    #[serde(rename = "start_time")]
28530    #[serde(skip_serializing_if = "Option::is_none")]
28531    pub start_time: Option<i64>,
28532    #[doc = "Start Time\n\nThe start timestamp of the span, essential for identifying latency and performance bottlenecks. This timestamp is normalized across the observability system, ensuring consistency even when events occur across distributed services with potentially unsynchronized clocks. By using normalized time, observability tools can provide accurate, uniform measurements of operation performance and latency, regardless of where or when the events actually occur.\n\noptional"]
28533    #[serde(rename = "start_time_dt")]
28534    #[serde(skip_serializing_if = "Option::is_none")]
28535    pub start_time_dt: Option<String>,
28536    #[doc = "Status Code\n\nIndicates the outcome of the operation in the span, such as success, failure, or error. Issues in a span typically refer to problems such as failed operations, timeouts, service unavailability, or errors in processing that can negatively impact the performance or reliability of the system. Tracking the `status_code` helps pinpoint these issues, enabling quicker identification and resolution of system inefficiencies or faults.\n\noptional"]
28537    #[serde(rename = "status_code")]
28538    #[serde(skip_serializing_if = "Option::is_none")]
28539    pub status_code: Option<String>,
28540    #[doc = "Unique ID\n\nThe unique identifier for the span, used in distributed systems and microservices architectures to track and correlate requests across different components of an application. It enables tracing the flow of a request through various services.\n\nrequired"]
28541    #[serde(rename = "uid")]
28542    #[serde(skip_serializing_if = "Option::is_none")]
28543    pub uid: Option<String>,
28544}
28545#[doc = "SSO\n\nThe Single Sign-On (SSO) object provides a structure for normalizing SSO attributes, configuration, and/or settings from Identity Providers.\n\n[] Category:  | Name: sso"]
28546#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28547#[serde(default)]
28548#[non_exhaustive]
28549pub struct Sso {
28550    #[doc = "Auth Protocol\n\nThe authorization protocol as defined by the caption of <code>auth_protocol_id</code>. In the case of <code>Other</code>, it is defined by the event source.\n\noptional"]
28551    #[serde(rename = "auth_protocol")]
28552    #[serde(skip_serializing_if = "Option::is_none")]
28553    pub auth_protocol: Option<String>,
28554    #[doc = "Auth Protocol ID\n\nThe normalized identifier of the authentication protocol used by the SSO resource.\n\noptional"]
28555    #[serde(rename = "auth_protocol_id")]
28556    #[serde(skip_serializing_if = "Option::is_none")]
28557    pub auth_protocol_id: Option<i64>,
28558    #[doc = "SAML Certificate\n\nDigital Signature associated with the SSO resource, e.g., SAML X.509 certificate details.\n\nrecommended"]
28559    #[serde(rename = "certificate")]
28560    #[serde(skip_serializing_if = "Option::is_none")]
28561    pub certificate: Option<Box<Certificate>>,
28562    #[doc = "Created Time\n\nWhen the SSO resource was created.\n\noptional"]
28563    #[serde(rename = "created_time")]
28564    #[serde(skip_serializing_if = "Option::is_none")]
28565    pub created_time: Option<i64>,
28566    #[doc = "Created Time\n\nWhen the SSO resource was created.\n\noptional"]
28567    #[serde(rename = "created_time_dt")]
28568    #[serde(skip_serializing_if = "Option::is_none")]
28569    pub created_time_dt: Option<String>,
28570    #[doc = "SSO Session Duration\n\nThe duration (in minutes) for an SSO session, after which re-authentication is required.\n\noptional"]
28571    #[serde(rename = "duration_mins")]
28572    #[serde(skip_serializing_if = "Option::is_none")]
28573    pub duration_mins: Option<i64>,
28574    #[doc = "SSO Idle Timeout\n\nDuration (in minutes) of allowed inactivity before Single Sign-On (SSO) session expiration.\n\noptional"]
28575    #[serde(rename = "idle_timeout")]
28576    #[serde(skip_serializing_if = "Option::is_none")]
28577    pub idle_timeout: Option<i64>,
28578    #[doc = "SSO Login Endpoint\n\nURL for initiating an SSO login request.\n\noptional"]
28579    #[serde(rename = "login_endpoint")]
28580    #[serde(skip_serializing_if = "Option::is_none")]
28581    pub login_endpoint: Option<String>,
28582    #[doc = "SSO Logout Endpoint\n\nURL for initiating an SSO logout request, allowing sessions to be terminated across applications.\n\noptional"]
28583    #[serde(rename = "logout_endpoint")]
28584    #[serde(skip_serializing_if = "Option::is_none")]
28585    pub logout_endpoint: Option<String>,
28586    #[doc = "SSO Metadata Endpoint\n\nURL where metadata about the SSO configuration is available (e.g., for SAML configurations).\n\noptional"]
28587    #[serde(rename = "metadata_endpoint")]
28588    #[serde(skip_serializing_if = "Option::is_none")]
28589    pub metadata_endpoint: Option<String>,
28590    #[doc = "Modified Time\n\nThe most recent time when the SSO resource was updated.\n\noptional"]
28591    #[serde(rename = "modified_time")]
28592    #[serde(skip_serializing_if = "Option::is_none")]
28593    pub modified_time: Option<i64>,
28594    #[doc = "Modified Time\n\nThe most recent time when the SSO resource was updated.\n\noptional"]
28595    #[serde(rename = "modified_time_dt")]
28596    #[serde(skip_serializing_if = "Option::is_none")]
28597    pub modified_time_dt: Option<String>,
28598    #[doc = "Name\n\nThe name of the SSO resource.\n\nrecommended"]
28599    #[serde(rename = "name")]
28600    #[serde(skip_serializing_if = "Option::is_none")]
28601    pub name: Option<String>,
28602    #[doc = "Supported Protocol\n\nThe supported protocol for the SSO resource. E.g., <code>SAML</code> or <code>OIDC</code>.\n\noptional"]
28603    #[serde(rename = "protocol_name")]
28604    #[serde(skip_serializing_if = "Option::is_none")]
28605    pub protocol_name: Option<String>,
28606    #[doc = "Scopes\n\nScopes define the specific permissions or actions that the client is allowed to perform on behalf of the user. Each scope represents a different set of permissions, and the user can selectively grant or deny access to specific scopes during the authorization process.\n\noptional"]
28607    #[serde(rename = "scopes")]
28608    #[serde(skip_serializing_if = "Option::is_none")]
28609    pub scopes: Option<Vec<String>>,
28610    #[doc = "Unique ID\n\nA unique identifier for a SSO resource.\n\nrecommended"]
28611    #[serde(rename = "uid")]
28612    #[serde(skip_serializing_if = "Option::is_none")]
28613    pub uid: Option<String>,
28614    #[doc = "Service Provider\n\nName of the vendor or service provider implementing SSO. E.g., <code>Okta</code>, <code>Auth0</code>, <code>Microsoft</code>.\n\noptional"]
28615    #[serde(rename = "vendor_name")]
28616    #[serde(skip_serializing_if = "Option::is_none")]
28617    pub vendor_name: Option<String>,
28618}
28619#[doc = "Startup Item\n\nThe startup item object describes an application component that has associated startup criteria and configurations.\n\n[] Category:  | Name: startup_item\n\n**Constraints:**\n* just_one: `[driver`,`job`,`process`,`win_service]`\n"]
28620#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28621#[serde(default)]
28622#[non_exhaustive]
28623pub struct StartupItem {
28624    #[doc = "Kernel Driver\n\nThe startup item kernel driver resource.\n\noptional"]
28625    #[serde(rename = "driver")]
28626    #[serde(skip_serializing_if = "Option::is_none")]
28627    pub driver: Option<Box<KernelDriver>>,
28628    #[doc = "Job\n\nThe startup item job resource.\n\noptional"]
28629    #[serde(rename = "job")]
28630    #[serde(skip_serializing_if = "Option::is_none")]
28631    pub job: Option<Box<Job>>,
28632    #[doc = "Name\n\nThe unique name of the startup item.\n\nrequired"]
28633    #[serde(rename = "name")]
28634    #[serde(skip_serializing_if = "Option::is_none")]
28635    pub name: Option<String>,
28636    #[doc = "Process\n\nThe startup item process resource.\n\noptional"]
28637    #[serde(rename = "process")]
28638    #[serde(skip_serializing_if = "Option::is_none")]
28639    pub process: Option<Box<Process>>,
28640    #[doc = "Run Mode IDs\n\nThe list of normalized identifiers that describe the startup items' properties when it is running.  Use this field to capture extended information about the process, which may depend on the type of startup item.  E.g., A Windows service that interacts with the desktop.\n\noptional"]
28641    #[serde(rename = "run_mode_ids")]
28642    #[serde(skip_serializing_if = "Option::is_none")]
28643    pub run_mode_ids: Option<Vec<i64>>,
28644    #[doc = "Run Modes\n\nThe list of run_modes, normalized to the captions of the run_mode_id values.  In the case of 'Other', they are defined by the event source.\n\noptional"]
28645    #[serde(rename = "run_modes")]
28646    #[serde(skip_serializing_if = "Option::is_none")]
28647    pub run_modes: Option<Vec<String>>,
28648    #[doc = "Run State\n\nThe run state of the startup item.\n\noptional"]
28649    #[serde(rename = "run_state")]
28650    #[serde(skip_serializing_if = "Option::is_none")]
28651    pub run_state: Option<String>,
28652    #[doc = "Run State ID\n\nThe run state ID of the startup item.\n\nrecommended"]
28653    #[serde(rename = "run_state_id")]
28654    #[serde(skip_serializing_if = "Option::is_none")]
28655    pub run_state_id: Option<i64>,
28656    #[doc = "Start Type\n\nThe start type of the startup item.\n\noptional"]
28657    #[serde(rename = "start_type")]
28658    #[serde(skip_serializing_if = "Option::is_none")]
28659    pub start_type: Option<String>,
28660    #[doc = "Start Type ID\n\nThe start type ID of the startup item.\n\nrequired"]
28661    #[serde(rename = "start_type_id")]
28662    #[serde(skip_serializing_if = "Option::is_none")]
28663    pub start_type_id: Option<i64>,
28664    #[doc = "Type\n\nThe startup item type.\n\noptional"]
28665    #[serde(rename = "type")]
28666    #[serde(skip_serializing_if = "Option::is_none")]
28667    pub r#type: Option<String>,
28668    #[doc = "Type ID\n\nThe startup item type identifier.\n\nrecommended"]
28669    #[serde(rename = "type_id")]
28670    #[serde(skip_serializing_if = "Option::is_none")]
28671    pub type_id: Option<i64>,
28672    #[doc = "Windows Service\n\nThe startup item Windows service resource.\n\noptional"]
28673    #[serde(rename = "win_service")]
28674    #[serde(skip_serializing_if = "Option::is_none")]
28675    pub win_service: Option<Box<WinWinService>>,
28676}
28677#[doc = "MITRE Sub-technique\n\nThe MITRE Sub-technique object describes the ATT&CK® or ATLAS™ Sub-technique ID and/or name associated to an attack.\n\n[] Category:  | Name: sub_technique\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
28678#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28679#[serde(default)]
28680#[non_exhaustive]
28681pub struct SubTechnique {
28682    #[doc = "Name\n\nThe name of the attack sub-technique. For example: <code>Scanning IP Blocks</code> or <code>User Execution: Unsafe ML Artifacts</code>.\n\nrecommended"]
28683    #[serde(rename = "name")]
28684    #[serde(skip_serializing_if = "Option::is_none")]
28685    pub name: Option<String>,
28686    #[doc = "Source URL\n\nThe versioned permalink of the attack sub-technique. For example: <code>https://attack.mitre.org/versions/v14/techniques/T1595/001/</code>.\n\noptional"]
28687    #[serde(rename = "src_url")]
28688    #[serde(skip_serializing_if = "Option::is_none")]
28689    pub src_url: Option<String>,
28690    #[doc = "Unique ID\n\nThe unique identifier of the attack sub-technique. For example: <code>T1595.001</code> or <code>AML.T0011.000</code>.\n\nrecommended"]
28691    #[serde(rename = "uid")]
28692    #[serde(skip_serializing_if = "Option::is_none")]
28693    pub uid: Option<String>,
28694}
28695#[doc = "Table\n\nThe table object represents a table within a structured relational database or datastore, which contains columns and rows of data that are able to be create, updated, deleted and queried.\n\n[] Category:  | Name: table\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
28696#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28697#[serde(default)]
28698#[non_exhaustive]
28699pub struct Table {
28700    #[doc = "Created Time\n\nThe time when the table was known to have been created.\n\noptional"]
28701    #[serde(rename = "created_time")]
28702    #[serde(skip_serializing_if = "Option::is_none")]
28703    pub created_time: Option<i64>,
28704    #[doc = "Created Time\n\nThe time when the table was known to have been created.\n\noptional"]
28705    #[serde(rename = "created_time_dt")]
28706    #[serde(skip_serializing_if = "Option::is_none")]
28707    pub created_time_dt: Option<String>,
28708    #[doc = "Description\n\nThe description of the table.\n\noptional"]
28709    #[serde(rename = "desc")]
28710    #[serde(skip_serializing_if = "Option::is_none")]
28711    pub desc: Option<String>,
28712    #[doc = "Groups\n\nThe group names to which the table belongs.\n\noptional"]
28713    #[serde(rename = "groups")]
28714    #[serde(skip_serializing_if = "Option::is_none")]
28715    pub groups: Option<Vec<Group>>,
28716    #[doc = "Modified Time\n\nThe most recent time when any changes, updates, or modifications were made within the table.\n\noptional"]
28717    #[serde(rename = "modified_time")]
28718    #[serde(skip_serializing_if = "Option::is_none")]
28719    pub modified_time: Option<i64>,
28720    #[doc = "Modified Time\n\nThe most recent time when any changes, updates, or modifications were made within the table.\n\noptional"]
28721    #[serde(rename = "modified_time_dt")]
28722    #[serde(skip_serializing_if = "Option::is_none")]
28723    pub modified_time_dt: Option<String>,
28724    #[doc = "Name\n\nThe table name, ordinarily as assigned by a database administrator.\n\nrecommended"]
28725    #[serde(rename = "name")]
28726    #[serde(skip_serializing_if = "Option::is_none")]
28727    pub name: Option<String>,
28728    #[doc = "Size\n\nThe size of the data table in bytes.\n\noptional"]
28729    #[serde(rename = "size")]
28730    #[serde(skip_serializing_if = "Option::is_none")]
28731    pub size: Option<i64>,
28732    #[doc = "Unique ID\n\nThe unique identifier of the table.\n\nrecommended"]
28733    #[serde(rename = "uid")]
28734    #[serde(skip_serializing_if = "Option::is_none")]
28735    pub uid: Option<String>,
28736}
28737#[doc = "MITRE Tactic\n\nThe MITRE Tactic object describes the ATT&CK® or ATLAS™ Tactic ID and/or name that is associated to an attack.\n\n[] Category:  | Name: tactic\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
28738#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28739#[serde(default)]
28740#[non_exhaustive]
28741pub struct Tactic {
28742    #[doc = "Name\n\nThe Tactic name that is associated with the attack technique. For example: <code>Reconnaissance</code> or <code>ML Model Access</code>.\n\nrecommended"]
28743    #[serde(rename = "name")]
28744    #[serde(skip_serializing_if = "Option::is_none")]
28745    pub name: Option<String>,
28746    #[doc = "Source URL\n\nThe versioned permalink of the Tactic. For example: <code>https://attack.mitre.org/versions/v14/tactics/TA0043/</code>.\n\noptional"]
28747    #[serde(rename = "src_url")]
28748    #[serde(skip_serializing_if = "Option::is_none")]
28749    pub src_url: Option<String>,
28750    #[doc = "Unique ID\n\nThe Tactic ID that is associated with the attack technique. For example: <code>TA0043</code>, or <code>AML.TA0000</code>.\n\nrecommended"]
28751    #[serde(rename = "uid")]
28752    #[serde(skip_serializing_if = "Option::is_none")]
28753    pub uid: Option<String>,
28754}
28755#[doc = "MITRE Technique\n\nThe MITRE Technique object describes the ATT&CK® or ATLAS™ Technique ID and/or name associated to an attack.\n\n[] Category:  | Name: technique\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
28756#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28757#[serde(default)]
28758#[non_exhaustive]
28759pub struct Technique {
28760    #[doc = "Name\n\nThe name of the attack technique. For example: <code>Active Scanning</code> or <code>AI Model Inference API Access</code>.\n\nrecommended"]
28761    #[serde(rename = "name")]
28762    #[serde(skip_serializing_if = "Option::is_none")]
28763    pub name: Option<String>,
28764    #[doc = "Source URL\n\nThe versioned permalink of the attack technique. For example: <code>https://attack.mitre.org/versions/v14/techniques/T1595/</code>.\n\noptional"]
28765    #[serde(rename = "src_url")]
28766    #[serde(skip_serializing_if = "Option::is_none")]
28767    pub src_url: Option<String>,
28768    #[doc = "Unique ID\n\nThe unique identifier of the attack technique. For example: <code>T1595</code> or <code>AML.T0040</code>.\n\nrecommended"]
28769    #[serde(rename = "uid")]
28770    #[serde(skip_serializing_if = "Option::is_none")]
28771    pub uid: Option<String>,
28772}
28773#[doc = "Threat Actor\n\nThreat actor is responsible for the observed malicious activity.\n\n[] Category:  | Name: threat_actor"]
28774#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28775#[serde(default)]
28776#[non_exhaustive]
28777pub struct ThreatActor {
28778    #[doc = "Name\n\nThe name of the threat actor.\n\nrequired"]
28779    #[serde(rename = "name")]
28780    #[serde(skip_serializing_if = "Option::is_none")]
28781    pub name: Option<String>,
28782    #[doc = "Threat Actor Type\n\nThe classification of the threat actor based on their motivations, capabilities, or affiliations. Common types include nation-state actors, cybercriminal groups, hacktivists, or insider threats.\n\noptional"]
28783    #[serde(rename = "type")]
28784    #[serde(skip_serializing_if = "Option::is_none")]
28785    pub r#type: Option<String>,
28786    #[doc = "Threat Actor Type ID\n\nThe normalized datastore resource type identifier.\n\nrecommended"]
28787    #[serde(rename = "type_id")]
28788    #[serde(skip_serializing_if = "Option::is_none")]
28789    pub type_id: Option<i64>,
28790}
28791#[doc = "Ticket\n\nThe Ticket object represents ticket in the customer's IT Service Management (ITSM) systems like ServiceNow, Jira, etc.\n\n[] Category:  | Name: ticket\n\n**Constraints:**\n* at_least_one: `[src_url`,`uid]`\n"]
28792#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28793#[serde(default)]
28794#[non_exhaustive]
28795pub struct Ticket {
28796    #[doc = "Source URL\n\nThe url of a ticket in the ticket system.\n\nrecommended"]
28797    #[serde(rename = "src_url")]
28798    #[serde(skip_serializing_if = "Option::is_none")]
28799    pub src_url: Option<String>,
28800    #[doc = "Ticket Status\n\nThe status of the ticket normalized to the caption of the <code>status_id</code> value. In the case of <code>99</code>, this value should as defined by the source.\n\noptional"]
28801    #[serde(rename = "status")]
28802    #[serde(skip_serializing_if = "Option::is_none")]
28803    pub status: Option<String>,
28804    #[doc = "Status Details\n\nA list of contextual descriptions of the <code>status, status_id</code> values.\n\noptional"]
28805    #[serde(rename = "status_details")]
28806    #[serde(skip_serializing_if = "Option::is_none")]
28807    pub status_details: Option<Vec<String>>,
28808    #[doc = "Ticket Status ID\n\nThe normalized identifier for the ticket status.\n\noptional"]
28809    #[serde(rename = "status_id")]
28810    #[serde(skip_serializing_if = "Option::is_none")]
28811    pub status_id: Option<i64>,
28812    #[doc = "Title\n\nThe title of the ticket.\n\noptional"]
28813    #[serde(rename = "title")]
28814    #[serde(skip_serializing_if = "Option::is_none")]
28815    pub title: Option<String>,
28816    #[doc = "Ticket Type\n\nThe linked ticket type determines whether the ticket is internal or in an external ticketing system.\n\noptional"]
28817    #[serde(rename = "type")]
28818    #[serde(skip_serializing_if = "Option::is_none")]
28819    pub r#type: Option<String>,
28820    #[doc = "Ticket Type ID\n\nThe normalized identifier for the ticket type.\n\noptional"]
28821    #[serde(rename = "type_id")]
28822    #[serde(skip_serializing_if = "Option::is_none")]
28823    pub type_id: Option<i64>,
28824    #[doc = "Unique ID\n\nUnique identifier of the ticket.\n\nrecommended"]
28825    #[serde(rename = "uid")]
28826    #[serde(skip_serializing_if = "Option::is_none")]
28827    pub uid: Option<String>,
28828}
28829#[doc = "Time Span\n\nThe Time Span object represents different time period durations. If a timespan is fractional, i.e. crosses one period, e.g. a week and 3 days, more than one may be populated since each member is of integral type. In that case <code>type_id</code> if present should be set to <code>Other.</code><P>A timespan may also be defined by its time interval boundaries, <code>start_time</code> and <code>end_time</code>.\n\n[] Category:  | Name: timespan\n\n**Constraints:**\n* at_least_one: `[duration`,`duration_days`,`duration_hours`,`duration_mins`,`duration_months`,`duration_secs`,`duration_weeks`,`duration_years`,`end_time`,`start_time]`\n"]
28830#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28831#[serde(default)]
28832#[non_exhaustive]
28833pub struct Timespan {
28834    #[doc = "Duration Milliseconds\n\nThe duration of the time span in milliseconds.\n\nrecommended"]
28835    #[serde(rename = "duration")]
28836    #[serde(skip_serializing_if = "Option::is_none")]
28837    pub duration: Option<i64>,
28838    #[doc = "Duration Days\n\nThe duration of the time span in days.\n\nrecommended"]
28839    #[serde(rename = "duration_days")]
28840    #[serde(skip_serializing_if = "Option::is_none")]
28841    pub duration_days: Option<i64>,
28842    #[doc = "Duration Hours\n\nThe duration of the time span in hours.\n\nrecommended"]
28843    #[serde(rename = "duration_hours")]
28844    #[serde(skip_serializing_if = "Option::is_none")]
28845    pub duration_hours: Option<i64>,
28846    #[doc = "Duration Minutes\n\nThe duration of the time span in minutes.\n\nrecommended"]
28847    #[serde(rename = "duration_mins")]
28848    #[serde(skip_serializing_if = "Option::is_none")]
28849    pub duration_mins: Option<i64>,
28850    #[doc = "Duration Months\n\nThe duration of the time span in months.\n\nrecommended"]
28851    #[serde(rename = "duration_months")]
28852    #[serde(skip_serializing_if = "Option::is_none")]
28853    pub duration_months: Option<i64>,
28854    #[doc = "Duration Seconds\n\nThe duration of the time span in seconds.\n\nrecommended"]
28855    #[serde(rename = "duration_secs")]
28856    #[serde(skip_serializing_if = "Option::is_none")]
28857    pub duration_secs: Option<i64>,
28858    #[doc = "Duration Weeks\n\nThe duration of the time span in weeks.\n\nrecommended"]
28859    #[serde(rename = "duration_weeks")]
28860    #[serde(skip_serializing_if = "Option::is_none")]
28861    pub duration_weeks: Option<i64>,
28862    #[doc = "Duration Years\n\nThe duration of the time span in years.\n\nrecommended"]
28863    #[serde(rename = "duration_years")]
28864    #[serde(skip_serializing_if = "Option::is_none")]
28865    pub duration_years: Option<i64>,
28866    #[doc = "End Time\n\nThe end time or conclusion of the timespan's interval.\n\nrecommended"]
28867    #[serde(rename = "end_time")]
28868    #[serde(skip_serializing_if = "Option::is_none")]
28869    pub end_time: Option<i64>,
28870    #[doc = "End Time\n\nThe end time or conclusion of the timespan's interval.\n\noptional"]
28871    #[serde(rename = "end_time_dt")]
28872    #[serde(skip_serializing_if = "Option::is_none")]
28873    pub end_time_dt: Option<String>,
28874    #[doc = "Start Time\n\nThe start time or beginning of the timespan's interval.\n\nrecommended"]
28875    #[serde(rename = "start_time")]
28876    #[serde(skip_serializing_if = "Option::is_none")]
28877    pub start_time: Option<i64>,
28878    #[doc = "Start Time\n\nThe start time or beginning of the timespan's interval.\n\noptional"]
28879    #[serde(rename = "start_time_dt")]
28880    #[serde(skip_serializing_if = "Option::is_none")]
28881    pub start_time_dt: Option<String>,
28882    #[doc = "Time Span Type\n\nThe type of time span duration the object represents.\n\noptional"]
28883    #[serde(rename = "type")]
28884    #[serde(skip_serializing_if = "Option::is_none")]
28885    pub r#type: Option<String>,
28886    #[doc = "Time Span Type ID\n\nThe normalized identifier for the time span duration type.\n\nrecommended"]
28887    #[serde(rename = "type_id")]
28888    #[serde(skip_serializing_if = "Option::is_none")]
28889    pub type_id: Option<i64>,
28890}
28891#[doc = "Transport Layer Security (TLS)\n\nThe Transport Layer Security (TLS) object describes the negotiated TLS protocol used for secure communications over an establish network connection.\n\n[] Category:  | Name: tls"]
28892#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28893#[serde(default)]
28894#[non_exhaustive]
28895pub struct Tls {
28896    #[doc = "Client TLS Alert\n\nThe integer value of TLS alert if present. The alerts are defined in the TLS specification in <a target='_blank' href='https://datatracker.ietf.org/doc/html/rfc2246'>RFC-2246</a>.\n\noptional"]
28897    #[serde(rename = "alert")]
28898    #[serde(skip_serializing_if = "Option::is_none")]
28899    pub alert: Option<i64>,
28900    #[doc = "Certificate\n\nThe certificate object containing information about the digital certificate.\n\nrecommended"]
28901    #[serde(rename = "certificate")]
28902    #[serde(skip_serializing_if = "Option::is_none")]
28903    pub certificate: Option<Box<Certificate>>,
28904    #[doc = "Certificate Chain\n\nThe Chain of Certificate Serial Numbers field provides a chain of Certificate Issuer Serial Numbers leading to the Root Certificate Issuer.\n\nrecommended"]
28905    #[serde(rename = "certificate_chain")]
28906    #[serde(skip_serializing_if = "Option::is_none")]
28907    pub certificate_chain: Option<Vec<String>>,
28908    #[doc = "Cipher Suite\n\nThe negotiated cipher suite.\n\nrecommended"]
28909    #[serde(rename = "cipher")]
28910    #[serde(skip_serializing_if = "Option::is_none")]
28911    pub cipher: Option<String>,
28912    #[doc = "Client Cipher Suites\n\nThe client cipher suites that were exchanged during the TLS handshake negotiation.\n\nrecommended"]
28913    #[serde(rename = "client_ciphers")]
28914    #[serde(skip_serializing_if = "Option::is_none")]
28915    pub client_ciphers: Option<Vec<String>>,
28916    #[doc = "Extension List\n\nThe list of TLS extensions.\n\noptional"]
28917    #[serde(rename = "extension_list")]
28918    #[serde(skip_serializing_if = "Option::is_none")]
28919    pub extension_list: Option<Vec<TlsExtension>>,
28920    #[doc = "Handshake Duration\n\nThe amount of total time for the TLS handshake to complete after the TCP connection is established, including client-side delays, in milliseconds.\n\noptional"]
28921    #[serde(rename = "handshake_dur")]
28922    #[serde(skip_serializing_if = "Option::is_none")]
28923    pub handshake_dur: Option<i64>,
28924    #[doc = "JA3 Hash\n\nThe MD5 hash of a JA3 string.\n\nrecommended"]
28925    #[serde(rename = "ja3_hash")]
28926    #[serde(skip_serializing_if = "Option::is_none")]
28927    pub ja3_hash: Option<Box<Fingerprint>>,
28928    #[doc = "JA3S Hash\n\nThe MD5 hash of a JA3S string.\n\nrecommended"]
28929    #[serde(rename = "ja3s_hash")]
28930    #[serde(skip_serializing_if = "Option::is_none")]
28931    pub ja3s_hash: Option<Box<Fingerprint>>,
28932    #[doc = "Key Length\n\nThe length of the encryption key.\n\noptional"]
28933    #[serde(rename = "key_length")]
28934    #[serde(skip_serializing_if = "Option::is_none")]
28935    pub key_length: Option<i64>,
28936    #[doc = "Subject Alternative Names\n\nThe list of subject alternative names that are secured by a specific certificate.\n\noptional"]
28937    #[serde(rename = "sans")]
28938    #[serde(skip_serializing_if = "Option::is_none")]
28939    pub sans: Option<Vec<San>>,
28940    #[doc = "Server Cipher Suites\n\nThe server cipher suites that were exchanged during the TLS handshake negotiation.\n\noptional"]
28941    #[serde(rename = "server_ciphers")]
28942    #[serde(skip_serializing_if = "Option::is_none")]
28943    pub server_ciphers: Option<Vec<String>>,
28944    #[doc = "Server Name Indication\n\n The Server Name Indication (SNI) extension sent by the client.\n\nrecommended"]
28945    #[serde(rename = "sni")]
28946    #[serde(skip_serializing_if = "Option::is_none")]
28947    pub sni: Option<String>,
28948    #[doc = "TLS Extension List\n\nThe list of TLS extensions.\n\noptional"]
28949    #[serde(rename = "tls_extension_list")]
28950    #[serde(skip_serializing_if = "Option::is_none")]
28951    pub tls_extension_list: Option<Vec<TlsExtension>>,
28952    #[doc = "Version\n\nThe TLS protocol version.\n\nrequired"]
28953    #[serde(rename = "version")]
28954    #[serde(skip_serializing_if = "Option::is_none")]
28955    pub version: Option<String>,
28956}
28957#[doc = "TLS Extension\n\nThe TLS Extension object describes additional attributes that extend the base Transport Layer Security (TLS) object.\n\n[] Category:  | Name: tls_extension"]
28958#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28959#[serde(default)]
28960#[non_exhaustive]
28961pub struct TlsExtension {
28962    #[doc = "Data\n\nThe data contains information specific to the particular extension type.\n\nrecommended"]
28963    #[serde(rename = "data")]
28964    #[serde(skip_serializing_if = "Option::is_none")]
28965    pub data: Option<serde_json::Value>,
28966    #[doc = "Type\n\nThe TLS extension type. For example: <code>Server Name</code>.\n\noptional"]
28967    #[serde(rename = "type")]
28968    #[serde(skip_serializing_if = "Option::is_none")]
28969    pub r#type: Option<String>,
28970    #[doc = "Type ID\n\nThe TLS extension type identifier. See <a target='_blank' href='https://datatracker.ietf.org/doc/html/rfc8446#page-35'>The Transport Layer Security (TLS) extension page</a>.\n\nrequired"]
28971    #[serde(rename = "type_id")]
28972    #[serde(skip_serializing_if = "Option::is_none")]
28973    pub type_id: Option<i64>,
28974}
28975#[doc = "Trace\n\nThe trace object contains information about a distributed trace,  which is crucial for observability. Traces are made up of one or more spans, which are individual units of work in application activity. Traces track the journey of a request as it moves through various services in a system, capturing key details like timing, status, and dependencies at each step. Traces provide insights into system performance, helping to identify latency, bottlenecks, and issues in complex, distributed environments.\n\n[] Category:  | Name: trace"]
28976#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
28977#[serde(default)]
28978#[non_exhaustive]
28979pub struct Trace {
28980    #[doc = "Duration Milliseconds\n\nThe total time, in milliseconds, that the trace covers, calculated as the difference between start_time and end_time. This duration helps assess the overall performance of a request as it travels across various services, and is essential for identifying latency and potential bottlenecks within the distributed system. The trace duration may differ from individual span durations due to the propagation and processing times of the trace as it spans multiple components.\n\noptional"]
28981    #[serde(rename = "duration")]
28982    #[serde(skip_serializing_if = "Option::is_none")]
28983    pub duration: Option<i64>,
28984    #[doc = "End Time\n\nThe end timestamp of the trace, essential for identifying latency and performance bottlenecks. Like the start time, this timestamp is normalized across the trace system to ensure consistency, even when events are recorded across distributed services with unsynchronized clocks. Normalized time allows for accurate trace duration calculations and helps observability tools track overall performance across services, regardless of the individual system time settings.\n\noptional"]
28985    #[serde(rename = "end_time")]
28986    #[serde(skip_serializing_if = "Option::is_none")]
28987    pub end_time: Option<i64>,
28988    #[doc = "End Time\n\nThe end timestamp of the trace, essential for identifying latency and performance bottlenecks. Like the start time, this timestamp is normalized across the trace system to ensure consistency, even when events are recorded across distributed services with unsynchronized clocks. Normalized time allows for accurate trace duration calculations and helps observability tools track overall performance across services, regardless of the individual system time settings.\n\noptional"]
28989    #[serde(rename = "end_time_dt")]
28990    #[serde(skip_serializing_if = "Option::is_none")]
28991    pub end_time_dt: Option<String>,
28992    #[doc = "Flags\n\nThe flags associated with the trace, used to indicate specific properties or behaviors, such as whether the trace is sampled or if it has special handling. Flags help control how traces are processed, logged, and analyzed, providing valuable context for tracing and observability tools in identifying trace characteristics or specific tracking requirements.\n\noptional"]
28993    #[serde(rename = "flags")]
28994    #[serde(skip_serializing_if = "Option::is_none")]
28995    pub flags: Option<Vec<String>>,
28996    #[doc = "Service\n\nIdentifies the service or component generating the trace, helping to track and correlate the flow of requests through various parts of a distributed system. This information is essential for understanding the role and performance of specific services within the broader context of system operations and for diagnosing issues across different components.\n\noptional"]
28997    #[serde(rename = "service")]
28998    #[serde(skip_serializing_if = "Option::is_none")]
28999    pub service: Option<Box<Service>>,
29000    #[doc = "Span\n\nRepresents a single unit of work or operation within a distributed trace. A span typically tracks the execution of a request across a service, capturing important details such as the operation, timestamps, and status. Spans help break down the overall trace into smaller, manageable parts, enabling detailed analysis of the performance and behavior of specific operations within the system. They are crucial for understanding latency, dependencies, and bottlenecks in complex distributed systems.\n\noptional"]
29001    #[serde(rename = "span")]
29002    #[serde(skip_serializing_if = "Option::is_none")]
29003    pub span: Option<Box<Span>>,
29004    #[doc = "Start Time\n\nThe start timestamp of the trace, essential for identifying latency and performance bottlenecks. Like the end time, this timestamp is normalized across the trace system to ensure consistency, even when events are recorded across distributed services with unsynchronized clocks. Normalized time enables accurate trace duration calculations and helps observability tools track performance across services, regardless of the individual system time settings.\n\noptional"]
29005    #[serde(rename = "start_time")]
29006    #[serde(skip_serializing_if = "Option::is_none")]
29007    pub start_time: Option<i64>,
29008    #[doc = "Start Time\n\nThe start timestamp of the trace, essential for identifying latency and performance bottlenecks. Like the end time, this timestamp is normalized across the trace system to ensure consistency, even when events are recorded across distributed services with unsynchronized clocks. Normalized time enables accurate trace duration calculations and helps observability tools track performance across services, regardless of the individual system time settings.\n\noptional"]
29009    #[serde(rename = "start_time_dt")]
29010    #[serde(skip_serializing_if = "Option::is_none")]
29011    pub start_time_dt: Option<String>,
29012    #[doc = "Unique ID\n\nThe unique identifier of the trace used in distributed systems and microservices architecture to track and correlate requests across various components of an application.\n\nrequired"]
29013    #[serde(rename = "uid")]
29014    #[serde(skip_serializing_if = "Option::is_none")]
29015    pub uid: Option<String>,
29016}
29017#[doc = "Trait\n\nDescribes a characteristic or feature of an entity that was observed. For example, this object can be used to represent specific characteristics derived from events or findings that can be surfaced as distinguishing traits of the entity in question.\n\n[] Category:  | Name: trait\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
29018#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29019#[serde(default)]
29020#[non_exhaustive]
29021pub struct Trait {
29022    #[doc = "Category\n\nThe high-level grouping or classification this trait belongs to.\n\noptional"]
29023    #[serde(rename = "category")]
29024    #[serde(skip_serializing_if = "Option::is_none")]
29025    pub category: Option<String>,
29026    #[doc = "Name\n\nThe name of the trait.\n\nrecommended"]
29027    #[serde(rename = "name")]
29028    #[serde(skip_serializing_if = "Option::is_none")]
29029    pub name: Option<String>,
29030    #[doc = "Type\n\nThe type of the trait. For example, this can be used to indicate if the trait acts as a contributing factor (increases risk/severity) or a mitigating factor (decreases risk/severity), in the context of the related finding.\n\noptional"]
29031    #[serde(rename = "type")]
29032    #[serde(skip_serializing_if = "Option::is_none")]
29033    pub r#type: Option<String>,
29034    #[doc = "Unique ID\n\nThe unique identifier of the trait.\n\nrecommended"]
29035    #[serde(rename = "uid")]
29036    #[serde(skip_serializing_if = "Option::is_none")]
29037    pub uid: Option<String>,
29038    #[doc = "Values\n\nThe values of the trait.\n\noptional"]
29039    #[serde(rename = "values")]
29040    #[serde(skip_serializing_if = "Option::is_none")]
29041    pub values: Option<Vec<String>>,
29042}
29043#[doc = "Transformation Info\n\nThe transformation_info object represents the mapping or transformation used.\n\n[] Category:  | Name: transformation_info\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
29044#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29045#[serde(default)]
29046#[non_exhaustive]
29047pub struct TransformationInfo {
29048    #[doc = "Language\n\nThe transformation language used to transform the data.\n\noptional"]
29049    #[serde(rename = "lang")]
29050    #[serde(skip_serializing_if = "Option::is_none")]
29051    pub lang: Option<String>,
29052    #[doc = "Name\n\nThe name of the transformation or mapping.\n\nrecommended"]
29053    #[serde(rename = "name")]
29054    #[serde(skip_serializing_if = "Option::is_none")]
29055    pub name: Option<String>,
29056    #[doc = "Product\n\nThe product or instance used to make the transformation\n\noptional"]
29057    #[serde(rename = "product")]
29058    #[serde(skip_serializing_if = "Option::is_none")]
29059    pub product: Option<Box<Product>>,
29060    #[doc = "Event Time\n\nTime of the transformation.\n\nrecommended"]
29061    #[serde(rename = "time")]
29062    #[serde(skip_serializing_if = "Option::is_none")]
29063    pub time: Option<i64>,
29064    #[doc = "Event Time\n\nTime of the transformation.\n\noptional"]
29065    #[serde(rename = "time_dt")]
29066    #[serde(skip_serializing_if = "Option::is_none")]
29067    pub time_dt: Option<String>,
29068    #[doc = "Unique ID\n\nThe unique identifier of the mapping or transformation.\n\noptional"]
29069    #[serde(rename = "uid")]
29070    #[serde(skip_serializing_if = "Option::is_none")]
29071    pub uid: Option<String>,
29072    #[doc = "URL String\n\nThe Uniform Resource Locator String where the mapping or transformation exists.\n\nrecommended"]
29073    #[serde(rename = "url_string")]
29074    #[serde(skip_serializing_if = "Option::is_none")]
29075    pub url_string: Option<String>,
29076}
29077#[doc = "Unmanned Aerial System\n\nThe Unmanned Aerial System object describes the characteristics, Position Location Information (PLI), and other metadata of Unmanned Aerial Systems (UAS) and other unmanned and drone systems used in Remote ID. Remote ID is defined in the Standard Specification for Remote ID and Tracking (ASTM Designation: F3411-22a) <a target='_blank' href='https://cdn.standards.iteh.ai/samples/112830/71297057ac42432880a203654f213709/ASTM-F3411-22a.pdf'>ASTM F3411-22a</a>.\n\n[] Category:  | Name: unmanned_aerial_system\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
29078#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29079#[serde(default)]
29080#[non_exhaustive]
29081pub struct UnmannedAerialSystem {
29082    #[doc = "UAS Hardware Information\n\nThe endpoint hardware information.\n\noptional"]
29083    #[serde(rename = "hw_info")]
29084    #[serde(skip_serializing_if = "Option::is_none")]
29085    pub hw_info: Option<Box<DeviceHwInfo>>,
29086    #[doc = "UAS Position Location Information\n\nThe detailed geographical location usually associated with an IP address.\n\nrecommended"]
29087    #[serde(rename = "location")]
29088    #[serde(skip_serializing_if = "Option::is_none")]
29089    pub location: Option<Box<Location>>,
29090    #[doc = "Model\n\nThe model name of the aircraft or unmanned system.\n\noptional"]
29091    #[serde(rename = "model")]
29092    #[serde(skip_serializing_if = "Option::is_none")]
29093    pub model: Option<String>,
29094    #[doc = "Name\n\nThe name of the unmanned system as reported by tracking or sensing hardware.\n\noptional"]
29095    #[serde(rename = "name")]
29096    #[serde(skip_serializing_if = "Option::is_none")]
29097    pub name: Option<String>,
29098    #[doc = "Serial Number\n\nThe serial number of the unmanned system. This is expressed in <code>CTA-2063-A</code> format.\n\nrecommended"]
29099    #[serde(rename = "serial_number")]
29100    #[serde(skip_serializing_if = "Option::is_none")]
29101    pub serial_number: Option<String>,
29102    #[doc = "Speed\n\nGround speed of flight. This value is provided in meters per second with a minimum resolution of 0.25 m/s. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: 255 m/s</code>.\n\noptional"]
29103    #[serde(rename = "speed")]
29104    #[serde(skip_serializing_if = "Option::is_none")]
29105    pub speed: Option<String>,
29106    #[doc = "Speed Accuracy\n\nProvides quality/containment on horizontal ground speed. Measured in meters/second.\n\noptional"]
29107    #[serde(rename = "speed_accuracy")]
29108    #[serde(skip_serializing_if = "Option::is_none")]
29109    pub speed_accuracy: Option<String>,
29110    #[doc = "Track Direction\n\nDirection of flight expressed as a “True North-based” ground track angle. This value is provided in clockwise degrees with a minimum resolution of 1 degree. If aircraft is not moving horizontally, use the “Unknown” value\n\noptional"]
29111    #[serde(rename = "track_direction")]
29112    #[serde(skip_serializing_if = "Option::is_none")]
29113    pub track_direction: Option<String>,
29114    #[doc = "Type\n\nThe type of the UAS. For example, Helicopter, Gyroplane, Rocket, etc.\n\noptional"]
29115    #[serde(rename = "type")]
29116    #[serde(skip_serializing_if = "Option::is_none")]
29117    pub r#type: Option<String>,
29118    #[doc = "Type ID\n\nThe UAS type identifier.\n\nrecommended"]
29119    #[serde(rename = "type_id")]
29120    #[serde(skip_serializing_if = "Option::is_none")]
29121    pub type_id: Option<i64>,
29122    #[doc = "UAS ID\n\nThe primary identification identifier for an unmanned system. This can be a Serial Number (in <code>CTA-2063-A</code> format, the Registration ID (provided by the <code>CAA</code>, a UTM, or a unique Session ID.\n\nrecommended"]
29123    #[serde(rename = "uid")]
29124    #[serde(skip_serializing_if = "Option::is_none")]
29125    pub uid: Option<String>,
29126    #[doc = "UAS Alternate ID\n\nA secondary identification identifier for an unmanned system. This can be a Serial Number (in <code>CTA-2063-A</code> format, the Registration ID (provided by the <code>CAA</code>, a UTM, or a unique Session ID.\n\nrecommended"]
29127    #[serde(rename = "uid_alt")]
29128    #[serde(skip_serializing_if = "Option::is_none")]
29129    pub uid_alt: Option<String>,
29130    #[doc = "UTM UUID\n\nThe Unmanned Aircraft System Traffic Management (UTM) provided universal unique ID (UUID) traceable to a non-obfuscated ID where this UTM UUID acts as a 'session id' to protect exposure of operationally sensitive information.\n\nrecommended"]
29131    #[serde(rename = "uuid")]
29132    #[serde(skip_serializing_if = "Option::is_none")]
29133    pub uuid: Option<String>,
29134    #[doc = "Vertical Speed\n\nVertical speed upward relative to the WGS-84 datum, measured in meters per second. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: 63 m/s</code>.\n\noptional"]
29135    #[serde(rename = "vertical_speed")]
29136    #[serde(skip_serializing_if = "Option::is_none")]
29137    pub vertical_speed: Option<String>,
29138}
29139#[doc = "Unmanned System Operating Area\n\nThe Unmanned System Operating Area object describes details about a precise area of operations for a UAS flight or mission.\n\n[] Category:  | Name: unmanned_system_operating_area\n\n**Constraints:**\n* at_least_one: `[city`,`country`,`postal_code`,`region]`\n"]
29140#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29141#[serde(default)]
29142#[non_exhaustive]
29143pub struct UnmannedSystemOperatingArea {
29144    #[doc = "Aerial Height\n\nExpressed as either height above takeoff location or height above ground level (AGL) for a UAS current location. This value is provided in meters and must have a minimum resolution of 1 m. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: -1000 m</code>.\n\noptional"]
29145    #[serde(rename = "aerial_height")]
29146    #[serde(skip_serializing_if = "Option::is_none")]
29147    pub aerial_height: Option<String>,
29148    #[doc = "Altitude Ceiling\n\nMaximum altitude (WGS-84 HAE) for a group or an Intent-Based Network Participant. Measured in meters. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: -1000 m</code>.\n\noptional"]
29149    #[serde(rename = "altitude_ceiling")]
29150    #[serde(skip_serializing_if = "Option::is_none")]
29151    pub altitude_ceiling: Option<String>,
29152    #[doc = "Altitude Floor\n\nMinimum altitude (WGS-84 HAE) for a group or an Intent-Based Network Participant. Measured in meters. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: -1000 m</code>.\n\noptional"]
29153    #[serde(rename = "altitude_floor")]
29154    #[serde(skip_serializing_if = "Option::is_none")]
29155    pub altitude_floor: Option<String>,
29156    #[doc = "City\n\nThe name of the city.\n\nrecommended"]
29157    #[serde(rename = "city")]
29158    #[serde(skip_serializing_if = "Option::is_none")]
29159    pub city: Option<String>,
29160    #[doc = "Continent\n\nThe name of the continent.\n\nrecommended"]
29161    #[serde(rename = "continent")]
29162    #[serde(skip_serializing_if = "Option::is_none")]
29163    pub continent: Option<String>,
29164    #[doc = "Coordinates\n\nA two-element array, containing a longitude/latitude pair. The format conforms with <a target='_blank' href='https://geojson.org'>GeoJSON</a>. For example: <code>[-73.983, 40.719]</code>.\n\noptional"]
29165    #[serde(rename = "coordinates")]
29166    #[serde(skip_serializing_if = "Option::is_none")]
29167    pub coordinates: Option<Vec<f64>>,
29168    #[doc = "Count\n\nIndicates the number of UAS in the operating area.\n\nrecommended"]
29169    #[serde(rename = "count")]
29170    #[serde(skip_serializing_if = "Option::is_none")]
29171    pub count: Option<i64>,
29172    #[doc = "Country\n\nThe ISO 3166-1 Alpha-2 country code.<p><b>Note:</b> The two letter country code should be capitalized. For example: <code>US</code> or <code>CA</code>.</p>\n\nrecommended"]
29173    #[serde(rename = "country")]
29174    #[serde(skip_serializing_if = "Option::is_none")]
29175    pub country: Option<String>,
29176    #[doc = "Description\n\nThe description of the geographical location.\n\noptional"]
29177    #[serde(rename = "desc")]
29178    #[serde(skip_serializing_if = "Option::is_none")]
29179    pub desc: Option<String>,
29180    #[doc = "End Time\n\nThe date and time at which a group or an Intent-Based Network Participant operation ends. (This field is only applicable to Network Remote ID.)\n\noptional"]
29181    #[serde(rename = "end_time")]
29182    #[serde(skip_serializing_if = "Option::is_none")]
29183    pub end_time: Option<i64>,
29184    #[doc = "End Time\n\nThe date and time at which a group or an Intent-Based Network Participant operation ends. (This field is only applicable to Network Remote ID.)\n\noptional"]
29185    #[serde(rename = "end_time_dt")]
29186    #[serde(skip_serializing_if = "Option::is_none")]
29187    pub end_time_dt: Option<String>,
29188    #[doc = "Geodetic Altitude\n\nThe aircraft distance above or below the ellipsoid as measured along a line that passes through the aircraft and is normal to the surface of the WGS-84 ellipsoid. This value is provided in meters and must have a minimum resolution of 1 m. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: -1000 m</code>.\n\noptional"]
29189    #[serde(rename = "geodetic_altitude")]
29190    #[serde(skip_serializing_if = "Option::is_none")]
29191    pub geodetic_altitude: Option<String>,
29192    #[doc = "Geodetic Vertical Accuracy\n\nProvides quality/containment on geodetic altitude. This is based on ADS-B Geodetic Vertical Accuracy (GVA). Measured in meters.\n\noptional"]
29193    #[serde(rename = "geodetic_vertical_accuracy")]
29194    #[serde(skip_serializing_if = "Option::is_none")]
29195    pub geodetic_vertical_accuracy: Option<String>,
29196    #[doc = "Geohash\n\n<p>Geohash of the geo-coordinates (latitude and longitude).</p><a target='_blank' href='https://en.wikipedia.org/wiki/Geohash'>Geohashing</a> is a geocoding system used to encode geographic coordinates in decimal degrees, to a single string.\n\noptional"]
29197    #[serde(rename = "geohash")]
29198    #[serde(skip_serializing_if = "Option::is_none")]
29199    pub geohash: Option<String>,
29200    #[doc = "Horizontal Accuracy\n\nProvides quality/containment on horizontal position. This is based on ADS-B NACp. Measured in meters.\n\noptional"]
29201    #[serde(rename = "horizontal_accuracy")]
29202    #[serde(skip_serializing_if = "Option::is_none")]
29203    pub horizontal_accuracy: Option<String>,
29204    #[doc = "On Premises\n\nThe indication of whether the location is on premises.\n\noptional"]
29205    #[serde(rename = "is_on_premises")]
29206    #[serde(skip_serializing_if = "Option::is_none")]
29207    pub is_on_premises: Option<bool>,
29208    #[doc = "ISP Name\n\nThe name of the Internet Service Provider (ISP).\n\noptional"]
29209    #[serde(rename = "isp")]
29210    #[serde(skip_serializing_if = "Option::is_none")]
29211    pub isp: Option<String>,
29212    #[doc = "Latitude\n\nThe geographical Latitude coordinate represented in Decimal Degrees (DD). For example: <code>42.361145</code>.\n\noptional"]
29213    #[serde(rename = "lat")]
29214    #[serde(skip_serializing_if = "Option::is_none")]
29215    pub lat: Option<f64>,
29216    #[doc = "Operating Polygon\n\nA list of Position Location Information (PLI) (latitude/longitude pairs) defining the area where a group or Intent-Based Network Participant operation is taking place. (This field is only applicable to Network Remote ID.)\n\nrecommended"]
29217    #[serde(rename = "locations")]
29218    #[serde(skip_serializing_if = "Option::is_none")]
29219    pub locations: Option<Vec<Location>>,
29220    #[doc = "Longitude\n\nThe geographical Longitude coordinate represented in Decimal Degrees (DD). For example: <code>-71.057083</code>.\n\noptional"]
29221    #[serde(rename = "long")]
29222    #[serde(skip_serializing_if = "Option::is_none")]
29223    pub long: Option<f64>,
29224    #[doc = "Postal Code\n\nThe postal code of the location.\n\noptional"]
29225    #[serde(rename = "postal_code")]
29226    #[serde(skip_serializing_if = "Option::is_none")]
29227    pub postal_code: Option<String>,
29228    #[doc = "Pressure Altitude\n\nThe uncorrected barometric pressure altitude (based on reference standard 29.92 inHg, 1013.25 mb) provides a reference for algorithms that utilize 'altitude deltas' between aircraft. This value is provided in meters and must have a minimum resolution of 1 m.. Special Values: <code>Invalid</code>, <code>No Value</code>, or <code>Unknown: -1000 m</code>.\n\noptional"]
29229    #[serde(rename = "pressure_altitude")]
29230    #[serde(skip_serializing_if = "Option::is_none")]
29231    pub pressure_altitude: Option<String>,
29232    #[doc = "Provider\n\nThe provider of the geographical location data.\n\noptional"]
29233    #[serde(rename = "provider")]
29234    #[serde(skip_serializing_if = "Option::is_none")]
29235    pub provider: Option<String>,
29236    #[doc = "Operating Area Radius\n\nFarthest horizontal distance from the reported location at which any UA in a group may be located (meters). Also allows defining the area where an Intent-Based Network Participant operation is taking place. Default: 0 m.\n\noptional"]
29237    #[serde(rename = "radius")]
29238    #[serde(skip_serializing_if = "Option::is_none")]
29239    pub radius: Option<String>,
29240    #[doc = "Region\n\nThe alphanumeric code that identifies the principal subdivision (e.g. province or state) of the country. For example, 'CH-VD' for the Canton of Vaud, Switzerland\n\noptional"]
29241    #[serde(rename = "region")]
29242    #[serde(skip_serializing_if = "Option::is_none")]
29243    pub region: Option<String>,
29244    #[doc = "Start Time\n\nThe date and time at which a group or an Intent-Based Network Participant operation starts. (This field is only applicable to Network Remote ID.)\n\noptional"]
29245    #[serde(rename = "start_time")]
29246    #[serde(skip_serializing_if = "Option::is_none")]
29247    pub start_time: Option<i64>,
29248    #[doc = "Start Time\n\nThe date and time at which a group or an Intent-Based Network Participant operation starts. (This field is only applicable to Network Remote ID.)\n\noptional"]
29249    #[serde(rename = "start_time_dt")]
29250    #[serde(skip_serializing_if = "Option::is_none")]
29251    pub start_time_dt: Option<String>,
29252    #[doc = "Type\n\nThe type of operating area. For example, <code>Takeoff Location</code>, <code>Fixed Location</code>, <code>Dynamic Location</code>.\n\noptional"]
29253    #[serde(rename = "type")]
29254    #[serde(skip_serializing_if = "Option::is_none")]
29255    pub r#type: Option<String>,
29256    #[doc = "Type ID\n\nThe operating area type identifier.\n\nrecommended"]
29257    #[serde(rename = "type_id")]
29258    #[serde(skip_serializing_if = "Option::is_none")]
29259    pub type_id: Option<i64>,
29260}
29261#[doc = "Uniform Resource Locator\n\nThe Uniform Resource Locator (URL) object describes the characteristics of a URL.\n\n[] Category:  | Name: url\n\n**Constraints:**\n* at_least_one: `[url_string`,`path]`\n"]
29262#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29263#[serde(default)]
29264#[non_exhaustive]
29265pub struct Url {
29266    #[doc = "Website Categorization\n\nThe Website categorization names, as defined by <code>category_ids</code> enum values.\n\noptional"]
29267    #[serde(rename = "categories")]
29268    #[serde(skip_serializing_if = "Option::is_none")]
29269    pub categories: Option<Vec<String>>,
29270    #[doc = "Website Categorization IDs\n\nThe Website categorization identifiers.\n\nrecommended"]
29271    #[serde(rename = "category_ids")]
29272    #[serde(skip_serializing_if = "Option::is_none")]
29273    pub category_ids: Option<Vec<i64>>,
29274    #[doc = "Domain\n\nThe domain portion of the URL. For example: <code>example.com</code> in <code>https://sub.example.com</code>.\n\noptional"]
29275    #[serde(rename = "domain")]
29276    #[serde(skip_serializing_if = "Option::is_none")]
29277    pub domain: Option<String>,
29278    #[doc = "Hostname\n\nThe URL host as extracted from the URL. For example: <code>www.example.com</code> from <code>www.example.com/download/trouble</code>.\n\nrecommended"]
29279    #[serde(rename = "hostname")]
29280    #[serde(skip_serializing_if = "Option::is_none")]
29281    pub hostname: Option<String>,
29282    #[doc = "Path\n\nThe URL path as extracted from the URL. For example: <code>/download/trouble</code> from <code>www.example.com/download/trouble</code>.\n\nrecommended"]
29283    #[serde(rename = "path")]
29284    #[serde(skip_serializing_if = "Option::is_none")]
29285    pub path: Option<String>,
29286    #[doc = "Port\n\nThe URL port. For example: <code>80</code>.\n\nrecommended"]
29287    #[serde(rename = "port")]
29288    #[serde(skip_serializing_if = "Option::is_none")]
29289    pub port: Option<i64>,
29290    #[doc = "HTTP Query String\n\nThe query portion of the URL. For example: the query portion of the URL <code>http://www.example.com/search?q=bad&sort=date</code> is <code>q=bad&sort=date</code>.\n\nrecommended"]
29291    #[serde(rename = "query_string")]
29292    #[serde(skip_serializing_if = "Option::is_none")]
29293    pub query_string: Option<String>,
29294    #[doc = "Resource Type\n\nThe context in which a resource was retrieved in a web request.\n\noptional"]
29295    #[serde(rename = "resource_type")]
29296    #[serde(skip_serializing_if = "Option::is_none")]
29297    pub resource_type: Option<String>,
29298    #[doc = "Scheme\n\nThe scheme portion of the URL. For example: <code>http</code>, <code>https</code>, <code>ftp</code>, or <code>sftp</code>.\n\nrecommended"]
29299    #[serde(rename = "scheme")]
29300    #[serde(skip_serializing_if = "Option::is_none")]
29301    pub scheme: Option<String>,
29302    #[doc = "Subdomain\n\nThe subdomain portion of the URL. For example: <code>sub</code> in <code>https://sub.example.com</code> or <code>sub2.sub1</code> in <code>https://sub2.sub1.example.com</code>.\n\noptional"]
29303    #[serde(rename = "subdomain")]
29304    #[serde(skip_serializing_if = "Option::is_none")]
29305    pub subdomain: Option<String>,
29306    #[doc = "URL String\n\nThe URL string. See RFC 1738. For example: <code>http://www.example.com/download/trouble.exe</code>. Note: The URL path should not populate the URL string.\n\nrecommended"]
29307    #[serde(rename = "url_string")]
29308    #[serde(skip_serializing_if = "Option::is_none")]
29309    pub url_string: Option<String>,
29310}
29311#[doc = "User\n\nThe User object describes the characteristics of a user/person or a security principal.\n\n[] Category:  | Name: user\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
29312#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29313#[serde(default)]
29314#[non_exhaustive]
29315pub struct User {
29316    #[doc = "Account\n\nThe user's account or the account associated with the user.\n\noptional"]
29317    #[serde(rename = "account")]
29318    #[serde(skip_serializing_if = "Option::is_none")]
29319    pub account: Option<Box<Account>>,
29320    #[doc = "User Credential ID\n\nThe unique identifier of the user's credential. For example, AWS Access Key ID.\n\noptional"]
29321    #[serde(rename = "credential_uid")]
29322    #[serde(skip_serializing_if = "Option::is_none")]
29323    pub credential_uid: Option<String>,
29324    #[doc = "Display Name\n\nThe display name of the user, as reported by the product.\n\noptional"]
29325    #[serde(rename = "display_name")]
29326    #[serde(skip_serializing_if = "Option::is_none")]
29327    pub display_name: Option<String>,
29328    #[doc = "Domain\n\nThe domain where the user is defined. For example: the LDAP or Active Directory domain.\n\noptional"]
29329    #[serde(rename = "domain")]
29330    #[serde(skip_serializing_if = "Option::is_none")]
29331    pub domain: Option<String>,
29332    #[doc = "Email Address\n\nThe user's primary email address.\n\noptional"]
29333    #[serde(rename = "email_addr")]
29334    #[serde(skip_serializing_if = "Option::is_none")]
29335    pub email_addr: Option<String>,
29336    #[doc = "Forwarding Address\n\nThe user's forwarding email address.\n\noptional"]
29337    #[serde(rename = "forward_addr")]
29338    #[serde(skip_serializing_if = "Option::is_none")]
29339    pub forward_addr: Option<String>,
29340    #[doc = "Full Name\n\nThe full name of the user, as reported by the product.\n\noptional"]
29341    #[serde(rename = "full_name")]
29342    #[serde(skip_serializing_if = "Option::is_none")]
29343    pub full_name: Option<String>,
29344    #[doc = "Groups\n\nThe administrative groups to which the user belongs.\n\noptional"]
29345    #[serde(rename = "groups")]
29346    #[serde(skip_serializing_if = "Option::is_none")]
29347    pub groups: Option<Vec<Group>>,
29348    #[doc = "MFA Assigned\n\nThe user has a multi-factor or secondary-factor device assigned.\n\nrecommended"]
29349    #[serde(rename = "has_mfa")]
29350    #[serde(skip_serializing_if = "Option::is_none")]
29351    pub has_mfa: Option<bool>,
29352    #[doc = "LDAP Person\n\nThe additional LDAP attributes that describe a person.\n\noptional"]
29353    #[serde(rename = "ldap_person")]
29354    #[serde(skip_serializing_if = "Option::is_none")]
29355    pub ldap_person: Option<Box<LdapPerson>>,
29356    #[doc = "Name\n\nThe username. For example, <code>janedoe1</code>.\n\nrecommended"]
29357    #[serde(rename = "name")]
29358    #[serde(skip_serializing_if = "Option::is_none")]
29359    pub name: Option<String>,
29360    #[doc = "Organization\n\nOrganization and org unit related to the user.\n\noptional"]
29361    #[serde(rename = "org")]
29362    #[serde(skip_serializing_if = "Option::is_none")]
29363    pub org: Option<Box<Organization>>,
29364    #[doc = "Telephone Number\n\nThe telephone number of the user.\n\noptional"]
29365    #[serde(rename = "phone_number")]
29366    #[serde(skip_serializing_if = "Option::is_none")]
29367    pub phone_number: Option<String>,
29368    #[doc = "Programmatic Credentials\n\nDetails about the programmatic credential (API keys, access tokens, certificates, etc) associated to the user.\n\noptional"]
29369    #[serde(rename = "programmatic_credentials")]
29370    #[serde(skip_serializing_if = "Option::is_none")]
29371    pub programmatic_credentials: Option<Vec<ProgrammaticCredential>>,
29372    #[doc = "Risk Level\n\nThe risk level, normalized to the caption of the risk_level_id value.\n\noptional"]
29373    #[serde(rename = "risk_level")]
29374    #[serde(skip_serializing_if = "Option::is_none")]
29375    pub risk_level: Option<String>,
29376    #[doc = "Risk Level ID\n\nThe normalized risk level id.\n\noptional"]
29377    #[serde(rename = "risk_level_id")]
29378    #[serde(skip_serializing_if = "Option::is_none")]
29379    pub risk_level_id: Option<i64>,
29380    #[doc = "Risk Score\n\nThe risk score as reported by the event source.\n\noptional"]
29381    #[serde(rename = "risk_score")]
29382    #[serde(skip_serializing_if = "Option::is_none")]
29383    pub risk_score: Option<i64>,
29384    #[doc = "Type\n\nThe type of the user. For example, System, AWS IAM User, etc.\n\noptional"]
29385    #[serde(rename = "type")]
29386    #[serde(skip_serializing_if = "Option::is_none")]
29387    pub r#type: Option<String>,
29388    #[doc = "Type ID\n\nThe account type identifier.\n\nrecommended"]
29389    #[serde(rename = "type_id")]
29390    #[serde(skip_serializing_if = "Option::is_none")]
29391    pub type_id: Option<i64>,
29392    #[doc = "Unique ID\n\nThe unique user identifier. For example, the Windows user SID, ActiveDirectory DN or AWS user ARN.\n\nrecommended"]
29393    #[serde(rename = "uid")]
29394    #[serde(skip_serializing_if = "Option::is_none")]
29395    pub uid: Option<String>,
29396    #[doc = "Alternate ID\n\nThe alternate user identifier. For example, the Active Directory user GUID or AWS user Principal ID.\n\noptional"]
29397    #[serde(rename = "uid_alt")]
29398    #[serde(skip_serializing_if = "Option::is_none")]
29399    pub uid_alt: Option<String>,
29400}
29401#[doc = "Vendor Attributes\n\nThe Vendor Attributes object can be used to represent values of attributes populated by the Vendor/Finding Provider. It can help distinguish between the vendor-provided values and consumer-updated values, of key attributes like <code>severity_id</code>.<br>The original finding producer should not populate this object. It should be populated by consuming systems that support data mutability.\n\n[] Category:  | Name: vendor_attributes"]
29402#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29403#[serde(default)]
29404#[non_exhaustive]
29405pub struct VendorAttributes {
29406    #[doc = "Severity\n\nThe finding severity, as reported by the Vendor (Finding Provider). The value should be normalized to the caption of the <code>severity_id</code> value. In the case of 'Other', it is defined by the source.\n\noptional"]
29407    #[serde(rename = "severity")]
29408    #[serde(skip_serializing_if = "Option::is_none")]
29409    pub severity: Option<String>,
29410    #[doc = "Severity ID\n\nThe finding severity ID, as reported by the Vendor (Finding Provider).\n\noptional"]
29411    #[serde(rename = "severity_id")]
29412    #[serde(skip_serializing_if = "Option::is_none")]
29413    pub severity_id: Option<i64>,
29414}
29415#[doc = "Vulnerability Details\n\nThe vulnerability is an unintended characteristic of a computing component or system configuration that multiplies the risk of an adverse event or a loss occurring either due to accidental exposure, deliberate attack, or conflict with new system components.\n\n[] Category:  | Name: vulnerability\n\n**Constraints:**\n* just_one: `[advisory`,`cve`,`cwe]`\n"]
29416#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29417#[serde(default)]
29418#[non_exhaustive]
29419pub struct Vulnerability {
29420    #[doc = "Security Advisory\n\nDetail about the security advisory, that is used to publicly disclose cybersecurity vulnerabilities by a vendor.\n\noptional"]
29421    #[serde(rename = "advisory")]
29422    #[serde(skip_serializing_if = "Option::is_none")]
29423    pub advisory: Option<Box<Advisory>>,
29424    #[doc = "Affected Code\n\nList of Affected Code objects that describe details about code blocks identified as vulnerable.\n\noptional"]
29425    #[serde(rename = "affected_code")]
29426    #[serde(skip_serializing_if = "Option::is_none")]
29427    pub affected_code: Option<Vec<AffectedCode>>,
29428    #[doc = "Affected Software Packages\n\nList of software packages identified as affected by a vulnerability/vulnerabilities.\n\noptional"]
29429    #[serde(rename = "affected_packages")]
29430    #[serde(skip_serializing_if = "Option::is_none")]
29431    pub affected_packages: Option<Vec<AffectedPackage>>,
29432    #[doc = "Category\n\nThe category of a vulnerability or weakness, as reported by the source tool, such as <code>Container Security</code> or <code>Open Source Security</code>.\n\noptional"]
29433    #[serde(rename = "category")]
29434    #[serde(skip_serializing_if = "Option::is_none")]
29435    pub category: Option<String>,
29436    #[doc = "CVE\n\nDescribes the Common Vulnerabilities and Exposures <a target='_blank' href='https://cve.mitre.org/'>(CVE)</a> details related to the vulnerability.\n\nrecommended"]
29437    #[serde(rename = "cve")]
29438    #[serde(skip_serializing_if = "Option::is_none")]
29439    pub cve: Option<Box<Cve>>,
29440    #[doc = "CWE\n\nDescribes the Common Weakness Enumeration <a target='_blank' href='https://cwe.mitre.org/'>(CWE)</a> details related to the vulnerability.\n\nrecommended"]
29441    #[serde(rename = "cwe")]
29442    #[serde(skip_serializing_if = "Option::is_none")]
29443    pub cwe: Option<Box<Cwe>>,
29444    #[doc = "Dependency Chain\n\nInformation about the chain of dependencies related to the issue as reported by an Application Security or Vulnerability Management tool. E.g., <code>serverless-offline -> @serverless/utils -> memoizee -> es5-ext</code>.\n\noptional"]
29445    #[serde(rename = "dependency_chain")]
29446    #[serde(skip_serializing_if = "Option::is_none")]
29447    pub dependency_chain: Option<String>,
29448    #[doc = "Description\n\nThe description of the vulnerability.\n\noptional"]
29449    #[serde(rename = "desc")]
29450    #[serde(skip_serializing_if = "Option::is_none")]
29451    pub desc: Option<String>,
29452    #[doc = "Exploit Last Seen Time\n\nThe time when the exploit was most recently observed.\n\noptional"]
29453    #[serde(rename = "exploit_last_seen_time")]
29454    #[serde(skip_serializing_if = "Option::is_none")]
29455    pub exploit_last_seen_time: Option<i64>,
29456    #[doc = "Exploit Last Seen Time\n\nThe time when the exploit was most recently observed.\n\noptional"]
29457    #[serde(rename = "exploit_last_seen_time_dt")]
29458    #[serde(skip_serializing_if = "Option::is_none")]
29459    pub exploit_last_seen_time_dt: Option<String>,
29460    #[doc = "Exploit URL\n\nThe URL of the exploit code or Proof-of-Concept (PoC).\n\noptional"]
29461    #[serde(rename = "exploit_ref_url")]
29462    #[serde(skip_serializing_if = "Option::is_none")]
29463    pub exploit_ref_url: Option<String>,
29464    #[doc = "Exploit Requirement\n\nThe requirement description related to any constraints around exploit execution.\n\noptional"]
29465    #[serde(rename = "exploit_requirement")]
29466    #[serde(skip_serializing_if = "Option::is_none")]
29467    pub exploit_requirement: Option<String>,
29468    #[doc = "Exploit Type\n\nThe categorization or type of Exploit. E.g., <code>Network</code> or <code>Physical</code>.\n\noptional"]
29469    #[serde(rename = "exploit_type")]
29470    #[serde(skip_serializing_if = "Option::is_none")]
29471    pub exploit_type: Option<String>,
29472    #[doc = "First Seen\n\nThe time when the vulnerability was first observed.\n\noptional"]
29473    #[serde(rename = "first_seen_time")]
29474    #[serde(skip_serializing_if = "Option::is_none")]
29475    pub first_seen_time: Option<i64>,
29476    #[doc = "First Seen\n\nThe time when the vulnerability was first observed.\n\noptional"]
29477    #[serde(rename = "first_seen_time_dt")]
29478    #[serde(skip_serializing_if = "Option::is_none")]
29479    pub first_seen_time_dt: Option<String>,
29480    #[doc = "Fix Availability\n\nIndicates if a fix is available for the reported vulnerability.\n\noptional"]
29481    #[serde(rename = "fix_available")]
29482    #[serde(skip_serializing_if = "Option::is_none")]
29483    pub fix_available: Option<bool>,
29484    #[doc = "Fix Coverage\n\nThe fix coverage, normalized to the caption of the <code>fix_coverage_id</code> value.\n\noptional"]
29485    #[serde(rename = "fix_coverage")]
29486    #[serde(skip_serializing_if = "Option::is_none")]
29487    pub fix_coverage: Option<String>,
29488    #[doc = "Fix Coverage ID\n\nThe normalized identifier for fix coverage, applicable to this vulnerability. Typically useful, when there are multiple affected packages but only a subset have available fixes.\n\noptional"]
29489    #[serde(rename = "fix_coverage_id")]
29490    #[serde(skip_serializing_if = "Option::is_none")]
29491    pub fix_coverage_id: Option<i64>,
29492    #[doc = "Exploit Availability\n\nIndicates if an exploit or a PoC (proof-of-concept) is available for the reported vulnerability.\n\noptional"]
29493    #[serde(rename = "is_exploit_available")]
29494    #[serde(skip_serializing_if = "Option::is_none")]
29495    pub is_exploit_available: Option<bool>,
29496    #[doc = "Fix Availability\n\nIndicates if a fix is available for the reported vulnerability.\n\noptional"]
29497    #[serde(rename = "is_fix_available")]
29498    #[serde(skip_serializing_if = "Option::is_none")]
29499    pub is_fix_available: Option<bool>,
29500    #[doc = "Knowledgebase Articles\n\nA list of KB articles or patches related to an endpoint. A KB Article contains metadata that describes the patch or an update.\n\noptional"]
29501    #[serde(rename = "kb_article_list")]
29502    #[serde(skip_serializing_if = "Option::is_none")]
29503    pub kb_article_list: Option<Vec<KbArticle>>,
29504    #[doc = "Knowledgebase Articles\n\nThe KB article/s related to the entity. A KB Article contains metadata that describes the patch or an update.\n\noptional"]
29505    #[serde(rename = "kb_articles")]
29506    #[serde(skip_serializing_if = "Option::is_none")]
29507    pub kb_articles: Option<Vec<String>>,
29508    #[doc = "Last Seen\n\nThe time when the vulnerability was most recently observed.\n\noptional"]
29509    #[serde(rename = "last_seen_time")]
29510    #[serde(skip_serializing_if = "Option::is_none")]
29511    pub last_seen_time: Option<i64>,
29512    #[doc = "Last Seen\n\nThe time when the vulnerability was most recently observed.\n\noptional"]
29513    #[serde(rename = "last_seen_time_dt")]
29514    #[serde(skip_serializing_if = "Option::is_none")]
29515    pub last_seen_time_dt: Option<String>,
29516    #[doc = "Software Packages\n\nList of vulnerable packages as identified by the security product\n\noptional"]
29517    #[serde(rename = "packages")]
29518    #[serde(skip_serializing_if = "Option::is_none")]
29519    pub packages: Option<Vec<Package>>,
29520    #[doc = "References\n\nA list of reference URLs with additional information about the vulnerability.\n\nrecommended"]
29521    #[serde(rename = "references")]
29522    #[serde(skip_serializing_if = "Option::is_none")]
29523    pub references: Option<Vec<String>>,
29524    #[doc = "Related Vulnerability IDs\n\nList of vulnerability IDs (e.g. CVE ID) that are related to this vulnerability.\n\noptional"]
29525    #[serde(rename = "related_vulnerabilities")]
29526    #[serde(skip_serializing_if = "Option::is_none")]
29527    pub related_vulnerabilities: Option<Vec<String>>,
29528    #[doc = "Remediation Guidance\n\nThe remediation recommendations on how to mitigate the identified vulnerability.\n\noptional"]
29529    #[serde(rename = "remediation")]
29530    #[serde(skip_serializing_if = "Option::is_none")]
29531    pub remediation: Option<Box<Remediation>>,
29532    #[doc = "Severity\n\nThe vendor assigned severity of the vulnerability.\n\noptional"]
29533    #[serde(rename = "severity")]
29534    #[serde(skip_serializing_if = "Option::is_none")]
29535    pub severity: Option<String>,
29536    #[doc = "Title\n\nA title or a brief phrase summarizing the discovered vulnerability.\n\noptional"]
29537    #[serde(rename = "title")]
29538    #[serde(skip_serializing_if = "Option::is_none")]
29539    pub title: Option<String>,
29540    #[doc = "Vendor Name\n\nThe name of the vendor that identified the vulnerability.\n\noptional"]
29541    #[serde(rename = "vendor_name")]
29542    #[serde(skip_serializing_if = "Option::is_none")]
29543    pub vendor_name: Option<String>,
29544}
29545#[doc = "Web Resource\n\nThe Web Resource object describes characteristics of a web resource that was affected by the activity/event.\n\n[] Category:  | Name: web_resource\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
29546#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29547#[serde(default)]
29548#[non_exhaustive]
29549pub struct WebResource {
29550    #[doc = "Created Time\n\nThe time when the resource was created.\n\noptional"]
29551    #[serde(rename = "created_time")]
29552    #[serde(skip_serializing_if = "Option::is_none")]
29553    pub created_time: Option<i64>,
29554    #[doc = "Created Time\n\nThe time when the resource was created.\n\noptional"]
29555    #[serde(rename = "created_time_dt")]
29556    #[serde(skip_serializing_if = "Option::is_none")]
29557    pub created_time_dt: Option<String>,
29558    #[doc = "Data\n\nDetails of the web resource, e.g, <code>file</code> details, <code>search</code> results or application-defined resource.\n\noptional"]
29559    #[serde(rename = "data")]
29560    #[serde(skip_serializing_if = "Option::is_none")]
29561    pub data: Option<serde_json::Value>,
29562    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
29563    #[serde(rename = "data_classification")]
29564    #[serde(skip_serializing_if = "Option::is_none")]
29565    pub data_classification: Option<Box<DataClassification>>,
29566    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
29567    #[serde(rename = "data_classifications")]
29568    #[serde(skip_serializing_if = "Option::is_none")]
29569    pub data_classifications: Option<Vec<DataClassification>>,
29570    #[doc = "Description\n\nDescription of the web resource.\n\noptional"]
29571    #[serde(rename = "desc")]
29572    #[serde(skip_serializing_if = "Option::is_none")]
29573    pub desc: Option<String>,
29574    #[doc = "Labels\n\nThe list of labels associated to the resource.\n\noptional"]
29575    #[serde(rename = "labels")]
29576    #[serde(skip_serializing_if = "Option::is_none")]
29577    pub labels: Option<Vec<String>>,
29578    #[doc = "Modified Time\n\nThe time when the resource was last modified.\n\noptional"]
29579    #[serde(rename = "modified_time")]
29580    #[serde(skip_serializing_if = "Option::is_none")]
29581    pub modified_time: Option<i64>,
29582    #[doc = "Modified Time\n\nThe time when the resource was last modified.\n\noptional"]
29583    #[serde(rename = "modified_time_dt")]
29584    #[serde(skip_serializing_if = "Option::is_none")]
29585    pub modified_time_dt: Option<String>,
29586    #[doc = "Name\n\nThe name of the web resource.\n\nrecommended"]
29587    #[serde(rename = "name")]
29588    #[serde(skip_serializing_if = "Option::is_none")]
29589    pub name: Option<String>,
29590    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the resource.\n\noptional"]
29591    #[serde(rename = "tags")]
29592    #[serde(skip_serializing_if = "Option::is_none")]
29593    pub tags: Option<Vec<KeyValueObject>>,
29594    #[doc = "Type\n\nThe web resource type as defined by the event source.\n\noptional"]
29595    #[serde(rename = "type")]
29596    #[serde(skip_serializing_if = "Option::is_none")]
29597    pub r#type: Option<String>,
29598    #[doc = "Unique ID\n\nThe unique identifier of the web resource.\n\nrecommended"]
29599    #[serde(rename = "uid")]
29600    #[serde(skip_serializing_if = "Option::is_none")]
29601    pub uid: Option<String>,
29602    #[doc = "Alternate ID\n\nThe alternative unique identifier of the resource.\n\noptional"]
29603    #[serde(rename = "uid_alt")]
29604    #[serde(skip_serializing_if = "Option::is_none")]
29605    pub uid_alt: Option<String>,
29606    #[doc = "URL String\n\nThe URL pointing towards the source of the web resource.\n\nrecommended"]
29607    #[serde(rename = "url_string")]
29608    #[serde(skip_serializing_if = "Option::is_none")]
29609    pub url_string: Option<String>,
29610}
29611#[doc = "WHOIS\n\nThe resources of a WHOIS record for a given domain. This can include domain names, IP address blocks, autonomous system information, and/or contact and registration information for a domain.\n\n[] Category:  | Name: whois"]
29612#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29613#[serde(default)]
29614#[non_exhaustive]
29615pub struct Whois {
29616    #[doc = "Autonomous System\n\nThe autonomous system information associated with a domain.\n\noptional"]
29617    #[serde(rename = "autonomous_system")]
29618    #[serde(skip_serializing_if = "Option::is_none")]
29619    pub autonomous_system: Option<Box<AutonomousSystem>>,
29620    #[doc = "Registered At\n\nWhen the domain was registered or WHOIS entry was created.\n\nrecommended"]
29621    #[serde(rename = "created_time")]
29622    #[serde(skip_serializing_if = "Option::is_none")]
29623    pub created_time: Option<i64>,
29624    #[doc = "Registered At\n\nWhen the domain was registered or WHOIS entry was created.\n\noptional"]
29625    #[serde(rename = "created_time_dt")]
29626    #[serde(skip_serializing_if = "Option::is_none")]
29627    pub created_time_dt: Option<String>,
29628    #[doc = "DNSSEC Status\n\nThe normalized value of dnssec_status_id.\n\noptional"]
29629    #[serde(rename = "dnssec_status")]
29630    #[serde(skip_serializing_if = "Option::is_none")]
29631    pub dnssec_status: Option<String>,
29632    #[doc = "DNSSEC Status ID\n\nDescribes the normalized status of DNS Security Extensions (DNSSEC) for a domain.\n\nrecommended"]
29633    #[serde(rename = "dnssec_status_id")]
29634    #[serde(skip_serializing_if = "Option::is_none")]
29635    pub dnssec_status_id: Option<i64>,
29636    #[doc = "Domain\n\nThe domain name corresponding to the WHOIS record.\n\nrecommended"]
29637    #[serde(rename = "domain")]
29638    #[serde(skip_serializing_if = "Option::is_none")]
29639    pub domain: Option<String>,
29640    #[doc = "Domain Contacts\n\nAn array of <code>Domain Contact</code> objects.\n\nrecommended"]
29641    #[serde(rename = "domain_contacts")]
29642    #[serde(skip_serializing_if = "Option::is_none")]
29643    pub domain_contacts: Option<Vec<DomainContact>>,
29644    #[doc = "Registrar Abuse Email Address\n\nThe email address for the registrar's abuse contact\n\noptional"]
29645    #[serde(rename = "email_addr")]
29646    #[serde(skip_serializing_if = "Option::is_none")]
29647    pub email_addr: Option<String>,
29648    #[doc = "ISP Name\n\nThe name of the Internet Service Provider (ISP).\n\noptional"]
29649    #[serde(rename = "isp")]
29650    #[serde(skip_serializing_if = "Option::is_none")]
29651    pub isp: Option<String>,
29652    #[doc = "ISP Org\n\nThe organization name of the Internet Service Provider (ISP). This represents the parent organization or company that owns/operates the ISP. For example, Comcast Corporation would be the ISP org for Xfinity internet service. This attribute helps identify the ultimate provider when ISPs operate under different brand names.\n\noptional"]
29653    #[serde(rename = "isp_org")]
29654    #[serde(skip_serializing_if = "Option::is_none")]
29655    pub isp_org: Option<String>,
29656    #[doc = "Last Updated At\n\nWhen the WHOIS record was last updated or seen at.\n\nrecommended"]
29657    #[serde(rename = "last_seen_time")]
29658    #[serde(skip_serializing_if = "Option::is_none")]
29659    pub last_seen_time: Option<i64>,
29660    #[doc = "Last Updated At\n\nWhen the WHOIS record was last updated or seen at.\n\noptional"]
29661    #[serde(rename = "last_seen_time_dt")]
29662    #[serde(skip_serializing_if = "Option::is_none")]
29663    pub last_seen_time_dt: Option<String>,
29664    #[doc = "Name Servers\n\nA collection of name servers related to a domain registration or other record.\n\nrecommended"]
29665    #[serde(rename = "name_servers")]
29666    #[serde(skip_serializing_if = "Option::is_none")]
29667    pub name_servers: Option<Vec<String>>,
29668    #[doc = "Registrar Abuse Phone Number\n\nThe phone number for the registrar's abuse contact\n\noptional"]
29669    #[serde(rename = "phone_number")]
29670    #[serde(skip_serializing_if = "Option::is_none")]
29671    pub phone_number: Option<String>,
29672    #[doc = "Domain Registrar\n\nThe domain registrar.\n\nrecommended"]
29673    #[serde(rename = "registrar")]
29674    #[serde(skip_serializing_if = "Option::is_none")]
29675    pub registrar: Option<String>,
29676    #[doc = "Domain Status\n\nThe status of a domain and its ability to be transferred, e.g., <code>clientTransferProhibited</code>.\n\nrecommended"]
29677    #[serde(rename = "status")]
29678    #[serde(skip_serializing_if = "Option::is_none")]
29679    pub status: Option<String>,
29680    #[doc = "Subdomains\n\nAn array of subdomain strings. Can be used to collect several subdomains such as those from Domain Generation Algorithms (DGAs).\n\noptional"]
29681    #[serde(rename = "subdomains")]
29682    #[serde(skip_serializing_if = "Option::is_none")]
29683    pub subdomains: Option<Vec<String>>,
29684    #[doc = "Subnet Block\n\nThe IP address block (CIDR) associated with a domain.\n\noptional"]
29685    #[serde(rename = "subnet")]
29686    #[serde(skip_serializing_if = "Option::is_none")]
29687    pub subnet: Option<String>,
29688}
29689#[doc = "Registry Key\n\nThe registry key object describes a Windows registry key.\n\n[] Category:  | Name: reg_key"]
29690#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29691#[serde(default)]
29692#[non_exhaustive]
29693pub struct WinRegKey {
29694    #[doc = "System\n\nThe indication of whether the object is part of the operating system.\n\noptional"]
29695    #[serde(rename = "is_system")]
29696    #[serde(skip_serializing_if = "Option::is_none")]
29697    pub is_system: Option<bool>,
29698    #[doc = "Modified Time\n\nThe time when the registry key was last modified.\n\noptional"]
29699    #[serde(rename = "modified_time")]
29700    #[serde(skip_serializing_if = "Option::is_none")]
29701    pub modified_time: Option<i64>,
29702    #[doc = "Modified Time\n\nThe time when the registry key was last modified.\n\noptional"]
29703    #[serde(rename = "modified_time_dt")]
29704    #[serde(skip_serializing_if = "Option::is_none")]
29705    pub modified_time_dt: Option<String>,
29706    #[doc = "Path\n\nThe full path to the registry key.\n\nrequired"]
29707    #[serde(rename = "path")]
29708    #[serde(skip_serializing_if = "Option::is_none")]
29709    pub path: Option<String>,
29710    #[doc = "Security Descriptor\n\nThe security descriptor of the registry key.\n\noptional"]
29711    #[serde(rename = "security_descriptor")]
29712    #[serde(skip_serializing_if = "Option::is_none")]
29713    pub security_descriptor: Option<String>,
29714}
29715#[doc = "Registry Value\n\nThe registry value object describes a Windows registry value.\n\n[] Category:  | Name: reg_value"]
29716#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29717#[serde(default)]
29718#[non_exhaustive]
29719pub struct WinRegValue {
29720    #[doc = "Data\n\nThe data of the registry value. Where the value type is known, implementers should instead use a type-specific attribute, i.e. <code>reg_binary_data</code>, <code>reg_integer_data</code>, <code>reg_string_data</code>, or <code>reg_string_list_data</code>.\n\noptional"]
29721    #[serde(rename = "data")]
29722    #[serde(skip_serializing_if = "Option::is_none")]
29723    pub data: Option<serde_json::Value>,
29724    #[doc = "Default Value\n\nThe indication of whether the value is from a default value name. For example, the value name could be missing.\n\noptional"]
29725    #[serde(rename = "is_default")]
29726    #[serde(skip_serializing_if = "Option::is_none")]
29727    pub is_default: Option<bool>,
29728    #[doc = "System\n\nThe indication of whether the object is part of the operating system.\n\noptional"]
29729    #[serde(rename = "is_system")]
29730    #[serde(skip_serializing_if = "Option::is_none")]
29731    pub is_system: Option<bool>,
29732    #[doc = "Modified Time\n\nThe time when the registry value was last modified.\n\noptional"]
29733    #[serde(rename = "modified_time")]
29734    #[serde(skip_serializing_if = "Option::is_none")]
29735    pub modified_time: Option<i64>,
29736    #[doc = "Modified Time\n\nThe time when the registry value was last modified.\n\noptional"]
29737    #[serde(rename = "modified_time_dt")]
29738    #[serde(skip_serializing_if = "Option::is_none")]
29739    pub modified_time_dt: Option<String>,
29740    #[doc = "Name\n\nThe name of the registry value.\n\nrequired"]
29741    #[serde(rename = "name")]
29742    #[serde(skip_serializing_if = "Option::is_none")]
29743    pub name: Option<String>,
29744    #[doc = "Path\n\nThe full path to the registry key, where the value is located.\n\nrequired"]
29745    #[serde(rename = "path")]
29746    #[serde(skip_serializing_if = "Option::is_none")]
29747    pub path: Option<String>,
29748    #[doc = "Registry Binary Data\n\nThe data of the registry value when <code>type_id</code> is <code>REG_BINARY</code> or <code>REG_NONE</code>.\n\noptional"]
29749    #[serde(rename = "reg_binary_data")]
29750    #[serde(skip_serializing_if = "Option::is_none")]
29751    pub reg_binary_data: Option<String>,
29752    #[doc = "Registry Integer Data\n\nThe data of the registry value when <code>type_id</code> is <code>REG_DWORD</code>, <code>REG_DWORD_BIG_ENDIAN</code>, or <code>REG_QWORD</code>.\n\noptional"]
29753    #[serde(rename = "reg_integer_data")]
29754    #[serde(skip_serializing_if = "Option::is_none")]
29755    pub reg_integer_data: Option<i64>,
29756    #[doc = "Registry String Data\n\nThe data of the registry value when <code>type_id</code> is <code>REG_SZ</code>, <code>REG_EXPAND_SZ</code>, or <code>REG_LINK</code>.\n\noptional"]
29757    #[serde(rename = "reg_string_data")]
29758    #[serde(skip_serializing_if = "Option::is_none")]
29759    pub reg_string_data: Option<String>,
29760    #[doc = "Registry String List Data\n\nThe data of the registry value when <code>type_id</code> is <code>REG_MULTI_SZ</code>.\n\noptional"]
29761    #[serde(rename = "reg_string_list_data")]
29762    #[serde(skip_serializing_if = "Option::is_none")]
29763    pub reg_string_list_data: Option<Vec<String>>,
29764    #[doc = "Type\n\nA string representation of the value type as specified in <a target='_blank' href='https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types'>Registry Value Types</a>.\n\noptional"]
29765    #[serde(rename = "type")]
29766    #[serde(skip_serializing_if = "Option::is_none")]
29767    pub r#type: Option<String>,
29768    #[doc = "Type ID\n\nThe value type ID.\n\nrecommended"]
29769    #[serde(rename = "type_id")]
29770    #[serde(skip_serializing_if = "Option::is_none")]
29771    pub type_id: Option<i64>,
29772}
29773#[doc = "Windows Resource\n\nThe Windows resource object describes a resource object managed by Windows, such as mutant or timer.\n\n[] Category:  | Name: win_resource\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
29774#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29775#[serde(default)]
29776#[non_exhaustive]
29777pub struct WinWinResource {
29778    #[doc = "Created Time\n\nThe time when the resource was created.\n\noptional"]
29779    #[serde(rename = "created_time")]
29780    #[serde(skip_serializing_if = "Option::is_none")]
29781    pub created_time: Option<i64>,
29782    #[doc = "Created Time\n\nThe time when the resource was created.\n\noptional"]
29783    #[serde(rename = "created_time_dt")]
29784    #[serde(skip_serializing_if = "Option::is_none")]
29785    pub created_time_dt: Option<String>,
29786    #[doc = "Data\n\nAdditional data describing the resource.\n\noptional"]
29787    #[serde(rename = "data")]
29788    #[serde(skip_serializing_if = "Option::is_none")]
29789    pub data: Option<serde_json::Value>,
29790    #[doc = "Data Classification\n\nThe Data Classification object includes information about data classification levels and data category types.\n\nrecommended"]
29791    #[serde(rename = "data_classification")]
29792    #[serde(skip_serializing_if = "Option::is_none")]
29793    pub data_classification: Option<Box<DataClassification>>,
29794    #[doc = "Data Classification\n\nA list of Data Classification objects, that include information about data classification levels and data category types, identified by a classifier.\n\nrecommended"]
29795    #[serde(rename = "data_classifications")]
29796    #[serde(skip_serializing_if = "Option::is_none")]
29797    pub data_classifications: Option<Vec<DataClassification>>,
29798    #[doc = "Details\n\nThe string detailing the attributes of the resource object.\n\noptional"]
29799    #[serde(rename = "details")]
29800    #[serde(skip_serializing_if = "Option::is_none")]
29801    pub details: Option<String>,
29802    #[doc = "Labels\n\nThe list of labels associated to the resource.\n\noptional"]
29803    #[serde(rename = "labels")]
29804    #[serde(skip_serializing_if = "Option::is_none")]
29805    pub labels: Option<Vec<String>>,
29806    #[doc = "Modified Time\n\nThe time when the resource was last modified.\n\noptional"]
29807    #[serde(rename = "modified_time")]
29808    #[serde(skip_serializing_if = "Option::is_none")]
29809    pub modified_time: Option<i64>,
29810    #[doc = "Modified Time\n\nThe time when the resource was last modified.\n\noptional"]
29811    #[serde(rename = "modified_time_dt")]
29812    #[serde(skip_serializing_if = "Option::is_none")]
29813    pub modified_time_dt: Option<String>,
29814    #[doc = "Name\n\nThe name of the resource object.\n\nrecommended"]
29815    #[serde(rename = "name")]
29816    #[serde(skip_serializing_if = "Option::is_none")]
29817    pub name: Option<String>,
29818    #[doc = "Service Name\n\nThe Windows service acting as the object server for the resource object, such as Security or Security Account Manager.\n\noptional"]
29819    #[serde(rename = "svc_name")]
29820    #[serde(skip_serializing_if = "Option::is_none")]
29821    pub svc_name: Option<String>,
29822    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the resource.\n\noptional"]
29823    #[serde(rename = "tags")]
29824    #[serde(skip_serializing_if = "Option::is_none")]
29825    pub tags: Option<Vec<KeyValueObject>>,
29826    #[doc = "Type\n\nThe type of the Windows resource object.\n\noptional"]
29827    #[serde(rename = "type")]
29828    #[serde(skip_serializing_if = "Option::is_none")]
29829    pub r#type: Option<String>,
29830    #[doc = "Type ID\n\nThe normalized type identifier of the Windows resource object accessed.\n\nrequired"]
29831    #[serde(rename = "type_id")]
29832    #[serde(skip_serializing_if = "Option::is_none")]
29833    pub type_id: Option<i64>,
29834    #[doc = "Unique ID\n\nThe Windows provided handle identifier for the resource object\n\nrecommended"]
29835    #[serde(rename = "uid")]
29836    #[serde(skip_serializing_if = "Option::is_none")]
29837    pub uid: Option<String>,
29838    #[doc = "Alternate ID\n\nThe alternative unique identifier of the resource.\n\noptional"]
29839    #[serde(rename = "uid_alt")]
29840    #[serde(skip_serializing_if = "Option::is_none")]
29841    pub uid_alt: Option<String>,
29842}
29843#[doc = "Windows Service\n\nThe Windows Service object describes a Windows service.\n\n[] Category:  | Name: win_service\n\n**Constraints:**\n* at_least_one: `[name`,`uid]`\n"]
29844#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
29845#[serde(default)]
29846#[non_exhaustive]
29847pub struct WinWinService {
29848    #[doc = "Command Line\n\nThe full command line used to launch the service.\n\nrecommended"]
29849    #[serde(rename = "cmd_line")]
29850    #[serde(skip_serializing_if = "Option::is_none")]
29851    pub cmd_line: Option<String>,
29852    #[doc = "Hosting Process\n\nThe process that is hosting this service.\n\noptional"]
29853    #[serde(rename = "hosting_process")]
29854    #[serde(skip_serializing_if = "Option::is_none")]
29855    pub hosting_process: Option<Box<ProcessEntity>>,
29856    #[doc = "Labels\n\nThe list of labels associated with the service.\n\noptional"]
29857    #[serde(rename = "labels")]
29858    #[serde(skip_serializing_if = "Option::is_none")]
29859    pub labels: Option<Vec<String>>,
29860    #[doc = "Load Order Group\n\nThe name of the load ordering group of which this service is a member.\n\nrecommended"]
29861    #[serde(rename = "load_order_group")]
29862    #[serde(skip_serializing_if = "Option::is_none")]
29863    pub load_order_group: Option<String>,
29864    #[doc = "Name\n\nThe unique name of the service.\n\nrequired"]
29865    #[serde(rename = "name")]
29866    #[serde(skip_serializing_if = "Option::is_none")]
29867    pub name: Option<String>,
29868    #[doc = "Service Category\n\nThe service category, normalized to the caption of the service_category_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
29869    #[serde(rename = "service_category")]
29870    #[serde(skip_serializing_if = "Option::is_none")]
29871    pub service_category: Option<String>,
29872    #[doc = "Service Category ID\n\nThe normalized identifier of the service category.\n\nrecommended"]
29873    #[serde(rename = "service_category_id")]
29874    #[serde(skip_serializing_if = "Option::is_none")]
29875    pub service_category_id: Option<i64>,
29876    #[doc = "Service Dependencies\n\nThe names of other services upon which this service has a dependency.\n\nrecommended"]
29877    #[serde(rename = "service_dependencies")]
29878    #[serde(skip_serializing_if = "Option::is_none")]
29879    pub service_dependencies: Option<Vec<String>>,
29880    #[doc = "Service DLL\n\nFor a shared user mode service (<code>service_type_id</code> is 4) this is the DLL that gets loaded by the generic service host process (e.g. <code>svchost.exe</code>) to implement the service.\n\noptional"]
29881    #[serde(rename = "service_dll_file")]
29882    #[serde(skip_serializing_if = "Option::is_none")]
29883    pub service_dll_file: Option<Box<File>>,
29884    #[doc = "Service Error Control\n\nThe service error control, normalized to the caption of the <code>service_error_control_id</code> value. In the case of 'Other', it is defined by the event source.\n\noptional"]
29885    #[serde(rename = "service_error_control")]
29886    #[serde(skip_serializing_if = "Option::is_none")]
29887    pub service_error_control: Option<String>,
29888    #[doc = "Service Error Control ID\n\nThe normalized identifier of the service error control.\n\nrecommended"]
29889    #[serde(rename = "service_error_control_id")]
29890    #[serde(skip_serializing_if = "Option::is_none")]
29891    pub service_error_control_id: Option<i64>,
29892    #[doc = "Service File\n\nFor a user mode service (<code>service_type_id</code> 3 or 4) this is the executable program that the SCM launches as the service process.<br>For a kernel mode driver (<code>service_type_id</code> 1 or 2) this is the driver file loaded into the kernel at the request of the SCM. \n\nrecommended"]
29893    #[serde(rename = "service_file")]
29894    #[serde(skip_serializing_if = "Option::is_none")]
29895    pub service_file: Option<Box<File>>,
29896    #[doc = "Service Start Name\n\nFor a user mode service, this attribute represents the name of the account under which the service is run. For a kernel mode driver, this attribute represents the object name used to load the driver.\n\nrecommended"]
29897    #[serde(rename = "service_start_name")]
29898    #[serde(skip_serializing_if = "Option::is_none")]
29899    pub service_start_name: Option<String>,
29900    #[doc = "Service Start Type\n\nThe service start type, normalized to the caption of the <code>service_start_type_id</code> value. In the case of 'Other', it is defined by the event source.\n\noptional"]
29901    #[serde(rename = "service_start_type")]
29902    #[serde(skip_serializing_if = "Option::is_none")]
29903    pub service_start_type: Option<String>,
29904    #[doc = "Service Start Type ID\n\nThe normalized identifier of the service start type.\n\nrecommended"]
29905    #[serde(rename = "service_start_type_id")]
29906    #[serde(skip_serializing_if = "Option::is_none")]
29907    pub service_start_type_id: Option<i64>,
29908    #[doc = "Service Type\n\nThe service type, normalized to the caption of the service_type_id value. In the case of 'Other', it is defined by the event source.\n\noptional"]
29909    #[serde(rename = "service_type")]
29910    #[serde(skip_serializing_if = "Option::is_none")]
29911    pub service_type: Option<String>,
29912    #[doc = "Service Type ID\n\nThe normalized identifier of the service type.\n\nrecommended"]
29913    #[serde(rename = "service_type_id")]
29914    #[serde(skip_serializing_if = "Option::is_none")]
29915    pub service_type_id: Option<i64>,
29916    #[doc = "Tags\n\nThe list of tags; <code>{key:value}</code> pairs associated to the service.\n\noptional"]
29917    #[serde(rename = "tags")]
29918    #[serde(skip_serializing_if = "Option::is_none")]
29919    pub tags: Option<Vec<KeyValueObject>>,
29920    #[doc = "Unique ID\n\nThe unique identifier of the service.\n\nrecommended"]
29921    #[serde(rename = "uid")]
29922    #[serde(skip_serializing_if = "Option::is_none")]
29923    pub uid: Option<String>,
29924    #[doc = "Version\n\nThe version of the service.\n\nrecommended"]
29925    #[serde(rename = "version")]
29926    #[serde(skip_serializing_if = "Option::is_none")]
29927    pub version: Option<String>,
29928}