Skip to main content

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}