Skip to main content

mesa_dev/client/
api_keys.rs

1use crate::low_level::apis::{admin_api, Error};
2use crate::models;
3
4use super::OrgClient;
5
6/// Client for API key management (`/{org}/api-keys`).
7#[derive(Clone, Debug)]
8pub struct ApiKeysClient<'a> {
9    pub(super) org: &'a OrgClient<'a>,
10}
11
12impl ApiKeysClient<'_> {
13    /// List all API keys (key values are not returned).
14    ///
15    /// # Errors
16    ///
17    /// Returns an error if the API request fails.
18    pub async fn list(
19        &self,
20    ) -> Result<models::GetByOrgApiKeys200Response, Error<admin_api::GetByOrgApiKeysError>> {
21        admin_api::get_by_org_api_keys(self.org.config, self.org.org).await
22    }
23
24    /// Create a new API key.
25    ///
26    /// # Errors
27    ///
28    /// Returns an error if the API request fails.
29    pub async fn create(
30        &self,
31        request: models::PostByOrgApiKeysRequest,
32    ) -> Result<models::PostByOrgApiKeys201Response, Error<admin_api::PostByOrgApiKeysError>> {
33        admin_api::post_by_org_api_keys(self.org.config, self.org.org, Some(request)).await
34    }
35
36    /// Revoke an API key by its ID.
37    ///
38    /// # Errors
39    ///
40    /// Returns an error if the API request fails.
41    pub async fn revoke(
42        &self,
43        id: &str,
44    ) -> Result<
45        models::DeleteByOrgApiKeysById200Response,
46        Error<admin_api::DeleteByOrgApiKeysByIdError>,
47    > {
48        admin_api::delete_by_org_api_keys_by_id(self.org.config, id, self.org.org).await
49    }
50}