use chrono::NaiveDate;
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use super::common::{AssetCategory, OptionAction, TransferType};
use crate::parsers::xml_utils::{
deserialize_flex_date, deserialize_optional_date, deserialize_optional_decimal,
};
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct AccountInformation {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@accountType", default)]
pub account_type: Option<String>,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(rename = "@name", default)]
pub name: Option<String>,
#[serde(rename = "@masterName", default)]
pub master_name: Option<String>,
#[serde(rename = "@customerType", default)]
pub customer_type: Option<String>,
#[serde(
rename = "@dateOpened",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date_opened: Option<NaiveDate>,
#[serde(
rename = "@dateFunded",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date_funded: Option<NaiveDate>,
#[serde(
rename = "@dateClosed",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date_closed: Option<NaiveDate>,
#[serde(rename = "@primaryEmail", default)]
pub primary_email: Option<String>,
#[serde(rename = "@streetAddress", default)]
pub street_address: Option<String>,
#[serde(rename = "@streetAddress2", default)]
pub street_address2: Option<String>,
#[serde(rename = "@city", default)]
pub city: Option<String>,
#[serde(rename = "@state", default)]
pub state: Option<String>,
#[serde(rename = "@country", default)]
pub country: Option<String>,
#[serde(rename = "@postalCode", default)]
pub postal_code: Option<String>,
#[serde(rename = "@accountCapabilities", default)]
pub account_capabilities: Option<String>,
#[serde(rename = "@tradingPermissions", default)]
pub trading_permissions: Option<String>,
#[serde(rename = "@registeredRepName", default)]
pub registered_rep_name: Option<String>,
#[serde(rename = "@registeredRepPhone", default)]
pub registered_rep_phone: Option<String>,
#[serde(rename = "@ibEntity", default)]
pub ib_entity: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ChangeInNAV {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(rename = "@fromDate", deserialize_with = "deserialize_flex_date")]
pub from_date: NaiveDate,
#[serde(rename = "@toDate", deserialize_with = "deserialize_flex_date")]
pub to_date: NaiveDate,
#[serde(rename = "@startingValue")]
pub starting_value: Decimal,
#[serde(rename = "@endingValue")]
pub ending_value: Decimal,
#[serde(
rename = "@mtm",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub mtm: Option<Decimal>,
#[serde(
rename = "@realized",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized: Option<Decimal>,
#[serde(
rename = "@changeInUnrealized",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub change_in_unrealized: Option<Decimal>,
#[serde(
rename = "@depositsWithdrawals",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub deposits_withdrawals: Option<Decimal>,
#[serde(
rename = "@dividends",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub dividends: Option<Decimal>,
#[serde(
rename = "@withholdingTax",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub withholding_tax: Option<Decimal>,
#[serde(
rename = "@changeInDividendAccruals",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub change_in_dividend_accruals: Option<Decimal>,
#[serde(
rename = "@interest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub interest: Option<Decimal>,
#[serde(
rename = "@changeInInterestAccruals",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub change_in_interest_accruals: Option<Decimal>,
#[serde(
rename = "@advisorFees",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub advisor_fees: Option<Decimal>,
#[serde(
rename = "@clientFees",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub client_fees: Option<Decimal>,
#[serde(
rename = "@otherFees",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub other_fees: Option<Decimal>,
#[serde(
rename = "@commissions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commissions: Option<Decimal>,
#[serde(
rename = "@fxTranslation",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_translation: Option<Decimal>,
#[serde(
rename = "@twr",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub twr: Option<Decimal>,
#[serde(
rename = "@corporateActionProceeds",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub corporate_action_proceeds: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct EquitySummaryByReportDateInBase {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@reportDate", deserialize_with = "deserialize_flex_date")]
pub report_date: NaiveDate,
#[serde(
rename = "@cash",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cash: Option<Decimal>,
#[serde(
rename = "@cashLong",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cash_long: Option<Decimal>,
#[serde(
rename = "@cashShort",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cash_short: Option<Decimal>,
#[serde(
rename = "@settledCash",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub settled_cash: Option<Decimal>,
#[serde(
rename = "@slbCashCollateral",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub slb_cash_collateral: Option<Decimal>,
#[serde(
rename = "@stock",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub stock: Option<Decimal>,
#[serde(
rename = "@stockLong",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub stock_long: Option<Decimal>,
#[serde(
rename = "@stockShort",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub stock_short: Option<Decimal>,
#[serde(
rename = "@slbDirectSecuritiesBorrowed",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub slb_direct_securities_borrowed: Option<Decimal>,
#[serde(
rename = "@slbDirectSecuritiesLent",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub slb_direct_securities_lent: Option<Decimal>,
#[serde(
rename = "@options",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub options: Option<Decimal>,
#[serde(
rename = "@optionsLong",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub options_long: Option<Decimal>,
#[serde(
rename = "@optionsShort",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub options_short: Option<Decimal>,
#[serde(
rename = "@bonds",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub bonds: Option<Decimal>,
#[serde(
rename = "@bondsLong",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub bonds_long: Option<Decimal>,
#[serde(
rename = "@bondsShort",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub bonds_short: Option<Decimal>,
#[serde(
rename = "@notes",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub notes: Option<Decimal>,
#[serde(
rename = "@funds",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub funds: Option<Decimal>,
#[serde(
rename = "@futures",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub futures: Option<Decimal>,
#[serde(
rename = "@futuresLong",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub futures_long: Option<Decimal>,
#[serde(
rename = "@futuresShort",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub futures_short: Option<Decimal>,
#[serde(
rename = "@commodities",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commodities: Option<Decimal>,
#[serde(
rename = "@total",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total: Option<Decimal>,
#[serde(
rename = "@totalLong",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_long: Option<Decimal>,
#[serde(
rename = "@totalShort",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_short: Option<Decimal>,
#[serde(
rename = "@interestAccruals",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub interest_accruals: Option<Decimal>,
#[serde(
rename = "@dividendAccruals",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub dividend_accruals: Option<Decimal>,
#[serde(
rename = "@accruedInterest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub accrued_interest: Option<Decimal>,
#[serde(
rename = "@accruedDividend",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub accrued_dividend: Option<Decimal>,
#[serde(
rename = "@softDollars",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub soft_dollars: Option<Decimal>,
#[serde(
rename = "@forexCfdUnrealizedPl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub forex_cfd_unrealized_pl: Option<Decimal>,
#[serde(
rename = "@cfdUnrealizedPl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cfd_unrealized_pl: Option<Decimal>,
#[serde(
rename = "@brokerCashComponent",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub broker_cash_component: Option<Decimal>,
#[serde(
rename = "@brokerInterestAccrualsComponent",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub broker_interest_accruals_component: Option<Decimal>,
#[serde(
rename = "@grossPositionValue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub gross_position_value: Option<Decimal>,
#[serde(
rename = "@netLiquidation",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net_liquidation: Option<Decimal>,
#[serde(
rename = "@netLiquidationUncertainty",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net_liquidation_uncertainty: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct CashReportCurrency {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@currency")]
pub currency: String,
#[serde(rename = "@fromDate", deserialize_with = "deserialize_flex_date")]
pub from_date: NaiveDate,
#[serde(rename = "@toDate", deserialize_with = "deserialize_flex_date")]
pub to_date: NaiveDate,
#[serde(rename = "@startingCash")]
pub starting_cash: Decimal,
#[serde(
rename = "@startingCashSec",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub starting_cash_sec: Option<Decimal>,
#[serde(
rename = "@startingCashCom",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub starting_cash_com: Option<Decimal>,
#[serde(
rename = "@commissions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commissions: Option<Decimal>,
#[serde(
rename = "@commissionsSec",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commissions_sec: Option<Decimal>,
#[serde(
rename = "@commissionsCom",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commissions_com: Option<Decimal>,
#[serde(
rename = "@deposits",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub deposits: Option<Decimal>,
#[serde(
rename = "@withdrawals",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub withdrawals: Option<Decimal>,
#[serde(
rename = "@dividends",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub dividends: Option<Decimal>,
#[serde(
rename = "@brokerInterest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub broker_interest: Option<Decimal>,
#[serde(
rename = "@bondInterest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub bond_interest: Option<Decimal>,
#[serde(
rename = "@withholdingTax",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub withholding_tax: Option<Decimal>,
#[serde(
rename = "@netTradesSales",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net_trades_sales: Option<Decimal>,
#[serde(
rename = "@netTradesPurchases",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net_trades_purchases: Option<Decimal>,
#[serde(
rename = "@accountTransfers",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub account_transfers: Option<Decimal>,
#[serde(
rename = "@internalTransfers",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub internal_transfers: Option<Decimal>,
#[serde(
rename = "@externalTransfers",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub external_transfers: Option<Decimal>,
#[serde(
rename = "@linkingAdjustments",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub linking_adjustments: Option<Decimal>,
#[serde(
rename = "@otherFees",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub other_fees: Option<Decimal>,
#[serde(
rename = "@fxTranslationPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_translation_pnl: Option<Decimal>,
#[serde(
rename = "@billableSalesTax",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub billable_sales_tax: Option<Decimal>,
#[serde(
rename = "@realizedForexPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_forex_pnl: Option<Decimal>,
#[serde(
rename = "@debitCardActivity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub debit_card_activity: Option<Decimal>,
#[serde(
rename = "@clientFees",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub client_fees: Option<Decimal>,
#[serde(
rename = "@cashSettlingMtm",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cash_settling_mtm: Option<Decimal>,
#[serde(
rename = "@softDollars",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub soft_dollars: Option<Decimal>,
#[serde(rename = "@endingCash")]
pub ending_cash: Decimal,
#[serde(
rename = "@endingCashSec",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ending_cash_sec: Option<Decimal>,
#[serde(
rename = "@endingCashCom",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ending_cash_com: Option<Decimal>,
#[serde(
rename = "@endingSettledCash",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ending_settled_cash: Option<Decimal>,
#[serde(
rename = "@endingSettledCashSec",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ending_settled_cash_sec: Option<Decimal>,
#[serde(
rename = "@endingSettledCashCom",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ending_settled_cash_com: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct TradeConfirm {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@execID")]
pub exec_id: String,
#[serde(rename = "@transactionID", default)]
pub transaction_id: Option<String>,
#[serde(rename = "@tradeID", default)]
pub trade_id: Option<String>,
#[serde(rename = "@orderID", default)]
pub order_id: Option<String>,
#[serde(rename = "@tradeDate", deserialize_with = "deserialize_flex_date")]
pub trade_date: NaiveDate,
#[serde(rename = "@tradeTime", default)]
pub trade_time: Option<String>,
#[serde(rename = "@dateTime", default)]
pub date_time: Option<String>,
#[serde(
rename = "@settleDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub settle_date: Option<NaiveDate>,
#[serde(rename = "@symbol")]
pub symbol: String,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory")]
pub asset_category: AssetCategory,
#[serde(rename = "@cusip", default)]
pub cusip: Option<String>,
#[serde(rename = "@isin", default)]
pub isin: Option<String>,
#[serde(rename = "@figi", default)]
pub figi: Option<String>,
#[serde(rename = "@listingExchange", default)]
pub listing_exchange: Option<String>,
#[serde(
rename = "@strike",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub strike: Option<Decimal>,
#[serde(
rename = "@expiry",
default,
deserialize_with = "deserialize_optional_date"
)]
pub expiry: Option<NaiveDate>,
#[serde(rename = "@putCall", default)]
pub put_call: Option<String>,
#[serde(
rename = "@multiplier",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub multiplier: Option<Decimal>,
#[serde(rename = "@underlyingSymbol", default)]
pub underlying_symbol: Option<String>,
#[serde(rename = "@underlyingConid", default)]
pub underlying_conid: Option<String>,
#[serde(rename = "@quantity")]
pub quantity: Decimal,
#[serde(rename = "@price")]
pub price: Decimal,
#[serde(
rename = "@proceeds",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub proceeds: Option<Decimal>,
#[serde(
rename = "@commission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commission: Option<Decimal>,
#[serde(
rename = "@tax",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub tax: Option<Decimal>,
#[serde(
rename = "@netCash",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net_cash: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
#[serde(rename = "@buySell", default)]
pub buy_sell: Option<String>,
#[serde(rename = "@orderType", default)]
pub order_type: Option<String>,
#[serde(rename = "@exchange", default)]
pub exchange: Option<String>,
#[serde(rename = "@clearingID", default)]
pub clearing_id: Option<String>,
#[serde(
rename = "@awayBrokerCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub away_broker_commission: Option<Decimal>,
#[serde(
rename = "@regulatoryFee",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub regulatory_fee: Option<Decimal>,
#[serde(rename = "@orderReference", default)]
pub order_reference: Option<String>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct OptionEAE {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@transactionID", default)]
pub transaction_id: Option<String>,
#[serde(rename = "@actionID", default)]
pub action_id: Option<String>,
#[serde(rename = "@type", default)]
pub action_type: Option<OptionAction>,
#[serde(rename = "@date", deserialize_with = "deserialize_flex_date")]
pub date: NaiveDate,
#[serde(rename = "@dateTime", default)]
pub date_time: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@symbol")]
pub symbol: String,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@cusip", default)]
pub cusip: Option<String>,
#[serde(rename = "@isin", default)]
pub isin: Option<String>,
#[serde(rename = "@figi", default)]
pub figi: Option<String>,
#[serde(rename = "@listingExchange", default)]
pub listing_exchange: Option<String>,
#[serde(rename = "@quantity")]
pub quantity: Decimal,
#[serde(
rename = "@strike",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub strike: Option<Decimal>,
#[serde(
rename = "@expiry",
default,
deserialize_with = "deserialize_optional_date"
)]
pub expiry: Option<NaiveDate>,
#[serde(rename = "@putCall", default)]
pub put_call: Option<String>,
#[serde(
rename = "@multiplier",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub multiplier: Option<Decimal>,
#[serde(rename = "@underlyingSymbol", default)]
pub underlying_symbol: Option<String>,
#[serde(rename = "@underlyingConid", default)]
pub underlying_conid: Option<String>,
#[serde(
rename = "@tradePrice",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub trade_price: Option<Decimal>,
#[serde(
rename = "@proceeds",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub proceeds: Option<Decimal>,
#[serde(
rename = "@commission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commission: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
#[serde(
rename = "@fifoPnlRealized",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fifo_pnl_realized: Option<Decimal>,
#[serde(rename = "@notes", default)]
pub notes: Option<String>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct FxTransaction {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@transactionID", default)]
pub transaction_id: Option<String>,
#[serde(rename = "@actionID", default)]
pub action_id: Option<String>,
#[serde(
rename = "@reportDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub report_date: Option<NaiveDate>,
#[serde(rename = "@dateTime", default)]
pub date_time: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@functionalCurrency", default)]
pub functional_currency: Option<String>,
#[serde(rename = "@fromCurrency")]
pub from_currency: String,
#[serde(rename = "@toCurrency")]
pub to_currency: String,
#[serde(rename = "@quantity")]
pub quantity: Decimal,
#[serde(rename = "@proceeds")]
pub proceeds: Decimal,
#[serde(
rename = "@cost",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cost: Option<Decimal>,
#[serde(
rename = "@realizedPL",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_pl: Option<Decimal>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ChangeInDividendAccrual {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@symbol")]
pub symbol: String,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@securityID", default)]
pub security_id: Option<String>,
#[serde(rename = "@securityIDType", default)]
pub security_id_type: Option<String>,
#[serde(rename = "@cusip", default)]
pub cusip: Option<String>,
#[serde(rename = "@isin", default)]
pub isin: Option<String>,
#[serde(rename = "@figi", default)]
pub figi: Option<String>,
#[serde(rename = "@listingExchange", default)]
pub listing_exchange: Option<String>,
#[serde(rename = "@exDate", deserialize_with = "deserialize_flex_date")]
pub ex_date: NaiveDate,
#[serde(
rename = "@payDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub pay_date: Option<NaiveDate>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(
rename = "@tax",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub tax: Option<Decimal>,
#[serde(
rename = "@fee",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fee: Option<Decimal>,
#[serde(rename = "@grossRate")]
pub gross_rate: Decimal,
#[serde(
rename = "@grossAmount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub gross_amount: Option<Decimal>,
#[serde(rename = "@netAmount")]
pub net_amount: Decimal,
#[serde(
rename = "@fromAccrual",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub from_accrual: Option<Decimal>,
#[serde(
rename = "@toAccrual",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub to_accrual: Option<Decimal>,
#[serde(rename = "@code", default)]
pub code: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct OpenDividendAccrual {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@symbol")]
pub symbol: String,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@securityID", default)]
pub security_id: Option<String>,
#[serde(rename = "@securityIDType", default)]
pub security_id_type: Option<String>,
#[serde(rename = "@cusip", default)]
pub cusip: Option<String>,
#[serde(rename = "@isin", default)]
pub isin: Option<String>,
#[serde(rename = "@figi", default)]
pub figi: Option<String>,
#[serde(rename = "@listingExchange", default)]
pub listing_exchange: Option<String>,
#[serde(rename = "@exDate", deserialize_with = "deserialize_flex_date")]
pub ex_date: NaiveDate,
#[serde(
rename = "@payDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub pay_date: Option<NaiveDate>,
#[serde(rename = "@quantity")]
pub quantity: Decimal,
#[serde(
rename = "@tax",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub tax: Option<Decimal>,
#[serde(
rename = "@fee",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fee: Option<Decimal>,
#[serde(rename = "@grossRate")]
pub gross_rate: Decimal,
#[serde(
rename = "@grossAmount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub gross_amount: Option<Decimal>,
#[serde(
rename = "@netAmount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net_amount: Option<Decimal>,
#[serde(rename = "@code", default)]
pub code: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct InterestAccrualsCurrency {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@currency")]
pub currency: String,
#[serde(rename = "@fromDate", deserialize_with = "deserialize_flex_date")]
pub from_date: NaiveDate,
#[serde(rename = "@toDate", deserialize_with = "deserialize_flex_date")]
pub to_date: NaiveDate,
#[serde(rename = "@startingAccrualBalance")]
pub starting_balance: Decimal,
#[serde(rename = "@interestAccrued")]
pub interest_accrued: Decimal,
#[serde(rename = "@endingAccrualBalance")]
pub ending_balance: Decimal,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct Transfer {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@transactionID", default)]
pub transaction_id: Option<String>,
#[serde(rename = "@type", default)]
pub transfer_type: Option<TransferType>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@symbol")]
pub symbol: String,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@cusip", default)]
pub cusip: Option<String>,
#[serde(rename = "@isin", default)]
pub isin: Option<String>,
#[serde(rename = "@figi", default)]
pub figi: Option<String>,
#[serde(rename = "@listingExchange", default)]
pub listing_exchange: Option<String>,
#[serde(rename = "@quantity")]
pub quantity: Decimal,
#[serde(
rename = "@transferPrice",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub transfer_price: Option<Decimal>,
#[serde(
rename = "@positionAmount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub position_amount: Option<Decimal>,
#[serde(
rename = "@positionAmountInBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub position_amount_in_base: Option<Decimal>,
#[serde(
rename = "@cashTransfer",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cash_transfer: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
#[serde(rename = "@direction", default)]
pub direction: Option<String>,
#[serde(rename = "@date", deserialize_with = "deserialize_flex_date")]
pub date: NaiveDate,
#[serde(rename = "@ppiPayerPayeeAccount", default)]
pub ppi_payer_payee_account: Option<String>,
#[serde(rename = "@deliveringReceivingBroker", default)]
pub delivering_receiving_broker: Option<String>,
#[serde(
rename = "@strike",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub strike: Option<Decimal>,
#[serde(
rename = "@expiry",
default,
deserialize_with = "deserialize_optional_date"
)]
pub expiry: Option<NaiveDate>,
#[serde(rename = "@putCall", default)]
pub put_call: Option<String>,
#[serde(
rename = "@multiplier",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub multiplier: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct MTMPerformanceSummaryUnderlying {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(
rename = "@reportDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub report_date: Option<NaiveDate>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@cusip", default)]
pub cusip: Option<String>,
#[serde(rename = "@isin", default)]
pub isin: Option<String>,
#[serde(rename = "@listingExchange", default)]
pub listing_exchange: Option<String>,
#[serde(rename = "@underlyingSymbol", default)]
pub underlying_symbol: Option<String>,
#[serde(rename = "@underlyingConid", default)]
pub underlying_conid: Option<String>,
#[serde(rename = "@underlyingListingExchange", default)]
pub underlying_listing_exchange: Option<String>,
#[serde(
rename = "@costAdj",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cost_adj: Option<Decimal>,
#[serde(
rename = "@realizedSTProfit",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_st_profit: Option<Decimal>,
#[serde(
rename = "@realizedSTLoss",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_st_loss: Option<Decimal>,
#[serde(
rename = "@realizedLTProfit",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_lt_profit: Option<Decimal>,
#[serde(
rename = "@realizedLTLoss",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_lt_loss: Option<Decimal>,
#[serde(
rename = "@unrealizedSTProfit",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub unrealized_st_profit: Option<Decimal>,
#[serde(
rename = "@unrealizedSTLoss",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub unrealized_st_loss: Option<Decimal>,
#[serde(
rename = "@unrealizedLTProfit",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub unrealized_lt_profit: Option<Decimal>,
#[serde(
rename = "@unrealizedLTLoss",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub unrealized_lt_loss: Option<Decimal>,
#[serde(
rename = "@transactionMtm",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub transaction_mtm: Option<Decimal>,
#[serde(
rename = "@commissions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commissions: Option<Decimal>,
#[serde(
rename = "@other",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub other: Option<Decimal>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct FIFOPerformanceSummaryUnderlying {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(
rename = "@reportDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub report_date: Option<NaiveDate>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@cusip", default)]
pub cusip: Option<String>,
#[serde(rename = "@isin", default)]
pub isin: Option<String>,
#[serde(rename = "@listingExchange", default)]
pub listing_exchange: Option<String>,
#[serde(rename = "@underlyingSymbol", default)]
pub underlying_symbol: Option<String>,
#[serde(rename = "@underlyingConid", default)]
pub underlying_conid: Option<String>,
#[serde(
rename = "@realizedShortTermPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_short_term_pnl: Option<Decimal>,
#[serde(
rename = "@realizedLongTermPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_long_term_pnl: Option<Decimal>,
#[serde(
rename = "@realizedTotalPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_total_pnl: Option<Decimal>,
#[serde(
rename = "@unrealizedShortTermPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub unrealized_short_term_pnl: Option<Decimal>,
#[serde(
rename = "@unrealizedLongTermPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub unrealized_long_term_pnl: Option<Decimal>,
#[serde(
rename = "@unrealizedTotalPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub unrealized_total_pnl: Option<Decimal>,
#[serde(
rename = "@totalIncome",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_income: Option<Decimal>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct MTDYTDPerformanceSummary {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(
rename = "@mtdRealizedPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub mtd_realized_pnl: Option<Decimal>,
#[serde(
rename = "@mtdUnrealizedPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub mtd_unrealized_pnl: Option<Decimal>,
#[serde(
rename = "@mtdCommissions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub mtd_commissions: Option<Decimal>,
#[serde(
rename = "@mtdFees",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub mtd_fees: Option<Decimal>,
#[serde(
rename = "@ytdRealizedPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ytd_realized_pnl: Option<Decimal>,
#[serde(
rename = "@ytdUnrealizedPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ytd_unrealized_pnl: Option<Decimal>,
#[serde(
rename = "@ytdCommissions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ytd_commissions: Option<Decimal>,
#[serde(
rename = "@ytdFees",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ytd_fees: Option<Decimal>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct StatementOfFundsLine {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(
rename = "@reportDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub report_date: Option<NaiveDate>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(rename = "@activityCode", default)]
pub activity_code: Option<String>,
#[serde(rename = "@activityDescription", default)]
pub activity_description: Option<String>,
#[serde(rename = "@tradeID", default)]
pub trade_id: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(
rename = "@debit",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub debit: Option<Decimal>,
#[serde(
rename = "@credit",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub credit: Option<Decimal>,
#[serde(
rename = "@amount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub amount: Option<Decimal>,
#[serde(
rename = "@balance",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub balance: Option<Decimal>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ChangeInPositionValue {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(
rename = "@reportDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub report_date: Option<NaiveDate>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@priorPeriodValue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub prior_period_value: Option<Decimal>,
#[serde(
rename = "@transactions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub transactions: Option<Decimal>,
#[serde(
rename = "@mtmPriorPeriodPositions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub mtm_prior_period_positions: Option<Decimal>,
#[serde(
rename = "@mtmTransactions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub mtm_transactions: Option<Decimal>,
#[serde(
rename = "@corporateActions",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub corporate_actions: Option<Decimal>,
#[serde(
rename = "@fxTranslation",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_translation: Option<Decimal>,
#[serde(
rename = "@other",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub other: Option<Decimal>,
#[serde(
rename = "@endingValue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ending_value: Option<Decimal>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct UnbundledCommissionDetail {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@execID", default)]
pub exec_id: Option<String>,
#[serde(rename = "@orderID", default)]
pub order_id: Option<String>,
#[serde(rename = "@tradeID", default)]
pub trade_id: Option<String>,
#[serde(rename = "@dateTime", default)]
pub date_time: Option<String>,
#[serde(rename = "@exchange", default)]
pub exchange: Option<String>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(
rename = "@price",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub price: Option<Decimal>,
#[serde(
rename = "@executionCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub execution_commission: Option<Decimal>,
#[serde(
rename = "@clearingCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub clearing_commission: Option<Decimal>,
#[serde(
rename = "@regulatoryCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub regulatory_commission: Option<Decimal>,
#[serde(
rename = "@thirdPartyCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub third_party_commission: Option<Decimal>,
#[serde(
rename = "@thirdPartyRegulatoryCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub third_party_regulatory_commission: Option<Decimal>,
#[serde(
rename = "@totalCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_commission: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ClientFee {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@revenue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub revenue: Option<Decimal>,
#[serde(
rename = "@expense",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub expense: Option<Decimal>,
#[serde(
rename = "@net",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net: Option<Decimal>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct ClientFeesDetail {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(rename = "@feeType", default)]
pub fee_type: Option<String>,
#[serde(
rename = "@revenue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub revenue: Option<Decimal>,
#[serde(
rename = "@expense",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub expense: Option<Decimal>,
#[serde(
rename = "@net",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net: Option<Decimal>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SLBActivity {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(rename = "@type", default)]
pub activity_type: Option<String>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(
rename = "@collateralAmount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub collateral_amount: Option<Decimal>,
#[serde(
rename = "@feeRate",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fee_rate: Option<Decimal>,
#[serde(
rename = "@netLendFee",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub net_lend_fee: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SLBFee {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(
rename = "@valueDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub value_date: Option<NaiveDate>,
#[serde(
rename = "@startDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub start_date: Option<NaiveDate>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(
rename = "@collateralAmount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub collateral_amount: Option<Decimal>,
#[serde(
rename = "@feeRate",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fee_rate: Option<Decimal>,
#[serde(
rename = "@fee",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fee: Option<Decimal>,
#[serde(
rename = "@carryCharge",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub carry_charge: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct HardToBorrowDetail {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(
rename = "@valueDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub value_date: Option<NaiveDate>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(
rename = "@price",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub price: Option<Decimal>,
#[serde(
rename = "@value",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub value: Option<Decimal>,
#[serde(
rename = "@borrowFeeRate",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub borrow_fee_rate: Option<Decimal>,
#[serde(
rename = "@borrowFee",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub borrow_fee: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct FxLot {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<String>,
#[serde(
rename = "@reportDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub report_date: Option<NaiveDate>,
#[serde(rename = "@functionalCurrency", default)]
pub functional_currency: Option<String>,
#[serde(rename = "@fxCurrency", default)]
pub fx_currency: Option<String>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(
rename = "@costPrice",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cost_price: Option<Decimal>,
#[serde(
rename = "@costBasis",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub cost_basis: Option<Decimal>,
#[serde(
rename = "@closePrice",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub close_price: Option<Decimal>,
#[serde(
rename = "@value",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub value: Option<Decimal>,
#[serde(
rename = "@unrealizedPL",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub unrealized_pl: Option<Decimal>,
#[serde(rename = "@levelOfDetail", default)]
pub level_of_detail: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct UnsettledTransfer {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@direction", default)]
pub direction: Option<String>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(
rename = "@expectedDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub expected_date: Option<NaiveDate>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct TradeTransfer {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@transferType", default)]
pub transfer_type: Option<String>,
#[serde(rename = "@direction", default)]
pub direction: Option<String>,
#[serde(rename = "@deliveryType", default)]
pub delivery_type: Option<String>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(
rename = "@transferPrice",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub transfer_price: Option<Decimal>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(rename = "@executingBroker", default)]
pub executing_broker: Option<String>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct PriorPeriodPosition {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(
rename = "@priorMtmPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub prior_mtm_pnl: Option<Decimal>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(
rename = "@quantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub quantity: Option<Decimal>,
#[serde(
rename = "@price",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub price: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct TierInterestDetail {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
#[serde(rename = "@interestType", default)]
pub interest_type: Option<String>,
#[serde(
rename = "@reportDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub report_date: Option<NaiveDate>,
#[serde(
rename = "@valueDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub value_date: Option<NaiveDate>,
#[serde(rename = "@tierBreak", default)]
pub tier_break: Option<String>,
#[serde(
rename = "@balanceThreshold",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub balance_threshold: Option<Decimal>,
#[serde(
rename = "@securitiesPrincipal",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub securities_principal: Option<Decimal>,
#[serde(
rename = "@commoditiesPrincipal",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commodities_principal: Option<Decimal>,
#[serde(
rename = "@ibuklPrincipal",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ibukl_principal: Option<Decimal>,
#[serde(
rename = "@totalPrincipal",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_principal: Option<Decimal>,
#[serde(
rename = "@rate",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub rate: Option<Decimal>,
#[serde(
rename = "@securitiesInterest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub securities_interest: Option<Decimal>,
#[serde(
rename = "@commoditiesInterest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub commodities_interest: Option<Decimal>,
#[serde(
rename = "@ibuklInterest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub ibukl_interest: Option<Decimal>,
#[serde(
rename = "@totalInterest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_interest: Option<Decimal>,
#[serde(rename = "@code", default)]
pub code: Option<String>,
#[serde(rename = "@fromAcct", default)]
pub from_acct: Option<String>,
#[serde(rename = "@toAcct", default)]
pub to_acct: Option<String>,
#[serde(rename = "@marginBalance", default)]
pub margin_balance: Option<String>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(
rename = "@fromDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub from_date: Option<NaiveDate>,
#[serde(
rename = "@toDate",
default,
deserialize_with = "deserialize_optional_date"
)]
pub to_date: Option<NaiveDate>,
#[serde(
rename = "@balance",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub balance: Option<Decimal>,
#[serde(
rename = "@interestRate",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub interest_rate: Option<Decimal>,
#[serde(
rename = "@interest",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub interest: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct DebitCardActivity {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(rename = "@merchant", default)]
pub merchant: Option<String>,
#[serde(rename = "@category", default)]
pub category: Option<String>,
#[serde(rename = "@status", default)]
pub status: Option<String>,
#[serde(rename = "@transactionType", default)]
pub transaction_type: Option<String>,
#[serde(
rename = "@amount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub amount: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SalesTax {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(
rename = "@date",
default,
deserialize_with = "deserialize_optional_date"
)]
pub date: Option<NaiveDate>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@taxType", default)]
pub tax_type: Option<String>,
#[serde(
rename = "@taxAmount",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub tax_amount: Option<Decimal>,
#[serde(
rename = "@proceeds",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub proceeds: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
#[serde(
rename = "@fxRateToBase",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub fx_rate_to_base: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct SymbolSummary {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(
rename = "@totalBuyQuantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_buy_quantity: Option<Decimal>,
#[serde(
rename = "@totalSellQuantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_sell_quantity: Option<Decimal>,
#[serde(
rename = "@totalBuyValue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_buy_value: Option<Decimal>,
#[serde(
rename = "@totalSellValue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_sell_value: Option<Decimal>,
#[serde(
rename = "@totalCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_commission: Option<Decimal>,
#[serde(
rename = "@realizedPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_pnl: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct AssetSummary {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(
rename = "@totalBuyQuantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_buy_quantity: Option<Decimal>,
#[serde(
rename = "@totalSellQuantity",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_sell_quantity: Option<Decimal>,
#[serde(
rename = "@totalBuyValue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_buy_value: Option<Decimal>,
#[serde(
rename = "@totalSellValue",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_sell_value: Option<Decimal>,
#[serde(
rename = "@totalCommission",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub total_commission: Option<Decimal>,
#[serde(
rename = "@realizedPnl",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub realized_pnl: Option<Decimal>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
pub struct Order {
#[serde(rename = "@accountId")]
pub account_id: String,
#[serde(rename = "@acctAlias", default)]
pub acct_alias: Option<String>,
#[serde(rename = "@model", default)]
pub model: Option<String>,
#[serde(rename = "@orderID", default)]
pub order_id: Option<String>,
#[serde(rename = "@symbol", default)]
pub symbol: Option<String>,
#[serde(rename = "@description", default)]
pub description: Option<String>,
#[serde(rename = "@conid", default)]
pub conid: Option<String>,
#[serde(rename = "@assetCategory", default)]
pub asset_category: Option<AssetCategory>,
#[serde(rename = "@orderTime", default)]
pub order_time: Option<String>,
#[serde(rename = "@orderType", default)]
pub order_type: Option<String>,
#[serde(rename = "@side", default)]
pub side: Option<String>,
#[serde(rename = "@tif", default)]
pub tif: Option<String>,
#[serde(
rename = "@orderQty",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub order_qty: Option<Decimal>,
#[serde(
rename = "@limitPrice",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub limit_price: Option<Decimal>,
#[serde(
rename = "@stopPrice",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub stop_price: Option<Decimal>,
#[serde(
rename = "@filledQty",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub filled_qty: Option<Decimal>,
#[serde(
rename = "@avgPrice",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub avg_price: Option<Decimal>,
#[serde(
rename = "@remainingQty",
default,
deserialize_with = "deserialize_optional_decimal"
)]
pub remaining_qty: Option<Decimal>,
#[serde(rename = "@status", default)]
pub status: Option<String>,
#[serde(rename = "@currency", default)]
pub currency: Option<String>,
}