#![allow(unused_imports)]
use crate::objects::*;
use crate::{
CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
};
use serde::{Deserialize, Serialize};
#[doc(alias = "admin.apps.activities.list")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminAppsActivitiesListRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub app_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[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")]
pub min_log_level: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub log_event_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub component_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub component_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trace_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_date_created: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_date_created: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_direction: Option<String>,
}
impl AdminAppsActivitiesListRequest {
pub fn new() -> Self {
Self {
app_id: None,
team_id: None,
cursor: None,
limit: None,
min_log_level: None,
log_event_type: None,
source: None,
component_type: None,
component_id: None,
trace_id: None,
min_date_created: None,
max_date_created: None,
sort_direction: None,
}
}
pub fn app_id(mut self, app_id: impl Into<String>) -> Self {
self.app_id = Some(app_id.into());
self
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
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 min_log_level(mut self, min_log_level: impl Into<String>) -> Self {
self.min_log_level = Some(min_log_level.into());
self
}
pub fn log_event_type(mut self, log_event_type: impl Into<String>) -> Self {
self.log_event_type = Some(log_event_type.into());
self
}
pub fn source(mut self, source: impl Into<String>) -> Self {
self.source = Some(source.into());
self
}
pub fn component_type(mut self, component_type: impl Into<String>) -> Self {
self.component_type = Some(component_type.into());
self
}
pub fn component_id(mut self, component_id: impl Into<String>) -> Self {
self.component_id = Some(component_id.into());
self
}
pub fn trace_id(mut self, trace_id: impl Into<String>) -> Self {
self.trace_id = Some(trace_id.into());
self
}
pub fn min_date_created(mut self, min_date_created: i64) -> Self {
self.min_date_created = Some(min_date_created);
self
}
pub fn max_date_created(mut self, max_date_created: i64) -> Self {
self.max_date_created = Some(max_date_created);
self
}
pub fn sort_direction(mut self, sort_direction: impl Into<String>) -> Self {
self.sort_direction = Some(sort_direction.into());
self
}
}
impl SlackApiMethod for AdminAppsActivitiesListRequest {
const METHOD: &'static str = "admin.apps.activities.list";
type Response = AdminAppsActivitiesListResponse;
}
impl CursorPaginated for AdminAppsActivitiesListRequest {
fn set_cursor(&mut self, cursor: String) {
self.cursor = Some(cursor);
}
}
impl NextCursor for AdminAppsActivitiesListResponse {
fn next_cursor(&self) -> Option<&str> {
self.response_metadata.as_ref()?.next_cursor.as_deref()
}
}
#[doc(alias = "admin.apps.activities.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsActivitiesListResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub activities: Vec<AdminAppsActivitiesListResponseActivities>,
#[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 AdminAppsActivitiesListResponseActivities {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub app_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub level: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub event_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub source: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub component_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub component_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub payload: Option<AdminAppsActivitiesListResponseActivitiesPayload>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub created: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub trace_id: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsActivitiesListResponseActivitiesPayload {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub function_name: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub function_type: Option<String>,
}
#[doc(alias = "admin.apps.approve")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminAppsApproveRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub allow_child_auto_install: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_scopes: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bot_scopes: Option<String>,
}
impl AdminAppsApproveRequest {
pub fn new() -> Self {
Self {
allow_child_auto_install: None,
app_id: None,
request_id: None,
team_id: None,
enterprise_id: None,
user_scopes: None,
bot_scopes: None,
}
}
pub fn allow_child_auto_install(mut self, allow_child_auto_install: bool) -> Self {
self.allow_child_auto_install = Some(allow_child_auto_install);
self
}
pub fn app_id(mut self, app_id: impl Into<String>) -> Self {
self.app_id = Some(app_id.into());
self
}
pub fn request_id(mut self, request_id: impl Into<String>) -> Self {
self.request_id = Some(request_id.into());
self
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn enterprise_id(mut self, enterprise_id: impl Into<String>) -> Self {
self.enterprise_id = Some(enterprise_id.into());
self
}
pub fn user_scopes(mut self, user_scopes: impl Into<String>) -> Self {
self.user_scopes = Some(user_scopes.into());
self
}
pub fn bot_scopes(mut self, bot_scopes: impl Into<String>) -> Self {
self.bot_scopes = Some(bot_scopes.into());
self
}
}
impl SlackApiMethod for AdminAppsApproveRequest {
const METHOD: &'static str = "admin.apps.approve";
type Response = AdminAppsApproveResponse;
}
#[doc(alias = "admin.apps.approve")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsApproveResponse {
#[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.apps.approved.list")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminAppsApprovedListRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub certified: Option<bool>,
}
impl AdminAppsApprovedListRequest {
pub fn new() -> Self {
Self {
limit: None,
cursor: None,
team_id: None,
enterprise_id: None,
certified: None,
}
}
pub fn limit(mut self, limit: i64) -> Self {
self.limit = Some(limit);
self
}
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
self.cursor = Some(cursor.into());
self
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn enterprise_id(mut self, enterprise_id: impl Into<String>) -> Self {
self.enterprise_id = Some(enterprise_id.into());
self
}
pub fn certified(mut self, certified: bool) -> Self {
self.certified = Some(certified);
self
}
}
impl SlackApiMethod for AdminAppsApprovedListRequest {
const METHOD: &'static str = "admin.apps.approved.list";
type Response = AdminAppsApprovedListResponse;
}
impl CursorPaginated for AdminAppsApprovedListRequest {
fn set_cursor(&mut self, cursor: String) {
self.cursor = Some(cursor);
}
}
impl NextCursor for AdminAppsApprovedListResponse {
fn next_cursor(&self) -> Option<&str> {
self.response_metadata.as_ref()?.next_cursor.as_deref()
}
}
#[doc(alias = "admin.apps.approved.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsApprovedListResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub approved_apps: Vec<AdminAppsApprovedListResponseApprovedApps>,
#[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 AdminAppsApprovedListResponseApprovedApps {
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub app: Option<AdminAppsApprovedListResponseApprovedAppsApp>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub scopes: Vec<AdminAppsApprovedListResponseApprovedAppsScopes>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub date_updated: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub last_resolved_by: Option<AdminAppsApprovedListResponseApprovedAppsLastResolvedBy>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsApprovedListResponseApprovedAppsApp {
#[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 description: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub help_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub privacy_policy_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub app_homepage_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub app_directory_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_app_directory_approved: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_internal: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub developer_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub socket_mode_enabled: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub icons: Option<Icons>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub additional_info: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsApprovedListResponseApprovedAppsScopes {
#[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 description: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_sensitive: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub token_type: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsApprovedListResponseApprovedAppsLastResolvedBy {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub actor_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub actor_type: Option<String>,
}
#[doc(alias = "admin.apps.clearResolution")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsClearResolutionRequest {
pub app_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
}
impl AdminAppsClearResolutionRequest {
pub fn new(app_id: impl Into<String>) -> Self {
Self {
app_id: app_id.into(),
team_id: None,
enterprise_id: None,
}
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn enterprise_id(mut self, enterprise_id: impl Into<String>) -> Self {
self.enterprise_id = Some(enterprise_id.into());
self
}
}
impl SlackApiMethod for AdminAppsClearResolutionRequest {
const METHOD: &'static str = "admin.apps.clearResolution";
type Response = AdminAppsClearResolutionResponse;
}
#[doc(alias = "admin.apps.clearResolution")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsClearResolutionResponse {
#[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.apps.config.lookup")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminAppsConfigLookupRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub app_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rich_link_preview_types: Option<Vec<String>>,
}
impl AdminAppsConfigLookupRequest {
pub fn new() -> Self {
Self {
app_ids: None,
rich_link_preview_types: None,
}
}
pub fn app_ids(mut self, app_ids: Vec<String>) -> Self {
self.app_ids = Some(app_ids);
self
}
pub fn rich_link_preview_types(mut self, rich_link_preview_types: Vec<String>) -> Self {
self.rich_link_preview_types = Some(rich_link_preview_types);
self
}
}
impl SlackApiMethod for AdminAppsConfigLookupRequest {
const METHOD: &'static str = "admin.apps.config.lookup";
type Response = AdminAppsConfigLookupResponse;
}
#[doc(alias = "admin.apps.config.lookup")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsConfigLookupResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub configs: Vec<AdminAppsConfigLookupResponseConfigs>,
#[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 AdminAppsConfigLookupResponseConfigs {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub app_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub workflow_auth_strategy: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub rich_link_preview_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub domain_restrictions: Option<AdminAppsConfigLookupResponseConfigsDomainRestrictions>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsConfigLookupResponseConfigsDomainRestrictions {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub emails: Vec<String>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub urls: Vec<String>,
}
#[doc(alias = "admin.apps.config.set")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsConfigSetRequest {
pub app_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub workflow_auth_strategy: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rich_link_preview_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub domain_restrictions: Option<serde_json::Value>,
}
impl AdminAppsConfigSetRequest {
pub fn new(app_id: impl Into<String>) -> Self {
Self {
app_id: app_id.into(),
workflow_auth_strategy: None,
rich_link_preview_type: None,
domain_restrictions: None,
}
}
pub fn workflow_auth_strategy(mut self, workflow_auth_strategy: impl Into<String>) -> Self {
self.workflow_auth_strategy = Some(workflow_auth_strategy.into());
self
}
pub fn rich_link_preview_type(mut self, rich_link_preview_type: impl Into<String>) -> Self {
self.rich_link_preview_type = Some(rich_link_preview_type.into());
self
}
pub fn domain_restrictions(mut self, domain_restrictions: serde_json::Value) -> Self {
self.domain_restrictions = Some(domain_restrictions);
self
}
}
impl SlackApiMethod for AdminAppsConfigSetRequest {
const METHOD: &'static str = "admin.apps.config.set";
type Response = AdminAppsConfigSetResponse;
}
#[doc(alias = "admin.apps.config.set")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsConfigSetResponse {
#[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.apps.mcp.servers.list")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminAppsMcpServersListRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
impl AdminAppsMcpServersListRequest {
pub fn new() -> Self {
Self {
limit: None,
cursor: None,
}
}
pub fn limit(mut self, limit: i64) -> Self {
self.limit = Some(limit);
self
}
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
self.cursor = Some(cursor.into());
self
}
}
impl SlackApiMethod for AdminAppsMcpServersListRequest {
const METHOD: &'static str = "admin.apps.mcp.servers.list";
type Response = AdminAppsMcpServersListResponse;
}
impl CursorPaginated for AdminAppsMcpServersListRequest {
fn set_cursor(&mut self, cursor: String) {
self.cursor = Some(cursor);
}
}
impl NextCursor for AdminAppsMcpServersListResponse {
fn next_cursor(&self) -> Option<&str> {
self.response_metadata.as_ref()?.next_cursor.as_deref()
}
}
#[doc(alias = "admin.apps.mcp.servers.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsMcpServersListResponse {
#[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.apps.mcp.servers.permissions.list")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsMcpServersPermissionsListRequest {
pub app_id: String,
}
impl AdminAppsMcpServersPermissionsListRequest {
pub fn new(app_id: impl Into<String>) -> Self {
Self {
app_id: app_id.into(),
}
}
}
impl SlackApiMethod for AdminAppsMcpServersPermissionsListRequest {
const METHOD: &'static str = "admin.apps.mcp.servers.permissions.list";
type Response = AdminAppsMcpServersPermissionsListResponse;
}
#[doc(alias = "admin.apps.mcp.servers.permissions.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsMcpServersPermissionsListResponse {
#[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.apps.mcp.servers.permissions.set")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsMcpServersPermissionsSetRequest {
pub app_id: String,
pub server_id: String,
pub permission_type: String,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub user_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usergroup_ids: Option<Vec<String>>,
}
impl AdminAppsMcpServersPermissionsSetRequest {
pub fn new(
app_id: impl Into<String>,
server_id: impl Into<String>,
permission_type: impl Into<String>,
) -> Self {
Self {
app_id: app_id.into(),
server_id: server_id.into(),
permission_type: permission_type.into(),
user_ids: None,
usergroup_ids: None,
}
}
pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
self.user_ids = Some(user_ids);
self
}
pub fn usergroup_ids(mut self, usergroup_ids: Vec<String>) -> Self {
self.usergroup_ids = Some(usergroup_ids);
self
}
}
impl SlackApiMethod for AdminAppsMcpServersPermissionsSetRequest {
const METHOD: &'static str = "admin.apps.mcp.servers.permissions.set";
type Response = AdminAppsMcpServersPermissionsSetResponse;
}
#[doc(alias = "admin.apps.mcp.servers.permissions.set")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsMcpServersPermissionsSetResponse {
#[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.apps.permissions.add")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsPermissionsAddRequest {
pub app_id: String,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub user_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usergroup_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub channel_ids: Option<Vec<String>>,
}
impl AdminAppsPermissionsAddRequest {
pub fn new(app_id: impl Into<String>) -> Self {
Self {
app_id: app_id.into(),
user_ids: None,
usergroup_ids: None,
channel_ids: None,
}
}
pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
self.user_ids = Some(user_ids);
self
}
pub fn usergroup_ids(mut self, usergroup_ids: Vec<String>) -> Self {
self.usergroup_ids = Some(usergroup_ids);
self
}
pub fn channel_ids(mut self, channel_ids: Vec<String>) -> Self {
self.channel_ids = Some(channel_ids);
self
}
}
impl SlackApiMethod for AdminAppsPermissionsAddRequest {
const METHOD: &'static str = "admin.apps.permissions.add";
type Response = AdminAppsPermissionsAddResponse;
}
#[doc(alias = "admin.apps.permissions.add")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsPermissionsAddResponse {
#[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.apps.permissions.list")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsPermissionsListRequest {
pub app_id: String,
}
impl AdminAppsPermissionsListRequest {
pub fn new(app_id: impl Into<String>) -> Self {
Self {
app_id: app_id.into(),
}
}
}
impl SlackApiMethod for AdminAppsPermissionsListRequest {
const METHOD: &'static str = "admin.apps.permissions.list";
type Response = AdminAppsPermissionsListResponse;
}
#[doc(alias = "admin.apps.permissions.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsPermissionsListResponse {
#[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.apps.permissions.remove")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsPermissionsRemoveRequest {
pub app_id: String,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub user_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usergroup_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub channel_ids: Option<Vec<String>>,
}
impl AdminAppsPermissionsRemoveRequest {
pub fn new(app_id: impl Into<String>) -> Self {
Self {
app_id: app_id.into(),
user_ids: None,
usergroup_ids: None,
channel_ids: None,
}
}
pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
self.user_ids = Some(user_ids);
self
}
pub fn usergroup_ids(mut self, usergroup_ids: Vec<String>) -> Self {
self.usergroup_ids = Some(usergroup_ids);
self
}
pub fn channel_ids(mut self, channel_ids: Vec<String>) -> Self {
self.channel_ids = Some(channel_ids);
self
}
}
impl SlackApiMethod for AdminAppsPermissionsRemoveRequest {
const METHOD: &'static str = "admin.apps.permissions.remove";
type Response = AdminAppsPermissionsRemoveResponse;
}
#[doc(alias = "admin.apps.permissions.remove")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsPermissionsRemoveResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub permission_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub channel_restriction_mode: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub channel_ids: Vec<String>,
#[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.apps.permissions.set")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsPermissionsSetRequest {
pub app_id: String,
pub permission_type: String,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub user_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usergroup_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub channel_restriction_mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub channel_ids: Option<Vec<String>>,
}
impl AdminAppsPermissionsSetRequest {
pub fn new(app_id: impl Into<String>, permission_type: impl Into<String>) -> Self {
Self {
app_id: app_id.into(),
permission_type: permission_type.into(),
user_ids: None,
usergroup_ids: None,
channel_restriction_mode: None,
channel_ids: None,
}
}
pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
self.user_ids = Some(user_ids);
self
}
pub fn usergroup_ids(mut self, usergroup_ids: Vec<String>) -> Self {
self.usergroup_ids = Some(usergroup_ids);
self
}
pub fn channel_restriction_mode(mut self, channel_restriction_mode: impl Into<String>) -> Self {
self.channel_restriction_mode = Some(channel_restriction_mode.into());
self
}
pub fn channel_ids(mut self, channel_ids: Vec<String>) -> Self {
self.channel_ids = Some(channel_ids);
self
}
}
impl SlackApiMethod for AdminAppsPermissionsSetRequest {
const METHOD: &'static str = "admin.apps.permissions.set";
type Response = AdminAppsPermissionsSetResponse;
}
#[doc(alias = "admin.apps.permissions.set")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsPermissionsSetResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub permission_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub channel_restriction_mode: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub channel_ids: Vec<String>,
#[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.apps.requests.cancel")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsRequestsCancelRequest {
pub request_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
}
impl AdminAppsRequestsCancelRequest {
pub fn new(request_id: impl Into<String>) -> Self {
Self {
request_id: request_id.into(),
team_id: None,
enterprise_id: None,
}
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn enterprise_id(mut self, enterprise_id: impl Into<String>) -> Self {
self.enterprise_id = Some(enterprise_id.into());
self
}
}
impl SlackApiMethod for AdminAppsRequestsCancelRequest {
const METHOD: &'static str = "admin.apps.requests.cancel";
type Response = AdminAppsRequestsCancelResponse;
}
#[doc(alias = "admin.apps.requests.cancel")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRequestsCancelResponse {
#[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.apps.requests.list")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminAppsRequestsListRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub certified: Option<bool>,
}
impl AdminAppsRequestsListRequest {
pub fn new() -> Self {
Self {
limit: None,
cursor: None,
team_id: None,
enterprise_id: None,
certified: None,
}
}
pub fn limit(mut self, limit: i64) -> Self {
self.limit = Some(limit);
self
}
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
self.cursor = Some(cursor.into());
self
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn enterprise_id(mut self, enterprise_id: impl Into<String>) -> Self {
self.enterprise_id = Some(enterprise_id.into());
self
}
pub fn certified(mut self, certified: bool) -> Self {
self.certified = Some(certified);
self
}
}
impl SlackApiMethod for AdminAppsRequestsListRequest {
const METHOD: &'static str = "admin.apps.requests.list";
type Response = AdminAppsRequestsListResponse;
}
impl CursorPaginated for AdminAppsRequestsListRequest {
fn set_cursor(&mut self, cursor: String) {
self.cursor = Some(cursor);
}
}
impl NextCursor for AdminAppsRequestsListResponse {
fn next_cursor(&self) -> Option<&str> {
self.response_metadata.as_ref()?.next_cursor.as_deref()
}
}
#[doc(alias = "admin.apps.requests.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRequestsListResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub app_requests: Vec<AdminAppsRequestsListResponseAppRequests>,
#[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 AdminAppsRequestsListResponseAppRequests {
#[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_object",
skip_serializing_if = "Option::is_none"
)]
pub app: Option<AdminAppsRequestsListResponseAppRequestsApp>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub previous_resolution: Option<serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub user: Option<AdminAppsRequestsListResponseAppRequestsUser>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub team: Option<Team>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub scopes: Vec<AdminAppsRequestsListResponseAppRequestsScopes>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub message: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_user_app_collaborator: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub date_created: Option<i64>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRequestsListResponseAppRequestsApp {
#[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 description: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub help_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub privacy_policy_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub app_homepage_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub app_directory_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_app_directory_approved: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_internal: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub developer_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub socket_mode_enabled: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub icons: Option<Icons>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub additional_info: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRequestsListResponseAppRequestsUser {
#[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 email: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRequestsListResponseAppRequestsScopes {
#[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 description: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_sensitive: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub token_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_optional: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_approved: Option<bool>,
}
#[doc(alias = "admin.apps.restrict")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminAppsRestrictRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub app_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
}
impl AdminAppsRestrictRequest {
pub fn new() -> Self {
Self {
app_id: None,
request_id: None,
team_id: None,
enterprise_id: None,
}
}
pub fn app_id(mut self, app_id: impl Into<String>) -> Self {
self.app_id = Some(app_id.into());
self
}
pub fn request_id(mut self, request_id: impl Into<String>) -> Self {
self.request_id = Some(request_id.into());
self
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn enterprise_id(mut self, enterprise_id: impl Into<String>) -> Self {
self.enterprise_id = Some(enterprise_id.into());
self
}
}
impl SlackApiMethod for AdminAppsRestrictRequest {
const METHOD: &'static str = "admin.apps.restrict";
type Response = AdminAppsRestrictResponse;
}
#[doc(alias = "admin.apps.restrict")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRestrictResponse {
#[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.apps.restricted.list")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminAppsRestrictedListRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub certified: Option<bool>,
}
impl AdminAppsRestrictedListRequest {
pub fn new() -> Self {
Self {
limit: None,
cursor: None,
team_id: None,
enterprise_id: None,
certified: None,
}
}
pub fn limit(mut self, limit: i64) -> Self {
self.limit = Some(limit);
self
}
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
self.cursor = Some(cursor.into());
self
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn enterprise_id(mut self, enterprise_id: impl Into<String>) -> Self {
self.enterprise_id = Some(enterprise_id.into());
self
}
pub fn certified(mut self, certified: bool) -> Self {
self.certified = Some(certified);
self
}
}
impl SlackApiMethod for AdminAppsRestrictedListRequest {
const METHOD: &'static str = "admin.apps.restricted.list";
type Response = AdminAppsRestrictedListResponse;
}
impl CursorPaginated for AdminAppsRestrictedListRequest {
fn set_cursor(&mut self, cursor: String) {
self.cursor = Some(cursor);
}
}
impl NextCursor for AdminAppsRestrictedListResponse {
fn next_cursor(&self) -> Option<&str> {
self.response_metadata.as_ref()?.next_cursor.as_deref()
}
}
#[doc(alias = "admin.apps.restricted.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRestrictedListResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub restricted_apps: Vec<AdminAppsRestrictedListResponseRestrictedApps>,
#[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 AdminAppsRestrictedListResponseRestrictedApps {
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub app: Option<AdminAppsRestrictedListResponseRestrictedAppsApp>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub scopes: Vec<AdminAppsRestrictedListResponseRestrictedAppsScopes>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub date_updated: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub last_resolved_by: Option<AdminAppsRestrictedListResponseRestrictedAppsLastResolvedBy>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRestrictedListResponseRestrictedAppsApp {
#[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 description: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub help_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub privacy_policy_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub app_homepage_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub app_directory_url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_app_directory_approved: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_internal: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub developer_type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub socket_mode_enabled: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub icons: Option<Icons>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub additional_info: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRestrictedListResponseRestrictedAppsScopes {
#[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 description: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_sensitive: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub token_type: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsRestrictedListResponseRestrictedAppsLastResolvedBy {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub actor_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub actor_type: Option<String>,
}
#[doc(alias = "admin.apps.uninstall")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminAppsUninstallRequest {
pub app_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_ids: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
}
impl AdminAppsUninstallRequest {
pub fn new(app_id: impl Into<String>) -> Self {
Self {
app_id: app_id.into(),
team_ids: None,
enterprise_id: None,
}
}
pub fn team_ids(mut self, team_ids: impl Into<String>) -> Self {
self.team_ids = Some(team_ids.into());
self
}
pub fn enterprise_id(mut self, enterprise_id: impl Into<String>) -> Self {
self.enterprise_id = Some(enterprise_id.into());
self
}
}
impl SlackApiMethod for AdminAppsUninstallRequest {
const METHOD: &'static str = "admin.apps.uninstall";
type Response = AdminAppsUninstallResponse;
}
#[doc(alias = "admin.apps.uninstall")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminAppsUninstallResponse {
#[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.apps.activities.list")]
pub async fn admin_apps_activities_list(
&self,
request: &AdminAppsActivitiesListRequest,
) -> Result<AdminAppsActivitiesListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.approve")]
pub async fn admin_apps_approve(
&self,
request: &AdminAppsApproveRequest,
) -> Result<AdminAppsApproveResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.approved.list")]
pub async fn admin_apps_approved_list(
&self,
request: &AdminAppsApprovedListRequest,
) -> Result<AdminAppsApprovedListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.clearResolution")]
pub async fn admin_apps_clear_resolution(
&self,
request: &AdminAppsClearResolutionRequest,
) -> Result<AdminAppsClearResolutionResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.config.lookup")]
pub async fn admin_apps_config_lookup(
&self,
request: &AdminAppsConfigLookupRequest,
) -> Result<AdminAppsConfigLookupResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.config.set")]
pub async fn admin_apps_config_set(
&self,
request: &AdminAppsConfigSetRequest,
) -> Result<AdminAppsConfigSetResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.mcp.servers.list")]
pub async fn admin_apps_mcp_servers_list(
&self,
request: &AdminAppsMcpServersListRequest,
) -> Result<AdminAppsMcpServersListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.mcp.servers.permissions.list")]
pub async fn admin_apps_mcp_servers_permissions_list(
&self,
request: &AdminAppsMcpServersPermissionsListRequest,
) -> Result<AdminAppsMcpServersPermissionsListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.mcp.servers.permissions.set")]
pub async fn admin_apps_mcp_servers_permissions_set(
&self,
request: &AdminAppsMcpServersPermissionsSetRequest,
) -> Result<AdminAppsMcpServersPermissionsSetResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.permissions.add")]
pub async fn admin_apps_permissions_add(
&self,
request: &AdminAppsPermissionsAddRequest,
) -> Result<AdminAppsPermissionsAddResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.permissions.list")]
pub async fn admin_apps_permissions_list(
&self,
request: &AdminAppsPermissionsListRequest,
) -> Result<AdminAppsPermissionsListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.permissions.remove")]
pub async fn admin_apps_permissions_remove(
&self,
request: &AdminAppsPermissionsRemoveRequest,
) -> Result<AdminAppsPermissionsRemoveResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.permissions.set")]
pub async fn admin_apps_permissions_set(
&self,
request: &AdminAppsPermissionsSetRequest,
) -> Result<AdminAppsPermissionsSetResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.requests.cancel")]
pub async fn admin_apps_requests_cancel(
&self,
request: &AdminAppsRequestsCancelRequest,
) -> Result<AdminAppsRequestsCancelResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.requests.list")]
pub async fn admin_apps_requests_list(
&self,
request: &AdminAppsRequestsListRequest,
) -> Result<AdminAppsRequestsListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.restrict")]
pub async fn admin_apps_restrict(
&self,
request: &AdminAppsRestrictRequest,
) -> Result<AdminAppsRestrictResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.restricted.list")]
pub async fn admin_apps_restricted_list(
&self,
request: &AdminAppsRestrictedListRequest,
) -> Result<AdminAppsRestrictedListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.apps.uninstall")]
pub async fn admin_apps_uninstall(
&self,
request: &AdminAppsUninstallRequest,
) -> Result<AdminAppsUninstallResponse, SlackError> {
self.call(request).await
}
}