#![allow(unused_imports)]
use crate::objects::*;
use crate::{
CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
};
use serde::{Deserialize, Serialize};
#[doc(alias = "admin.functions.list")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminFunctionsListRequest {
pub app_ids: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_non_distributed_functions: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
impl AdminFunctionsListRequest {
pub fn new(app_ids: Vec<String>) -> Self {
Self {
app_ids,
team_id: None,
include_non_distributed_functions: None,
cursor: None,
limit: None,
}
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
pub fn include_non_distributed_functions(
mut self,
include_non_distributed_functions: bool,
) -> Self {
self.include_non_distributed_functions = Some(include_non_distributed_functions);
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
}
}
impl SlackApiMethod for AdminFunctionsListRequest {
const METHOD: &'static str = "admin.functions.list";
type Response = AdminFunctionsListResponse;
}
impl CursorPaginated for AdminFunctionsListRequest {
fn set_cursor(&mut self, cursor: String) {
self.cursor = Some(cursor);
}
}
impl NextCursor for AdminFunctionsListResponse {
fn next_cursor(&self) -> Option<&str> {
self.response_metadata.as_ref()?.next_cursor.as_deref()
}
}
#[doc(alias = "admin.functions.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminFunctionsListResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub functions: Vec<AdminFunctionsListResponseFunctions>,
#[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 AdminFunctionsListResponseFunctions {
#[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 callback_id: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub title: 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 r#type: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub input_parameters: Vec<AdminFunctionsListResponseFunctionsInputParameters>,
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub output_parameters: Vec<AdminFunctionsListResponseFunctionsOutputParameters>,
#[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_i64",
skip_serializing_if = "Option::is_none"
)]
pub date_created: Option<i64>,
#[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_i64",
skip_serializing_if = "Option::is_none"
)]
pub date_deleted: Option<i64>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminFunctionsListResponseFunctionsInputParameters {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub r#type: 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 title: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_required: Option<bool>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminFunctionsListResponseFunctionsOutputParameters {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub r#type: 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 title: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub is_required: Option<bool>,
}
#[doc(alias = "admin.functions.permissions.lookup")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminFunctionsPermissionsLookupRequest {
pub function_ids: Vec<String>,
}
impl AdminFunctionsPermissionsLookupRequest {
pub fn new(function_ids: Vec<String>) -> Self {
Self { function_ids }
}
}
impl SlackApiMethod for AdminFunctionsPermissionsLookupRequest {
const METHOD: &'static str = "admin.functions.permissions.lookup";
type Response = AdminFunctionsPermissionsLookupResponse;
}
#[doc(alias = "admin.functions.permissions.lookup")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminFunctionsPermissionsLookupResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub errors: Option<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.functions.permissions.set")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminFunctionsPermissionsSetRequest {
pub function_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub visibility: Option<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",
serialize_with = "crate::form::as_json"
)]
pub permissions: Option<Vec<serde_json::Value>>,
}
impl AdminFunctionsPermissionsSetRequest {
pub fn new(function_id: impl Into<String>) -> Self {
Self {
function_id: function_id.into(),
visibility: None,
user_ids: None,
permissions: None,
}
}
pub fn visibility(mut self, visibility: impl Into<String>) -> Self {
self.visibility = Some(visibility.into());
self
}
pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
self.user_ids = Some(user_ids);
self
}
pub fn permissions(mut self, permissions: Vec<serde_json::Value>) -> Self {
self.permissions = Some(permissions);
self
}
}
impl SlackApiMethod for AdminFunctionsPermissionsSetRequest {
const METHOD: &'static str = "admin.functions.permissions.set";
type Response = AdminFunctionsPermissionsSetResponse;
}
#[doc(alias = "admin.functions.permissions.set")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminFunctionsPermissionsSetResponse {
#[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.functions.list")]
pub async fn admin_functions_list(
&self,
request: &AdminFunctionsListRequest,
) -> Result<AdminFunctionsListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.functions.permissions.lookup")]
pub async fn admin_functions_permissions_lookup(
&self,
request: &AdminFunctionsPermissionsLookupRequest,
) -> Result<AdminFunctionsPermissionsLookupResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.functions.permissions.set")]
pub async fn admin_functions_permissions_set(
&self,
request: &AdminFunctionsPermissionsSetRequest,
) -> Result<AdminFunctionsPermissionsSetResponse, SlackError> {
self.call(request).await
}
}