nautilus_coinbase_intx/http/
query.rs1use chrono::{DateTime, Utc};
17use derive_builder::Builder;
18use serde::{self, Deserialize, Serialize};
19
20use crate::common::enums::{
21 CoinbaseIntxAlgoStrategy, CoinbaseIntxInstrumentType, CoinbaseIntxOrderEventType,
22 CoinbaseIntxOrderType, CoinbaseIntxSTPMode, CoinbaseIntxSide, CoinbaseIntxTimeInForce,
23};
24
25#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
27#[builder(setter(into, strip_option))]
28pub struct CreateOrderParams {
29 pub portfolio: String,
31 #[builder(default)]
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub client_order_id: Option<String>,
35 pub side: CoinbaseIntxSide,
37 pub size: String,
39 pub instrument: String,
41 #[serde(rename = "type")]
43 pub order_type: CoinbaseIntxOrderType,
44 #[builder(default)]
46 pub tif: CoinbaseIntxTimeInForce,
47 #[builder(default)]
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub price: Option<String>,
51 #[builder(default)]
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub stop_price: Option<String>,
55 #[builder(default)]
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub stop_limit_price: Option<String>,
59 #[builder(default)]
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub expire_time: Option<DateTime<Utc>>,
63 #[builder(default)]
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub stp_mode: Option<CoinbaseIntxSTPMode>,
67 #[builder(default)]
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub post_only: Option<bool>,
71 #[builder(default)]
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub close_only: Option<bool>,
75 #[builder(default)]
77 #[serde(skip_serializing_if = "Option::is_none")]
78 pub algo_strategy: Option<CoinbaseIntxAlgoStrategy>,
79}
80
81#[derive(Clone, Debug, Deserialize, Serialize)]
83pub struct GetOrderParams {
84 pub portfolio: String,
86}
87
88#[derive(Clone, Debug, Serialize, Deserialize, Builder)]
90#[builder(setter(into, strip_option))]
91pub struct GetOrdersParams {
92 pub portfolio: String,
94 #[builder(default)]
96 #[serde(skip_serializing_if = "Option::is_none")]
97 pub instrument: Option<String>,
98 #[builder(default)]
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub instrument_type: Option<String>,
102 #[builder(default)]
104 #[serde(skip_serializing_if = "Option::is_none")]
105 pub client_order_id: Option<String>,
106 #[builder(default)]
108 #[serde(skip_serializing_if = "Option::is_none")]
109 pub event_type: Option<CoinbaseIntxOrderEventType>,
110 #[builder(default)]
112 #[serde(skip_serializing_if = "Option::is_none")]
113 pub order_type: Option<CoinbaseIntxOrderType>,
114 #[builder(default)]
116 #[serde(skip_serializing_if = "Option::is_none")]
117 pub side: Option<CoinbaseIntxSide>,
118 #[builder(default)]
120 #[serde(skip_serializing_if = "Option::is_none")]
121 pub ref_datetime: Option<DateTime<Utc>>,
122 #[builder(default)]
124 #[serde(skip_serializing_if = "Option::is_none")]
125 pub result_limit: Option<u32>,
126 #[builder(default)]
128 #[serde(skip_serializing_if = "Option::is_none")]
129 pub result_offset: Option<u32>,
130}
131
132#[derive(Clone, Debug, Deserialize, Serialize)]
134pub struct CancelOrderParams {
135 pub portfolio: String,
137}
138
139#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
141#[builder(setter(into, strip_option))]
142pub struct CancelOrdersParams {
143 pub portfolio: String,
145 #[builder(default)]
147 #[serde(skip_serializing_if = "Option::is_none")]
148 pub instrument: Option<String>,
149 #[builder(default)]
151 #[serde(skip_serializing_if = "Option::is_none")]
152 pub side: Option<CoinbaseIntxSide>,
153 #[builder(default)]
155 #[serde(skip_serializing_if = "Option::is_none")]
156 pub instrument_type: Option<CoinbaseIntxInstrumentType>,
157}
158
159#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
161#[builder(setter(into, strip_option))]
162pub struct ModifyOrderParams {
163 pub portfolio: String,
165 pub client_order_id: String,
167 #[builder(default)]
169 #[serde(skip_serializing_if = "Option::is_none")]
170 pub price: Option<String>,
171 #[builder(default)]
173 #[serde(skip_serializing_if = "Option::is_none")]
174 pub stop_price: Option<String>,
175 #[builder(default)]
177 #[serde(skip_serializing_if = "Option::is_none")]
178 pub size: Option<String>,
179}
180
181#[derive(Clone, Debug, Serialize, Deserialize, Builder)]
183#[builder(setter(into, strip_option))]
184pub struct GetPortfolioFillsParams {
185 #[builder(default)]
187 #[serde(skip_serializing_if = "Option::is_none")]
188 pub order_id: Option<String>,
189 #[builder(default)]
191 #[serde(skip_serializing_if = "Option::is_none")]
192 pub client_order_id: Option<String>,
193 #[builder(default)]
196 #[serde(skip_serializing_if = "Option::is_none")]
197 pub ref_datetime: Option<DateTime<Utc>>,
198 #[builder(default)]
200 #[serde(skip_serializing_if = "Option::is_none")]
201 pub result_limit: Option<u32>,
202 #[builder(default)]
204 #[serde(skip_serializing_if = "Option::is_none")]
205 pub result_offset: Option<u32>,
206 #[builder(default)]
208 #[serde(skip_serializing_if = "Option::is_none")]
209 pub time_from: Option<DateTime<Utc>>,
210}