architect_api/boss/
mod.rs

1use crate::symbology::TradableProduct;
2use chrono::{DateTime, NaiveDate, Utc};
3use rust_decimal::Decimal;
4use schemars::JsonSchema;
5use serde::{Deserialize, Serialize};
6use uuid::Uuid;
7
8pub mod protocol;
9
10#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
11#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
12pub struct Statement {
13    pub statement_uuid: Uuid,
14    pub account: String,
15    pub statement_type: String,
16    pub clearing_firm: String,
17    pub statement_date: NaiveDate,
18    pub filename: String,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
22#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
23pub struct Deposit {
24    pub account: String,
25    pub amount: Decimal,
26    pub timestamp: DateTime<Utc>,
27    pub description: String,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
31#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
32pub struct Withdrawal {
33    pub account: String,
34    pub amount: Decimal,
35    pub timestamp: DateTime<Utc>,
36    pub description: String,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
40#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
41pub struct RqdAccountStatistics {
42    pub account_number: String,
43    pub available_cash_balance: Option<Decimal>,
44    pub account_type: Option<String>,
45    pub overnight_buying_power: Option<Decimal>,
46    pub cash_available_for_withdrawal: Option<Decimal>,
47    pub cumulative_day_trade_pnl: Option<Decimal>,
48    pub is_day_trader: Option<String>,
49    pub day_trading_buying_power: Option<Decimal>,
50    pub day_trading_margin_call_amount: Option<Decimal>,
51    pub day_trading_buying_power_high_water_mark: Option<Decimal>,
52    pub start_of_day_day_trading_buying_power: Option<Decimal>,
53    pub day_trading_buying_power_maintenance_margin_multiplier: Option<Decimal>,
54    pub day_trading_minimum_equity_margin_call_amount: Option<Decimal>,
55    pub day_trading_house_minimum_equity_margin_call_amount: Option<Decimal>,
56    pub total_equity: Option<Decimal>,
57    pub house_margin_requirement_adjustment_factor: Option<Decimal>,
58    pub margin_call_amount: Option<Decimal>,
59    pub maintenance_margin_requirement: Option<Decimal>,
60    pub excess_sma_amount: Option<Decimal>,
61    pub reg_t_margin_call_amount: Option<Decimal>,
62    pub reg_t_initial_margin_requirement: Option<Decimal>,
63    pub house_initial_margin_requirement_adjustment_factor: Option<Decimal>,
64    pub house_margin_call_amount: Option<Decimal>,
65    pub house_margin_requirement: Option<Decimal>,
66    pub trade_date_total_long_market_value: Option<Decimal>,
67    pub market_value_adjustment_factor: Option<Decimal>,
68    pub marginable_equity: Option<Decimal>,
69    pub trade_date_option_long_market_value: Option<Decimal>,
70    pub number_open_day_trading_margin_calls: Option<Decimal>,
71    pub start_of_day_day_trading_buying_power_margin_call_amount: Option<Decimal>,
72    pub start_of_day_maintenance_margin_call_amount: Option<Decimal>,
73    pub start_of_day_reg_t_margin_call_amount: Option<Decimal>,
74    pub start_of_day_house_margin_call_amount: Option<Decimal>,
75    pub usable_sma_balance: Option<Decimal>,
76    pub option_only_maintenance_margin_requirement: Option<Decimal>,
77    pub option_trade_date_short_market_value: Option<Decimal>,
78    pub reg_t_maintenance_margin_requirement_adjustment_factor: Option<String>,
79    pub strategy_based_relief_adjustment_factor: Option<Decimal>,
80    pub settlement_date_cash_balance: Option<Decimal>,
81    pub settlement_date_long_market_value: Option<Decimal>,
82    pub settlement_date_option_long_market_value: Option<Decimal>,
83    pub settlement_date_option_short_market_value: Option<Decimal>,
84    pub settlement_date_short_market_value: Option<Decimal>,
85    pub overall_current_sma_balance: Option<Decimal>,
86    pub trade_date_total_short_market_value: Option<Decimal>,
87    pub as_of_date: Option<String>,
88    pub trade_date_cash_balance: Option<Decimal>,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
92#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
93pub struct OptionsTransaction {
94    pub timestamp: DateTime<Utc>,
95    pub transaction_type: String,
96    pub clearing_firm_account: String,
97    pub tradable_product: TradableProduct,
98    pub quantity: Decimal,
99    pub price: Option<Decimal>,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
103#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
104pub struct MarginCall {
105    pub account_number: String,
106    pub call_type: String,
107    pub description: String,
108    pub call_amount: Decimal,
109    pub satisfied_amount: Decimal,
110    pub status: String,
111    pub remarks: String,
112    pub due_date: Option<DateTime<Utc>>,
113    pub create_date: Option<DateTime<Utc>>,
114    pub correspondent_id: String,
115    pub office: String,
116    pub system_date: Option<String>,
117}