async_openai/admin/
group_users.rs1use crate::{
2 config::Config,
3 error::OpenAIError,
4 types::admin::groups::{
5 CreateGroupUserBody, GroupMemberUser, GroupUserAssignment, GroupUserDeletedResource,
6 UserListResource,
7 },
8 Client, RequestOptions,
9};
10
11pub struct GroupUsers<'c, C: Config> {
13 client: &'c Client<C>,
14 pub group_id: String,
15 pub(crate) request_options: RequestOptions,
16}
17
18impl<'c, C: Config> GroupUsers<'c, C> {
19 pub fn new(client: &'c Client<C>, group_id: &str) -> Self {
20 Self {
21 client,
22 group_id: group_id.into(),
23 request_options: RequestOptions::new(),
24 }
25 }
26
27 #[crate::byot(R = serde::de::DeserializeOwned)]
29 pub async fn list(&self) -> Result<UserListResource, OpenAIError> {
30 self.client
31 .get(
32 format!("/organization/groups/{}/users", self.group_id).as_str(),
33 &self.request_options,
34 )
35 .await
36 }
37
38 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
40 pub async fn add(
41 &self,
42 request: CreateGroupUserBody,
43 ) -> Result<GroupUserAssignment, OpenAIError> {
44 self.client
45 .post(
46 format!("/organization/groups/{}/users", self.group_id).as_str(),
47 request,
48 &self.request_options,
49 )
50 .await
51 }
52
53 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
55 pub async fn remove(&self, user_id: &str) -> Result<GroupUserDeletedResource, OpenAIError> {
56 self.client
57 .delete(
58 format!("/organization/groups/{}/users/{user_id}", self.group_id).as_str(),
59 &self.request_options,
60 )
61 .await
62 }
63
64 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
66 pub async fn retrieve(&self, user_id: &str) -> Result<GroupMemberUser, OpenAIError> {
67 self.client
68 .get(
69 &format!(
70 "/organization/groups/{group_id}/users/{user_id}",
71 group_id = self.group_id
72 ),
73 &self.request_options,
74 )
75 .await
76 }
77}