1use serde::{Deserialize, Serialize};
4
5use crate::models::macros::string_enum;
6use crate::models::transaction::TransactionRejectReason;
7use crate::models::{
8 AccountId, ClientExtensions, DateTime, DecimalNumber, InstrumentName, LimitOrderTimeInForce,
9 MarketIfTouchedOrderTimeInForce, MarketOrderDelayedTradeClose, MarketOrderMarginCloseout,
10 MarketOrderPositionCloseout, MarketOrderTimeInForce, MarketOrderTradeClose, OrderId,
11 OrderPositionFill, OrderTriggerCondition, PriceValue, RequestId, StopLossDetails,
12 StopLossOrderTimeInForce, StopOrderTimeInForce, TakeProfitDetails, TakeProfitOrderTimeInForce,
13 TradeId, TradeState, TrailingStopLossDetails, TrailingStopLossOrderTimeInForce, TransactionId,
14};
15
16#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22#[non_exhaustive]
23pub struct MarketOrderTransaction {
24 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
26 pub id: Option<TransactionId>,
27
28 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
30 pub time: Option<DateTime>,
31
32 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
34 pub user_id: Option<i64>,
35
36 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
38 pub account_id: Option<AccountId>,
39
40 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
43 pub batch_id: Option<TransactionId>,
44
45 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
47 pub request_id: Option<RequestId>,
48
49 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
52 pub instrument: Option<InstrumentName>,
53
54 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
58 pub units: Option<DecimalNumber>,
59
60 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
62 pub time_in_force: Option<MarketOrderTimeInForce>,
63
64 #[serde(rename = "priceBound", skip_serializing_if = "Option::is_none")]
67 pub price_bound: Option<PriceValue>,
68
69 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
71 pub position_fill: Option<OrderPositionFill>,
72
73 #[serde(rename = "tradeClose", skip_serializing_if = "Option::is_none")]
75 pub trade_close: Option<MarketOrderTradeClose>,
76
77 #[serde(
79 rename = "longPositionCloseout",
80 skip_serializing_if = "Option::is_none"
81 )]
82 pub long_position_closeout: Option<MarketOrderPositionCloseout>,
83
84 #[serde(
86 rename = "shortPositionCloseout",
87 skip_serializing_if = "Option::is_none"
88 )]
89 pub short_position_closeout: Option<MarketOrderPositionCloseout>,
90
91 #[serde(rename = "marginCloseout", skip_serializing_if = "Option::is_none")]
93 pub margin_closeout: Option<MarketOrderMarginCloseout>,
94
95 #[serde(rename = "delayedTradeClose", skip_serializing_if = "Option::is_none")]
97 pub delayed_trade_close: Option<MarketOrderDelayedTradeClose>,
98
99 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
101 pub reason: Option<MarketOrderReason>,
102
103 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
105 pub client_extensions: Option<ClientExtensions>,
106
107 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
109 pub take_profit_on_fill: Option<TakeProfitDetails>,
110
111 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
113 pub stop_loss_on_fill: Option<StopLossDetails>,
114
115 #[serde(
117 rename = "trailingStopLossOnFill",
118 skip_serializing_if = "Option::is_none"
119 )]
120 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
121
122 #[serde(
124 rename = "tradeClientExtensions",
125 skip_serializing_if = "Option::is_none"
126 )]
127 pub trade_client_extensions: Option<ClientExtensions>,
128}
129
130#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
133#[non_exhaustive]
134pub struct MarketOrderRejectTransaction {
135 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
137 pub id: Option<TransactionId>,
138
139 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
141 pub time: Option<DateTime>,
142
143 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
145 pub user_id: Option<i64>,
146
147 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
149 pub account_id: Option<AccountId>,
150
151 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
154 pub batch_id: Option<TransactionId>,
155
156 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
158 pub request_id: Option<RequestId>,
159
160 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
163 pub instrument: Option<InstrumentName>,
164
165 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
169 pub units: Option<DecimalNumber>,
170
171 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
173 pub time_in_force: Option<MarketOrderTimeInForce>,
174
175 #[serde(rename = "priceBound", skip_serializing_if = "Option::is_none")]
178 pub price_bound: Option<PriceValue>,
179
180 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
182 pub position_fill: Option<OrderPositionFill>,
183
184 #[serde(rename = "tradeClose", skip_serializing_if = "Option::is_none")]
186 pub trade_close: Option<MarketOrderTradeClose>,
187
188 #[serde(
190 rename = "longPositionCloseout",
191 skip_serializing_if = "Option::is_none"
192 )]
193 pub long_position_closeout: Option<MarketOrderPositionCloseout>,
194
195 #[serde(
197 rename = "shortPositionCloseout",
198 skip_serializing_if = "Option::is_none"
199 )]
200 pub short_position_closeout: Option<MarketOrderPositionCloseout>,
201
202 #[serde(rename = "marginCloseout", skip_serializing_if = "Option::is_none")]
204 pub margin_closeout: Option<MarketOrderMarginCloseout>,
205
206 #[serde(rename = "delayedTradeClose", skip_serializing_if = "Option::is_none")]
208 pub delayed_trade_close: Option<MarketOrderDelayedTradeClose>,
209
210 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
212 pub reason: Option<MarketOrderReason>,
213
214 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
216 pub client_extensions: Option<ClientExtensions>,
217
218 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
220 pub take_profit_on_fill: Option<TakeProfitDetails>,
221
222 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
224 pub stop_loss_on_fill: Option<StopLossDetails>,
225
226 #[serde(
228 rename = "trailingStopLossOnFill",
229 skip_serializing_if = "Option::is_none"
230 )]
231 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
232
233 #[serde(
235 rename = "tradeClientExtensions",
236 skip_serializing_if = "Option::is_none"
237 )]
238 pub trade_client_extensions: Option<ClientExtensions>,
239
240 #[serde(rename = "rejectReason", skip_serializing_if = "Option::is_none")]
242 pub reject_reason: Option<TransactionRejectReason>,
243}
244
245#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
249#[non_exhaustive]
250pub struct FixedPriceOrderTransaction {
251 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
253 pub id: Option<TransactionId>,
254
255 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
257 pub time: Option<DateTime>,
258
259 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
261 pub user_id: Option<i64>,
262
263 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
265 pub account_id: Option<AccountId>,
266
267 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
270 pub batch_id: Option<TransactionId>,
271
272 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
274 pub request_id: Option<RequestId>,
275
276 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
279 pub instrument: Option<InstrumentName>,
280
281 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
285 pub units: Option<DecimalNumber>,
286
287 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
290 pub price: Option<PriceValue>,
291
292 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
294 pub position_fill: Option<OrderPositionFill>,
295
296 #[serde(rename = "tradeState", skip_serializing_if = "Option::is_none")]
298 pub trade_state: Option<TradeState>,
299
300 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
302 pub reason: Option<FixedPriceOrderReason>,
303
304 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
306 pub client_extensions: Option<ClientExtensions>,
307
308 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
310 pub take_profit_on_fill: Option<TakeProfitDetails>,
311
312 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
314 pub stop_loss_on_fill: Option<StopLossDetails>,
315
316 #[serde(
318 rename = "trailingStopLossOnFill",
319 skip_serializing_if = "Option::is_none"
320 )]
321 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
322
323 #[serde(
325 rename = "tradeClientExtensions",
326 skip_serializing_if = "Option::is_none"
327 )]
328 pub trade_client_extensions: Option<ClientExtensions>,
329}
330
331#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
334#[non_exhaustive]
335pub struct LimitOrderTransaction {
336 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
338 pub id: Option<TransactionId>,
339
340 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
342 pub time: Option<DateTime>,
343
344 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
346 pub user_id: Option<i64>,
347
348 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
350 pub account_id: Option<AccountId>,
351
352 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
355 pub batch_id: Option<TransactionId>,
356
357 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
359 pub request_id: Option<RequestId>,
360
361 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
364 pub instrument: Option<InstrumentName>,
365
366 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
370 pub units: Option<DecimalNumber>,
371
372 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
376 pub price: Option<PriceValue>,
377
378 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
380 pub time_in_force: Option<LimitOrderTimeInForce>,
381
382 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
385 pub gtd_time: Option<DateTime>,
386
387 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
389 pub position_fill: Option<OrderPositionFill>,
390
391 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
393 pub trigger_condition: Option<OrderTriggerCondition>,
394
395 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
397 pub reason: Option<LimitOrderReason>,
398
399 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
401 pub client_extensions: Option<ClientExtensions>,
402
403 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
405 pub take_profit_on_fill: Option<TakeProfitDetails>,
406
407 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
409 pub stop_loss_on_fill: Option<StopLossDetails>,
410
411 #[serde(
413 rename = "trailingStopLossOnFill",
414 skip_serializing_if = "Option::is_none"
415 )]
416 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
417
418 #[serde(
420 rename = "tradeClientExtensions",
421 skip_serializing_if = "Option::is_none"
422 )]
423 pub trade_client_extensions: Option<ClientExtensions>,
424
425 #[serde(rename = "replacesOrderID", skip_serializing_if = "Option::is_none")]
428 pub replaces_order_id: Option<OrderId>,
429
430 #[serde(
433 rename = "cancellingTransactionID",
434 skip_serializing_if = "Option::is_none"
435 )]
436 pub cancelling_transaction_id: Option<TransactionId>,
437
438 #[serde(rename = "partialFill", skip_serializing_if = "Option::is_none")]
442 pub partial_fill: Option<String>,
443}
444
445#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
448#[non_exhaustive]
449pub struct LimitOrderRejectTransaction {
450 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
452 pub id: Option<TransactionId>,
453
454 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
456 pub time: Option<DateTime>,
457
458 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
460 pub user_id: Option<i64>,
461
462 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
464 pub account_id: Option<AccountId>,
465
466 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
469 pub batch_id: Option<TransactionId>,
470
471 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
473 pub request_id: Option<RequestId>,
474
475 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
478 pub instrument: Option<InstrumentName>,
479
480 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
484 pub units: Option<DecimalNumber>,
485
486 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
490 pub price: Option<PriceValue>,
491
492 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
494 pub time_in_force: Option<LimitOrderTimeInForce>,
495
496 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
499 pub gtd_time: Option<DateTime>,
500
501 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
503 pub position_fill: Option<OrderPositionFill>,
504
505 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
507 pub trigger_condition: Option<OrderTriggerCondition>,
508
509 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
511 pub reason: Option<LimitOrderReason>,
512
513 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
515 pub client_extensions: Option<ClientExtensions>,
516
517 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
519 pub take_profit_on_fill: Option<TakeProfitDetails>,
520
521 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
523 pub stop_loss_on_fill: Option<StopLossDetails>,
524
525 #[serde(
527 rename = "trailingStopLossOnFill",
528 skip_serializing_if = "Option::is_none"
529 )]
530 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
531
532 #[serde(
534 rename = "tradeClientExtensions",
535 skip_serializing_if = "Option::is_none"
536 )]
537 pub trade_client_extensions: Option<ClientExtensions>,
538
539 #[serde(
542 rename = "intendedReplacesOrderID",
543 skip_serializing_if = "Option::is_none"
544 )]
545 pub intended_replaces_order_id: Option<OrderId>,
546
547 #[serde(rename = "rejectReason", skip_serializing_if = "Option::is_none")]
549 pub reject_reason: Option<TransactionRejectReason>,
550
551 #[serde(rename = "partialFill", skip_serializing_if = "Option::is_none")]
555 pub partial_fill: Option<String>,
556}
557
558#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
561#[non_exhaustive]
562pub struct StopOrderTransaction {
563 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
565 pub id: Option<TransactionId>,
566
567 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
569 pub time: Option<DateTime>,
570
571 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
573 pub user_id: Option<i64>,
574
575 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
577 pub account_id: Option<AccountId>,
578
579 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
582 pub batch_id: Option<TransactionId>,
583
584 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
586 pub request_id: Option<RequestId>,
587
588 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
591 pub instrument: Option<InstrumentName>,
592
593 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
597 pub units: Option<DecimalNumber>,
598
599 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
603 pub price: Option<PriceValue>,
604
605 #[serde(rename = "priceBound", skip_serializing_if = "Option::is_none")]
609 pub price_bound: Option<PriceValue>,
610
611 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
613 pub time_in_force: Option<StopOrderTimeInForce>,
614
615 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
618 pub gtd_time: Option<DateTime>,
619
620 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
622 pub position_fill: Option<OrderPositionFill>,
623
624 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
626 pub trigger_condition: Option<OrderTriggerCondition>,
627
628 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
630 pub reason: Option<StopOrderReason>,
631
632 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
634 pub client_extensions: Option<ClientExtensions>,
635
636 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
638 pub take_profit_on_fill: Option<TakeProfitDetails>,
639
640 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
642 pub stop_loss_on_fill: Option<StopLossDetails>,
643
644 #[serde(
646 rename = "trailingStopLossOnFill",
647 skip_serializing_if = "Option::is_none"
648 )]
649 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
650
651 #[serde(
653 rename = "tradeClientExtensions",
654 skip_serializing_if = "Option::is_none"
655 )]
656 pub trade_client_extensions: Option<ClientExtensions>,
657
658 #[serde(rename = "replacesOrderID", skip_serializing_if = "Option::is_none")]
661 pub replaces_order_id: Option<OrderId>,
662
663 #[serde(
666 rename = "cancellingTransactionID",
667 skip_serializing_if = "Option::is_none"
668 )]
669 pub cancelling_transaction_id: Option<TransactionId>,
670
671 #[serde(rename = "partialFill", skip_serializing_if = "Option::is_none")]
675 pub partial_fill: Option<String>,
676
677 #[serde(rename = "triggerMode", skip_serializing_if = "Option::is_none")]
681 pub trigger_mode: Option<String>,
682}
683
684#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
687#[non_exhaustive]
688pub struct StopOrderRejectTransaction {
689 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
691 pub id: Option<TransactionId>,
692
693 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
695 pub time: Option<DateTime>,
696
697 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
699 pub user_id: Option<i64>,
700
701 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
703 pub account_id: Option<AccountId>,
704
705 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
708 pub batch_id: Option<TransactionId>,
709
710 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
712 pub request_id: Option<RequestId>,
713
714 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
717 pub instrument: Option<InstrumentName>,
718
719 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
723 pub units: Option<DecimalNumber>,
724
725 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
729 pub price: Option<PriceValue>,
730
731 #[serde(rename = "priceBound", skip_serializing_if = "Option::is_none")]
735 pub price_bound: Option<PriceValue>,
736
737 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
739 pub time_in_force: Option<StopOrderTimeInForce>,
740
741 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
744 pub gtd_time: Option<DateTime>,
745
746 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
748 pub position_fill: Option<OrderPositionFill>,
749
750 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
752 pub trigger_condition: Option<OrderTriggerCondition>,
753
754 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
756 pub reason: Option<StopOrderReason>,
757
758 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
760 pub client_extensions: Option<ClientExtensions>,
761
762 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
764 pub take_profit_on_fill: Option<TakeProfitDetails>,
765
766 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
768 pub stop_loss_on_fill: Option<StopLossDetails>,
769
770 #[serde(
772 rename = "trailingStopLossOnFill",
773 skip_serializing_if = "Option::is_none"
774 )]
775 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
776
777 #[serde(
779 rename = "tradeClientExtensions",
780 skip_serializing_if = "Option::is_none"
781 )]
782 pub trade_client_extensions: Option<ClientExtensions>,
783
784 #[serde(
787 rename = "intendedReplacesOrderID",
788 skip_serializing_if = "Option::is_none"
789 )]
790 pub intended_replaces_order_id: Option<OrderId>,
791
792 #[serde(rename = "rejectReason", skip_serializing_if = "Option::is_none")]
794 pub reject_reason: Option<TransactionRejectReason>,
795
796 #[serde(rename = "partialFill", skip_serializing_if = "Option::is_none")]
800 pub partial_fill: Option<String>,
801
802 #[serde(rename = "triggerMode", skip_serializing_if = "Option::is_none")]
806 pub trigger_mode: Option<String>,
807}
808
809#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
812#[non_exhaustive]
813pub struct MarketIfTouchedOrderTransaction {
814 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
816 pub id: Option<TransactionId>,
817
818 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
820 pub time: Option<DateTime>,
821
822 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
824 pub user_id: Option<i64>,
825
826 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
828 pub account_id: Option<AccountId>,
829
830 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
833 pub batch_id: Option<TransactionId>,
834
835 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
837 pub request_id: Option<RequestId>,
838
839 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
842 pub instrument: Option<InstrumentName>,
843
844 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
848 pub units: Option<DecimalNumber>,
849
850 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
857 pub price: Option<PriceValue>,
858
859 #[serde(rename = "priceBound", skip_serializing_if = "Option::is_none")]
862 pub price_bound: Option<PriceValue>,
863
864 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
866 pub time_in_force: Option<MarketIfTouchedOrderTimeInForce>,
867
868 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
871 pub gtd_time: Option<DateTime>,
872
873 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
875 pub position_fill: Option<OrderPositionFill>,
876
877 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
879 pub trigger_condition: Option<OrderTriggerCondition>,
880
881 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
883 pub reason: Option<MarketIfTouchedOrderReason>,
884
885 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
887 pub client_extensions: Option<ClientExtensions>,
888
889 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
891 pub take_profit_on_fill: Option<TakeProfitDetails>,
892
893 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
895 pub stop_loss_on_fill: Option<StopLossDetails>,
896
897 #[serde(
899 rename = "trailingStopLossOnFill",
900 skip_serializing_if = "Option::is_none"
901 )]
902 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
903
904 #[serde(
906 rename = "tradeClientExtensions",
907 skip_serializing_if = "Option::is_none"
908 )]
909 pub trade_client_extensions: Option<ClientExtensions>,
910
911 #[serde(rename = "replacesOrderID", skip_serializing_if = "Option::is_none")]
914 pub replaces_order_id: Option<OrderId>,
915
916 #[serde(
919 rename = "cancellingTransactionID",
920 skip_serializing_if = "Option::is_none"
921 )]
922 pub cancelling_transaction_id: Option<TransactionId>,
923
924 #[serde(rename = "partialFill", skip_serializing_if = "Option::is_none")]
928 pub partial_fill: Option<String>,
929}
930
931#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
934#[non_exhaustive]
935pub struct MarketIfTouchedOrderRejectTransaction {
936 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
938 pub id: Option<TransactionId>,
939
940 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
942 pub time: Option<DateTime>,
943
944 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
946 pub user_id: Option<i64>,
947
948 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
950 pub account_id: Option<AccountId>,
951
952 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
955 pub batch_id: Option<TransactionId>,
956
957 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
959 pub request_id: Option<RequestId>,
960
961 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
964 pub instrument: Option<InstrumentName>,
965
966 #[serde(rename = "units", skip_serializing_if = "Option::is_none")]
970 pub units: Option<DecimalNumber>,
971
972 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
979 pub price: Option<PriceValue>,
980
981 #[serde(rename = "priceBound", skip_serializing_if = "Option::is_none")]
984 pub price_bound: Option<PriceValue>,
985
986 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
988 pub time_in_force: Option<MarketIfTouchedOrderTimeInForce>,
989
990 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
993 pub gtd_time: Option<DateTime>,
994
995 #[serde(rename = "positionFill", skip_serializing_if = "Option::is_none")]
997 pub position_fill: Option<OrderPositionFill>,
998
999 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
1001 pub trigger_condition: Option<OrderTriggerCondition>,
1002
1003 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
1005 pub reason: Option<MarketIfTouchedOrderReason>,
1006
1007 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
1009 pub client_extensions: Option<ClientExtensions>,
1010
1011 #[serde(rename = "takeProfitOnFill", skip_serializing_if = "Option::is_none")]
1013 pub take_profit_on_fill: Option<TakeProfitDetails>,
1014
1015 #[serde(rename = "stopLossOnFill", skip_serializing_if = "Option::is_none")]
1017 pub stop_loss_on_fill: Option<StopLossDetails>,
1018
1019 #[serde(
1021 rename = "trailingStopLossOnFill",
1022 skip_serializing_if = "Option::is_none"
1023 )]
1024 pub trailing_stop_loss_on_fill: Option<TrailingStopLossDetails>,
1025
1026 #[serde(
1028 rename = "tradeClientExtensions",
1029 skip_serializing_if = "Option::is_none"
1030 )]
1031 pub trade_client_extensions: Option<ClientExtensions>,
1032
1033 #[serde(
1036 rename = "intendedReplacesOrderID",
1037 skip_serializing_if = "Option::is_none"
1038 )]
1039 pub intended_replaces_order_id: Option<OrderId>,
1040
1041 #[serde(rename = "rejectReason", skip_serializing_if = "Option::is_none")]
1043 pub reject_reason: Option<TransactionRejectReason>,
1044
1045 #[serde(rename = "partialFill", skip_serializing_if = "Option::is_none")]
1049 pub partial_fill: Option<String>,
1050}
1051
1052#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1055#[non_exhaustive]
1056pub struct TakeProfitOrderTransaction {
1057 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
1059 pub id: Option<TransactionId>,
1060
1061 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
1063 pub time: Option<DateTime>,
1064
1065 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
1067 pub user_id: Option<i64>,
1068
1069 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
1071 pub account_id: Option<AccountId>,
1072
1073 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
1076 pub batch_id: Option<TransactionId>,
1077
1078 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
1080 pub request_id: Option<RequestId>,
1081
1082 #[serde(rename = "tradeID", skip_serializing_if = "Option::is_none")]
1085 pub trade_id: Option<TradeId>,
1086
1087 #[serde(rename = "clientTradeID", skip_serializing_if = "Option::is_none")]
1090 pub client_trade_id: Option<String>,
1091
1092 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
1096 pub price: Option<PriceValue>,
1097
1098 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
1100 pub time_in_force: Option<TakeProfitOrderTimeInForce>,
1101
1102 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
1105 pub gtd_time: Option<DateTime>,
1106
1107 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
1109 pub trigger_condition: Option<OrderTriggerCondition>,
1110
1111 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
1113 pub reason: Option<TakeProfitOrderReason>,
1114
1115 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
1117 pub client_extensions: Option<ClientExtensions>,
1118
1119 #[serde(
1123 rename = "orderFillTransactionID",
1124 skip_serializing_if = "Option::is_none"
1125 )]
1126 pub order_fill_transaction_id: Option<TransactionId>,
1127
1128 #[serde(rename = "replacesOrderID", skip_serializing_if = "Option::is_none")]
1131 pub replaces_order_id: Option<OrderId>,
1132
1133 #[serde(
1136 rename = "cancellingTransactionID",
1137 skip_serializing_if = "Option::is_none"
1138 )]
1139 pub cancelling_transaction_id: Option<TransactionId>,
1140}
1141
1142#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1145#[non_exhaustive]
1146pub struct TakeProfitOrderRejectTransaction {
1147 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
1149 pub id: Option<TransactionId>,
1150
1151 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
1153 pub time: Option<DateTime>,
1154
1155 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
1157 pub user_id: Option<i64>,
1158
1159 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
1161 pub account_id: Option<AccountId>,
1162
1163 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
1166 pub batch_id: Option<TransactionId>,
1167
1168 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
1170 pub request_id: Option<RequestId>,
1171
1172 #[serde(rename = "tradeID", skip_serializing_if = "Option::is_none")]
1175 pub trade_id: Option<TradeId>,
1176
1177 #[serde(rename = "clientTradeID", skip_serializing_if = "Option::is_none")]
1180 pub client_trade_id: Option<String>,
1181
1182 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
1186 pub price: Option<PriceValue>,
1187
1188 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
1190 pub time_in_force: Option<TakeProfitOrderTimeInForce>,
1191
1192 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
1195 pub gtd_time: Option<DateTime>,
1196
1197 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
1199 pub trigger_condition: Option<OrderTriggerCondition>,
1200
1201 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
1203 pub reason: Option<TakeProfitOrderReason>,
1204
1205 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
1207 pub client_extensions: Option<ClientExtensions>,
1208
1209 #[serde(
1213 rename = "orderFillTransactionID",
1214 skip_serializing_if = "Option::is_none"
1215 )]
1216 pub order_fill_transaction_id: Option<TransactionId>,
1217
1218 #[serde(
1221 rename = "intendedReplacesOrderID",
1222 skip_serializing_if = "Option::is_none"
1223 )]
1224 pub intended_replaces_order_id: Option<OrderId>,
1225
1226 #[serde(rename = "rejectReason", skip_serializing_if = "Option::is_none")]
1228 pub reject_reason: Option<TransactionRejectReason>,
1229}
1230
1231#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1234#[non_exhaustive]
1235pub struct StopLossOrderTransaction {
1236 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
1238 pub id: Option<TransactionId>,
1239
1240 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
1242 pub time: Option<DateTime>,
1243
1244 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
1246 pub user_id: Option<i64>,
1247
1248 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
1250 pub account_id: Option<AccountId>,
1251
1252 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
1255 pub batch_id: Option<TransactionId>,
1256
1257 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
1259 pub request_id: Option<RequestId>,
1260
1261 #[serde(rename = "tradeID", skip_serializing_if = "Option::is_none")]
1264 pub trade_id: Option<TradeId>,
1265
1266 #[serde(rename = "clientTradeID", skip_serializing_if = "Option::is_none")]
1269 pub client_trade_id: Option<String>,
1270
1271 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
1276 pub price: Option<PriceValue>,
1277
1278 #[serde(rename = "distance", skip_serializing_if = "Option::is_none")]
1282 pub distance: Option<DecimalNumber>,
1283
1284 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
1286 pub time_in_force: Option<StopLossOrderTimeInForce>,
1287
1288 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
1291 pub gtd_time: Option<DateTime>,
1292
1293 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
1295 pub trigger_condition: Option<OrderTriggerCondition>,
1296
1297 #[serde(rename = "guaranteed", skip_serializing_if = "Option::is_none")]
1302 pub guaranteed: Option<bool>,
1303
1304 #[serde(
1309 rename = "guaranteedExecutionPremium",
1310 skip_serializing_if = "Option::is_none"
1311 )]
1312 pub guaranteed_execution_premium: Option<DecimalNumber>,
1313
1314 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
1316 pub reason: Option<StopLossOrderReason>,
1317
1318 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
1320 pub client_extensions: Option<ClientExtensions>,
1321
1322 #[serde(
1326 rename = "orderFillTransactionID",
1327 skip_serializing_if = "Option::is_none"
1328 )]
1329 pub order_fill_transaction_id: Option<TransactionId>,
1330
1331 #[serde(rename = "replacesOrderID", skip_serializing_if = "Option::is_none")]
1334 pub replaces_order_id: Option<OrderId>,
1335
1336 #[serde(
1339 rename = "cancellingTransactionID",
1340 skip_serializing_if = "Option::is_none"
1341 )]
1342 pub cancelling_transaction_id: Option<TransactionId>,
1343
1344 #[serde(rename = "triggerMode", skip_serializing_if = "Option::is_none")]
1348 pub trigger_mode: Option<String>,
1349}
1350
1351#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1354#[non_exhaustive]
1355pub struct StopLossOrderRejectTransaction {
1356 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
1358 pub id: Option<TransactionId>,
1359
1360 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
1362 pub time: Option<DateTime>,
1363
1364 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
1366 pub user_id: Option<i64>,
1367
1368 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
1370 pub account_id: Option<AccountId>,
1371
1372 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
1375 pub batch_id: Option<TransactionId>,
1376
1377 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
1379 pub request_id: Option<RequestId>,
1380
1381 #[serde(rename = "tradeID", skip_serializing_if = "Option::is_none")]
1384 pub trade_id: Option<TradeId>,
1385
1386 #[serde(rename = "clientTradeID", skip_serializing_if = "Option::is_none")]
1389 pub client_trade_id: Option<String>,
1390
1391 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
1396 pub price: Option<PriceValue>,
1397
1398 #[serde(rename = "distance", skip_serializing_if = "Option::is_none")]
1402 pub distance: Option<DecimalNumber>,
1403
1404 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
1406 pub time_in_force: Option<StopLossOrderTimeInForce>,
1407
1408 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
1411 pub gtd_time: Option<DateTime>,
1412
1413 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
1415 pub trigger_condition: Option<OrderTriggerCondition>,
1416
1417 #[serde(rename = "guaranteed", skip_serializing_if = "Option::is_none")]
1422 pub guaranteed: Option<bool>,
1423
1424 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
1426 pub reason: Option<StopLossOrderReason>,
1427
1428 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
1430 pub client_extensions: Option<ClientExtensions>,
1431
1432 #[serde(
1436 rename = "orderFillTransactionID",
1437 skip_serializing_if = "Option::is_none"
1438 )]
1439 pub order_fill_transaction_id: Option<TransactionId>,
1440
1441 #[serde(
1444 rename = "intendedReplacesOrderID",
1445 skip_serializing_if = "Option::is_none"
1446 )]
1447 pub intended_replaces_order_id: Option<OrderId>,
1448
1449 #[serde(rename = "rejectReason", skip_serializing_if = "Option::is_none")]
1451 pub reject_reason: Option<TransactionRejectReason>,
1452
1453 #[serde(rename = "triggerMode", skip_serializing_if = "Option::is_none")]
1457 pub trigger_mode: Option<String>,
1458}
1459
1460#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1463#[non_exhaustive]
1464pub struct TrailingStopLossOrderTransaction {
1465 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
1467 pub id: Option<TransactionId>,
1468
1469 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
1471 pub time: Option<DateTime>,
1472
1473 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
1475 pub user_id: Option<i64>,
1476
1477 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
1479 pub account_id: Option<AccountId>,
1480
1481 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
1484 pub batch_id: Option<TransactionId>,
1485
1486 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
1488 pub request_id: Option<RequestId>,
1489
1490 #[serde(rename = "tradeID", skip_serializing_if = "Option::is_none")]
1493 pub trade_id: Option<TradeId>,
1494
1495 #[serde(rename = "clientTradeID", skip_serializing_if = "Option::is_none")]
1498 pub client_trade_id: Option<String>,
1499
1500 #[serde(rename = "distance", skip_serializing_if = "Option::is_none")]
1503 pub distance: Option<DecimalNumber>,
1504
1505 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
1507 pub time_in_force: Option<TrailingStopLossOrderTimeInForce>,
1508
1509 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
1512 pub gtd_time: Option<DateTime>,
1513
1514 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
1516 pub trigger_condition: Option<OrderTriggerCondition>,
1517
1518 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
1520 pub reason: Option<TrailingStopLossOrderReason>,
1521
1522 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
1524 pub client_extensions: Option<ClientExtensions>,
1525
1526 #[serde(
1530 rename = "orderFillTransactionID",
1531 skip_serializing_if = "Option::is_none"
1532 )]
1533 pub order_fill_transaction_id: Option<TransactionId>,
1534
1535 #[serde(rename = "replacesOrderID", skip_serializing_if = "Option::is_none")]
1538 pub replaces_order_id: Option<OrderId>,
1539
1540 #[serde(
1543 rename = "cancellingTransactionID",
1544 skip_serializing_if = "Option::is_none"
1545 )]
1546 pub cancelling_transaction_id: Option<TransactionId>,
1547}
1548
1549#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1552#[non_exhaustive]
1553pub struct TrailingStopLossOrderRejectTransaction {
1554 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
1556 pub id: Option<TransactionId>,
1557
1558 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
1560 pub time: Option<DateTime>,
1561
1562 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
1564 pub user_id: Option<i64>,
1565
1566 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
1568 pub account_id: Option<AccountId>,
1569
1570 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
1573 pub batch_id: Option<TransactionId>,
1574
1575 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
1577 pub request_id: Option<RequestId>,
1578
1579 #[serde(rename = "tradeID", skip_serializing_if = "Option::is_none")]
1582 pub trade_id: Option<TradeId>,
1583
1584 #[serde(rename = "clientTradeID", skip_serializing_if = "Option::is_none")]
1587 pub client_trade_id: Option<String>,
1588
1589 #[serde(rename = "distance", skip_serializing_if = "Option::is_none")]
1592 pub distance: Option<DecimalNumber>,
1593
1594 #[serde(rename = "timeInForce", skip_serializing_if = "Option::is_none")]
1596 pub time_in_force: Option<TrailingStopLossOrderTimeInForce>,
1597
1598 #[serde(rename = "gtdTime", skip_serializing_if = "Option::is_none")]
1601 pub gtd_time: Option<DateTime>,
1602
1603 #[serde(rename = "triggerCondition", skip_serializing_if = "Option::is_none")]
1605 pub trigger_condition: Option<OrderTriggerCondition>,
1606
1607 #[serde(rename = "reason", skip_serializing_if = "Option::is_none")]
1609 pub reason: Option<TrailingStopLossOrderReason>,
1610
1611 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
1613 pub client_extensions: Option<ClientExtensions>,
1614
1615 #[serde(
1619 rename = "orderFillTransactionID",
1620 skip_serializing_if = "Option::is_none"
1621 )]
1622 pub order_fill_transaction_id: Option<TransactionId>,
1623
1624 #[serde(
1627 rename = "intendedReplacesOrderID",
1628 skip_serializing_if = "Option::is_none"
1629 )]
1630 pub intended_replaces_order_id: Option<OrderId>,
1631
1632 #[serde(rename = "rejectReason", skip_serializing_if = "Option::is_none")]
1634 pub reject_reason: Option<TransactionRejectReason>,
1635}
1636
1637string_enum! {
1638 pub enum MarketOrderReason {
1640 ClientOrder => "CLIENT_ORDER",
1641 TradeClose => "TRADE_CLOSE",
1642 PositionCloseout => "POSITION_CLOSEOUT",
1643 MarginCloseout => "MARGIN_CLOSEOUT",
1644 DelayedTradeClose => "DELAYED_TRADE_CLOSE",
1645 }
1646}
1647
1648string_enum! {
1649 pub enum FixedPriceOrderReason {
1651 PlatformAccountMigration => "PLATFORM_ACCOUNT_MIGRATION",
1652 }
1653}
1654
1655string_enum! {
1656 pub enum LimitOrderReason {
1658 ClientOrder => "CLIENT_ORDER",
1659 Replacement => "REPLACEMENT",
1660 }
1661}
1662
1663string_enum! {
1664 pub enum StopOrderReason {
1666 ClientOrder => "CLIENT_ORDER",
1667 Replacement => "REPLACEMENT",
1668 }
1669}
1670
1671string_enum! {
1672 pub enum MarketIfTouchedOrderReason {
1674 ClientOrder => "CLIENT_ORDER",
1675 Replacement => "REPLACEMENT",
1676 }
1677}
1678
1679string_enum! {
1680 pub enum TakeProfitOrderReason {
1682 ClientOrder => "CLIENT_ORDER",
1683 Replacement => "REPLACEMENT",
1684 OnFill => "ON_FILL",
1685 }
1686}
1687
1688string_enum! {
1689 pub enum StopLossOrderReason {
1691 ClientOrder => "CLIENT_ORDER",
1692 Replacement => "REPLACEMENT",
1693 OnFill => "ON_FILL",
1694 }
1695}
1696
1697string_enum! {
1698 pub enum TrailingStopLossOrderReason {
1700 ClientOrder => "CLIENT_ORDER",
1701 Replacement => "REPLACEMENT",
1702 OnFill => "ON_FILL",
1703 }
1704}