Skip to main content

agentmail/client/
pods.rs

1use crate::client::NoBody;
2use crate::{Client, Error, Page, types::*, util::urlish};
3
4impl Client {
5    /// POST /v0/pods, create a pod.
6    pub async fn create_pod(&self, pod: CreatePod) -> Result<Pod, Error> {
7        self.request(reqwest::Method::POST, "/v0/pods", &[], Some(&pod))
8            .await
9    }
10
11    /// GET /v0/pods (first page; see [`Client::list_pods_page`]).
12    pub async fn list_pods(&self) -> Result<PodList, Error> {
13        self.list_pods_page(Page::default()).await
14    }
15
16    /// GET /v0/pods with pagination. Feed [`PodList::next_page_token`] back in
17    /// as [`Page::page_token`] until it comes back `None`.
18    pub async fn list_pods_page(&self, page: Page) -> Result<PodList, Error> {
19        self.request(
20            reqwest::Method::GET,
21            "/v0/pods",
22            &page.query(),
23            None::<&NoBody>,
24        )
25        .await
26    }
27
28    /// GET /v0/pods/{pod_id}
29    pub async fn get_pod(&self, pod_id: &str) -> Result<Pod, Error> {
30        self.request(
31            reqwest::Method::GET,
32            &format!("/v0/pods/{}", urlish(pod_id)),
33            &[],
34            None::<&NoBody>,
35        )
36        .await
37    }
38
39    /// DELETE /v0/pods/{pod_id}
40    pub async fn delete_pod(&self, pod_id: &str) -> Result<(), Error> {
41        self.request(
42            reqwest::Method::DELETE,
43            &format!("/v0/pods/{}", urlish(pod_id)),
44            &[],
45            None::<&NoBody>,
46        )
47        .await
48    }
49}