Skip to main content

rust_okx/api/trade/
responses.rs

1use serde::Deserialize;
2
3use crate::{
4    NumberString,
5    model::{OrderSide, OrderState, OrderType, PositionSide, RestRow, TradeMode},
6};
7
8/// Result row returned by algo-order mutation endpoints.
9pub type AlgoOrderResult = RestRow;
10
11/// Algo-order row returned by list, history, and details endpoints.
12pub type AlgoOrder = RestRow;
13
14/// Easy-convert currency row.
15pub type EasyConvertCurrency = RestRow;
16
17/// Easy-convert execution result row.
18pub type EasyConvertResult = RestRow;
19
20/// Easy-convert history row.
21pub type EasyConvertHistory = RestRow;
22
23/// One-click-repay currency row.
24pub type OneClickRepayCurrency = RestRow;
25
26/// One-click-repay execution result row.
27pub type OneClickRepayResult = RestRow;
28
29/// One-click-repay history row.
30pub type OneClickRepayHistory = RestRow;
31
32/// The result of placing an order.
33#[derive(Debug, Clone, Deserialize)]
34#[serde(rename_all = "camelCase")]
35#[non_exhaustive]
36pub struct PlaceOrderResult {
37    /// OKX order ID.
38    #[serde(default)]
39    pub ord_id: String,
40    /// Client-supplied order ID, if any.
41    #[serde(default)]
42    pub cl_ord_id: String,
43    /// Order tag.
44    #[serde(default)]
45    pub tag: String,
46    /// Per-order status code (`"0"` on success).
47    pub s_code: String,
48    /// Per-order status message.
49    #[serde(default)]
50    pub s_msg: String,
51    /// Timestamp (Unix milliseconds).
52    #[serde(default)]
53    pub ts: NumberString,
54}
55
56/// The result of cancelling an order.
57#[derive(Debug, Clone, Deserialize)]
58#[serde(rename_all = "camelCase")]
59#[non_exhaustive]
60pub struct CancelOrderResult {
61    /// OKX order ID.
62    #[serde(default)]
63    pub ord_id: String,
64    /// Client-supplied order ID, if any.
65    #[serde(default)]
66    pub cl_ord_id: String,
67    /// Per-order status code (`"0"` on success).
68    pub s_code: String,
69    /// Per-order status message.
70    #[serde(default)]
71    pub s_msg: String,
72}
73
74/// The result of amending an order.
75#[derive(Debug, Clone, Deserialize)]
76#[serde(rename_all = "camelCase")]
77#[non_exhaustive]
78pub struct AmendOrderResult {
79    /// OKX order ID.
80    #[serde(default)]
81    pub ord_id: String,
82    /// Client-supplied order ID, if any.
83    #[serde(default)]
84    pub cl_ord_id: String,
85    /// Request ID, if supplied.
86    #[serde(default)]
87    pub req_id: String,
88    /// Per-order status code (`"0"` on success).
89    pub s_code: String,
90    /// Per-order status message.
91    #[serde(default)]
92    pub s_msg: String,
93}
94
95/// The result of closing a position.
96#[derive(Debug, Clone, Deserialize)]
97#[serde(rename_all = "camelCase")]
98#[non_exhaustive]
99pub struct ClosePositionResult {
100    /// Instrument ID.
101    #[serde(default)]
102    pub inst_id: String,
103    /// Position side.
104    #[serde(default)]
105    pub pos_side: String,
106    /// Client order ID, if supplied.
107    #[serde(default)]
108    pub cl_ord_id: String,
109    /// Tag, if supplied.
110    #[serde(default)]
111    pub tag: String,
112}
113
114/// Details of an existing order.
115#[derive(Debug, Clone, Deserialize)]
116#[serde(rename_all = "camelCase")]
117#[non_exhaustive]
118pub struct Order {
119    /// Instrument ID.
120    pub inst_id: String,
121    /// OKX order ID.
122    pub ord_id: String,
123    /// Client-supplied order ID, if any.
124    #[serde(default)]
125    pub cl_ord_id: String,
126    /// Order price.
127    #[serde(default)]
128    pub px: NumberString,
129    /// Order size.
130    #[serde(default)]
131    pub sz: NumberString,
132    /// Order type.
133    pub ord_type: OrderType,
134    /// Order side.
135    pub side: OrderSide,
136    /// Position side.
137    pub pos_side: PositionSide,
138    /// Trade mode.
139    pub td_mode: TradeMode,
140    /// Accumulated filled size.
141    #[serde(default)]
142    pub acc_fill_sz: NumberString,
143    /// Average fill price.
144    #[serde(default)]
145    pub avg_px: NumberString,
146    /// Order state.
147    pub state: OrderState,
148    /// Creation time (Unix milliseconds).
149    #[serde(default)]
150    pub c_time: NumberString,
151}
152
153/// A trade fill.
154#[derive(Debug, Clone, Deserialize)]
155#[serde(rename_all = "camelCase")]
156#[non_exhaustive]
157pub struct Fill {
158    /// Instrument type.
159    #[serde(default)]
160    pub inst_type: String,
161    /// Instrument ID.
162    pub inst_id: String,
163    /// Trade ID.
164    #[serde(default)]
165    pub trade_id: String,
166    /// OKX order ID.
167    #[serde(default)]
168    pub ord_id: String,
169    /// Fill price.
170    #[serde(default)]
171    pub fill_px: NumberString,
172    /// Fill size.
173    #[serde(default)]
174    pub fill_sz: NumberString,
175    /// Fill side.
176    pub side: OrderSide,
177    /// Order type.
178    pub ord_type: OrderType,
179    /// Fee currency.
180    #[serde(default)]
181    pub fee_ccy: String,
182    /// Fee amount.
183    #[serde(default)]
184    pub fee: NumberString,
185    /// Fill timestamp (Unix milliseconds).
186    #[serde(default)]
187    pub ts: NumberString,
188}