Skip to main content

agentmail/client/
inbox_events.rs

1use crate::client::NoBody;
2use crate::client::scope::{InboxScope, Scoped};
3use crate::{Error, Page, types::*};
4
5impl Scoped<'_, InboxScope<'_>> {
6    /// GET `/v0/inboxes/{inbox_id}/events`, one page of the inbox's audit log.
7    pub async fn list_events(&self, page: Page) -> Result<InboxEventList, Error> {
8        self.client
9            .request(
10                reqwest::Method::GET,
11                &format!("{}/events", self.base()),
12                &page.query(),
13                None::<&NoBody>,
14            )
15            .await
16    }
17
18    /// Every inbox event, draining pagination.
19    pub async fn list_all_events(&self) -> Result<Vec<InboxEvent>, Error> {
20        let mut out = Vec::new();
21        let mut token = None;
22        loop {
23            let resp = self
24                .list_events(Page {
25                    limit: None,
26                    page_token: token,
27                })
28                .await?;
29            let next = resp.next_page_token;
30            out.extend(resp.events);
31            match next {
32                Some(t) => token = Some(t),
33                None => return Ok(out),
34            }
35        }
36    }
37}