Skip to main content

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}