rust_okx/ws/response/operation.rs
1//! WebSocket trade-operation response envelope.
2
3use serde::Deserialize;
4
5use crate::model::NumberString;
6
7use super::ResponseExtraFields;
8
9/// Generic WebSocket trade-operation response body.
10///
11/// `T` is normally one of the operation result rows in [`crate::ws::model`].
12///
13/// OKX docs: <https://www.okx.com/docs-v5/en/#overview-websocket>
14#[derive(Debug, Clone, Default, Deserialize)]
15#[serde(rename_all = "camelCase")]
16#[non_exhaustive]
17pub struct OperationResponse<T> {
18 /// Client request ID.
19 #[serde(default)]
20 pub id: String,
21 /// Operation name, e.g. `order` or `sprd-order`.
22 #[serde(default)]
23 pub op: String,
24 /// Top-level OKX response code.
25 #[serde(default)]
26 pub code: String,
27 /// Top-level OKX response message.
28 #[serde(default)]
29 pub msg: String,
30 /// Per-request result rows.
31 #[serde(default)]
32 pub data: Vec<T>,
33 /// Gateway receive timestamp in microseconds.
34 #[serde(default)]
35 pub in_time: NumberString,
36 /// Gateway send timestamp in microseconds.
37 #[serde(default)]
38 pub out_time: NumberString,
39 /// Fields introduced by OKX after this crate version.
40 #[serde(flatten, default)]
41 pub extra: ResponseExtraFields,
42}