rust_okx/api/support/api.rs
1use crate::client::OkxClient;
2use crate::error::Error;
3use crate::model::EmptyRequest;
4use crate::transport::Transport;
5
6use super::endpoints::*;
7use super::requests::*;
8use super::responses::*;
9
10/// Accessor for the public support and announcement endpoints.
11///
12/// Obtain one via [`OkxClient::support`](crate::OkxClient::support).
13pub struct Support<'a, T> {
14 client: &'a OkxClient<T>,
15}
16
17impl<'a, T: Transport> Support<'a, T> {
18 pub(crate) fn new(client: &'a OkxClient<T>) -> Self {
19 Self { client }
20 }
21
22 /// Retrieve paginated announcements.
23 ///
24 /// `GET /api/v5/support/announcements`. Public (unauthenticated). The
25 /// returned `Vec` always contains one [`AnnouncementsPage`]; the actual
26 /// announcement list is in `[0].details`.
27 ///
28 /// # Errors
29 ///
30 /// Returns [`RestError::Okx`](crate::RestError::Okx) on a non-zero OKX code, or
31 /// [`RestError::Transport`](crate::RestError::Transport)/[`RestError::Decode`](crate::RestError::Decode) on transport/parsing failure.
32 pub async fn get_announcements(
33 &self,
34 request: &AnnouncementsRequest<'_>,
35 ) -> Result<Vec<AnnouncementsPage>, Error> {
36 self.client.get(ANNOUNCEMENTS, request, false).await
37 }
38
39 /// Retrieve all available announcement types.
40 ///
41 /// `GET /api/v5/support/announcement-types`. Public (unauthenticated). Use
42 /// the returned `ann_type` values to filter
43 /// [`get_announcements`](Self::get_announcements).
44 ///
45 /// # Errors
46 ///
47 /// See [`get_announcements`](Self::get_announcements).
48 pub async fn get_announcement_types(&self) -> Result<Vec<AnnouncementType>, Error> {
49 self.client
50 .get(ANNOUNCEMENT_TYPES, &EmptyRequest {}, false)
51 .await
52 }
53}