1#[derive(Debug, Deserialize, Serialize)]
5pub struct AccessTokenResponse {
6 pub access_token: String,
7 pub scope: String,
8 pub expires_in: i64,
9}
10
11#[derive(Clone, Debug, Deserialize, Serialize)]
13pub struct GetPriceHistoryResponse {
14 pub candles: Vec<Candle>,
15 pub empty: bool,
16 pub symbol: String,
17}
18
19#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
21pub struct Candle {
22 pub close: f64,
23 pub datetime: usize,
24 pub high: f64,
25 pub low: f64,
26 pub open: f64,
27 pub volume: i64,
28}
29
30#[derive(Clone, Debug, Deserialize, Serialize)]
32#[serde(rename_all = "camelCase")]
33pub struct Mover {
34 pub change: f64,
35 pub description: String,
36 pub direction: String,
37 pub last: f64,
38 pub symbol: String,
39 pub total_volume: i64,
40}
41
42#[derive(Clone, Debug, Deserialize, Serialize)]
45#[serde(rename_all = "camelCase")]
46pub struct Account {
47 pub securities_account: SecuritiesAccount,
48}
49
50#[derive(Clone, Debug, Deserialize, Serialize)]
52#[serde(untagged)]
53pub enum SecuritiesAccount {
54 #[serde(rename_all = "camelCase")]
55 MarginAccount {
56 r#type: String,
57 account_id: String,
58 round_trips: usize,
59 is_day_trader: bool,
60 is_closing_only_restricted: bool,
61 initial_balances: InitialBalances,
62 current_balances: CurrentBalances,
63 projected_balances: ProjectedBalances,
64 },
65}
66
67#[derive(Clone, Debug, Deserialize, Serialize)]
69#[serde(rename_all = "camelCase")]
70pub struct InitialBalances {
71 pub account_value: f64,
72 pub accrued_interest: f64,
73 pub available_funds_non_marginable_trade: Option<f64>,
74 pub bond_value: f64,
75 pub buying_power: Option<f64>,
76 pub cash_available_for_trading: f64,
77 pub cash_available_for_withdrawal: Option<f64>,
78 pub cash_balance: f64,
79 pub cash_debit_call_value: Option<f64>,
80 pub cash_receipts: f64,
81 pub day_trading_buying_power: Option<f64>,
82 pub day_trading_buying_power_call: Option<f64>,
83 pub day_trading_equity_call: Option<f64>,
84 pub equity: Option<f64>,
85 pub equity_percentage: Option<f64>,
86 pub is_in_call: bool,
87 pub liquidation_value: f64,
88 pub long_margin_value: Option<f64>,
89 pub long_option_market_value: f64,
90 pub long_stock_value: Option<f64>,
91 pub maintenance_call: Option<f64>,
92 pub maintenance_requirement: Option<f64>,
93 pub margin: Option<f64>,
94 pub margin_balance: Option<f64>,
95 pub margin_equity: Option<f64>,
96 pub money_market_fund: f64,
97 pub mutual_fund_value: f64,
98 pub pending_deposits: f64,
99 pub reg_t_call: Option<f64>,
100 pub short_balance: Option<f64>,
101 pub short_margin_value: Option<f64>,
102 pub short_option_market_value: f64,
103 pub short_stock_value: f64,
104 pub total_cash: Option<f64>,
105 pub unsettled_cash: Option<f64>,
106}
107
108#[derive(Clone, Debug, Deserialize, Serialize)]
110#[serde(rename_all = "camelCase")]
111pub struct CurrentBalances {
112 pub accrued_interest: f64,
113 pub available_funds: Option<f64>,
114 pub available_funds_non_marginable_trade: Option<f64>,
115 pub bond_value: f64,
116 pub buying_power: Option<f64>,
117 pub buying_power_non_marginable_trade: Option<f64>,
118 pub cash_available_for_trading: Option<f64>,
119 pub cash_available_for_withdrawal: Option<f64>,
120 pub cash_balance: f64,
121 pub cash_call: Option<f64>,
122 pub cash_debit_call_value: Option<f64>,
123 pub cash_receipts: f64,
124 pub day_trading_buying_power: Option<f64>,
125 pub equity: Option<f64>,
126 pub equity_percentage: Option<f64>,
127 pub liquidation_value: f64,
128 pub long_margin_value: Option<f64>,
129 pub long_market_value: f64,
130 pub long_non_marginable_market_value: Option<f64>,
131 pub long_option_market_value: f64,
132 pub maintenance_call: Option<f64>,
133 pub maintenance_requirement: Option<f64>,
134 pub margin_balance: Option<f64>,
135 pub money_market_fund: f64,
136 pub mutual_fund_value: f64,
137 pub pending_deposits: f64,
138 pub reg_t_call: Option<f64>,
139 pub savings: f64,
140 pub short_balance: Option<f64>,
141 pub short_margin_value: Option<f64>,
142 pub short_market_value: f64,
143 pub short_option_market_value: f64,
144 pub sma: Option<f64>,
145 pub total_cash: Option<f64>,
146 pub unsettled_cash: Option<f64>,
147}
148
149#[derive(Clone, Debug, Deserialize, Serialize)]
151#[serde(rename_all = "camelCase")]
152pub struct ProjectedBalances {
153 pub available_funds: Option<f64>,
154 pub available_funds_non_marginable_trade: Option<f64>,
155 pub buying_power: Option<f64>,
156 pub cash_available_for_trading: Option<f64>,
157 pub cash_available_for_withdrawal: Option<f64>,
158 pub day_trading_buying_power: Option<f64>,
159 pub day_trading_buying_power_call: Option<f64>,
160 pub is_in_call: Option<bool>,
161 pub maintenance_call: Option<f64>,
162 pub reg_t_call: Option<f64>,
163 pub stock_buying_power: Option<f64>,
164}