1use serde::Serialize;
2
3#[derive(Debug, Clone, Serialize, Default)]
5pub struct Event {
6 pub error_type: String,
7 pub message: String,
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub source: Option<String>,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub route_or_procedure: Option<String>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub screen: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub stack: Option<String>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub http_status: Option<u16>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub request_id: Option<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub user_id_hash: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub metadata: Option<serde_json::Value>,
24}
25
26#[derive(Debug, Serialize)]
28pub(crate) struct IngestEvent {
29 pub timestamp: i64,
30 pub source: String,
31 pub environment: String,
32 pub release: String,
33 pub error_type: String,
34 pub message: String,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub route_or_procedure: Option<String>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub screen: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub stack: Option<String>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub http_status: Option<u16>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub request_id: Option<String>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub user_id_hash: Option<String>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub metadata: Option<serde_json::Value>,
49}