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