Skip to main content

alpaca_data/stocks/
model.rs

1use rust_decimal::Decimal;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
5pub struct Auction {
6    pub t: Option<String>,
7    pub x: Option<String>,
8    #[serde(
9        default,
10        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
11    )]
12    pub p: Option<Decimal>,
13    pub s: Option<u64>,
14    pub c: Option<String>,
15}
16
17#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
18pub struct DailyAuction {
19    pub d: Option<String>,
20    #[serde(default)]
21    pub o: Vec<Auction>,
22    #[serde(default)]
23    pub c: Vec<Auction>,
24}
25
26#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
27pub struct Bar {
28    pub t: Option<String>,
29    #[serde(
30        default,
31        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
32    )]
33    pub o: Option<Decimal>,
34    #[serde(
35        default,
36        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
37    )]
38    pub h: Option<Decimal>,
39    #[serde(
40        default,
41        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
42    )]
43    pub l: Option<Decimal>,
44    #[serde(
45        default,
46        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
47    )]
48    pub c: Option<Decimal>,
49    pub v: Option<u64>,
50    pub n: Option<u64>,
51    #[serde(
52        default,
53        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
54    )]
55    pub vw: Option<Decimal>,
56}
57
58#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
59pub struct Quote {
60    pub t: Option<String>,
61    pub bx: Option<String>,
62    #[serde(
63        default,
64        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
65    )]
66    pub bp: Option<Decimal>,
67    pub bs: Option<u64>,
68    pub ax: Option<String>,
69    #[serde(
70        default,
71        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
72    )]
73    pub ap: Option<Decimal>,
74    #[serde(rename = "as")]
75    pub r#as: Option<u64>,
76    pub c: Option<Vec<String>>,
77    pub z: Option<String>,
78}
79
80#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
81pub struct Trade {
82    pub t: Option<String>,
83    pub x: Option<String>,
84    #[serde(
85        default,
86        deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
87    )]
88    pub p: Option<Decimal>,
89    pub s: Option<u64>,
90    pub i: Option<u64>,
91    pub c: Option<Vec<String>>,
92    pub z: Option<String>,
93    pub u: Option<String>,
94}
95
96#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
97pub struct Snapshot {
98    #[serde(rename = "latestTrade")]
99    pub latest_trade: Option<Trade>,
100    #[serde(rename = "latestQuote")]
101    pub latest_quote: Option<Quote>,
102    #[serde(rename = "minuteBar")]
103    pub minute_bar: Option<Bar>,
104    #[serde(rename = "dailyBar")]
105    pub daily_bar: Option<Bar>,
106    #[serde(rename = "prevDailyBar")]
107    pub prev_daily_bar: Option<Bar>,
108}