1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct TradeClientExtensionsModifyRejectTransaction {
17 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
19 pub id: Option<i32>,
20 #[serde(rename = "time", skip_serializing_if = "Option::is_none")]
22 pub time: Option<String>,
23 #[serde(rename = "userID", skip_serializing_if = "Option::is_none")]
25 pub user_id: Option<i32>,
26 #[serde(rename = "accountID", skip_serializing_if = "Option::is_none")]
28 pub account_id: Option<String>,
29 #[serde(rename = "batchID", skip_serializing_if = "Option::is_none")]
31 pub batch_id: Option<i32>,
32 #[serde(rename = "requestID", skip_serializing_if = "Option::is_none")]
34 pub request_id: Option<String>,
35 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
36 pub r#type: Option<models::TransactionType>,
37 #[serde(rename = "rejectReason", skip_serializing_if = "Option::is_none")]
39 pub reject_reason: Option<RejectReason>,
40 #[serde(rename = "tradeID", skip_serializing_if = "Option::is_none")]
42 pub trade_id: Option<i32>,
43 #[serde(rename = "clientTradeID", skip_serializing_if = "Option::is_none")]
45 pub client_trade_id: Option<String>,
46 #[serde(rename = "tradeClientExtensionsModify", skip_serializing_if = "Option::is_none")]
47 pub trade_client_extensions_modify: Option<Box<models::ClientExtensions>>,
48}
49
50impl TradeClientExtensionsModifyRejectTransaction {
51 pub fn new() -> TradeClientExtensionsModifyRejectTransaction {
53 TradeClientExtensionsModifyRejectTransaction {
54 id: None,
55 time: None,
56 user_id: None,
57 account_id: None,
58 batch_id: None,
59 request_id: None,
60 r#type: None,
61 reject_reason: None,
62 trade_id: None,
63 client_trade_id: None,
64 trade_client_extensions_modify: None,
65 }
66 }
67}
68#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
70pub enum RejectReason {
71 #[serde(rename = "INTERNAL_SERVER_ERROR")]
72 InternalServerError,
73 #[serde(rename = "INSTRUMENT_PRICE_UNKNOWN")]
74 InstrumentPriceUnknown,
75 #[serde(rename = "ACCOUNT_NOT_ACTIVE")]
76 AccountNotActive,
77 #[serde(rename = "ACCOUNT_LOCKED")]
78 AccountLocked,
79 #[serde(rename = "ACCOUNT_ORDER_CREATION_LOCKED")]
80 AccountOrderCreationLocked,
81 #[serde(rename = "ACCOUNT_CONFIGURATION_LOCKED")]
82 AccountConfigurationLocked,
83 #[serde(rename = "ACCOUNT_DEPOSIT_LOCKED")]
84 AccountDepositLocked,
85 #[serde(rename = "ACCOUNT_WITHDRAWAL_LOCKED")]
86 AccountWithdrawalLocked,
87 #[serde(rename = "ACCOUNT_ORDER_CANCEL_LOCKED")]
88 AccountOrderCancelLocked,
89 #[serde(rename = "INSTRUMENT_NOT_TRADEABLE")]
90 InstrumentNotTradeable,
91 #[serde(rename = "PENDING_ORDERS_ALLOWED_EXCEEDED")]
92 PendingOrdersAllowedExceeded,
93 #[serde(rename = "ORDER_ID_UNSPECIFIED")]
94 OrderIdUnspecified,
95 #[serde(rename = "ORDER_DOESNT_EXIST")]
96 OrderDoesntExist,
97 #[serde(rename = "ORDER_IDENTIFIER_INCONSISTENCY")]
98 OrderIdentifierInconsistency,
99 #[serde(rename = "TRADE_ID_UNSPECIFIED")]
100 TradeIdUnspecified,
101 #[serde(rename = "TRADE_DOESNT_EXIST")]
102 TradeDoesntExist,
103 #[serde(rename = "TRADE_IDENTIFIER_INCONSISTENCY")]
104 TradeIdentifierInconsistency,
105 #[serde(rename = "INSUFFICIENT_MARGIN")]
106 InsufficientMargin,
107 #[serde(rename = "INSTRUMENT_MISSING")]
108 InstrumentMissing,
109 #[serde(rename = "INSTRUMENT_UNKNOWN")]
110 InstrumentUnknown,
111 #[serde(rename = "UNITS_MISSING")]
112 UnitsMissing,
113 #[serde(rename = "UNITS_INVALID")]
114 UnitsInvalid,
115 #[serde(rename = "UNITS_PRECISION_EXCEEDED")]
116 UnitsPrecisionExceeded,
117 #[serde(rename = "UNITS_LIMIT_EXCEEDED")]
118 UnitsLimitExceeded,
119 #[serde(rename = "UNITS_MIMIMUM_NOT_MET")]
120 UnitsMimimumNotMet,
121 #[serde(rename = "PRICE_MISSING")]
122 PriceMissing,
123 #[serde(rename = "PRICE_INVALID")]
124 PriceInvalid,
125 #[serde(rename = "PRICE_PRECISION_EXCEEDED")]
126 PricePrecisionExceeded,
127 #[serde(rename = "PRICE_DISTANCE_MISSING")]
128 PriceDistanceMissing,
129 #[serde(rename = "PRICE_DISTANCE_INVALID")]
130 PriceDistanceInvalid,
131 #[serde(rename = "PRICE_DISTANCE_PRECISION_EXCEEDED")]
132 PriceDistancePrecisionExceeded,
133 #[serde(rename = "PRICE_DISTANCE_MAXIMUM_EXCEEDED")]
134 PriceDistanceMaximumExceeded,
135 #[serde(rename = "PRICE_DISTANCE_MINIMUM_NOT_MET")]
136 PriceDistanceMinimumNotMet,
137 #[serde(rename = "TIME_IN_FORCE_MISSING")]
138 TimeInForceMissing,
139 #[serde(rename = "TIME_IN_FORCE_INVALID")]
140 TimeInForceInvalid,
141 #[serde(rename = "TIME_IN_FORCE_GTD_TIMESTAMP_MISSING")]
142 TimeInForceGtdTimestampMissing,
143 #[serde(rename = "TIME_IN_FORCE_GTD_TIMESTAMP_IN_PAST")]
144 TimeInForceGtdTimestampInPast,
145 #[serde(rename = "PRICE_BOUND_INVALID")]
146 PriceBoundInvalid,
147 #[serde(rename = "PRICE_BOUND_PRECISION_EXCEEDED")]
148 PriceBoundPrecisionExceeded,
149 #[serde(rename = "ORDERS_ON_FILL_DUPLICATE_CLIENT_ORDER_IDS")]
150 OrdersOnFillDuplicateClientOrderIds,
151 #[serde(rename = "TRADE_ON_FILL_CLIENT_EXTENSIONS_NOT_SUPPORTED")]
152 TradeOnFillClientExtensionsNotSupported,
153 #[serde(rename = "CLIENT_ORDER_ID_INVALID")]
154 ClientOrderIdInvalid,
155 #[serde(rename = "CLIENT_ORDER_ID_ALREADY_EXISTS")]
156 ClientOrderIdAlreadyExists,
157 #[serde(rename = "CLIENT_ORDER_TAG_INVALID")]
158 ClientOrderTagInvalid,
159 #[serde(rename = "CLIENT_ORDER_COMMENT_INVALID")]
160 ClientOrderCommentInvalid,
161 #[serde(rename = "CLIENT_TRADE_ID_INVALID")]
162 ClientTradeIdInvalid,
163 #[serde(rename = "CLIENT_TRADE_ID_ALREADY_EXISTS")]
164 ClientTradeIdAlreadyExists,
165 #[serde(rename = "CLIENT_TRADE_TAG_INVALID")]
166 ClientTradeTagInvalid,
167 #[serde(rename = "CLIENT_TRADE_COMMENT_INVALID")]
168 ClientTradeCommentInvalid,
169 #[serde(rename = "ORDER_FILL_POSITION_ACTION_MISSING")]
170 OrderFillPositionActionMissing,
171 #[serde(rename = "ORDER_FILL_POSITION_ACTION_INVALID")]
172 OrderFillPositionActionInvalid,
173 #[serde(rename = "TRIGGER_CONDITION_MISSING")]
174 TriggerConditionMissing,
175 #[serde(rename = "TRIGGER_CONDITION_INVALID")]
176 TriggerConditionInvalid,
177 #[serde(rename = "ORDER_PARTIAL_FILL_OPTION_MISSING")]
178 OrderPartialFillOptionMissing,
179 #[serde(rename = "ORDER_PARTIAL_FILL_OPTION_INVALID")]
180 OrderPartialFillOptionInvalid,
181 #[serde(rename = "INVALID_REISSUE_IMMEDIATE_PARTIAL_FILL")]
182 InvalidReissueImmediatePartialFill,
183 #[serde(rename = "TAKE_PROFIT_ORDER_ALREADY_EXISTS")]
184 TakeProfitOrderAlreadyExists,
185 #[serde(rename = "TAKE_PROFIT_ON_FILL_PRICE_MISSING")]
186 TakeProfitOnFillPriceMissing,
187 #[serde(rename = "TAKE_PROFIT_ON_FILL_PRICE_INVALID")]
188 TakeProfitOnFillPriceInvalid,
189 #[serde(rename = "TAKE_PROFIT_ON_FILL_PRICE_PRECISION_EXCEEDED")]
190 TakeProfitOnFillPricePrecisionExceeded,
191 #[serde(rename = "TAKE_PROFIT_ON_FILL_TIME_IN_FORCE_MISSING")]
192 TakeProfitOnFillTimeInForceMissing,
193 #[serde(rename = "TAKE_PROFIT_ON_FILL_TIME_IN_FORCE_INVALID")]
194 TakeProfitOnFillTimeInForceInvalid,
195 #[serde(rename = "TAKE_PROFIT_ON_FILL_GTD_TIMESTAMP_MISSING")]
196 TakeProfitOnFillGtdTimestampMissing,
197 #[serde(rename = "TAKE_PROFIT_ON_FILL_GTD_TIMESTAMP_IN_PAST")]
198 TakeProfitOnFillGtdTimestampInPast,
199 #[serde(rename = "TAKE_PROFIT_ON_FILL_CLIENT_ORDER_ID_INVALID")]
200 TakeProfitOnFillClientOrderIdInvalid,
201 #[serde(rename = "TAKE_PROFIT_ON_FILL_CLIENT_ORDER_TAG_INVALID")]
202 TakeProfitOnFillClientOrderTagInvalid,
203 #[serde(rename = "TAKE_PROFIT_ON_FILL_CLIENT_ORDER_COMMENT_INVALID")]
204 TakeProfitOnFillClientOrderCommentInvalid,
205 #[serde(rename = "TAKE_PROFIT_ON_FILL_TRIGGER_CONDITION_MISSING")]
206 TakeProfitOnFillTriggerConditionMissing,
207 #[serde(rename = "TAKE_PROFIT_ON_FILL_TRIGGER_CONDITION_INVALID")]
208 TakeProfitOnFillTriggerConditionInvalid,
209 #[serde(rename = "STOP_LOSS_ORDER_ALREADY_EXISTS")]
210 StopLossOrderAlreadyExists,
211 #[serde(rename = "STOP_LOSS_ORDER_GUARANTEED_REQUIRED")]
212 StopLossOrderGuaranteedRequired,
213 #[serde(rename = "STOP_LOSS_ORDER_GUARANTEED_PRICE_WITHIN_SPREAD")]
214 StopLossOrderGuaranteedPriceWithinSpread,
215 #[serde(rename = "STOP_LOSS_ORDER_GUARANTEED_NOT_ALLOWED")]
216 StopLossOrderGuaranteedNotAllowed,
217 #[serde(rename = "STOP_LOSS_ORDER_GUARANTEED_HALTED_CREATE_VIOLATION")]
218 StopLossOrderGuaranteedHaltedCreateViolation,
219 #[serde(rename = "STOP_LOSS_ORDER_GUARANTEED_HALTED_TIGHTEN_VIOLATION")]
220 StopLossOrderGuaranteedHaltedTightenViolation,
221 #[serde(rename = "STOP_LOSS_ORDER_GUARANTEED_HEDGING_NOT_ALLOWED")]
222 StopLossOrderGuaranteedHedgingNotAllowed,
223 #[serde(rename = "STOP_LOSS_ORDER_GUARANTEED_MINIMUM_DISTANCE_NOT_MET")]
224 StopLossOrderGuaranteedMinimumDistanceNotMet,
225 #[serde(rename = "STOP_LOSS_ORDER_NOT_CANCELABLE")]
226 StopLossOrderNotCancelable,
227 #[serde(rename = "STOP_LOSS_ORDER_NOT_REPLACEABLE")]
228 StopLossOrderNotReplaceable,
229 #[serde(rename = "STOP_LOSS_ORDER_GUARANTEED_LEVEL_RESTRICTION_EXCEEDED")]
230 StopLossOrderGuaranteedLevelRestrictionExceeded,
231 #[serde(rename = "STOP_LOSS_ORDER_PRICE_AND_DISTANCE_BOTH_SPECIFIED")]
232 StopLossOrderPriceAndDistanceBothSpecified,
233 #[serde(rename = "STOP_LOSS_ORDER_PRICE_AND_DISTANCE_BOTH_MISSING")]
234 StopLossOrderPriceAndDistanceBothMissing,
235 #[serde(rename = "STOP_LOSS_ON_FILL_REQUIRED_FOR_PENDING_ORDER")]
236 StopLossOnFillRequiredForPendingOrder,
237 #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_NOT_ALLOWED")]
238 StopLossOnFillGuaranteedNotAllowed,
239 #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_REQUIRED")]
240 StopLossOnFillGuaranteedRequired,
241 #[serde(rename = "STOP_LOSS_ON_FILL_PRICE_MISSING")]
242 StopLossOnFillPriceMissing,
243 #[serde(rename = "STOP_LOSS_ON_FILL_PRICE_INVALID")]
244 StopLossOnFillPriceInvalid,
245 #[serde(rename = "STOP_LOSS_ON_FILL_PRICE_PRECISION_EXCEEDED")]
246 StopLossOnFillPricePrecisionExceeded,
247 #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_MINIMUM_DISTANCE_NOT_MET")]
248 StopLossOnFillGuaranteedMinimumDistanceNotMet,
249 #[serde(rename = "STOP_LOSS_ON_FILL_GUARANTEED_LEVEL_RESTRICTION_EXCEEDED")]
250 StopLossOnFillGuaranteedLevelRestrictionExceeded,
251 #[serde(rename = "STOP_LOSS_ON_FILL_DISTANCE_INVALID")]
252 StopLossOnFillDistanceInvalid,
253 #[serde(rename = "STOP_LOSS_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED")]
254 StopLossOnFillPriceDistanceMaximumExceeded,
255 #[serde(rename = "STOP_LOSS_ON_FILL_DISTANCE_PRECISION_EXCEEDED")]
256 StopLossOnFillDistancePrecisionExceeded,
257 #[serde(rename = "STOP_LOSS_ON_FILL_PRICE_AND_DISTANCE_BOTH_SPECIFIED")]
258 StopLossOnFillPriceAndDistanceBothSpecified,
259 #[serde(rename = "STOP_LOSS_ON_FILL_PRICE_AND_DISTANCE_BOTH_MISSING")]
260 StopLossOnFillPriceAndDistanceBothMissing,
261 #[serde(rename = "STOP_LOSS_ON_FILL_TIME_IN_FORCE_MISSING")]
262 StopLossOnFillTimeInForceMissing,
263 #[serde(rename = "STOP_LOSS_ON_FILL_TIME_IN_FORCE_INVALID")]
264 StopLossOnFillTimeInForceInvalid,
265 #[serde(rename = "STOP_LOSS_ON_FILL_GTD_TIMESTAMP_MISSING")]
266 StopLossOnFillGtdTimestampMissing,
267 #[serde(rename = "STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST")]
268 StopLossOnFillGtdTimestampInPast,
269 #[serde(rename = "STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_INVALID")]
270 StopLossOnFillClientOrderIdInvalid,
271 #[serde(rename = "STOP_LOSS_ON_FILL_CLIENT_ORDER_TAG_INVALID")]
272 StopLossOnFillClientOrderTagInvalid,
273 #[serde(rename = "STOP_LOSS_ON_FILL_CLIENT_ORDER_COMMENT_INVALID")]
274 StopLossOnFillClientOrderCommentInvalid,
275 #[serde(rename = "STOP_LOSS_ON_FILL_TRIGGER_CONDITION_MISSING")]
276 StopLossOnFillTriggerConditionMissing,
277 #[serde(rename = "STOP_LOSS_ON_FILL_TRIGGER_CONDITION_INVALID")]
278 StopLossOnFillTriggerConditionInvalid,
279 #[serde(rename = "TRAILING_STOP_LOSS_ORDER_ALREADY_EXISTS")]
280 TrailingStopLossOrderAlreadyExists,
281 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_MISSING")]
282 TrailingStopLossOnFillPriceDistanceMissing,
283 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_INVALID")]
284 TrailingStopLossOnFillPriceDistanceInvalid,
285 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_PRECISION_EXCEEDED")]
286 TrailingStopLossOnFillPriceDistancePrecisionExceeded,
287 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_MAXIMUM_EXCEEDED")]
288 TrailingStopLossOnFillPriceDistanceMaximumExceeded,
289 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_PRICE_DISTANCE_MINIMUM_NOT_MET")]
290 TrailingStopLossOnFillPriceDistanceMinimumNotMet,
291 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_TIME_IN_FORCE_MISSING")]
292 TrailingStopLossOnFillTimeInForceMissing,
293 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_TIME_IN_FORCE_INVALID")]
294 TrailingStopLossOnFillTimeInForceInvalid,
295 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_GTD_TIMESTAMP_MISSING")]
296 TrailingStopLossOnFillGtdTimestampMissing,
297 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_GTD_TIMESTAMP_IN_PAST")]
298 TrailingStopLossOnFillGtdTimestampInPast,
299 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_ID_INVALID")]
300 TrailingStopLossOnFillClientOrderIdInvalid,
301 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_TAG_INVALID")]
302 TrailingStopLossOnFillClientOrderTagInvalid,
303 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_CLIENT_ORDER_COMMENT_INVALID")]
304 TrailingStopLossOnFillClientOrderCommentInvalid,
305 #[serde(rename = "TRAILING_STOP_LOSS_ORDERS_NOT_SUPPORTED")]
306 TrailingStopLossOrdersNotSupported,
307 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_TRIGGER_CONDITION_MISSING")]
308 TrailingStopLossOnFillTriggerConditionMissing,
309 #[serde(rename = "TRAILING_STOP_LOSS_ON_FILL_TRIGGER_CONDITION_INVALID")]
310 TrailingStopLossOnFillTriggerConditionInvalid,
311 #[serde(rename = "CLOSE_TRADE_TYPE_MISSING")]
312 CloseTradeTypeMissing,
313 #[serde(rename = "CLOSE_TRADE_PARTIAL_UNITS_MISSING")]
314 CloseTradePartialUnitsMissing,
315 #[serde(rename = "CLOSE_TRADE_UNITS_EXCEED_TRADE_SIZE")]
316 CloseTradeUnitsExceedTradeSize,
317 #[serde(rename = "CLOSEOUT_POSITION_DOESNT_EXIST")]
318 CloseoutPositionDoesntExist,
319 #[serde(rename = "CLOSEOUT_POSITION_INCOMPLETE_SPECIFICATION")]
320 CloseoutPositionIncompleteSpecification,
321 #[serde(rename = "CLOSEOUT_POSITION_UNITS_EXCEED_POSITION_SIZE")]
322 CloseoutPositionUnitsExceedPositionSize,
323 #[serde(rename = "CLOSEOUT_POSITION_REJECT")]
324 CloseoutPositionReject,
325 #[serde(rename = "CLOSEOUT_POSITION_PARTIAL_UNITS_MISSING")]
326 CloseoutPositionPartialUnitsMissing,
327 #[serde(rename = "MARKUP_GROUP_ID_INVALID")]
328 MarkupGroupIdInvalid,
329 #[serde(rename = "POSITION_AGGREGATION_MODE_INVALID")]
330 PositionAggregationModeInvalid,
331 #[serde(rename = "ADMIN_CONFIGURE_DATA_MISSING")]
332 AdminConfigureDataMissing,
333 #[serde(rename = "MARGIN_RATE_INVALID")]
334 MarginRateInvalid,
335 #[serde(rename = "MARGIN_RATE_WOULD_TRIGGER_CLOSEOUT")]
336 MarginRateWouldTriggerCloseout,
337 #[serde(rename = "ALIAS_INVALID")]
338 AliasInvalid,
339 #[serde(rename = "CLIENT_CONFIGURE_DATA_MISSING")]
340 ClientConfigureDataMissing,
341 #[serde(rename = "MARGIN_RATE_WOULD_TRIGGER_MARGIN_CALL")]
342 MarginRateWouldTriggerMarginCall,
343 #[serde(rename = "AMOUNT_INVALID")]
344 AmountInvalid,
345 #[serde(rename = "INSUFFICIENT_FUNDS")]
346 InsufficientFunds,
347 #[serde(rename = "AMOUNT_MISSING")]
348 AmountMissing,
349 #[serde(rename = "FUNDING_REASON_MISSING")]
350 FundingReasonMissing,
351 #[serde(rename = "CLIENT_EXTENSIONS_DATA_MISSING")]
352 ClientExtensionsDataMissing,
353 #[serde(rename = "REPLACING_ORDER_INVALID")]
354 ReplacingOrderInvalid,
355 #[serde(rename = "REPLACING_TRADE_ID_INVALID")]
356 ReplacingTradeIdInvalid,
357}
358
359impl Default for RejectReason {
360 fn default() -> RejectReason {
361 Self::InternalServerError
362 }
363}
364