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