1use chrono::NaiveDate;
8use rust_decimal::Decimal;
9use serde::{Deserialize, Serialize};
10
11use super::common::{AssetCategory, OptionAction, TransferType};
12use crate::parsers::xml_utils::{
13 deserialize_flex_date, deserialize_optional_date, deserialize_optional_decimal,
14};
15
16#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
18pub struct AccountInformation {
19 #[serde(rename = "@accountId")]
21 pub account_id: String,
22
23 #[serde(rename = "@accountType", default)]
25 pub account_type: Option<String>,
26
27 #[serde(rename = "@acctAlias", default)]
29 pub acct_alias: Option<String>,
30
31 #[serde(rename = "@currency", default)]
33 pub currency: Option<String>,
34
35 #[serde(rename = "@name", default)]
37 pub name: Option<String>,
38
39 #[serde(rename = "@masterName", default)]
41 pub master_name: Option<String>,
42
43 #[serde(rename = "@customerType", default)]
45 pub customer_type: Option<String>,
46
47 #[serde(
49 rename = "@dateOpened",
50 default,
51 deserialize_with = "deserialize_optional_date"
52 )]
53 pub date_opened: Option<NaiveDate>,
54
55 #[serde(
57 rename = "@dateFunded",
58 default,
59 deserialize_with = "deserialize_optional_date"
60 )]
61 pub date_funded: Option<NaiveDate>,
62
63 #[serde(
65 rename = "@dateClosed",
66 default,
67 deserialize_with = "deserialize_optional_date"
68 )]
69 pub date_closed: Option<NaiveDate>,
70
71 #[serde(rename = "@primaryEmail", default)]
73 pub primary_email: Option<String>,
74
75 #[serde(rename = "@streetAddress", default)]
77 pub street_address: Option<String>,
78
79 #[serde(rename = "@streetAddress2", default)]
81 pub street_address2: Option<String>,
82
83 #[serde(rename = "@city", default)]
85 pub city: Option<String>,
86
87 #[serde(rename = "@state", default)]
89 pub state: Option<String>,
90
91 #[serde(rename = "@country", default)]
93 pub country: Option<String>,
94
95 #[serde(rename = "@postalCode", default)]
97 pub postal_code: Option<String>,
98
99 #[serde(rename = "@accountCapabilities", default)]
101 pub account_capabilities: Option<String>,
102
103 #[serde(rename = "@tradingPermissions", default)]
105 pub trading_permissions: Option<String>,
106
107 #[serde(rename = "@registeredRepName", default)]
109 pub registered_rep_name: Option<String>,
110
111 #[serde(rename = "@registeredRepPhone", default)]
113 pub registered_rep_phone: Option<String>,
114
115 #[serde(rename = "@ibEntity", default)]
117 pub ib_entity: Option<String>,
118
119 #[serde(rename = "@model", default)]
121 pub model: Option<String>,
122}
123
124#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
126pub struct ChangeInNAV {
127 #[serde(rename = "@accountId")]
129 pub account_id: String,
130
131 #[serde(rename = "@acctAlias", default)]
133 pub acct_alias: Option<String>,
134
135 #[serde(rename = "@model", default)]
137 pub model: Option<String>,
138
139 #[serde(rename = "@currency", default)]
141 pub currency: Option<String>,
142
143 #[serde(rename = "@fromDate", deserialize_with = "deserialize_flex_date")]
145 pub from_date: NaiveDate,
146
147 #[serde(rename = "@toDate", deserialize_with = "deserialize_flex_date")]
149 pub to_date: NaiveDate,
150
151 #[serde(rename = "@startingValue")]
153 pub starting_value: Decimal,
154
155 #[serde(rename = "@endingValue")]
157 pub ending_value: Decimal,
158
159 #[serde(
161 rename = "@mtm",
162 default,
163 deserialize_with = "deserialize_optional_decimal"
164 )]
165 pub mtm: Option<Decimal>,
166
167 #[serde(
169 rename = "@realized",
170 default,
171 deserialize_with = "deserialize_optional_decimal"
172 )]
173 pub realized: Option<Decimal>,
174
175 #[serde(
177 rename = "@changeInUnrealized",
178 default,
179 deserialize_with = "deserialize_optional_decimal"
180 )]
181 pub change_in_unrealized: Option<Decimal>,
182
183 #[serde(
185 rename = "@depositsWithdrawals",
186 default,
187 deserialize_with = "deserialize_optional_decimal"
188 )]
189 pub deposits_withdrawals: Option<Decimal>,
190
191 #[serde(
193 rename = "@dividends",
194 default,
195 deserialize_with = "deserialize_optional_decimal"
196 )]
197 pub dividends: Option<Decimal>,
198
199 #[serde(
201 rename = "@withholdingTax",
202 default,
203 deserialize_with = "deserialize_optional_decimal"
204 )]
205 pub withholding_tax: Option<Decimal>,
206
207 #[serde(
209 rename = "@changeInDividendAccruals",
210 default,
211 deserialize_with = "deserialize_optional_decimal"
212 )]
213 pub change_in_dividend_accruals: Option<Decimal>,
214
215 #[serde(
217 rename = "@interest",
218 default,
219 deserialize_with = "deserialize_optional_decimal"
220 )]
221 pub interest: Option<Decimal>,
222
223 #[serde(
225 rename = "@changeInInterestAccruals",
226 default,
227 deserialize_with = "deserialize_optional_decimal"
228 )]
229 pub change_in_interest_accruals: Option<Decimal>,
230
231 #[serde(
233 rename = "@advisorFees",
234 default,
235 deserialize_with = "deserialize_optional_decimal"
236 )]
237 pub advisor_fees: Option<Decimal>,
238
239 #[serde(
241 rename = "@clientFees",
242 default,
243 deserialize_with = "deserialize_optional_decimal"
244 )]
245 pub client_fees: Option<Decimal>,
246
247 #[serde(
249 rename = "@otherFees",
250 default,
251 deserialize_with = "deserialize_optional_decimal"
252 )]
253 pub other_fees: Option<Decimal>,
254
255 #[serde(
257 rename = "@commissions",
258 default,
259 deserialize_with = "deserialize_optional_decimal"
260 )]
261 pub commissions: Option<Decimal>,
262
263 #[serde(
265 rename = "@fxTranslation",
266 default,
267 deserialize_with = "deserialize_optional_decimal"
268 )]
269 pub fx_translation: Option<Decimal>,
270
271 #[serde(
273 rename = "@twr",
274 default,
275 deserialize_with = "deserialize_optional_decimal"
276 )]
277 pub twr: Option<Decimal>,
278
279 #[serde(
281 rename = "@corporateActionProceeds",
282 default,
283 deserialize_with = "deserialize_optional_decimal"
284 )]
285 pub corporate_action_proceeds: Option<Decimal>,
286}
287
288#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
290pub struct EquitySummaryByReportDateInBase {
291 #[serde(rename = "@accountId")]
293 pub account_id: String,
294
295 #[serde(rename = "@acctAlias", default)]
297 pub acct_alias: Option<String>,
298
299 #[serde(rename = "@model", default)]
301 pub model: Option<String>,
302
303 #[serde(rename = "@reportDate", deserialize_with = "deserialize_flex_date")]
305 pub report_date: NaiveDate,
306
307 #[serde(
309 rename = "@cash",
310 default,
311 deserialize_with = "deserialize_optional_decimal"
312 )]
313 pub cash: Option<Decimal>,
314
315 #[serde(
317 rename = "@cashLong",
318 default,
319 deserialize_with = "deserialize_optional_decimal"
320 )]
321 pub cash_long: Option<Decimal>,
322
323 #[serde(
325 rename = "@cashShort",
326 default,
327 deserialize_with = "deserialize_optional_decimal"
328 )]
329 pub cash_short: Option<Decimal>,
330
331 #[serde(
333 rename = "@settledCash",
334 default,
335 deserialize_with = "deserialize_optional_decimal"
336 )]
337 pub settled_cash: Option<Decimal>,
338
339 #[serde(
341 rename = "@slbCashCollateral",
342 default,
343 deserialize_with = "deserialize_optional_decimal"
344 )]
345 pub slb_cash_collateral: Option<Decimal>,
346
347 #[serde(
349 rename = "@stock",
350 default,
351 deserialize_with = "deserialize_optional_decimal"
352 )]
353 pub stock: Option<Decimal>,
354
355 #[serde(
357 rename = "@stockLong",
358 default,
359 deserialize_with = "deserialize_optional_decimal"
360 )]
361 pub stock_long: Option<Decimal>,
362
363 #[serde(
365 rename = "@stockShort",
366 default,
367 deserialize_with = "deserialize_optional_decimal"
368 )]
369 pub stock_short: Option<Decimal>,
370
371 #[serde(
373 rename = "@slbDirectSecuritiesBorrowed",
374 default,
375 deserialize_with = "deserialize_optional_decimal"
376 )]
377 pub slb_direct_securities_borrowed: Option<Decimal>,
378
379 #[serde(
381 rename = "@slbDirectSecuritiesLent",
382 default,
383 deserialize_with = "deserialize_optional_decimal"
384 )]
385 pub slb_direct_securities_lent: Option<Decimal>,
386
387 #[serde(
389 rename = "@options",
390 default,
391 deserialize_with = "deserialize_optional_decimal"
392 )]
393 pub options: Option<Decimal>,
394
395 #[serde(
397 rename = "@optionsLong",
398 default,
399 deserialize_with = "deserialize_optional_decimal"
400 )]
401 pub options_long: Option<Decimal>,
402
403 #[serde(
405 rename = "@optionsShort",
406 default,
407 deserialize_with = "deserialize_optional_decimal"
408 )]
409 pub options_short: Option<Decimal>,
410
411 #[serde(
413 rename = "@bonds",
414 default,
415 deserialize_with = "deserialize_optional_decimal"
416 )]
417 pub bonds: Option<Decimal>,
418
419 #[serde(
421 rename = "@bondsLong",
422 default,
423 deserialize_with = "deserialize_optional_decimal"
424 )]
425 pub bonds_long: Option<Decimal>,
426
427 #[serde(
429 rename = "@bondsShort",
430 default,
431 deserialize_with = "deserialize_optional_decimal"
432 )]
433 pub bonds_short: Option<Decimal>,
434
435 #[serde(
437 rename = "@notes",
438 default,
439 deserialize_with = "deserialize_optional_decimal"
440 )]
441 pub notes: Option<Decimal>,
442
443 #[serde(
445 rename = "@funds",
446 default,
447 deserialize_with = "deserialize_optional_decimal"
448 )]
449 pub funds: Option<Decimal>,
450
451 #[serde(
453 rename = "@futures",
454 default,
455 deserialize_with = "deserialize_optional_decimal"
456 )]
457 pub futures: Option<Decimal>,
458
459 #[serde(
461 rename = "@futuresLong",
462 default,
463 deserialize_with = "deserialize_optional_decimal"
464 )]
465 pub futures_long: Option<Decimal>,
466
467 #[serde(
469 rename = "@futuresShort",
470 default,
471 deserialize_with = "deserialize_optional_decimal"
472 )]
473 pub futures_short: Option<Decimal>,
474
475 #[serde(
477 rename = "@commodities",
478 default,
479 deserialize_with = "deserialize_optional_decimal"
480 )]
481 pub commodities: Option<Decimal>,
482
483 #[serde(
485 rename = "@total",
486 default,
487 deserialize_with = "deserialize_optional_decimal"
488 )]
489 pub total: Option<Decimal>,
490
491 #[serde(
493 rename = "@totalLong",
494 default,
495 deserialize_with = "deserialize_optional_decimal"
496 )]
497 pub total_long: Option<Decimal>,
498
499 #[serde(
501 rename = "@totalShort",
502 default,
503 deserialize_with = "deserialize_optional_decimal"
504 )]
505 pub total_short: Option<Decimal>,
506
507 #[serde(
509 rename = "@interestAccruals",
510 default,
511 deserialize_with = "deserialize_optional_decimal"
512 )]
513 pub interest_accruals: Option<Decimal>,
514
515 #[serde(
517 rename = "@dividendAccruals",
518 default,
519 deserialize_with = "deserialize_optional_decimal"
520 )]
521 pub dividend_accruals: Option<Decimal>,
522
523 #[serde(
525 rename = "@accruedInterest",
526 default,
527 deserialize_with = "deserialize_optional_decimal"
528 )]
529 pub accrued_interest: Option<Decimal>,
530
531 #[serde(
533 rename = "@accruedDividend",
534 default,
535 deserialize_with = "deserialize_optional_decimal"
536 )]
537 pub accrued_dividend: Option<Decimal>,
538
539 #[serde(
541 rename = "@softDollars",
542 default,
543 deserialize_with = "deserialize_optional_decimal"
544 )]
545 pub soft_dollars: Option<Decimal>,
546
547 #[serde(
549 rename = "@forexCfdUnrealizedPl",
550 default,
551 deserialize_with = "deserialize_optional_decimal"
552 )]
553 pub forex_cfd_unrealized_pl: Option<Decimal>,
554
555 #[serde(
557 rename = "@cfdUnrealizedPl",
558 default,
559 deserialize_with = "deserialize_optional_decimal"
560 )]
561 pub cfd_unrealized_pl: Option<Decimal>,
562
563 #[serde(
565 rename = "@brokerCashComponent",
566 default,
567 deserialize_with = "deserialize_optional_decimal"
568 )]
569 pub broker_cash_component: Option<Decimal>,
570
571 #[serde(
573 rename = "@brokerInterestAccrualsComponent",
574 default,
575 deserialize_with = "deserialize_optional_decimal"
576 )]
577 pub broker_interest_accruals_component: Option<Decimal>,
578
579 #[serde(
581 rename = "@grossPositionValue",
582 default,
583 deserialize_with = "deserialize_optional_decimal"
584 )]
585 pub gross_position_value: Option<Decimal>,
586
587 #[serde(
589 rename = "@netLiquidation",
590 default,
591 deserialize_with = "deserialize_optional_decimal"
592 )]
593 pub net_liquidation: Option<Decimal>,
594
595 #[serde(
597 rename = "@netLiquidationUncertainty",
598 default,
599 deserialize_with = "deserialize_optional_decimal"
600 )]
601 pub net_liquidation_uncertainty: Option<Decimal>,
602}
603
604#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
606pub struct CashReportCurrency {
607 #[serde(rename = "@accountId")]
609 pub account_id: String,
610
611 #[serde(rename = "@acctAlias", default)]
613 pub acct_alias: Option<String>,
614
615 #[serde(rename = "@model", default)]
617 pub model: Option<String>,
618
619 #[serde(rename = "@currency")]
621 pub currency: String,
622
623 #[serde(rename = "@fromDate", deserialize_with = "deserialize_flex_date")]
625 pub from_date: NaiveDate,
626
627 #[serde(rename = "@toDate", deserialize_with = "deserialize_flex_date")]
629 pub to_date: NaiveDate,
630
631 #[serde(rename = "@startingCash")]
633 pub starting_cash: Decimal,
634
635 #[serde(
637 rename = "@startingCashSec",
638 default,
639 deserialize_with = "deserialize_optional_decimal"
640 )]
641 pub starting_cash_sec: Option<Decimal>,
642
643 #[serde(
645 rename = "@startingCashCom",
646 default,
647 deserialize_with = "deserialize_optional_decimal"
648 )]
649 pub starting_cash_com: Option<Decimal>,
650
651 #[serde(
653 rename = "@commissions",
654 default,
655 deserialize_with = "deserialize_optional_decimal"
656 )]
657 pub commissions: Option<Decimal>,
658
659 #[serde(
661 rename = "@commissionsSec",
662 default,
663 deserialize_with = "deserialize_optional_decimal"
664 )]
665 pub commissions_sec: Option<Decimal>,
666
667 #[serde(
669 rename = "@commissionsCom",
670 default,
671 deserialize_with = "deserialize_optional_decimal"
672 )]
673 pub commissions_com: Option<Decimal>,
674
675 #[serde(
677 rename = "@deposits",
678 default,
679 deserialize_with = "deserialize_optional_decimal"
680 )]
681 pub deposits: Option<Decimal>,
682
683 #[serde(
685 rename = "@withdrawals",
686 default,
687 deserialize_with = "deserialize_optional_decimal"
688 )]
689 pub withdrawals: Option<Decimal>,
690
691 #[serde(
693 rename = "@dividends",
694 default,
695 deserialize_with = "deserialize_optional_decimal"
696 )]
697 pub dividends: Option<Decimal>,
698
699 #[serde(
701 rename = "@brokerInterest",
702 default,
703 deserialize_with = "deserialize_optional_decimal"
704 )]
705 pub broker_interest: Option<Decimal>,
706
707 #[serde(
709 rename = "@bondInterest",
710 default,
711 deserialize_with = "deserialize_optional_decimal"
712 )]
713 pub bond_interest: Option<Decimal>,
714
715 #[serde(
717 rename = "@withholdingTax",
718 default,
719 deserialize_with = "deserialize_optional_decimal"
720 )]
721 pub withholding_tax: Option<Decimal>,
722
723 #[serde(
725 rename = "@netTradesSales",
726 default,
727 deserialize_with = "deserialize_optional_decimal"
728 )]
729 pub net_trades_sales: Option<Decimal>,
730
731 #[serde(
733 rename = "@netTradesPurchases",
734 default,
735 deserialize_with = "deserialize_optional_decimal"
736 )]
737 pub net_trades_purchases: Option<Decimal>,
738
739 #[serde(
741 rename = "@accountTransfers",
742 default,
743 deserialize_with = "deserialize_optional_decimal"
744 )]
745 pub account_transfers: Option<Decimal>,
746
747 #[serde(
749 rename = "@internalTransfers",
750 default,
751 deserialize_with = "deserialize_optional_decimal"
752 )]
753 pub internal_transfers: Option<Decimal>,
754
755 #[serde(
757 rename = "@externalTransfers",
758 default,
759 deserialize_with = "deserialize_optional_decimal"
760 )]
761 pub external_transfers: Option<Decimal>,
762
763 #[serde(
765 rename = "@linkingAdjustments",
766 default,
767 deserialize_with = "deserialize_optional_decimal"
768 )]
769 pub linking_adjustments: Option<Decimal>,
770
771 #[serde(
773 rename = "@otherFees",
774 default,
775 deserialize_with = "deserialize_optional_decimal"
776 )]
777 pub other_fees: Option<Decimal>,
778
779 #[serde(
781 rename = "@fxTranslationPnl",
782 default,
783 deserialize_with = "deserialize_optional_decimal"
784 )]
785 pub fx_translation_pnl: Option<Decimal>,
786
787 #[serde(
789 rename = "@billableSalesTax",
790 default,
791 deserialize_with = "deserialize_optional_decimal"
792 )]
793 pub billable_sales_tax: Option<Decimal>,
794
795 #[serde(
797 rename = "@realizedForexPnl",
798 default,
799 deserialize_with = "deserialize_optional_decimal"
800 )]
801 pub realized_forex_pnl: Option<Decimal>,
802
803 #[serde(
805 rename = "@debitCardActivity",
806 default,
807 deserialize_with = "deserialize_optional_decimal"
808 )]
809 pub debit_card_activity: Option<Decimal>,
810
811 #[serde(
813 rename = "@clientFees",
814 default,
815 deserialize_with = "deserialize_optional_decimal"
816 )]
817 pub client_fees: Option<Decimal>,
818
819 #[serde(
821 rename = "@cashSettlingMtm",
822 default,
823 deserialize_with = "deserialize_optional_decimal"
824 )]
825 pub cash_settling_mtm: Option<Decimal>,
826
827 #[serde(
829 rename = "@softDollars",
830 default,
831 deserialize_with = "deserialize_optional_decimal"
832 )]
833 pub soft_dollars: Option<Decimal>,
834
835 #[serde(rename = "@endingCash")]
837 pub ending_cash: Decimal,
838
839 #[serde(
841 rename = "@endingCashSec",
842 default,
843 deserialize_with = "deserialize_optional_decimal"
844 )]
845 pub ending_cash_sec: Option<Decimal>,
846
847 #[serde(
849 rename = "@endingCashCom",
850 default,
851 deserialize_with = "deserialize_optional_decimal"
852 )]
853 pub ending_cash_com: Option<Decimal>,
854
855 #[serde(
857 rename = "@endingSettledCash",
858 default,
859 deserialize_with = "deserialize_optional_decimal"
860 )]
861 pub ending_settled_cash: Option<Decimal>,
862
863 #[serde(
865 rename = "@endingSettledCashSec",
866 default,
867 deserialize_with = "deserialize_optional_decimal"
868 )]
869 pub ending_settled_cash_sec: Option<Decimal>,
870
871 #[serde(
873 rename = "@endingSettledCashCom",
874 default,
875 deserialize_with = "deserialize_optional_decimal"
876 )]
877 pub ending_settled_cash_com: Option<Decimal>,
878}
879
880#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
882pub struct TradeConfirm {
883 #[serde(rename = "@accountId")]
885 pub account_id: String,
886
887 #[serde(rename = "@acctAlias", default)]
889 pub acct_alias: Option<String>,
890
891 #[serde(rename = "@model", default)]
893 pub model: Option<String>,
894
895 #[serde(rename = "@execID")]
897 pub exec_id: String,
898
899 #[serde(rename = "@transactionID", default)]
901 pub transaction_id: Option<String>,
902
903 #[serde(rename = "@tradeID", default)]
905 pub trade_id: Option<String>,
906
907 #[serde(rename = "@orderID", default)]
909 pub order_id: Option<String>,
910
911 #[serde(rename = "@tradeDate", deserialize_with = "deserialize_flex_date")]
913 pub trade_date: NaiveDate,
914
915 #[serde(rename = "@tradeTime", default)]
917 pub trade_time: Option<String>,
918
919 #[serde(rename = "@dateTime", default)]
921 pub date_time: Option<String>,
922
923 #[serde(
925 rename = "@settleDate",
926 default,
927 deserialize_with = "deserialize_optional_date"
928 )]
929 pub settle_date: Option<NaiveDate>,
930
931 #[serde(rename = "@symbol")]
933 pub symbol: String,
934
935 #[serde(rename = "@description", default)]
937 pub description: Option<String>,
938
939 #[serde(rename = "@conid", default)]
941 pub conid: Option<String>,
942
943 #[serde(rename = "@assetCategory")]
945 pub asset_category: AssetCategory,
946
947 #[serde(rename = "@cusip", default)]
950 pub cusip: Option<String>,
951
952 #[serde(rename = "@isin", default)]
954 pub isin: Option<String>,
955
956 #[serde(rename = "@figi", default)]
958 pub figi: Option<String>,
959
960 #[serde(rename = "@listingExchange", default)]
962 pub listing_exchange: Option<String>,
963
964 #[serde(
967 rename = "@strike",
968 default,
969 deserialize_with = "deserialize_optional_decimal"
970 )]
971 pub strike: Option<Decimal>,
972
973 #[serde(
975 rename = "@expiry",
976 default,
977 deserialize_with = "deserialize_optional_date"
978 )]
979 pub expiry: Option<NaiveDate>,
980
981 #[serde(rename = "@putCall", default)]
983 pub put_call: Option<String>,
984
985 #[serde(
987 rename = "@multiplier",
988 default,
989 deserialize_with = "deserialize_optional_decimal"
990 )]
991 pub multiplier: Option<Decimal>,
992
993 #[serde(rename = "@underlyingSymbol", default)]
996 pub underlying_symbol: Option<String>,
997
998 #[serde(rename = "@underlyingConid", default)]
1000 pub underlying_conid: Option<String>,
1001
1002 #[serde(rename = "@quantity")]
1005 pub quantity: Decimal,
1006
1007 #[serde(rename = "@price")]
1009 pub price: Decimal,
1010
1011 #[serde(
1013 rename = "@proceeds",
1014 default,
1015 deserialize_with = "deserialize_optional_decimal"
1016 )]
1017 pub proceeds: Option<Decimal>,
1018
1019 #[serde(
1021 rename = "@commission",
1022 default,
1023 deserialize_with = "deserialize_optional_decimal"
1024 )]
1025 pub commission: Option<Decimal>,
1026
1027 #[serde(
1029 rename = "@tax",
1030 default,
1031 deserialize_with = "deserialize_optional_decimal"
1032 )]
1033 pub tax: Option<Decimal>,
1034
1035 #[serde(
1037 rename = "@netCash",
1038 default,
1039 deserialize_with = "deserialize_optional_decimal"
1040 )]
1041 pub net_cash: Option<Decimal>,
1042
1043 #[serde(rename = "@currency", default)]
1045 pub currency: Option<String>,
1046
1047 #[serde(
1049 rename = "@fxRateToBase",
1050 default,
1051 deserialize_with = "deserialize_optional_decimal"
1052 )]
1053 pub fx_rate_to_base: Option<Decimal>,
1054
1055 #[serde(rename = "@buySell", default)]
1057 pub buy_sell: Option<String>,
1058
1059 #[serde(rename = "@orderType", default)]
1061 pub order_type: Option<String>,
1062
1063 #[serde(rename = "@exchange", default)]
1065 pub exchange: Option<String>,
1066
1067 #[serde(rename = "@clearingID", default)]
1069 pub clearing_id: Option<String>,
1070
1071 #[serde(
1073 rename = "@awayBrokerCommission",
1074 default,
1075 deserialize_with = "deserialize_optional_decimal"
1076 )]
1077 pub away_broker_commission: Option<Decimal>,
1078
1079 #[serde(
1081 rename = "@regulatoryFee",
1082 default,
1083 deserialize_with = "deserialize_optional_decimal"
1084 )]
1085 pub regulatory_fee: Option<Decimal>,
1086
1087 #[serde(rename = "@orderReference", default)]
1089 pub order_reference: Option<String>,
1090
1091 #[serde(rename = "@levelOfDetail", default)]
1093 pub level_of_detail: Option<String>,
1094}
1095
1096#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1098pub struct OptionEAE {
1099 #[serde(rename = "@accountId")]
1101 pub account_id: String,
1102
1103 #[serde(rename = "@acctAlias", default)]
1105 pub acct_alias: Option<String>,
1106
1107 #[serde(rename = "@model", default)]
1109 pub model: Option<String>,
1110
1111 #[serde(rename = "@transactionID", default)]
1113 pub transaction_id: Option<String>,
1114
1115 #[serde(rename = "@actionID", default)]
1117 pub action_id: Option<String>,
1118
1119 #[serde(rename = "@type", default)]
1121 pub action_type: Option<OptionAction>,
1122
1123 #[serde(rename = "@date", deserialize_with = "deserialize_flex_date")]
1125 pub date: NaiveDate,
1126
1127 #[serde(rename = "@dateTime", default)]
1129 pub date_time: Option<String>,
1130
1131 #[serde(rename = "@conid", default)]
1133 pub conid: Option<String>,
1134
1135 #[serde(rename = "@symbol")]
1137 pub symbol: String,
1138
1139 #[serde(rename = "@description", default)]
1141 pub description: Option<String>,
1142
1143 #[serde(rename = "@assetCategory", default)]
1145 pub asset_category: Option<AssetCategory>,
1146
1147 #[serde(rename = "@cusip", default)]
1150 pub cusip: Option<String>,
1151
1152 #[serde(rename = "@isin", default)]
1154 pub isin: Option<String>,
1155
1156 #[serde(rename = "@figi", default)]
1158 pub figi: Option<String>,
1159
1160 #[serde(rename = "@listingExchange", default)]
1162 pub listing_exchange: Option<String>,
1163
1164 #[serde(rename = "@quantity")]
1166 pub quantity: Decimal,
1167
1168 #[serde(
1170 rename = "@strike",
1171 default,
1172 deserialize_with = "deserialize_optional_decimal"
1173 )]
1174 pub strike: Option<Decimal>,
1175
1176 #[serde(
1178 rename = "@expiry",
1179 default,
1180 deserialize_with = "deserialize_optional_date"
1181 )]
1182 pub expiry: Option<NaiveDate>,
1183
1184 #[serde(rename = "@putCall", default)]
1186 pub put_call: Option<String>,
1187
1188 #[serde(
1190 rename = "@multiplier",
1191 default,
1192 deserialize_with = "deserialize_optional_decimal"
1193 )]
1194 pub multiplier: Option<Decimal>,
1195
1196 #[serde(rename = "@underlyingSymbol", default)]
1198 pub underlying_symbol: Option<String>,
1199
1200 #[serde(rename = "@underlyingConid", default)]
1202 pub underlying_conid: Option<String>,
1203
1204 #[serde(
1206 rename = "@tradePrice",
1207 default,
1208 deserialize_with = "deserialize_optional_decimal"
1209 )]
1210 pub trade_price: Option<Decimal>,
1211
1212 #[serde(
1214 rename = "@proceeds",
1215 default,
1216 deserialize_with = "deserialize_optional_decimal"
1217 )]
1218 pub proceeds: Option<Decimal>,
1219
1220 #[serde(
1222 rename = "@commission",
1223 default,
1224 deserialize_with = "deserialize_optional_decimal"
1225 )]
1226 pub commission: Option<Decimal>,
1227
1228 #[serde(rename = "@currency", default)]
1230 pub currency: Option<String>,
1231
1232 #[serde(
1234 rename = "@fxRateToBase",
1235 default,
1236 deserialize_with = "deserialize_optional_decimal"
1237 )]
1238 pub fx_rate_to_base: Option<Decimal>,
1239
1240 #[serde(
1242 rename = "@fifoPnlRealized",
1243 default,
1244 deserialize_with = "deserialize_optional_decimal"
1245 )]
1246 pub fifo_pnl_realized: Option<Decimal>,
1247
1248 #[serde(rename = "@notes", default)]
1250 pub notes: Option<String>,
1251
1252 #[serde(rename = "@levelOfDetail", default)]
1254 pub level_of_detail: Option<String>,
1255}
1256
1257#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1259pub struct FxTransaction {
1260 #[serde(rename = "@accountId")]
1262 pub account_id: String,
1263
1264 #[serde(rename = "@acctAlias", default)]
1266 pub acct_alias: Option<String>,
1267
1268 #[serde(rename = "@model", default)]
1270 pub model: Option<String>,
1271
1272 #[serde(rename = "@transactionID", default)]
1274 pub transaction_id: Option<String>,
1275
1276 #[serde(rename = "@actionID", default)]
1278 pub action_id: Option<String>,
1279
1280 #[serde(
1282 rename = "@reportDate",
1283 default,
1284 deserialize_with = "deserialize_optional_date"
1285 )]
1286 pub report_date: Option<NaiveDate>,
1287
1288 #[serde(rename = "@dateTime", default)]
1290 pub date_time: Option<String>,
1291
1292 #[serde(rename = "@description", default)]
1294 pub description: Option<String>,
1295
1296 #[serde(rename = "@functionalCurrency", default)]
1298 pub functional_currency: Option<String>,
1299
1300 #[serde(rename = "@fromCurrency")]
1302 pub from_currency: String,
1303
1304 #[serde(rename = "@toCurrency")]
1306 pub to_currency: String,
1307
1308 #[serde(rename = "@quantity")]
1310 pub quantity: Decimal,
1311
1312 #[serde(rename = "@proceeds")]
1314 pub proceeds: Decimal,
1315
1316 #[serde(
1318 rename = "@cost",
1319 default,
1320 deserialize_with = "deserialize_optional_decimal"
1321 )]
1322 pub cost: Option<Decimal>,
1323
1324 #[serde(
1326 rename = "@realizedPL",
1327 default,
1328 deserialize_with = "deserialize_optional_decimal"
1329 )]
1330 pub realized_pl: Option<Decimal>,
1331
1332 #[serde(
1334 rename = "@fxRateToBase",
1335 default,
1336 deserialize_with = "deserialize_optional_decimal"
1337 )]
1338 pub fx_rate_to_base: Option<Decimal>,
1339
1340 #[serde(rename = "@levelOfDetail", default)]
1342 pub level_of_detail: Option<String>,
1343
1344 #[serde(rename = "@assetCategory", default)]
1346 pub asset_category: Option<String>,
1347}
1348
1349#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1351pub struct ChangeInDividendAccrual {
1352 #[serde(rename = "@accountId")]
1354 pub account_id: String,
1355
1356 #[serde(rename = "@acctAlias", default)]
1358 pub acct_alias: Option<String>,
1359
1360 #[serde(rename = "@model", default)]
1362 pub model: Option<String>,
1363
1364 #[serde(rename = "@currency", default)]
1366 pub currency: Option<String>,
1367
1368 #[serde(
1370 rename = "@fxRateToBase",
1371 default,
1372 deserialize_with = "deserialize_optional_decimal"
1373 )]
1374 pub fx_rate_to_base: Option<Decimal>,
1375
1376 #[serde(rename = "@assetCategory", default)]
1378 pub asset_category: Option<AssetCategory>,
1379
1380 #[serde(rename = "@symbol")]
1382 pub symbol: String,
1383
1384 #[serde(rename = "@description", default)]
1386 pub description: Option<String>,
1387
1388 #[serde(rename = "@conid", default)]
1390 pub conid: Option<String>,
1391
1392 #[serde(rename = "@securityID", default)]
1394 pub security_id: Option<String>,
1395
1396 #[serde(rename = "@securityIDType", default)]
1398 pub security_id_type: Option<String>,
1399
1400 #[serde(rename = "@cusip", default)]
1402 pub cusip: Option<String>,
1403
1404 #[serde(rename = "@isin", default)]
1406 pub isin: Option<String>,
1407
1408 #[serde(rename = "@figi", default)]
1410 pub figi: Option<String>,
1411
1412 #[serde(rename = "@listingExchange", default)]
1414 pub listing_exchange: Option<String>,
1415
1416 #[serde(rename = "@exDate", deserialize_with = "deserialize_flex_date")]
1418 pub ex_date: NaiveDate,
1419
1420 #[serde(
1422 rename = "@payDate",
1423 default,
1424 deserialize_with = "deserialize_optional_date"
1425 )]
1426 pub pay_date: Option<NaiveDate>,
1427
1428 #[serde(
1430 rename = "@date",
1431 default,
1432 deserialize_with = "deserialize_optional_date"
1433 )]
1434 pub date: Option<NaiveDate>,
1435
1436 #[serde(
1438 rename = "@quantity",
1439 default,
1440 deserialize_with = "deserialize_optional_decimal"
1441 )]
1442 pub quantity: Option<Decimal>,
1443
1444 #[serde(
1446 rename = "@tax",
1447 default,
1448 deserialize_with = "deserialize_optional_decimal"
1449 )]
1450 pub tax: Option<Decimal>,
1451
1452 #[serde(
1454 rename = "@fee",
1455 default,
1456 deserialize_with = "deserialize_optional_decimal"
1457 )]
1458 pub fee: Option<Decimal>,
1459
1460 #[serde(rename = "@grossRate")]
1462 pub gross_rate: Decimal,
1463
1464 #[serde(
1466 rename = "@grossAmount",
1467 default,
1468 deserialize_with = "deserialize_optional_decimal"
1469 )]
1470 pub gross_amount: Option<Decimal>,
1471
1472 #[serde(rename = "@netAmount")]
1474 pub net_amount: Decimal,
1475
1476 #[serde(
1478 rename = "@fromAccrual",
1479 default,
1480 deserialize_with = "deserialize_optional_decimal"
1481 )]
1482 pub from_accrual: Option<Decimal>,
1483
1484 #[serde(
1486 rename = "@toAccrual",
1487 default,
1488 deserialize_with = "deserialize_optional_decimal"
1489 )]
1490 pub to_accrual: Option<Decimal>,
1491
1492 #[serde(rename = "@code", default)]
1494 pub code: Option<String>,
1495}
1496
1497#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1499pub struct OpenDividendAccrual {
1500 #[serde(rename = "@accountId")]
1502 pub account_id: String,
1503
1504 #[serde(rename = "@acctAlias", default)]
1506 pub acct_alias: Option<String>,
1507
1508 #[serde(rename = "@model", default)]
1510 pub model: Option<String>,
1511
1512 #[serde(rename = "@currency", default)]
1514 pub currency: Option<String>,
1515
1516 #[serde(
1518 rename = "@fxRateToBase",
1519 default,
1520 deserialize_with = "deserialize_optional_decimal"
1521 )]
1522 pub fx_rate_to_base: Option<Decimal>,
1523
1524 #[serde(rename = "@assetCategory", default)]
1526 pub asset_category: Option<AssetCategory>,
1527
1528 #[serde(rename = "@symbol")]
1530 pub symbol: String,
1531
1532 #[serde(rename = "@description", default)]
1534 pub description: Option<String>,
1535
1536 #[serde(rename = "@conid", default)]
1538 pub conid: Option<String>,
1539
1540 #[serde(rename = "@securityID", default)]
1542 pub security_id: Option<String>,
1543
1544 #[serde(rename = "@securityIDType", default)]
1546 pub security_id_type: Option<String>,
1547
1548 #[serde(rename = "@cusip", default)]
1550 pub cusip: Option<String>,
1551
1552 #[serde(rename = "@isin", default)]
1554 pub isin: Option<String>,
1555
1556 #[serde(rename = "@figi", default)]
1558 pub figi: Option<String>,
1559
1560 #[serde(rename = "@listingExchange", default)]
1562 pub listing_exchange: Option<String>,
1563
1564 #[serde(rename = "@exDate", deserialize_with = "deserialize_flex_date")]
1566 pub ex_date: NaiveDate,
1567
1568 #[serde(
1570 rename = "@payDate",
1571 default,
1572 deserialize_with = "deserialize_optional_date"
1573 )]
1574 pub pay_date: Option<NaiveDate>,
1575
1576 #[serde(rename = "@quantity")]
1578 pub quantity: Decimal,
1579
1580 #[serde(
1582 rename = "@tax",
1583 default,
1584 deserialize_with = "deserialize_optional_decimal"
1585 )]
1586 pub tax: Option<Decimal>,
1587
1588 #[serde(
1590 rename = "@fee",
1591 default,
1592 deserialize_with = "deserialize_optional_decimal"
1593 )]
1594 pub fee: Option<Decimal>,
1595
1596 #[serde(rename = "@grossRate")]
1598 pub gross_rate: Decimal,
1599
1600 #[serde(
1602 rename = "@grossAmount",
1603 default,
1604 deserialize_with = "deserialize_optional_decimal"
1605 )]
1606 pub gross_amount: Option<Decimal>,
1607
1608 #[serde(
1610 rename = "@netAmount",
1611 default,
1612 deserialize_with = "deserialize_optional_decimal"
1613 )]
1614 pub net_amount: Option<Decimal>,
1615
1616 #[serde(rename = "@code", default)]
1618 pub code: Option<String>,
1619}
1620
1621#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1623pub struct InterestAccrualsCurrency {
1624 #[serde(rename = "@accountId")]
1626 pub account_id: String,
1627
1628 #[serde(rename = "@currency")]
1630 pub currency: String,
1631
1632 #[serde(rename = "@fromDate", deserialize_with = "deserialize_flex_date")]
1634 pub from_date: NaiveDate,
1635
1636 #[serde(rename = "@toDate", deserialize_with = "deserialize_flex_date")]
1638 pub to_date: NaiveDate,
1639
1640 #[serde(rename = "@startingAccrualBalance")]
1642 pub starting_balance: Decimal,
1643
1644 #[serde(rename = "@interestAccrued")]
1646 pub interest_accrued: Decimal,
1647
1648 #[serde(rename = "@endingAccrualBalance")]
1650 pub ending_balance: Decimal,
1651}
1652
1653#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1655pub struct Transfer {
1656 #[serde(rename = "@accountId")]
1658 pub account_id: String,
1659
1660 #[serde(rename = "@acctAlias", default)]
1662 pub acct_alias: Option<String>,
1663
1664 #[serde(rename = "@model", default)]
1666 pub model: Option<String>,
1667
1668 #[serde(rename = "@transactionID", default)]
1670 pub transaction_id: Option<String>,
1671
1672 #[serde(rename = "@type", default)]
1674 pub transfer_type: Option<TransferType>,
1675
1676 #[serde(rename = "@conid", default)]
1678 pub conid: Option<String>,
1679
1680 #[serde(rename = "@symbol")]
1682 pub symbol: String,
1683
1684 #[serde(rename = "@description", default)]
1686 pub description: Option<String>,
1687
1688 #[serde(rename = "@assetCategory", default)]
1690 pub asset_category: Option<AssetCategory>,
1691
1692 #[serde(rename = "@cusip", default)]
1695 pub cusip: Option<String>,
1696
1697 #[serde(rename = "@isin", default)]
1699 pub isin: Option<String>,
1700
1701 #[serde(rename = "@figi", default)]
1703 pub figi: Option<String>,
1704
1705 #[serde(rename = "@listingExchange", default)]
1707 pub listing_exchange: Option<String>,
1708
1709 #[serde(rename = "@quantity")]
1711 pub quantity: Decimal,
1712
1713 #[serde(
1715 rename = "@transferPrice",
1716 default,
1717 deserialize_with = "deserialize_optional_decimal"
1718 )]
1719 pub transfer_price: Option<Decimal>,
1720
1721 #[serde(
1723 rename = "@positionAmount",
1724 default,
1725 deserialize_with = "deserialize_optional_decimal"
1726 )]
1727 pub position_amount: Option<Decimal>,
1728
1729 #[serde(
1731 rename = "@positionAmountInBase",
1732 default,
1733 deserialize_with = "deserialize_optional_decimal"
1734 )]
1735 pub position_amount_in_base: Option<Decimal>,
1736
1737 #[serde(
1739 rename = "@cashTransfer",
1740 default,
1741 deserialize_with = "deserialize_optional_decimal"
1742 )]
1743 pub cash_transfer: Option<Decimal>,
1744
1745 #[serde(rename = "@currency", default)]
1747 pub currency: Option<String>,
1748
1749 #[serde(
1751 rename = "@fxRateToBase",
1752 default,
1753 deserialize_with = "deserialize_optional_decimal"
1754 )]
1755 pub fx_rate_to_base: Option<Decimal>,
1756
1757 #[serde(rename = "@direction", default)]
1759 pub direction: Option<String>,
1760
1761 #[serde(rename = "@date", deserialize_with = "deserialize_flex_date")]
1763 pub date: NaiveDate,
1764
1765 #[serde(rename = "@ppiPayerPayeeAccount", default)]
1767 pub ppi_payer_payee_account: Option<String>,
1768
1769 #[serde(rename = "@deliveringReceivingBroker", default)]
1771 pub delivering_receiving_broker: Option<String>,
1772
1773 #[serde(
1776 rename = "@strike",
1777 default,
1778 deserialize_with = "deserialize_optional_decimal"
1779 )]
1780 pub strike: Option<Decimal>,
1781
1782 #[serde(
1784 rename = "@expiry",
1785 default,
1786 deserialize_with = "deserialize_optional_date"
1787 )]
1788 pub expiry: Option<NaiveDate>,
1789
1790 #[serde(rename = "@putCall", default)]
1792 pub put_call: Option<String>,
1793
1794 #[serde(
1796 rename = "@multiplier",
1797 default,
1798 deserialize_with = "deserialize_optional_decimal"
1799 )]
1800 pub multiplier: Option<Decimal>,
1801}
1802
1803#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1812pub struct MTMPerformanceSummaryUnderlying {
1813 #[serde(rename = "@accountId")]
1815 pub account_id: String,
1816
1817 #[serde(rename = "@acctAlias", default)]
1819 pub acct_alias: Option<String>,
1820
1821 #[serde(rename = "@model", default)]
1823 pub model: Option<String>,
1824
1825 #[serde(
1827 rename = "@reportDate",
1828 default,
1829 deserialize_with = "deserialize_optional_date"
1830 )]
1831 pub report_date: Option<NaiveDate>,
1832
1833 #[serde(rename = "@symbol", default)]
1835 pub symbol: Option<String>,
1836
1837 #[serde(rename = "@description", default)]
1839 pub description: Option<String>,
1840
1841 #[serde(rename = "@conid", default)]
1843 pub conid: Option<String>,
1844
1845 #[serde(rename = "@assetCategory", default)]
1847 pub asset_category: Option<AssetCategory>,
1848
1849 #[serde(rename = "@cusip", default)]
1852 pub cusip: Option<String>,
1853
1854 #[serde(rename = "@isin", default)]
1856 pub isin: Option<String>,
1857
1858 #[serde(rename = "@listingExchange", default)]
1860 pub listing_exchange: Option<String>,
1861
1862 #[serde(rename = "@underlyingSymbol", default)]
1864 pub underlying_symbol: Option<String>,
1865
1866 #[serde(rename = "@underlyingConid", default)]
1868 pub underlying_conid: Option<String>,
1869
1870 #[serde(rename = "@underlyingListingExchange", default)]
1872 pub underlying_listing_exchange: Option<String>,
1873
1874 #[serde(
1877 rename = "@costAdj",
1878 default,
1879 deserialize_with = "deserialize_optional_decimal"
1880 )]
1881 pub cost_adj: Option<Decimal>,
1882
1883 #[serde(
1885 rename = "@realizedSTProfit",
1886 default,
1887 deserialize_with = "deserialize_optional_decimal"
1888 )]
1889 pub realized_st_profit: Option<Decimal>,
1890
1891 #[serde(
1893 rename = "@realizedSTLoss",
1894 default,
1895 deserialize_with = "deserialize_optional_decimal"
1896 )]
1897 pub realized_st_loss: Option<Decimal>,
1898
1899 #[serde(
1901 rename = "@realizedLTProfit",
1902 default,
1903 deserialize_with = "deserialize_optional_decimal"
1904 )]
1905 pub realized_lt_profit: Option<Decimal>,
1906
1907 #[serde(
1909 rename = "@realizedLTLoss",
1910 default,
1911 deserialize_with = "deserialize_optional_decimal"
1912 )]
1913 pub realized_lt_loss: Option<Decimal>,
1914
1915 #[serde(
1917 rename = "@unrealizedSTProfit",
1918 default,
1919 deserialize_with = "deserialize_optional_decimal"
1920 )]
1921 pub unrealized_st_profit: Option<Decimal>,
1922
1923 #[serde(
1925 rename = "@unrealizedSTLoss",
1926 default,
1927 deserialize_with = "deserialize_optional_decimal"
1928 )]
1929 pub unrealized_st_loss: Option<Decimal>,
1930
1931 #[serde(
1933 rename = "@unrealizedLTProfit",
1934 default,
1935 deserialize_with = "deserialize_optional_decimal"
1936 )]
1937 pub unrealized_lt_profit: Option<Decimal>,
1938
1939 #[serde(
1941 rename = "@unrealizedLTLoss",
1942 default,
1943 deserialize_with = "deserialize_optional_decimal"
1944 )]
1945 pub unrealized_lt_loss: Option<Decimal>,
1946
1947 #[serde(
1949 rename = "@transactionMtm",
1950 default,
1951 deserialize_with = "deserialize_optional_decimal"
1952 )]
1953 pub transaction_mtm: Option<Decimal>,
1954
1955 #[serde(
1957 rename = "@commissions",
1958 default,
1959 deserialize_with = "deserialize_optional_decimal"
1960 )]
1961 pub commissions: Option<Decimal>,
1962
1963 #[serde(
1965 rename = "@other",
1966 default,
1967 deserialize_with = "deserialize_optional_decimal"
1968 )]
1969 pub other: Option<Decimal>,
1970
1971 #[serde(rename = "@levelOfDetail", default)]
1973 pub level_of_detail: Option<String>,
1974}
1975
1976#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1981pub struct FIFOPerformanceSummaryUnderlying {
1982 #[serde(rename = "@accountId")]
1984 pub account_id: String,
1985
1986 #[serde(rename = "@acctAlias", default)]
1988 pub acct_alias: Option<String>,
1989
1990 #[serde(rename = "@model", default)]
1992 pub model: Option<String>,
1993
1994 #[serde(
1996 rename = "@reportDate",
1997 default,
1998 deserialize_with = "deserialize_optional_date"
1999 )]
2000 pub report_date: Option<NaiveDate>,
2001
2002 #[serde(rename = "@symbol", default)]
2004 pub symbol: Option<String>,
2005
2006 #[serde(rename = "@description", default)]
2008 pub description: Option<String>,
2009
2010 #[serde(rename = "@conid", default)]
2012 pub conid: Option<String>,
2013
2014 #[serde(rename = "@assetCategory", default)]
2016 pub asset_category: Option<AssetCategory>,
2017
2018 #[serde(rename = "@cusip", default)]
2021 pub cusip: Option<String>,
2022
2023 #[serde(rename = "@isin", default)]
2025 pub isin: Option<String>,
2026
2027 #[serde(rename = "@listingExchange", default)]
2029 pub listing_exchange: Option<String>,
2030
2031 #[serde(rename = "@underlyingSymbol", default)]
2033 pub underlying_symbol: Option<String>,
2034
2035 #[serde(rename = "@underlyingConid", default)]
2037 pub underlying_conid: Option<String>,
2038
2039 #[serde(
2042 rename = "@realizedShortTermPnl",
2043 default,
2044 deserialize_with = "deserialize_optional_decimal"
2045 )]
2046 pub realized_short_term_pnl: Option<Decimal>,
2047
2048 #[serde(
2050 rename = "@realizedLongTermPnl",
2051 default,
2052 deserialize_with = "deserialize_optional_decimal"
2053 )]
2054 pub realized_long_term_pnl: Option<Decimal>,
2055
2056 #[serde(
2058 rename = "@realizedTotalPnl",
2059 default,
2060 deserialize_with = "deserialize_optional_decimal"
2061 )]
2062 pub realized_total_pnl: Option<Decimal>,
2063
2064 #[serde(
2066 rename = "@unrealizedShortTermPnl",
2067 default,
2068 deserialize_with = "deserialize_optional_decimal"
2069 )]
2070 pub unrealized_short_term_pnl: Option<Decimal>,
2071
2072 #[serde(
2074 rename = "@unrealizedLongTermPnl",
2075 default,
2076 deserialize_with = "deserialize_optional_decimal"
2077 )]
2078 pub unrealized_long_term_pnl: Option<Decimal>,
2079
2080 #[serde(
2082 rename = "@unrealizedTotalPnl",
2083 default,
2084 deserialize_with = "deserialize_optional_decimal"
2085 )]
2086 pub unrealized_total_pnl: Option<Decimal>,
2087
2088 #[serde(
2090 rename = "@totalIncome",
2091 default,
2092 deserialize_with = "deserialize_optional_decimal"
2093 )]
2094 pub total_income: Option<Decimal>,
2095
2096 #[serde(rename = "@levelOfDetail", default)]
2098 pub level_of_detail: Option<String>,
2099}
2100
2101#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2103pub struct MTDYTDPerformanceSummary {
2104 #[serde(rename = "@accountId")]
2106 pub account_id: String,
2107
2108 #[serde(rename = "@acctAlias", default)]
2110 pub acct_alias: Option<String>,
2111
2112 #[serde(rename = "@model", default)]
2114 pub model: Option<String>,
2115
2116 #[serde(rename = "@symbol", default)]
2118 pub symbol: Option<String>,
2119
2120 #[serde(rename = "@conid", default)]
2122 pub conid: Option<String>,
2123
2124 #[serde(rename = "@assetCategory", default)]
2126 pub asset_category: Option<AssetCategory>,
2127
2128 #[serde(
2131 rename = "@mtdRealizedPnl",
2132 default,
2133 deserialize_with = "deserialize_optional_decimal"
2134 )]
2135 pub mtd_realized_pnl: Option<Decimal>,
2136
2137 #[serde(
2139 rename = "@mtdUnrealizedPnl",
2140 default,
2141 deserialize_with = "deserialize_optional_decimal"
2142 )]
2143 pub mtd_unrealized_pnl: Option<Decimal>,
2144
2145 #[serde(
2147 rename = "@mtdCommissions",
2148 default,
2149 deserialize_with = "deserialize_optional_decimal"
2150 )]
2151 pub mtd_commissions: Option<Decimal>,
2152
2153 #[serde(
2155 rename = "@mtdFees",
2156 default,
2157 deserialize_with = "deserialize_optional_decimal"
2158 )]
2159 pub mtd_fees: Option<Decimal>,
2160
2161 #[serde(
2164 rename = "@ytdRealizedPnl",
2165 default,
2166 deserialize_with = "deserialize_optional_decimal"
2167 )]
2168 pub ytd_realized_pnl: Option<Decimal>,
2169
2170 #[serde(
2172 rename = "@ytdUnrealizedPnl",
2173 default,
2174 deserialize_with = "deserialize_optional_decimal"
2175 )]
2176 pub ytd_unrealized_pnl: Option<Decimal>,
2177
2178 #[serde(
2180 rename = "@ytdCommissions",
2181 default,
2182 deserialize_with = "deserialize_optional_decimal"
2183 )]
2184 pub ytd_commissions: Option<Decimal>,
2185
2186 #[serde(
2188 rename = "@ytdFees",
2189 default,
2190 deserialize_with = "deserialize_optional_decimal"
2191 )]
2192 pub ytd_fees: Option<Decimal>,
2193
2194 #[serde(rename = "@levelOfDetail", default)]
2196 pub level_of_detail: Option<String>,
2197}
2198
2199#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2208pub struct StatementOfFundsLine {
2209 #[serde(rename = "@accountId")]
2211 pub account_id: String,
2212
2213 #[serde(rename = "@acctAlias", default)]
2215 pub acct_alias: Option<String>,
2216
2217 #[serde(rename = "@model", default)]
2219 pub model: Option<String>,
2220
2221 #[serde(
2223 rename = "@reportDate",
2224 default,
2225 deserialize_with = "deserialize_optional_date"
2226 )]
2227 pub report_date: Option<NaiveDate>,
2228
2229 #[serde(
2231 rename = "@date",
2232 default,
2233 deserialize_with = "deserialize_optional_date"
2234 )]
2235 pub date: Option<NaiveDate>,
2236
2237 #[serde(rename = "@currency", default)]
2239 pub currency: Option<String>,
2240
2241 #[serde(rename = "@activityCode", default)]
2243 pub activity_code: Option<String>,
2244
2245 #[serde(rename = "@activityDescription", default)]
2247 pub activity_description: Option<String>,
2248
2249 #[serde(rename = "@tradeID", default)]
2251 pub trade_id: Option<String>,
2252
2253 #[serde(rename = "@symbol", default)]
2255 pub symbol: Option<String>,
2256
2257 #[serde(rename = "@conid", default)]
2259 pub conid: Option<String>,
2260
2261 #[serde(
2263 rename = "@debit",
2264 default,
2265 deserialize_with = "deserialize_optional_decimal"
2266 )]
2267 pub debit: Option<Decimal>,
2268
2269 #[serde(
2271 rename = "@credit",
2272 default,
2273 deserialize_with = "deserialize_optional_decimal"
2274 )]
2275 pub credit: Option<Decimal>,
2276
2277 #[serde(
2279 rename = "@amount",
2280 default,
2281 deserialize_with = "deserialize_optional_decimal"
2282 )]
2283 pub amount: Option<Decimal>,
2284
2285 #[serde(
2287 rename = "@balance",
2288 default,
2289 deserialize_with = "deserialize_optional_decimal"
2290 )]
2291 pub balance: Option<Decimal>,
2292
2293 #[serde(
2295 rename = "@fxRateToBase",
2296 default,
2297 deserialize_with = "deserialize_optional_decimal"
2298 )]
2299 pub fx_rate_to_base: Option<Decimal>,
2300
2301 #[serde(rename = "@levelOfDetail", default)]
2303 pub level_of_detail: Option<String>,
2304}
2305
2306#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2315pub struct ChangeInPositionValue {
2316 #[serde(rename = "@accountId")]
2318 pub account_id: String,
2319
2320 #[serde(rename = "@acctAlias", default)]
2322 pub acct_alias: Option<String>,
2323
2324 #[serde(rename = "@model", default)]
2326 pub model: Option<String>,
2327
2328 #[serde(
2330 rename = "@reportDate",
2331 default,
2332 deserialize_with = "deserialize_optional_date"
2333 )]
2334 pub report_date: Option<NaiveDate>,
2335
2336 #[serde(rename = "@symbol", default)]
2338 pub symbol: Option<String>,
2339
2340 #[serde(rename = "@conid", default)]
2342 pub conid: Option<String>,
2343
2344 #[serde(rename = "@assetCategory", default)]
2346 pub asset_category: Option<AssetCategory>,
2347
2348 #[serde(rename = "@currency", default)]
2350 pub currency: Option<String>,
2351
2352 #[serde(
2354 rename = "@priorPeriodValue",
2355 default,
2356 deserialize_with = "deserialize_optional_decimal"
2357 )]
2358 pub prior_period_value: Option<Decimal>,
2359
2360 #[serde(
2362 rename = "@transactions",
2363 default,
2364 deserialize_with = "deserialize_optional_decimal"
2365 )]
2366 pub transactions: Option<Decimal>,
2367
2368 #[serde(
2370 rename = "@mtmPriorPeriodPositions",
2371 default,
2372 deserialize_with = "deserialize_optional_decimal"
2373 )]
2374 pub mtm_prior_period_positions: Option<Decimal>,
2375
2376 #[serde(
2378 rename = "@mtmTransactions",
2379 default,
2380 deserialize_with = "deserialize_optional_decimal"
2381 )]
2382 pub mtm_transactions: Option<Decimal>,
2383
2384 #[serde(
2386 rename = "@corporateActions",
2387 default,
2388 deserialize_with = "deserialize_optional_decimal"
2389 )]
2390 pub corporate_actions: Option<Decimal>,
2391
2392 #[serde(
2394 rename = "@fxTranslation",
2395 default,
2396 deserialize_with = "deserialize_optional_decimal"
2397 )]
2398 pub fx_translation: Option<Decimal>,
2399
2400 #[serde(
2402 rename = "@other",
2403 default,
2404 deserialize_with = "deserialize_optional_decimal"
2405 )]
2406 pub other: Option<Decimal>,
2407
2408 #[serde(
2410 rename = "@endingValue",
2411 default,
2412 deserialize_with = "deserialize_optional_decimal"
2413 )]
2414 pub ending_value: Option<Decimal>,
2415
2416 #[serde(rename = "@levelOfDetail", default)]
2418 pub level_of_detail: Option<String>,
2419}
2420
2421#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2430pub struct UnbundledCommissionDetail {
2431 #[serde(rename = "@accountId")]
2433 pub account_id: String,
2434
2435 #[serde(rename = "@acctAlias", default)]
2437 pub acct_alias: Option<String>,
2438
2439 #[serde(rename = "@model", default)]
2441 pub model: Option<String>,
2442
2443 #[serde(rename = "@symbol", default)]
2445 pub symbol: Option<String>,
2446
2447 #[serde(rename = "@description", default)]
2449 pub description: Option<String>,
2450
2451 #[serde(rename = "@conid", default)]
2453 pub conid: Option<String>,
2454
2455 #[serde(rename = "@assetCategory", default)]
2457 pub asset_category: Option<AssetCategory>,
2458
2459 #[serde(rename = "@execID", default)]
2461 pub exec_id: Option<String>,
2462
2463 #[serde(rename = "@orderID", default)]
2465 pub order_id: Option<String>,
2466
2467 #[serde(rename = "@tradeID", default)]
2469 pub trade_id: Option<String>,
2470
2471 #[serde(rename = "@dateTime", default)]
2473 pub date_time: Option<String>,
2474
2475 #[serde(rename = "@exchange", default)]
2477 pub exchange: Option<String>,
2478
2479 #[serde(
2481 rename = "@quantity",
2482 default,
2483 deserialize_with = "deserialize_optional_decimal"
2484 )]
2485 pub quantity: Option<Decimal>,
2486
2487 #[serde(
2489 rename = "@price",
2490 default,
2491 deserialize_with = "deserialize_optional_decimal"
2492 )]
2493 pub price: Option<Decimal>,
2494
2495 #[serde(
2497 rename = "@executionCommission",
2498 default,
2499 deserialize_with = "deserialize_optional_decimal"
2500 )]
2501 pub execution_commission: Option<Decimal>,
2502
2503 #[serde(
2505 rename = "@clearingCommission",
2506 default,
2507 deserialize_with = "deserialize_optional_decimal"
2508 )]
2509 pub clearing_commission: Option<Decimal>,
2510
2511 #[serde(
2513 rename = "@regulatoryCommission",
2514 default,
2515 deserialize_with = "deserialize_optional_decimal"
2516 )]
2517 pub regulatory_commission: Option<Decimal>,
2518
2519 #[serde(
2521 rename = "@thirdPartyCommission",
2522 default,
2523 deserialize_with = "deserialize_optional_decimal"
2524 )]
2525 pub third_party_commission: Option<Decimal>,
2526
2527 #[serde(
2529 rename = "@thirdPartyRegulatoryCommission",
2530 default,
2531 deserialize_with = "deserialize_optional_decimal"
2532 )]
2533 pub third_party_regulatory_commission: Option<Decimal>,
2534
2535 #[serde(
2537 rename = "@totalCommission",
2538 default,
2539 deserialize_with = "deserialize_optional_decimal"
2540 )]
2541 pub total_commission: Option<Decimal>,
2542
2543 #[serde(rename = "@currency", default)]
2545 pub currency: Option<String>,
2546}
2547
2548#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2550pub struct ClientFee {
2551 #[serde(rename = "@accountId")]
2553 pub account_id: String,
2554
2555 #[serde(rename = "@acctAlias", default)]
2557 pub acct_alias: Option<String>,
2558
2559 #[serde(rename = "@model", default)]
2561 pub model: Option<String>,
2562
2563 #[serde(
2565 rename = "@date",
2566 default,
2567 deserialize_with = "deserialize_optional_date"
2568 )]
2569 pub date: Option<NaiveDate>,
2570
2571 #[serde(rename = "@currency", default)]
2573 pub currency: Option<String>,
2574
2575 #[serde(
2577 rename = "@revenue",
2578 default,
2579 deserialize_with = "deserialize_optional_decimal"
2580 )]
2581 pub revenue: Option<Decimal>,
2582
2583 #[serde(
2585 rename = "@expense",
2586 default,
2587 deserialize_with = "deserialize_optional_decimal"
2588 )]
2589 pub expense: Option<Decimal>,
2590
2591 #[serde(
2593 rename = "@net",
2594 default,
2595 deserialize_with = "deserialize_optional_decimal"
2596 )]
2597 pub net: Option<Decimal>,
2598
2599 #[serde(rename = "@description", default)]
2601 pub description: Option<String>,
2602}
2603
2604#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2606pub struct ClientFeesDetail {
2607 #[serde(rename = "@accountId")]
2609 pub account_id: String,
2610
2611 #[serde(rename = "@acctAlias", default)]
2613 pub acct_alias: Option<String>,
2614
2615 #[serde(rename = "@model", default)]
2617 pub model: Option<String>,
2618
2619 #[serde(
2621 rename = "@date",
2622 default,
2623 deserialize_with = "deserialize_optional_date"
2624 )]
2625 pub date: Option<NaiveDate>,
2626
2627 #[serde(rename = "@currency", default)]
2629 pub currency: Option<String>,
2630
2631 #[serde(rename = "@feeType", default)]
2633 pub fee_type: Option<String>,
2634
2635 #[serde(
2637 rename = "@revenue",
2638 default,
2639 deserialize_with = "deserialize_optional_decimal"
2640 )]
2641 pub revenue: Option<Decimal>,
2642
2643 #[serde(
2645 rename = "@expense",
2646 default,
2647 deserialize_with = "deserialize_optional_decimal"
2648 )]
2649 pub expense: Option<Decimal>,
2650
2651 #[serde(
2653 rename = "@net",
2654 default,
2655 deserialize_with = "deserialize_optional_decimal"
2656 )]
2657 pub net: Option<Decimal>,
2658
2659 #[serde(rename = "@description", default)]
2661 pub description: Option<String>,
2662
2663 #[serde(
2665 rename = "@fxRateToBase",
2666 default,
2667 deserialize_with = "deserialize_optional_decimal"
2668 )]
2669 pub fx_rate_to_base: Option<Decimal>,
2670}
2671
2672#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2678pub struct SLBActivity {
2679 #[serde(rename = "@accountId")]
2681 pub account_id: String,
2682
2683 #[serde(rename = "@acctAlias", default)]
2685 pub acct_alias: Option<String>,
2686
2687 #[serde(rename = "@model", default)]
2689 pub model: Option<String>,
2690
2691 #[serde(rename = "@symbol", default)]
2693 pub symbol: Option<String>,
2694
2695 #[serde(rename = "@description", default)]
2697 pub description: Option<String>,
2698
2699 #[serde(rename = "@conid", default)]
2701 pub conid: Option<String>,
2702
2703 #[serde(rename = "@assetCategory", default)]
2705 pub asset_category: Option<AssetCategory>,
2706
2707 #[serde(
2709 rename = "@date",
2710 default,
2711 deserialize_with = "deserialize_optional_date"
2712 )]
2713 pub date: Option<NaiveDate>,
2714
2715 #[serde(rename = "@type", default)]
2717 pub activity_type: Option<String>,
2718
2719 #[serde(
2721 rename = "@quantity",
2722 default,
2723 deserialize_with = "deserialize_optional_decimal"
2724 )]
2725 pub quantity: Option<Decimal>,
2726
2727 #[serde(
2729 rename = "@collateralAmount",
2730 default,
2731 deserialize_with = "deserialize_optional_decimal"
2732 )]
2733 pub collateral_amount: Option<Decimal>,
2734
2735 #[serde(
2737 rename = "@feeRate",
2738 default,
2739 deserialize_with = "deserialize_optional_decimal"
2740 )]
2741 pub fee_rate: Option<Decimal>,
2742
2743 #[serde(
2745 rename = "@netLendFee",
2746 default,
2747 deserialize_with = "deserialize_optional_decimal"
2748 )]
2749 pub net_lend_fee: Option<Decimal>,
2750
2751 #[serde(rename = "@currency", default)]
2753 pub currency: Option<String>,
2754
2755 #[serde(
2757 rename = "@fxRateToBase",
2758 default,
2759 deserialize_with = "deserialize_optional_decimal"
2760 )]
2761 pub fx_rate_to_base: Option<Decimal>,
2762}
2763
2764#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2766pub struct SLBFee {
2767 #[serde(rename = "@accountId")]
2769 pub account_id: String,
2770
2771 #[serde(rename = "@acctAlias", default)]
2773 pub acct_alias: Option<String>,
2774
2775 #[serde(rename = "@model", default)]
2777 pub model: Option<String>,
2778
2779 #[serde(rename = "@symbol", default)]
2781 pub symbol: Option<String>,
2782
2783 #[serde(rename = "@description", default)]
2785 pub description: Option<String>,
2786
2787 #[serde(rename = "@conid", default)]
2789 pub conid: Option<String>,
2790
2791 #[serde(rename = "@assetCategory", default)]
2793 pub asset_category: Option<AssetCategory>,
2794
2795 #[serde(
2797 rename = "@valueDate",
2798 default,
2799 deserialize_with = "deserialize_optional_date"
2800 )]
2801 pub value_date: Option<NaiveDate>,
2802
2803 #[serde(
2805 rename = "@startDate",
2806 default,
2807 deserialize_with = "deserialize_optional_date"
2808 )]
2809 pub start_date: Option<NaiveDate>,
2810
2811 #[serde(
2813 rename = "@quantity",
2814 default,
2815 deserialize_with = "deserialize_optional_decimal"
2816 )]
2817 pub quantity: Option<Decimal>,
2818
2819 #[serde(
2821 rename = "@collateralAmount",
2822 default,
2823 deserialize_with = "deserialize_optional_decimal"
2824 )]
2825 pub collateral_amount: Option<Decimal>,
2826
2827 #[serde(
2829 rename = "@feeRate",
2830 default,
2831 deserialize_with = "deserialize_optional_decimal"
2832 )]
2833 pub fee_rate: Option<Decimal>,
2834
2835 #[serde(
2837 rename = "@fee",
2838 default,
2839 deserialize_with = "deserialize_optional_decimal"
2840 )]
2841 pub fee: Option<Decimal>,
2842
2843 #[serde(
2845 rename = "@carryCharge",
2846 default,
2847 deserialize_with = "deserialize_optional_decimal"
2848 )]
2849 pub carry_charge: Option<Decimal>,
2850
2851 #[serde(rename = "@currency", default)]
2853 pub currency: Option<String>,
2854
2855 #[serde(
2857 rename = "@fxRateToBase",
2858 default,
2859 deserialize_with = "deserialize_optional_decimal"
2860 )]
2861 pub fx_rate_to_base: Option<Decimal>,
2862}
2863
2864#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2866pub struct HardToBorrowDetail {
2867 #[serde(rename = "@accountId")]
2869 pub account_id: String,
2870
2871 #[serde(rename = "@acctAlias", default)]
2873 pub acct_alias: Option<String>,
2874
2875 #[serde(rename = "@model", default)]
2877 pub model: Option<String>,
2878
2879 #[serde(rename = "@symbol", default)]
2881 pub symbol: Option<String>,
2882
2883 #[serde(rename = "@description", default)]
2885 pub description: Option<String>,
2886
2887 #[serde(rename = "@conid", default)]
2889 pub conid: Option<String>,
2890
2891 #[serde(rename = "@assetCategory", default)]
2893 pub asset_category: Option<AssetCategory>,
2894
2895 #[serde(
2897 rename = "@valueDate",
2898 default,
2899 deserialize_with = "deserialize_optional_date"
2900 )]
2901 pub value_date: Option<NaiveDate>,
2902
2903 #[serde(
2905 rename = "@quantity",
2906 default,
2907 deserialize_with = "deserialize_optional_decimal"
2908 )]
2909 pub quantity: Option<Decimal>,
2910
2911 #[serde(
2913 rename = "@price",
2914 default,
2915 deserialize_with = "deserialize_optional_decimal"
2916 )]
2917 pub price: Option<Decimal>,
2918
2919 #[serde(
2921 rename = "@value",
2922 default,
2923 deserialize_with = "deserialize_optional_decimal"
2924 )]
2925 pub value: Option<Decimal>,
2926
2927 #[serde(
2929 rename = "@borrowFeeRate",
2930 default,
2931 deserialize_with = "deserialize_optional_decimal"
2932 )]
2933 pub borrow_fee_rate: Option<Decimal>,
2934
2935 #[serde(
2937 rename = "@borrowFee",
2938 default,
2939 deserialize_with = "deserialize_optional_decimal"
2940 )]
2941 pub borrow_fee: Option<Decimal>,
2942
2943 #[serde(rename = "@currency", default)]
2945 pub currency: Option<String>,
2946
2947 #[serde(
2949 rename = "@fxRateToBase",
2950 default,
2951 deserialize_with = "deserialize_optional_decimal"
2952 )]
2953 pub fx_rate_to_base: Option<Decimal>,
2954}
2955
2956#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2962pub struct FxLot {
2963 #[serde(rename = "@accountId")]
2965 pub account_id: String,
2966
2967 #[serde(rename = "@acctAlias", default)]
2969 pub acct_alias: Option<String>,
2970
2971 #[serde(rename = "@model", default)]
2973 pub model: Option<String>,
2974
2975 #[serde(rename = "@assetCategory", default)]
2977 pub asset_category: Option<String>,
2978
2979 #[serde(
2981 rename = "@reportDate",
2982 default,
2983 deserialize_with = "deserialize_optional_date"
2984 )]
2985 pub report_date: Option<NaiveDate>,
2986
2987 #[serde(rename = "@functionalCurrency", default)]
2989 pub functional_currency: Option<String>,
2990
2991 #[serde(rename = "@fxCurrency", default)]
2993 pub fx_currency: Option<String>,
2994
2995 #[serde(
2997 rename = "@quantity",
2998 default,
2999 deserialize_with = "deserialize_optional_decimal"
3000 )]
3001 pub quantity: Option<Decimal>,
3002
3003 #[serde(
3005 rename = "@costPrice",
3006 default,
3007 deserialize_with = "deserialize_optional_decimal"
3008 )]
3009 pub cost_price: Option<Decimal>,
3010
3011 #[serde(
3013 rename = "@costBasis",
3014 default,
3015 deserialize_with = "deserialize_optional_decimal"
3016 )]
3017 pub cost_basis: Option<Decimal>,
3018
3019 #[serde(
3021 rename = "@closePrice",
3022 default,
3023 deserialize_with = "deserialize_optional_decimal"
3024 )]
3025 pub close_price: Option<Decimal>,
3026
3027 #[serde(
3029 rename = "@value",
3030 default,
3031 deserialize_with = "deserialize_optional_decimal"
3032 )]
3033 pub value: Option<Decimal>,
3034
3035 #[serde(
3037 rename = "@unrealizedPL",
3038 default,
3039 deserialize_with = "deserialize_optional_decimal"
3040 )]
3041 pub unrealized_pl: Option<Decimal>,
3042
3043 #[serde(rename = "@levelOfDetail", default)]
3045 pub level_of_detail: Option<String>,
3046}
3047
3048#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3054pub struct UnsettledTransfer {
3055 #[serde(rename = "@accountId")]
3057 pub account_id: String,
3058
3059 #[serde(rename = "@acctAlias", default)]
3061 pub acct_alias: Option<String>,
3062
3063 #[serde(rename = "@model", default)]
3065 pub model: Option<String>,
3066
3067 #[serde(rename = "@symbol", default)]
3069 pub symbol: Option<String>,
3070
3071 #[serde(rename = "@description", default)]
3073 pub description: Option<String>,
3074
3075 #[serde(rename = "@conid", default)]
3077 pub conid: Option<String>,
3078
3079 #[serde(rename = "@assetCategory", default)]
3081 pub asset_category: Option<AssetCategory>,
3082
3083 #[serde(rename = "@direction", default)]
3085 pub direction: Option<String>,
3086
3087 #[serde(
3089 rename = "@date",
3090 default,
3091 deserialize_with = "deserialize_optional_date"
3092 )]
3093 pub date: Option<NaiveDate>,
3094
3095 #[serde(
3097 rename = "@expectedDate",
3098 default,
3099 deserialize_with = "deserialize_optional_date"
3100 )]
3101 pub expected_date: Option<NaiveDate>,
3102
3103 #[serde(
3105 rename = "@quantity",
3106 default,
3107 deserialize_with = "deserialize_optional_decimal"
3108 )]
3109 pub quantity: Option<Decimal>,
3110
3111 #[serde(rename = "@currency", default)]
3113 pub currency: Option<String>,
3114
3115 #[serde(
3117 rename = "@fxRateToBase",
3118 default,
3119 deserialize_with = "deserialize_optional_decimal"
3120 )]
3121 pub fx_rate_to_base: Option<Decimal>,
3122}
3123
3124#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3126pub struct TradeTransfer {
3127 #[serde(rename = "@accountId")]
3129 pub account_id: String,
3130
3131 #[serde(rename = "@acctAlias", default)]
3133 pub acct_alias: Option<String>,
3134
3135 #[serde(rename = "@model", default)]
3137 pub model: Option<String>,
3138
3139 #[serde(rename = "@symbol", default)]
3141 pub symbol: Option<String>,
3142
3143 #[serde(rename = "@description", default)]
3145 pub description: Option<String>,
3146
3147 #[serde(rename = "@conid", default)]
3149 pub conid: Option<String>,
3150
3151 #[serde(rename = "@assetCategory", default)]
3153 pub asset_category: Option<AssetCategory>,
3154
3155 #[serde(rename = "@transferType", default)]
3157 pub transfer_type: Option<String>,
3158
3159 #[serde(rename = "@direction", default)]
3161 pub direction: Option<String>,
3162
3163 #[serde(rename = "@deliveryType", default)]
3165 pub delivery_type: Option<String>,
3166
3167 #[serde(
3169 rename = "@quantity",
3170 default,
3171 deserialize_with = "deserialize_optional_decimal"
3172 )]
3173 pub quantity: Option<Decimal>,
3174
3175 #[serde(
3177 rename = "@transferPrice",
3178 default,
3179 deserialize_with = "deserialize_optional_decimal"
3180 )]
3181 pub transfer_price: Option<Decimal>,
3182
3183 #[serde(
3185 rename = "@date",
3186 default,
3187 deserialize_with = "deserialize_optional_date"
3188 )]
3189 pub date: Option<NaiveDate>,
3190
3191 #[serde(rename = "@executingBroker", default)]
3193 pub executing_broker: Option<String>,
3194
3195 #[serde(rename = "@currency", default)]
3197 pub currency: Option<String>,
3198
3199 #[serde(
3201 rename = "@fxRateToBase",
3202 default,
3203 deserialize_with = "deserialize_optional_decimal"
3204 )]
3205 pub fx_rate_to_base: Option<Decimal>,
3206}
3207
3208#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3214pub struct PriorPeriodPosition {
3215 #[serde(rename = "@accountId")]
3217 pub account_id: String,
3218
3219 #[serde(rename = "@acctAlias", default)]
3221 pub acct_alias: Option<String>,
3222
3223 #[serde(rename = "@model", default)]
3225 pub model: Option<String>,
3226
3227 #[serde(rename = "@symbol", default)]
3229 pub symbol: Option<String>,
3230
3231 #[serde(rename = "@description", default)]
3233 pub description: Option<String>,
3234
3235 #[serde(rename = "@conid", default)]
3237 pub conid: Option<String>,
3238
3239 #[serde(rename = "@assetCategory", default)]
3241 pub asset_category: Option<AssetCategory>,
3242
3243 #[serde(
3245 rename = "@priorMtmPnl",
3246 default,
3247 deserialize_with = "deserialize_optional_decimal"
3248 )]
3249 pub prior_mtm_pnl: Option<Decimal>,
3250
3251 #[serde(
3253 rename = "@date",
3254 default,
3255 deserialize_with = "deserialize_optional_date"
3256 )]
3257 pub date: Option<NaiveDate>,
3258
3259 #[serde(
3261 rename = "@quantity",
3262 default,
3263 deserialize_with = "deserialize_optional_decimal"
3264 )]
3265 pub quantity: Option<Decimal>,
3266
3267 #[serde(
3269 rename = "@price",
3270 default,
3271 deserialize_with = "deserialize_optional_decimal"
3272 )]
3273 pub price: Option<Decimal>,
3274
3275 #[serde(rename = "@currency", default)]
3277 pub currency: Option<String>,
3278}
3279
3280#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3286pub struct TierInterestDetail {
3287 #[serde(rename = "@accountId")]
3289 pub account_id: String,
3290
3291 #[serde(rename = "@acctAlias", default)]
3293 pub acct_alias: Option<String>,
3294
3295 #[serde(rename = "@model", default)]
3297 pub model: Option<String>,
3298
3299 #[serde(rename = "@currency", default)]
3301 pub currency: Option<String>,
3302
3303 #[serde(
3305 rename = "@fxRateToBase",
3306 default,
3307 deserialize_with = "deserialize_optional_decimal"
3308 )]
3309 pub fx_rate_to_base: Option<Decimal>,
3310
3311 #[serde(rename = "@interestType", default)]
3313 pub interest_type: Option<String>,
3314
3315 #[serde(
3317 rename = "@reportDate",
3318 default,
3319 deserialize_with = "deserialize_optional_date"
3320 )]
3321 pub report_date: Option<NaiveDate>,
3322
3323 #[serde(
3325 rename = "@valueDate",
3326 default,
3327 deserialize_with = "deserialize_optional_date"
3328 )]
3329 pub value_date: Option<NaiveDate>,
3330
3331 #[serde(rename = "@tierBreak", default)]
3333 pub tier_break: Option<String>,
3334
3335 #[serde(
3337 rename = "@balanceThreshold",
3338 default,
3339 deserialize_with = "deserialize_optional_decimal"
3340 )]
3341 pub balance_threshold: Option<Decimal>,
3342
3343 #[serde(
3345 rename = "@securitiesPrincipal",
3346 default,
3347 deserialize_with = "deserialize_optional_decimal"
3348 )]
3349 pub securities_principal: Option<Decimal>,
3350
3351 #[serde(
3353 rename = "@commoditiesPrincipal",
3354 default,
3355 deserialize_with = "deserialize_optional_decimal"
3356 )]
3357 pub commodities_principal: Option<Decimal>,
3358
3359 #[serde(
3361 rename = "@ibuklPrincipal",
3362 default,
3363 deserialize_with = "deserialize_optional_decimal"
3364 )]
3365 pub ibukl_principal: Option<Decimal>,
3366
3367 #[serde(
3369 rename = "@totalPrincipal",
3370 default,
3371 deserialize_with = "deserialize_optional_decimal"
3372 )]
3373 pub total_principal: Option<Decimal>,
3374
3375 #[serde(
3377 rename = "@rate",
3378 default,
3379 deserialize_with = "deserialize_optional_decimal"
3380 )]
3381 pub rate: Option<Decimal>,
3382
3383 #[serde(
3385 rename = "@securitiesInterest",
3386 default,
3387 deserialize_with = "deserialize_optional_decimal"
3388 )]
3389 pub securities_interest: Option<Decimal>,
3390
3391 #[serde(
3393 rename = "@commoditiesInterest",
3394 default,
3395 deserialize_with = "deserialize_optional_decimal"
3396 )]
3397 pub commodities_interest: Option<Decimal>,
3398
3399 #[serde(
3401 rename = "@ibuklInterest",
3402 default,
3403 deserialize_with = "deserialize_optional_decimal"
3404 )]
3405 pub ibukl_interest: Option<Decimal>,
3406
3407 #[serde(
3409 rename = "@totalInterest",
3410 default,
3411 deserialize_with = "deserialize_optional_decimal"
3412 )]
3413 pub total_interest: Option<Decimal>,
3414
3415 #[serde(rename = "@code", default)]
3417 pub code: Option<String>,
3418
3419 #[serde(rename = "@fromAcct", default)]
3421 pub from_acct: Option<String>,
3422
3423 #[serde(rename = "@toAcct", default)]
3425 pub to_acct: Option<String>,
3426
3427 #[serde(rename = "@marginBalance", default)]
3429 pub margin_balance: Option<String>,
3430
3431 #[serde(
3434 rename = "@date",
3435 default,
3436 deserialize_with = "deserialize_optional_date"
3437 )]
3438 pub date: Option<NaiveDate>,
3439
3440 #[serde(
3442 rename = "@fromDate",
3443 default,
3444 deserialize_with = "deserialize_optional_date"
3445 )]
3446 pub from_date: Option<NaiveDate>,
3447
3448 #[serde(
3450 rename = "@toDate",
3451 default,
3452 deserialize_with = "deserialize_optional_date"
3453 )]
3454 pub to_date: Option<NaiveDate>,
3455
3456 #[serde(
3458 rename = "@balance",
3459 default,
3460 deserialize_with = "deserialize_optional_decimal"
3461 )]
3462 pub balance: Option<Decimal>,
3463
3464 #[serde(
3466 rename = "@interestRate",
3467 default,
3468 deserialize_with = "deserialize_optional_decimal"
3469 )]
3470 pub interest_rate: Option<Decimal>,
3471
3472 #[serde(
3474 rename = "@interest",
3475 default,
3476 deserialize_with = "deserialize_optional_decimal"
3477 )]
3478 pub interest: Option<Decimal>,
3479}
3480
3481#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3487pub struct DebitCardActivity {
3488 #[serde(rename = "@accountId")]
3490 pub account_id: String,
3491
3492 #[serde(rename = "@acctAlias", default)]
3494 pub acct_alias: Option<String>,
3495
3496 #[serde(rename = "@model", default)]
3498 pub model: Option<String>,
3499
3500 #[serde(
3502 rename = "@date",
3503 default,
3504 deserialize_with = "deserialize_optional_date"
3505 )]
3506 pub date: Option<NaiveDate>,
3507
3508 #[serde(rename = "@merchant", default)]
3510 pub merchant: Option<String>,
3511
3512 #[serde(rename = "@category", default)]
3514 pub category: Option<String>,
3515
3516 #[serde(rename = "@status", default)]
3518 pub status: Option<String>,
3519
3520 #[serde(rename = "@transactionType", default)]
3522 pub transaction_type: Option<String>,
3523
3524 #[serde(
3526 rename = "@amount",
3527 default,
3528 deserialize_with = "deserialize_optional_decimal"
3529 )]
3530 pub amount: Option<Decimal>,
3531
3532 #[serde(rename = "@currency", default)]
3534 pub currency: Option<String>,
3535
3536 #[serde(
3538 rename = "@fxRateToBase",
3539 default,
3540 deserialize_with = "deserialize_optional_decimal"
3541 )]
3542 pub fx_rate_to_base: Option<Decimal>,
3543}
3544
3545#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3547pub struct SalesTax {
3548 #[serde(rename = "@accountId")]
3550 pub account_id: String,
3551
3552 #[serde(rename = "@acctAlias", default)]
3554 pub acct_alias: Option<String>,
3555
3556 #[serde(rename = "@model", default)]
3558 pub model: Option<String>,
3559
3560 #[serde(
3562 rename = "@date",
3563 default,
3564 deserialize_with = "deserialize_optional_date"
3565 )]
3566 pub date: Option<NaiveDate>,
3567
3568 #[serde(rename = "@symbol", default)]
3570 pub symbol: Option<String>,
3571
3572 #[serde(rename = "@description", default)]
3574 pub description: Option<String>,
3575
3576 #[serde(rename = "@conid", default)]
3578 pub conid: Option<String>,
3579
3580 #[serde(rename = "@taxType", default)]
3582 pub tax_type: Option<String>,
3583
3584 #[serde(
3586 rename = "@taxAmount",
3587 default,
3588 deserialize_with = "deserialize_optional_decimal"
3589 )]
3590 pub tax_amount: Option<Decimal>,
3591
3592 #[serde(
3594 rename = "@proceeds",
3595 default,
3596 deserialize_with = "deserialize_optional_decimal"
3597 )]
3598 pub proceeds: Option<Decimal>,
3599
3600 #[serde(rename = "@currency", default)]
3602 pub currency: Option<String>,
3603
3604 #[serde(
3606 rename = "@fxRateToBase",
3607 default,
3608 deserialize_with = "deserialize_optional_decimal"
3609 )]
3610 pub fx_rate_to_base: Option<Decimal>,
3611}
3612
3613#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3619pub struct SymbolSummary {
3620 #[serde(rename = "@accountId")]
3622 pub account_id: String,
3623
3624 #[serde(rename = "@acctAlias", default)]
3626 pub acct_alias: Option<String>,
3627
3628 #[serde(rename = "@model", default)]
3630 pub model: Option<String>,
3631
3632 #[serde(rename = "@symbol", default)]
3634 pub symbol: Option<String>,
3635
3636 #[serde(rename = "@description", default)]
3638 pub description: Option<String>,
3639
3640 #[serde(rename = "@conid", default)]
3642 pub conid: Option<String>,
3643
3644 #[serde(rename = "@assetCategory", default)]
3646 pub asset_category: Option<AssetCategory>,
3647
3648 #[serde(
3650 rename = "@totalBuyQuantity",
3651 default,
3652 deserialize_with = "deserialize_optional_decimal"
3653 )]
3654 pub total_buy_quantity: Option<Decimal>,
3655
3656 #[serde(
3658 rename = "@totalSellQuantity",
3659 default,
3660 deserialize_with = "deserialize_optional_decimal"
3661 )]
3662 pub total_sell_quantity: Option<Decimal>,
3663
3664 #[serde(
3666 rename = "@totalBuyValue",
3667 default,
3668 deserialize_with = "deserialize_optional_decimal"
3669 )]
3670 pub total_buy_value: Option<Decimal>,
3671
3672 #[serde(
3674 rename = "@totalSellValue",
3675 default,
3676 deserialize_with = "deserialize_optional_decimal"
3677 )]
3678 pub total_sell_value: Option<Decimal>,
3679
3680 #[serde(
3682 rename = "@totalCommission",
3683 default,
3684 deserialize_with = "deserialize_optional_decimal"
3685 )]
3686 pub total_commission: Option<Decimal>,
3687
3688 #[serde(
3690 rename = "@realizedPnl",
3691 default,
3692 deserialize_with = "deserialize_optional_decimal"
3693 )]
3694 pub realized_pnl: Option<Decimal>,
3695
3696 #[serde(rename = "@currency", default)]
3698 pub currency: Option<String>,
3699}
3700
3701#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3703pub struct AssetSummary {
3704 #[serde(rename = "@accountId")]
3706 pub account_id: String,
3707
3708 #[serde(rename = "@acctAlias", default)]
3710 pub acct_alias: Option<String>,
3711
3712 #[serde(rename = "@model", default)]
3714 pub model: Option<String>,
3715
3716 #[serde(rename = "@assetCategory", default)]
3718 pub asset_category: Option<AssetCategory>,
3719
3720 #[serde(
3722 rename = "@totalBuyQuantity",
3723 default,
3724 deserialize_with = "deserialize_optional_decimal"
3725 )]
3726 pub total_buy_quantity: Option<Decimal>,
3727
3728 #[serde(
3730 rename = "@totalSellQuantity",
3731 default,
3732 deserialize_with = "deserialize_optional_decimal"
3733 )]
3734 pub total_sell_quantity: Option<Decimal>,
3735
3736 #[serde(
3738 rename = "@totalBuyValue",
3739 default,
3740 deserialize_with = "deserialize_optional_decimal"
3741 )]
3742 pub total_buy_value: Option<Decimal>,
3743
3744 #[serde(
3746 rename = "@totalSellValue",
3747 default,
3748 deserialize_with = "deserialize_optional_decimal"
3749 )]
3750 pub total_sell_value: Option<Decimal>,
3751
3752 #[serde(
3754 rename = "@totalCommission",
3755 default,
3756 deserialize_with = "deserialize_optional_decimal"
3757 )]
3758 pub total_commission: Option<Decimal>,
3759
3760 #[serde(
3762 rename = "@realizedPnl",
3763 default,
3764 deserialize_with = "deserialize_optional_decimal"
3765 )]
3766 pub realized_pnl: Option<Decimal>,
3767
3768 #[serde(rename = "@currency", default)]
3770 pub currency: Option<String>,
3771}
3772
3773#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
3775pub struct Order {
3776 #[serde(rename = "@accountId")]
3778 pub account_id: String,
3779
3780 #[serde(rename = "@acctAlias", default)]
3782 pub acct_alias: Option<String>,
3783
3784 #[serde(rename = "@model", default)]
3786 pub model: Option<String>,
3787
3788 #[serde(rename = "@orderID", default)]
3790 pub order_id: Option<String>,
3791
3792 #[serde(rename = "@symbol", default)]
3794 pub symbol: Option<String>,
3795
3796 #[serde(rename = "@description", default)]
3798 pub description: Option<String>,
3799
3800 #[serde(rename = "@conid", default)]
3802 pub conid: Option<String>,
3803
3804 #[serde(rename = "@assetCategory", default)]
3806 pub asset_category: Option<AssetCategory>,
3807
3808 #[serde(rename = "@orderTime", default)]
3810 pub order_time: Option<String>,
3811
3812 #[serde(rename = "@orderType", default)]
3814 pub order_type: Option<String>,
3815
3816 #[serde(rename = "@side", default)]
3818 pub side: Option<String>,
3819
3820 #[serde(rename = "@tif", default)]
3822 pub tif: Option<String>,
3823
3824 #[serde(
3826 rename = "@orderQty",
3827 default,
3828 deserialize_with = "deserialize_optional_decimal"
3829 )]
3830 pub order_qty: Option<Decimal>,
3831
3832 #[serde(
3834 rename = "@limitPrice",
3835 default,
3836 deserialize_with = "deserialize_optional_decimal"
3837 )]
3838 pub limit_price: Option<Decimal>,
3839
3840 #[serde(
3842 rename = "@stopPrice",
3843 default,
3844 deserialize_with = "deserialize_optional_decimal"
3845 )]
3846 pub stop_price: Option<Decimal>,
3847
3848 #[serde(
3850 rename = "@filledQty",
3851 default,
3852 deserialize_with = "deserialize_optional_decimal"
3853 )]
3854 pub filled_qty: Option<Decimal>,
3855
3856 #[serde(
3858 rename = "@avgPrice",
3859 default,
3860 deserialize_with = "deserialize_optional_decimal"
3861 )]
3862 pub avg_price: Option<Decimal>,
3863
3864 #[serde(
3866 rename = "@remainingQty",
3867 default,
3868 deserialize_with = "deserialize_optional_decimal"
3869 )]
3870 pub remaining_qty: Option<Decimal>,
3871
3872 #[serde(rename = "@status", default)]
3874 pub status: Option<String>,
3875
3876 #[serde(rename = "@currency", default)]
3878 pub currency: Option<String>,
3879}