1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
7pub struct Event {
8 pub ticker: String,
10 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub numeric_id: Option<String>,
13 pub title: String,
15 #[serde(default, skip_serializing_if = "Option::is_none")]
17 pub description: Option<String>,
18 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub category: Option<String>,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
23 pub series_ticker: Option<String>,
24 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub status: Option<String>,
27 #[serde(default)]
29 pub market_tickers: Vec<String>,
30 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub start_ts: Option<DateTime<Utc>>,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub end_ts: Option<DateTime<Utc>>,
36 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub volume: Option<f64>,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
41 pub open_interest: Option<f64>,
42 #[serde(default, skip_serializing_if = "Option::is_none")]
44 pub mutually_exclusive: Option<bool>,
45 #[serde(default, skip_serializing_if = "Option::is_none")]
47 pub last_updated_ts: Option<DateTime<Utc>>,
48}