agentmail/client/
api_keys.rs1use crate::client::NoBody;
2use crate::client::scope::{ApiKeys, Scoped};
3use crate::{Error, Page, types::*, util::urlish};
4
5impl<S: ApiKeys> Scoped<'_, S> {
6 pub async fn create_api_key(&self, key: CreateApiKey) -> Result<CreatedApiKey, Error> {
9 self.client
10 .request(
11 reqwest::Method::POST,
12 &format!("{}/api-keys", self.base()),
13 &[],
14 Some(&key),
15 )
16 .await
17 }
18
19 pub async fn list_api_keys(&self, page: Page) -> Result<ApiKeyList, Error> {
21 self.client
22 .request(
23 reqwest::Method::GET,
24 &format!("{}/api-keys", self.base()),
25 &page.query(),
26 None::<&NoBody>,
27 )
28 .await
29 }
30
31 pub async fn list_all_api_keys(&self) -> Result<Vec<ApiKey>, Error> {
33 let mut out = Vec::new();
34 let mut token = None;
35 loop {
36 let resp = self
37 .list_api_keys(Page {
38 limit: None,
39 page_token: token,
40 })
41 .await?;
42 let next = resp.next_page_token;
43 out.extend(resp.api_keys);
44 match next {
45 Some(t) => token = Some(t),
46 None => return Ok(out),
47 }
48 }
49 }
50
51 pub async fn delete_api_key(&self, api_key_id: &str) -> Result<(), Error> {
53 self.client
54 .request(
55 reqwest::Method::DELETE,
56 &format!("{}/api-keys/{}", self.base(), urlish(api_key_id)),
57 &[],
58 None::<&NoBody>,
59 )
60 .await
61 }
62}