#![allow(unused_imports)]
use crate::objects::*;
use crate::{
CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
};
use serde::{Deserialize, Serialize};
#[doc(alias = "admin.usergroups.addChannels")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsAddChannelsRequest {
pub usergroup_id: String,
pub channel_ids: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
}
impl AdminUsergroupsAddChannelsRequest {
pub fn new(usergroup_id: impl Into<String>, channel_ids: Vec<String>) -> Self {
Self {
usergroup_id: usergroup_id.into(),
channel_ids,
team_id: None,
}
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
}
impl SlackApiMethod for AdminUsergroupsAddChannelsRequest {
const METHOD: &'static str = "admin.usergroups.addChannels";
type Response = AdminUsergroupsAddChannelsResponse;
}
#[doc(alias = "admin.usergroups.addChannels")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsAddChannelsResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.usergroups.addTeams")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsAddTeamsRequest {
pub usergroup_id: String,
pub team_ids: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_provision: Option<bool>,
}
impl AdminUsergroupsAddTeamsRequest {
pub fn new(usergroup_id: impl Into<String>, team_ids: Vec<String>) -> Self {
Self {
usergroup_id: usergroup_id.into(),
team_ids,
auto_provision: None,
}
}
pub fn auto_provision(mut self, auto_provision: bool) -> Self {
self.auto_provision = Some(auto_provision);
self
}
}
impl SlackApiMethod for AdminUsergroupsAddTeamsRequest {
const METHOD: &'static str = "admin.usergroups.addTeams";
type Response = AdminUsergroupsAddTeamsResponse;
}
#[doc(alias = "admin.usergroups.addTeams")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsAddTeamsResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.usergroups.addUsers")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsAddUsersRequest {
pub id: String,
pub users: Vec<String>,
}
impl AdminUsergroupsAddUsersRequest {
pub fn new(id: impl Into<String>, users: Vec<String>) -> Self {
Self {
id: id.into(),
users,
}
}
}
impl SlackApiMethod for AdminUsergroupsAddUsersRequest {
const METHOD: &'static str = "admin.usergroups.addUsers";
type Response = AdminUsergroupsAddUsersResponse;
}
#[doc(alias = "admin.usergroups.addUsers")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsAddUsersResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub invalid_users: Vec<AdminUsergroupsAddUsersResponseInvalidUsers>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsAddUsersResponseInvalidUsers {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub user_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub reason: Option<String>,
}
#[doc(alias = "admin.usergroups.create")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsCreateRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub purpose: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_visible: Option<bool>,
}
impl AdminUsergroupsCreateRequest {
pub fn new(name: impl Into<String>) -> Self {
Self {
name: name.into(),
handle: None,
purpose: None,
is_visible: None,
}
}
pub fn handle(mut self, handle: impl Into<String>) -> Self {
self.handle = Some(handle.into());
self
}
pub fn purpose(mut self, purpose: impl Into<String>) -> Self {
self.purpose = Some(purpose.into());
self
}
pub fn is_visible(mut self, is_visible: bool) -> Self {
self.is_visible = Some(is_visible);
self
}
}
impl SlackApiMethod for AdminUsergroupsCreateRequest {
const METHOD: &'static str = "admin.usergroups.create";
type Response = AdminUsergroupsCreateResponse;
}
#[doc(alias = "admin.usergroups.create")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsCreateResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub subteam: Option<Usergroup>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.usergroups.fetch")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsFetchRequest {
pub id: String,
}
impl AdminUsergroupsFetchRequest {
pub fn new(id: impl Into<String>) -> Self {
Self { id: id.into() }
}
}
impl SlackApiMethod for AdminUsergroupsFetchRequest {
const METHOD: &'static str = "admin.usergroups.fetch";
type Response = AdminUsergroupsFetchResponse;
}
#[doc(alias = "admin.usergroups.fetch")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsFetchResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub subteam: Option<Usergroup>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.usergroups.listChannels")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsListChannelsRequest {
pub usergroup_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_num_members: Option<bool>,
}
impl AdminUsergroupsListChannelsRequest {
pub fn new(usergroup_id: impl Into<String>) -> Self {
Self {
usergroup_id: usergroup_id.into(),
team_id: None,
include_num_members: None,
}
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn include_num_members(mut self, include_num_members: bool) -> Self {
self.include_num_members = Some(include_num_members);
self
}
}
impl SlackApiMethod for AdminUsergroupsListChannelsRequest {
const METHOD: &'static str = "admin.usergroups.listChannels";
type Response = AdminUsergroupsListChannelsResponse;
}
#[doc(alias = "admin.usergroups.listChannels")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsListChannelsResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub channels: Vec<AdminUsergroupsListChannelsResponseChannels>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsListChannelsResponseChannels {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub name: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub team_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub num_members: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_redacted: Option<bool>,
}
#[doc(alias = "admin.usergroups.removeChannels")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsRemoveChannelsRequest {
pub usergroup_id: String,
pub channel_ids: Vec<String>,
}
impl AdminUsergroupsRemoveChannelsRequest {
pub fn new(usergroup_id: impl Into<String>, channel_ids: Vec<String>) -> Self {
Self {
usergroup_id: usergroup_id.into(),
channel_ids,
}
}
}
impl SlackApiMethod for AdminUsergroupsRemoveChannelsRequest {
const METHOD: &'static str = "admin.usergroups.removeChannels";
type Response = AdminUsergroupsRemoveChannelsResponse;
}
#[doc(alias = "admin.usergroups.removeChannels")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsRemoveChannelsResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.usergroups.removeTeams")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsRemoveTeamsRequest {
pub usergroup_id: String,
pub team_ids: Vec<String>,
}
impl AdminUsergroupsRemoveTeamsRequest {
pub fn new(usergroup_id: impl Into<String>, team_ids: Vec<String>) -> Self {
Self {
usergroup_id: usergroup_id.into(),
team_ids,
}
}
}
impl SlackApiMethod for AdminUsergroupsRemoveTeamsRequest {
const METHOD: &'static str = "admin.usergroups.removeTeams";
type Response = AdminUsergroupsRemoveTeamsResponse;
}
#[doc(alias = "admin.usergroups.removeTeams")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsRemoveTeamsResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.usergroups.removeUsers")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsRemoveUsersRequest {
pub id: String,
pub users: Vec<String>,
}
impl AdminUsergroupsRemoveUsersRequest {
pub fn new(id: impl Into<String>, users: Vec<String>) -> Self {
Self {
id: id.into(),
users,
}
}
}
impl SlackApiMethod for AdminUsergroupsRemoveUsersRequest {
const METHOD: &'static str = "admin.usergroups.removeUsers";
type Response = AdminUsergroupsRemoveUsersResponse;
}
#[doc(alias = "admin.usergroups.removeUsers")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsRemoveUsersResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.usergroups.update")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsUpdateRequest {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_visible: Option<bool>,
}
impl AdminUsergroupsUpdateRequest {
pub fn new(id: impl Into<String>) -> Self {
Self {
id: id.into(),
name: None,
handle: None,
description: None,
is_visible: None,
}
}
pub fn name(mut self, name: impl Into<String>) -> Self {
self.name = Some(name.into());
self
}
pub fn handle(mut self, handle: impl Into<String>) -> Self {
self.handle = Some(handle.into());
self
}
pub fn description(mut self, description: impl Into<String>) -> Self {
self.description = Some(description.into());
self
}
pub fn is_visible(mut self, is_visible: bool) -> Self {
self.is_visible = Some(is_visible);
self
}
}
impl SlackApiMethod for AdminUsergroupsUpdateRequest {
const METHOD: &'static str = "admin.usergroups.update";
type Response = AdminUsergroupsUpdateResponse;
}
#[doc(alias = "admin.usergroups.update")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsUpdateResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub subteam: Option<Usergroup>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.usergroups.uploadUsers")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminUsergroupsUploadUsersRequest {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub file: Option<String>,
}
impl AdminUsergroupsUploadUsersRequest {
pub fn new(id: impl Into<String>) -> Self {
Self {
id: id.into(),
file: None,
}
}
pub fn file(mut self, file: impl Into<String>) -> Self {
self.file = Some(file.into());
self
}
}
impl SlackApiMethod for AdminUsergroupsUploadUsersRequest {
const METHOD: &'static str = "admin.usergroups.uploadUsers";
type Response = AdminUsergroupsUploadUsersResponse;
}
#[doc(alias = "admin.usergroups.uploadUsers")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsUploadUsersResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub successful_user_count: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub invalid_users: Vec<AdminUsergroupsUploadUsersResponseInvalidUsers>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminUsergroupsUploadUsersResponseInvalidUsers {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub user_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub reason: Option<String>,
}
impl SlackClient {
#[doc(alias = "admin.usergroups.addChannels")]
pub async fn admin_usergroups_add_channels(
&self,
request: &AdminUsergroupsAddChannelsRequest,
) -> Result<AdminUsergroupsAddChannelsResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.addTeams")]
pub async fn admin_usergroups_add_teams(
&self,
request: &AdminUsergroupsAddTeamsRequest,
) -> Result<AdminUsergroupsAddTeamsResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.addUsers")]
pub async fn admin_usergroups_add_users(
&self,
request: &AdminUsergroupsAddUsersRequest,
) -> Result<AdminUsergroupsAddUsersResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.create")]
pub async fn admin_usergroups_create(
&self,
request: &AdminUsergroupsCreateRequest,
) -> Result<AdminUsergroupsCreateResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.fetch")]
pub async fn admin_usergroups_fetch(
&self,
request: &AdminUsergroupsFetchRequest,
) -> Result<AdminUsergroupsFetchResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.listChannels")]
pub async fn admin_usergroups_list_channels(
&self,
request: &AdminUsergroupsListChannelsRequest,
) -> Result<AdminUsergroupsListChannelsResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.removeChannels")]
pub async fn admin_usergroups_remove_channels(
&self,
request: &AdminUsergroupsRemoveChannelsRequest,
) -> Result<AdminUsergroupsRemoveChannelsResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.removeTeams")]
pub async fn admin_usergroups_remove_teams(
&self,
request: &AdminUsergroupsRemoveTeamsRequest,
) -> Result<AdminUsergroupsRemoveTeamsResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.removeUsers")]
pub async fn admin_usergroups_remove_users(
&self,
request: &AdminUsergroupsRemoveUsersRequest,
) -> Result<AdminUsergroupsRemoveUsersResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.update")]
pub async fn admin_usergroups_update(
&self,
request: &AdminUsergroupsUpdateRequest,
) -> Result<AdminUsergroupsUpdateResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.usergroups.uploadUsers")]
pub async fn admin_usergroups_upload_users(
&self,
request: &AdminUsergroupsUploadUsersRequest,
) -> Result<AdminUsergroupsUploadUsersResponse, SlackError> {
self.call(request).await
}
}