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 Series {
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 category: Option<String>,
18 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub frequency: Option<String>,
21 #[serde(default)]
23 pub tags: Vec<String>,
24 #[serde(default)]
26 pub settlement_sources: Vec<SettlementSource>,
27 #[serde(default, skip_serializing_if = "Option::is_none")]
29 pub fee_type: Option<String>,
30 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub volume: Option<f64>,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub last_updated_ts: Option<DateTime<Utc>>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
40#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
41pub struct SettlementSource {
42 #[serde(default, skip_serializing_if = "Option::is_none")]
44 pub name: Option<String>,
45 #[serde(default, skip_serializing_if = "Option::is_none")]
47 pub url: Option<String>,
48}