architect-api 11.6.3

Architect.xyz Trading Platform API
Documentation
use crate::symbology::TradableProduct;
use chrono::{DateTime, NaiveDate, Utc};
use rust_decimal::Decimal;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use uuid::Uuid;

pub mod protocol;

#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
pub struct Statement {
    pub statement_uuid: Uuid,
    pub account: String,
    pub statement_type: String,
    pub clearing_firm: String,
    pub statement_date: NaiveDate,
    pub filename: String,
}

#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
pub struct Deposit {
    pub account: String,
    pub amount: Decimal,
    pub timestamp: DateTime<Utc>,
    pub description: String,
}

#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
pub struct Withdrawal {
    pub account: String,
    pub amount: Decimal,
    pub timestamp: DateTime<Utc>,
    pub description: String,
}

#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
pub struct RqdAccountStatistics {
    pub account_number: String,
    pub available_cash_balance: Option<Decimal>,
    pub account_type: Option<String>,
    pub overnight_buying_power: Option<Decimal>,
    pub cash_available_for_withdrawal: Option<Decimal>,
    pub cumulative_day_trade_pnl: Option<Decimal>,
    pub is_day_trader: Option<String>,
    pub day_trading_buying_power: Option<Decimal>,
    pub day_trading_margin_call_amount: Option<Decimal>,
    pub day_trading_buying_power_high_water_mark: Option<Decimal>,
    pub start_of_day_day_trading_buying_power: Option<Decimal>,
    pub day_trading_buying_power_maintenance_margin_multiplier: Option<Decimal>,
    pub day_trading_minimum_equity_margin_call_amount: Option<Decimal>,
    pub day_trading_house_minimum_equity_margin_call_amount: Option<Decimal>,
    pub total_equity: Option<Decimal>,
    pub house_margin_requirement_adjustment_factor: Option<Decimal>,
    pub margin_call_amount: Option<Decimal>,
    pub maintenance_margin_requirement: Option<Decimal>,
    pub excess_sma_amount: Option<Decimal>,
    pub reg_t_margin_call_amount: Option<Decimal>,
    pub reg_t_initial_margin_requirement: Option<Decimal>,
    pub house_initial_margin_requirement_adjustment_factor: Option<Decimal>,
    pub house_margin_call_amount: Option<Decimal>,
    pub house_margin_requirement: Option<Decimal>,
    pub trade_date_total_long_market_value: Option<Decimal>,
    pub market_value_adjustment_factor: Option<Decimal>,
    pub marginable_equity: Option<Decimal>,
    pub trade_date_option_long_market_value: Option<Decimal>,
    pub number_open_day_trading_margin_calls: Option<Decimal>,
    pub start_of_day_day_trading_buying_power_margin_call_amount: Option<Decimal>,
    pub start_of_day_maintenance_margin_call_amount: Option<Decimal>,
    pub start_of_day_reg_t_margin_call_amount: Option<Decimal>,
    pub start_of_day_house_margin_call_amount: Option<Decimal>,
    pub usable_sma_balance: Option<Decimal>,
    pub option_only_maintenance_margin_requirement: Option<Decimal>,
    pub option_trade_date_short_market_value: Option<Decimal>,
    pub reg_t_maintenance_margin_requirement_adjustment_factor: Option<String>,
    pub strategy_based_relief_adjustment_factor: Option<Decimal>,
    pub settlement_date_cash_balance: Option<Decimal>,
    pub settlement_date_long_market_value: Option<Decimal>,
    pub settlement_date_option_long_market_value: Option<Decimal>,
    pub settlement_date_option_short_market_value: Option<Decimal>,
    pub settlement_date_short_market_value: Option<Decimal>,
    pub overall_current_sma_balance: Option<Decimal>,
    pub trade_date_total_short_market_value: Option<Decimal>,
    pub as_of_date: Option<String>,
    pub trade_date_cash_balance: Option<Decimal>,
}

#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
pub struct OptionsTransaction {
    pub timestamp: DateTime<Utc>,
    pub transaction_type: String,
    pub clearing_firm_account: String,
    pub tradable_product: TradableProduct,
    pub quantity: Decimal,
    pub price: Option<Decimal>,
}

#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[cfg_attr(feature = "graphql", derive(juniper::GraphQLObject))]
pub struct MarginCall {
    pub account_number: String,
    pub call_type: String,
    pub description: String,
    pub call_amount: Decimal,
    pub satisfied_amount: Decimal,
    pub status: String,
    pub remarks: String,
    pub due_date: Option<DateTime<Utc>>,
    pub create_date: Option<DateTime<Utc>>,
    pub correspondent_id: String,
    pub office: String,
    pub system_date: Option<String>,
}