use crate::client::Client;
#[allow(unused_imports)]
use crate::enums::*;
use crate::error::Error;
#[allow(unused_imports)]
use crate::models::*;
use serde::Serialize;
pub struct GroupsApi<'a> {
pub(crate) client: &'a Client,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ListOrganizationGroupsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub before: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub after: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<PaginationOrder>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateOrganizationGroupParams {
#[serde(skip)]
pub body: CreateGroup,
}
impl CreateOrganizationGroupParams {
#[allow(deprecated)]
pub fn new(body: CreateGroup) -> Self {
Self { body }
}
}
#[derive(Debug, Clone, Serialize)]
pub struct UpdateOrganizationGroupParams {
#[serde(skip)]
pub body: UpdateGroup,
}
impl UpdateOrganizationGroupParams {
#[allow(deprecated)]
pub fn new(body: UpdateGroup) -> Self {
Self { body }
}
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ListGroupOrganizationMembershipsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub before: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub after: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<PaginationOrder>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateGroupOrganizationMembershipParams {
#[serde(skip)]
pub body: CreateGroupMembership,
}
impl CreateGroupOrganizationMembershipParams {
#[allow(deprecated)]
pub fn new(body: CreateGroupMembership) -> Self {
Self { body }
}
}
impl<'a> GroupsApi<'a> {
pub async fn list_organization_groups(
&self,
organization_id: &str,
params: ListOrganizationGroupsParams,
) -> Result<GroupList, Error> {
self.list_organization_groups_with_options(organization_id, params, None)
.await
}
pub async fn list_organization_groups_with_options(
&self,
organization_id: &str,
params: ListOrganizationGroupsParams,
options: Option<&crate::RequestOptions>,
) -> Result<GroupList, Error> {
let organization_id = crate::client::path_segment(organization_id);
let path = format!("/organizations/{organization_id}/groups");
let method = http::Method::GET;
self.client
.request_with_query_opts(method, &path, ¶ms, options)
.await
}
pub fn list_organization_groups_auto_paging(
&self,
organization_id: impl Into<String>,
params: ListOrganizationGroupsParams,
) -> impl futures_util::Stream<Item = Result<Group, Error>> + '_ {
let organization_id: String = organization_id.into();
crate::pagination::auto_paginate_pages(move |after| {
let organization_id = organization_id.clone();
let mut params = params.clone();
params.after = after;
async move {
let page = self
.list_organization_groups(&organization_id, params)
.await?;
Ok((page.data, page.list_metadata.after))
}
})
}
pub async fn create_organization_group(
&self,
organization_id: &str,
params: CreateOrganizationGroupParams,
) -> Result<Group, Error> {
self.create_organization_group_with_options(organization_id, params, None)
.await
}
pub async fn create_organization_group_with_options(
&self,
organization_id: &str,
params: CreateOrganizationGroupParams,
options: Option<&crate::RequestOptions>,
) -> Result<Group, Error> {
let organization_id = crate::client::path_segment(organization_id);
let path = format!("/organizations/{organization_id}/groups");
let method = http::Method::POST;
self.client
.request_with_body_opts(method, &path, ¶ms, Some(¶ms.body), options)
.await
}
pub async fn get_organization_group(
&self,
organization_id: &str,
group_id: &str,
) -> Result<Group, Error> {
self.get_organization_group_with_options(organization_id, group_id, None)
.await
}
pub async fn get_organization_group_with_options(
&self,
organization_id: &str,
group_id: &str,
options: Option<&crate::RequestOptions>,
) -> Result<Group, Error> {
let organization_id = crate::client::path_segment(organization_id);
let group_id = crate::client::path_segment(group_id);
let path = format!("/organizations/{organization_id}/groups/{group_id}");
let method = http::Method::GET;
self.client
.request_with_query_opts(method, &path, &(), options)
.await
}
pub async fn update_organization_group(
&self,
organization_id: &str,
group_id: &str,
params: UpdateOrganizationGroupParams,
) -> Result<Group, Error> {
self.update_organization_group_with_options(organization_id, group_id, params, None)
.await
}
pub async fn update_organization_group_with_options(
&self,
organization_id: &str,
group_id: &str,
params: UpdateOrganizationGroupParams,
options: Option<&crate::RequestOptions>,
) -> Result<Group, Error> {
let organization_id = crate::client::path_segment(organization_id);
let group_id = crate::client::path_segment(group_id);
let path = format!("/organizations/{organization_id}/groups/{group_id}");
let method = http::Method::PATCH;
self.client
.request_with_body_opts(method, &path, ¶ms, Some(¶ms.body), options)
.await
}
pub async fn delete_organization_group(
&self,
organization_id: &str,
group_id: &str,
) -> Result<(), Error> {
self.delete_organization_group_with_options(organization_id, group_id, None)
.await
}
pub async fn delete_organization_group_with_options(
&self,
organization_id: &str,
group_id: &str,
options: Option<&crate::RequestOptions>,
) -> Result<(), Error> {
let organization_id = crate::client::path_segment(organization_id);
let group_id = crate::client::path_segment(group_id);
let path = format!("/organizations/{organization_id}/groups/{group_id}");
let method = http::Method::DELETE;
self.client
.request_with_query_opts_empty(method, &path, &(), options)
.await
}
pub async fn list_group_organization_memberships(
&self,
organization_id: &str,
group_id: &str,
params: ListGroupOrganizationMembershipsParams,
) -> Result<UserOrganizationMembershipBaseList, Error> {
self.list_group_organization_memberships_with_options(
organization_id,
group_id,
params,
None,
)
.await
}
pub async fn list_group_organization_memberships_with_options(
&self,
organization_id: &str,
group_id: &str,
params: ListGroupOrganizationMembershipsParams,
options: Option<&crate::RequestOptions>,
) -> Result<UserOrganizationMembershipBaseList, Error> {
let organization_id = crate::client::path_segment(organization_id);
let group_id = crate::client::path_segment(group_id);
let path =
format!("/organizations/{organization_id}/groups/{group_id}/organization-memberships");
let method = http::Method::GET;
self.client
.request_with_query_opts(method, &path, ¶ms, options)
.await
}
pub fn list_group_organization_memberships_auto_paging(
&self,
organization_id: impl Into<String>,
group_id: impl Into<String>,
params: ListGroupOrganizationMembershipsParams,
) -> impl futures_util::Stream<Item = Result<UserOrganizationMembershipBaseListData, Error>> + '_
{
let organization_id: String = organization_id.into();
let group_id: String = group_id.into();
crate::pagination::auto_paginate_pages(move |after| {
let organization_id = organization_id.clone();
let group_id = group_id.clone();
let mut params = params.clone();
params.after = after;
async move {
let page = self
.list_group_organization_memberships(&organization_id, &group_id, params)
.await?;
Ok((page.data, page.list_metadata.after))
}
})
}
pub async fn create_group_organization_membership(
&self,
organization_id: &str,
group_id: &str,
params: CreateGroupOrganizationMembershipParams,
) -> Result<Group, Error> {
self.create_group_organization_membership_with_options(
organization_id,
group_id,
params,
None,
)
.await
}
pub async fn create_group_organization_membership_with_options(
&self,
organization_id: &str,
group_id: &str,
params: CreateGroupOrganizationMembershipParams,
options: Option<&crate::RequestOptions>,
) -> Result<Group, Error> {
let organization_id = crate::client::path_segment(organization_id);
let group_id = crate::client::path_segment(group_id);
let path =
format!("/organizations/{organization_id}/groups/{group_id}/organization-memberships");
let method = http::Method::POST;
self.client
.request_with_body_opts(method, &path, ¶ms, Some(¶ms.body), options)
.await
}
pub async fn delete_group_organization_membership(
&self,
organization_id: &str,
group_id: &str,
om_id: &str,
) -> Result<(), Error> {
self.delete_group_organization_membership_with_options(
organization_id,
group_id,
om_id,
None,
)
.await
}
pub async fn delete_group_organization_membership_with_options(
&self,
organization_id: &str,
group_id: &str,
om_id: &str,
options: Option<&crate::RequestOptions>,
) -> Result<(), Error> {
let organization_id = crate::client::path_segment(organization_id);
let group_id = crate::client::path_segment(group_id);
let om_id = crate::client::path_segment(om_id);
let path = format!(
"/organizations/{organization_id}/groups/{group_id}/organization-memberships/{om_id}"
);
let method = http::Method::DELETE;
self.client
.request_with_query_opts_empty(method, &path, &(), options)
.await
}
}