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