#![allow(unused_imports)]
use crate::objects::*;
use crate::{
CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
};
use serde::{Deserialize, Serialize};
#[doc(alias = "admin.roles.addAssignments")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminRolesAddAssignmentsRequest {
pub role_id: String,
#[serde(serialize_with = "crate::form::as_json")]
pub entity_ids: Vec<String>,
#[serde(serialize_with = "crate::form::as_json")]
pub user_ids: Vec<String>,
}
impl AdminRolesAddAssignmentsRequest {
pub fn new(role_id: impl Into<String>, entity_ids: Vec<String>, user_ids: Vec<String>) -> Self {
Self {
role_id: role_id.into(),
entity_ids,
user_ids,
}
}
}
impl SlackApiMethod for AdminRolesAddAssignmentsRequest {
const METHOD: &'static str = "admin.roles.addAssignments";
type Response = AdminRolesAddAssignmentsResponse;
}
#[doc(alias = "admin.roles.addAssignments")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminRolesAddAssignmentsResponse {
#[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.roles.listAssignments")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminRolesListAssignmentsRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub role_ids: Option<Vec<String>>,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub entity_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_dir: Option<String>,
}
impl AdminRolesListAssignmentsRequest {
pub fn new() -> Self {
Self {
cursor: None,
limit: None,
role_ids: None,
entity_ids: None,
sort_dir: None,
}
}
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
self.cursor = Some(cursor.into());
self
}
pub fn limit(mut self, limit: i64) -> Self {
self.limit = Some(limit);
self
}
pub fn role_ids(mut self, role_ids: Vec<String>) -> Self {
self.role_ids = Some(role_ids);
self
}
pub fn entity_ids(mut self, entity_ids: Vec<String>) -> Self {
self.entity_ids = Some(entity_ids);
self
}
pub fn sort_dir(mut self, sort_dir: impl Into<String>) -> Self {
self.sort_dir = Some(sort_dir.into());
self
}
}
impl SlackApiMethod for AdminRolesListAssignmentsRequest {
const METHOD: &'static str = "admin.roles.listAssignments";
type Response = AdminRolesListAssignmentsResponse;
}
impl CursorPaginated for AdminRolesListAssignmentsRequest {
fn set_cursor(&mut self, cursor: String) {
self.cursor = Some(cursor);
}
}
impl NextCursor for AdminRolesListAssignmentsResponse {
fn next_cursor(&self) -> Option<&str> {
self.response_metadata.as_ref()?.next_cursor.as_deref()
}
}
#[doc(alias = "admin.roles.listAssignments")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminRolesListAssignmentsResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub role_assignments: Vec<AdminRolesListAssignmentsResponseRoleAssignments>,
#[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 AdminRolesListAssignmentsResponseRoleAssignments {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub role_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub entity_id: Option<String>,
#[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_i64",
skip_serializing_if = "Option::is_none"
)]
pub date_create: Option<i64>,
}
#[doc(alias = "admin.roles.removeAssignments")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminRolesRemoveAssignmentsRequest {
pub role_id: String,
#[serde(serialize_with = "crate::form::as_json")]
pub entity_ids: Vec<String>,
#[serde(serialize_with = "crate::form::as_json")]
pub user_ids: Vec<String>,
}
impl AdminRolesRemoveAssignmentsRequest {
pub fn new(role_id: impl Into<String>, entity_ids: Vec<String>, user_ids: Vec<String>) -> Self {
Self {
role_id: role_id.into(),
entity_ids,
user_ids,
}
}
}
impl SlackApiMethod for AdminRolesRemoveAssignmentsRequest {
const METHOD: &'static str = "admin.roles.removeAssignments";
type Response = AdminRolesRemoveAssignmentsResponse;
}
#[doc(alias = "admin.roles.removeAssignments")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminRolesRemoveAssignmentsResponse {
#[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>,
}
impl SlackClient {
#[doc(alias = "admin.roles.addAssignments")]
pub async fn admin_roles_add_assignments(
&self,
request: &AdminRolesAddAssignmentsRequest,
) -> Result<AdminRolesAddAssignmentsResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.roles.listAssignments")]
pub async fn admin_roles_list_assignments(
&self,
request: &AdminRolesListAssignmentsRequest,
) -> Result<AdminRolesListAssignmentsResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.roles.removeAssignments")]
pub async fn admin_roles_remove_assignments(
&self,
request: &AdminRolesRemoveAssignmentsRequest,
) -> Result<AdminRolesRemoveAssignmentsResponse, SlackError> {
self.call(request).await
}
}