rust_okx/api/public_data/
responses.rs1use serde::Deserialize;
2
3use crate::{
4 NumberString,
5 model::{InstType, RestRow},
6};
7
8pub type OptionSummary = RestRow;
10
11pub type EstimatedPrice = RestRow;
13
14pub type DiscountRateInterestFreeQuota = RestRow;
16
17pub type InterestRateLoanQuota = RestRow;
19
20pub type VipInterestRateLoanQuota = RestRow;
22
23pub type InstrumentTickBand = RestRow;
25
26pub type PublicOptionTrade = RestRow;
28
29pub type MarketDataHistory = RestRow;
31
32#[derive(Debug, Clone, Deserialize)]
37#[serde(rename_all = "camelCase")]
38#[non_exhaustive]
39pub struct Instrument {
40 pub inst_type: InstType,
42 pub inst_id: String,
44 #[serde(default)]
46 pub uly: String,
47 #[serde(default)]
49 pub inst_family: String,
50 #[serde(default)]
52 pub base_ccy: String,
53 #[serde(default)]
55 pub quote_ccy: String,
56 #[serde(default)]
58 pub settle_ccy: String,
59 #[serde(default)]
61 pub lot_sz: NumberString,
62 #[serde(default)]
64 pub tick_sz: NumberString,
65 #[serde(default)]
67 pub min_sz: NumberString,
68 #[serde(default)]
70 pub state: String,
71}
72
73#[derive(Debug, Clone, Deserialize)]
75#[serde(rename_all = "camelCase")]
76#[non_exhaustive]
77pub struct SystemTime {
78 pub ts: NumberString,
80}
81
82#[derive(Debug, Clone, Deserialize)]
84#[serde(rename_all = "camelCase")]
85#[non_exhaustive]
86pub struct OpenInterest {
87 pub inst_type: InstType,
89 pub inst_id: String,
91 #[serde(default)]
93 pub oi: NumberString,
94 #[serde(default)]
96 pub oi_ccy: NumberString,
97 #[serde(default)]
99 pub ts: NumberString,
100}
101
102#[derive(Debug, Clone, Deserialize)]
104#[serde(rename_all = "camelCase")]
105#[non_exhaustive]
106pub struct FundingRate {
107 #[serde(default)]
109 pub inst_type: String,
110 pub inst_id: String,
112 #[serde(default)]
114 pub funding_rate: NumberString,
115 #[serde(default)]
117 pub next_funding_rate: NumberString,
118 #[serde(default)]
120 pub funding_time: NumberString,
121 #[serde(default)]
123 pub next_funding_time: NumberString,
124}
125
126#[derive(Debug, Clone, Deserialize)]
128#[serde(rename_all = "camelCase")]
129#[non_exhaustive]
130pub struct FundingRateHistory {
131 pub inst_id: String,
133 #[serde(default)]
135 pub funding_rate: NumberString,
136 #[serde(default)]
138 pub realized_rate: NumberString,
139 #[serde(default)]
141 pub funding_time: NumberString,
142 #[serde(default)]
144 pub method: String,
145}
146
147#[derive(Debug, Clone, Deserialize)]
149#[serde(rename_all = "camelCase")]
150#[non_exhaustive]
151pub struct PriceLimit {
152 pub inst_id: String,
154 #[serde(default)]
156 pub buy_lmt: NumberString,
157 #[serde(default)]
159 pub sell_lmt: NumberString,
160 #[serde(default)]
162 pub ts: NumberString,
163}
164
165#[derive(Debug, Clone, Deserialize)]
167#[serde(rename_all = "camelCase")]
168#[non_exhaustive]
169pub struct MarkPrice {
170 pub inst_type: InstType,
172 pub inst_id: String,
174 #[serde(default)]
176 pub mark_px: NumberString,
177 #[serde(default)]
179 pub ts: NumberString,
180}
181
182#[derive(Debug, Clone, Deserialize)]
184#[serde(rename_all = "camelCase")]
185#[non_exhaustive]
186pub struct DeliveryExercise {
187 #[serde(default)]
189 pub inst_type: String,
190 #[serde(default)]
192 pub inst_id: String,
193 #[serde(default)]
195 pub px: NumberString,
196 #[serde(rename = "type", default)]
198 pub exercise_type: String,
199 #[serde(default)]
201 pub ts: NumberString,
202}
203
204#[derive(Debug, Clone, Deserialize)]
206#[serde(rename_all = "camelCase")]
207#[non_exhaustive]
208pub struct PositionTier {
209 pub inst_type: InstType,
211 #[serde(default)]
213 pub td_mode: String,
214 #[serde(default)]
216 pub inst_id: String,
217 #[serde(default)]
219 pub tier: String,
220 #[serde(default)]
222 pub min_sz: NumberString,
223 #[serde(default)]
225 pub max_sz: NumberString,
226 #[serde(default)]
228 pub imr: NumberString,
229 #[serde(default)]
231 pub mmr: NumberString,
232}
233
234#[derive(Debug, Clone, Deserialize)]
236#[serde(rename_all = "camelCase")]
237#[non_exhaustive]
238pub struct InsuranceFund {
239 #[serde(default)]
241 pub inst_type: String,
242 #[serde(rename = "type", default)]
244 pub fund_type: String,
245 #[serde(default)]
247 pub ccy: String,
248 #[serde(default)]
250 pub amt: NumberString,
251 #[serde(default)]
253 pub ts: NumberString,
254}
255
256#[derive(Debug, Clone, Deserialize)]
258#[serde(rename_all = "camelCase")]
259#[non_exhaustive]
260pub struct ConvertContractCoin {
261 #[serde(default)]
263 pub inst_id: String,
264 #[serde(default)]
266 pub sz: NumberString,
267 #[serde(default)]
269 pub px: NumberString,
270 #[serde(default)]
272 pub unit: String,
273}