async_openai/admin/
group_users.rs

1use crate::{
2    config::Config,
3    error::OpenAIError,
4    types::admin::groups::{
5        CreateGroupUserBody, GroupUserAssignment, GroupUserDeletedResource, UserListResource,
6    },
7    Client, RequestOptions,
8};
9
10/// Manage users within a group, including adding and removing users.
11pub struct GroupUsers<'c, C: Config> {
12    client: &'c Client<C>,
13    pub group_id: String,
14    pub(crate) request_options: RequestOptions,
15}
16
17impl<'c, C: Config> GroupUsers<'c, C> {
18    pub fn new(client: &'c Client<C>, group_id: &str) -> Self {
19        Self {
20            client,
21            group_id: group_id.into(),
22            request_options: RequestOptions::new(),
23        }
24    }
25
26    /// Lists all users in a group.
27    #[crate::byot(R = serde::de::DeserializeOwned)]
28    pub async fn list(&self) -> Result<UserListResource, OpenAIError> {
29        self.client
30            .get(
31                format!("/organization/groups/{}/users", self.group_id).as_str(),
32                &self.request_options,
33            )
34            .await
35    }
36
37    /// Adds a user to a group.
38    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
39    pub async fn add(
40        &self,
41        request: CreateGroupUserBody,
42    ) -> Result<GroupUserAssignment, OpenAIError> {
43        self.client
44            .post(
45                format!("/organization/groups/{}/users", self.group_id).as_str(),
46                request,
47                &self.request_options,
48            )
49            .await
50    }
51
52    /// Removes a user from a group.
53    #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
54    pub async fn remove(&self, user_id: &str) -> Result<GroupUserDeletedResource, OpenAIError> {
55        self.client
56            .delete(
57                format!("/organization/groups/{}/users/{user_id}", self.group_id).as_str(),
58                &self.request_options,
59            )
60            .await
61    }
62}