1use super::types::*;
2use crate::client::{AuthType, Client};
3use crate::error::ApiResult;
4
5pub trait UserGroupApi {
6 fn get_user_group_members(
9 &self,
10 request: GetUserGroupMembersRequest,
11 auth: AuthType,
12 ) -> impl std::future::Future<Output = ApiResult<serde_json::Value>> + Send;
13
14 fn create_user_group(
17 &self,
18 request: CreateUserGroupRequest,
19 auth: AuthType,
20 ) -> impl std::future::Future<Output = ApiResult<CreateUserGroupResponse>> + Send;
21
22 fn update_user_group_members(
25 &self,
26 request: UpdateUserGroupMembersRequest,
27 auth: AuthType,
28 ) -> impl std::future::Future<Output = ApiResult<UpdateUserGroupMembersResponse>> + Send;
29}
30
31impl UserGroupApi for Client {
32 async fn get_user_group_members(
33 &self,
34 request: GetUserGroupMembersRequest,
35 auth: AuthType,
36 ) -> ApiResult<serde_json::Value> {
37 Ok(self
38 .post(
39 &format!("{}/user_groups/members/page", request.project_key),
40 request,
41 auth,
42 )
43 .await?)
44 }
45
46 async fn create_user_group(
47 &self,
48 request: CreateUserGroupRequest,
49 auth: AuthType,
50 ) -> ApiResult<CreateUserGroupResponse> {
51 let url = format!("{}/user_group", request.project_key);
52 Ok(self.post(&url, &request, auth).await?)
53 }
54
55 async fn update_user_group_members(
56 &self,
57 request: UpdateUserGroupMembersRequest,
58 auth: AuthType,
59 ) -> ApiResult<UpdateUserGroupMembersResponse> {
60 let url = format!("{}/user_group/members", request.project_key);
61 Ok(self.patch(&url, &request, auth).await?)
62 }
63}