Skip to main content

oanda_v20_openapi/models/
reject_transaction.rs

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