Skip to main content

rust_okx/ws/response/
acknowledgement.rs

1//! Login, subscription, notice, and connection-count responses.
2
3use serde::Deserialize;
4
5use crate::model::NumberString;
6use crate::ws::Arg;
7
8use super::ResponseExtraFields;
9
10/// Subscribe/unsubscribe acknowledgement body.
11///
12/// OKX docs: <https://www.okx.com/docs-v5/en/#overview-websocket-subscribe>
13#[derive(Debug, Clone, Default, Deserialize)]
14#[serde(rename_all = "camelCase")]
15#[non_exhaustive]
16pub struct ChannelAcknowledgement {
17    /// `subscribe`, `unsubscribe`, or `error`.
18    #[serde(default)]
19    pub event: String,
20    /// Client message ID when one was included in the request.
21    #[serde(default)]
22    pub id: String,
23    /// Acknowledged channel argument.
24    #[serde(default)]
25    pub arg: Option<Arg>,
26    /// OKX response/error code when supplied.
27    #[serde(default)]
28    pub code: String,
29    /// OKX response/error message when supplied.
30    #[serde(default)]
31    pub msg: String,
32    /// WebSocket connection ID.
33    #[serde(default)]
34    pub conn_id: String,
35    /// Fields introduced by OKX after this crate version.
36    #[serde(flatten, default)]
37    pub extra: ResponseExtraFields,
38}
39
40/// Login acknowledgement or login error body.
41///
42/// OKX docs: <https://www.okx.com/docs-v5/en/#overview-websocket-login>
43#[derive(Debug, Clone, Default, Deserialize)]
44#[serde(rename_all = "camelCase")]
45#[non_exhaustive]
46pub struct LoginAcknowledgement {
47    /// `login` on success or `error` on failure.
48    #[serde(default)]
49    pub event: String,
50    /// OKX response/error code.
51    #[serde(default)]
52    pub code: String,
53    /// OKX response/error message.
54    #[serde(default)]
55    pub msg: String,
56    /// WebSocket connection ID.
57    #[serde(default)]
58    pub conn_id: String,
59    /// Fields introduced by OKX after this crate version.
60    #[serde(flatten, default)]
61    pub extra: ResponseExtraFields,
62}
63
64/// Service notice body.
65///
66/// OKX docs: <https://www.okx.com/docs-v5/en/#overview-websocket-notice>
67#[derive(Debug, Clone, Default, Deserialize)]
68#[serde(rename_all = "camelCase")]
69#[non_exhaustive]
70pub struct NoticeResponse {
71    /// Always `notice`.
72    #[serde(default)]
73    pub event: String,
74    /// OKX notice code.
75    #[serde(default)]
76    pub code: String,
77    /// Notice message.
78    #[serde(default)]
79    pub msg: String,
80    /// WebSocket connection ID when supplied.
81    #[serde(default)]
82    pub conn_id: String,
83    /// Fields introduced by OKX after this crate version.
84    #[serde(flatten, default)]
85    pub extra: ResponseExtraFields,
86}
87
88/// Channel connection-count event body.
89///
90/// OKX docs: <https://www.okx.com/docs-v5/en/#overview-websocket-connection-count-limit>
91#[derive(Debug, Clone, Default, Deserialize)]
92#[serde(rename_all = "camelCase")]
93#[non_exhaustive]
94pub struct ChannelConnectionCountResponse {
95    /// `channel-conn-count` or `channel-conn-count-error`.
96    #[serde(default)]
97    pub event: String,
98    /// Channel name.
99    #[serde(default)]
100    pub channel: String,
101    /// Current connection count.
102    #[serde(default)]
103    pub conn_count: NumberString,
104    /// WebSocket connection ID.
105    #[serde(default)]
106    pub conn_id: String,
107    /// Fields introduced by OKX after this crate version.
108    #[serde(flatten, default)]
109    pub extra: ResponseExtraFields,
110}