#![allow(unused_imports)]
use crate::objects::*;
use crate::{
CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
};
use serde::{Deserialize, Serialize};
#[doc(alias = "canvases.access.delete")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct CanvasesAccessDeleteRequest {
pub canvas_id: String,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub channel_ids: Option<Vec<String>>,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub user_ids: Option<Vec<String>>,
}
impl CanvasesAccessDeleteRequest {
pub fn new(canvas_id: impl Into<String>) -> Self {
Self {
canvas_id: canvas_id.into(),
channel_ids: None,
user_ids: None,
}
}
pub fn channel_ids(mut self, channel_ids: Vec<String>) -> Self {
self.channel_ids = Some(channel_ids);
self
}
pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
self.user_ids = Some(user_ids);
self
}
}
impl SlackApiMethod for CanvasesAccessDeleteRequest {
const METHOD: &'static str = "canvases.access.delete";
type Response = CanvasesAccessDeleteResponse;
}
#[doc(alias = "canvases.access.delete")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CanvasesAccessDeleteResponse {
#[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 = "canvases.access.set")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct CanvasesAccessSetRequest {
pub canvas_id: String,
pub access_level: String,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub channel_ids: Option<Vec<String>>,
#[serde(
skip_serializing_if = "Option::is_none",
serialize_with = "crate::form::as_json"
)]
pub user_ids: Option<Vec<String>>,
}
impl CanvasesAccessSetRequest {
pub fn new(canvas_id: impl Into<String>, access_level: impl Into<String>) -> Self {
Self {
canvas_id: canvas_id.into(),
access_level: access_level.into(),
channel_ids: None,
user_ids: None,
}
}
pub fn channel_ids(mut self, channel_ids: Vec<String>) -> Self {
self.channel_ids = Some(channel_ids);
self
}
pub fn user_ids(mut self, user_ids: Vec<String>) -> Self {
self.user_ids = Some(user_ids);
self
}
}
impl SlackApiMethod for CanvasesAccessSetRequest {
const METHOD: &'static str = "canvases.access.set";
type Response = CanvasesAccessSetResponse;
}
#[doc(alias = "canvases.access.set")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CanvasesAccessSetResponse {
#[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 = "canvases.create")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct CanvasesCreateRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub channel_id: Option<String>,
}
impl CanvasesCreateRequest {
pub fn new() -> Self {
Self {
title: None,
document_content: None,
channel_id: None,
}
}
pub fn title(mut self, title: impl Into<String>) -> Self {
self.title = Some(title.into());
self
}
pub fn document_content(mut self, document_content: impl Into<String>) -> Self {
self.document_content = Some(document_content.into());
self
}
pub fn channel_id(mut self, channel_id: impl Into<String>) -> Self {
self.channel_id = Some(channel_id.into());
self
}
}
impl SlackApiMethod for CanvasesCreateRequest {
const METHOD: &'static str = "canvases.create";
type Response = CanvasesCreateResponse;
}
#[doc(alias = "canvases.create")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CanvasesCreateResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub canvas_id: Option<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 = "canvases.delete")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct CanvasesDeleteRequest {
pub canvas_id: String,
}
impl CanvasesDeleteRequest {
pub fn new(canvas_id: impl Into<String>) -> Self {
Self {
canvas_id: canvas_id.into(),
}
}
}
impl SlackApiMethod for CanvasesDeleteRequest {
const METHOD: &'static str = "canvases.delete";
type Response = CanvasesDeleteResponse;
}
#[doc(alias = "canvases.delete")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CanvasesDeleteResponse {
#[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 = "canvases.edit")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct CanvasesEditRequest {
pub canvas_id: String,
#[serde(serialize_with = "crate::form::as_json")]
pub changes: Vec<serde_json::Value>,
}
impl CanvasesEditRequest {
pub fn new(canvas_id: impl Into<String>, changes: Vec<serde_json::Value>) -> Self {
Self {
canvas_id: canvas_id.into(),
changes,
}
}
}
impl SlackApiMethod for CanvasesEditRequest {
const METHOD: &'static str = "canvases.edit";
type Response = CanvasesEditResponse;
}
#[doc(alias = "canvases.edit")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CanvasesEditResponse {
#[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 = "canvases.getContent")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct CanvasesGetContentRequest {
pub canvas_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
}
impl CanvasesGetContentRequest {
pub fn new(canvas_id: impl Into<String>) -> Self {
Self {
canvas_id: canvas_id.into(),
content_type: None,
}
}
pub fn content_type(mut self, content_type: impl Into<String>) -> Self {
self.content_type = Some(content_type.into());
self
}
}
impl SlackApiMethod for CanvasesGetContentRequest {
const METHOD: &'static str = "canvases.getContent";
type Response = CanvasesGetContentResponse;
}
#[doc(alias = "canvases.getContent")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CanvasesGetContentResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub content: Option<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 = "canvases.sections.lookup")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct CanvasesSectionsLookupRequest {
pub canvas_id: String,
pub criteria: String,
}
impl CanvasesSectionsLookupRequest {
pub fn new(canvas_id: impl Into<String>, criteria: impl Into<String>) -> Self {
Self {
canvas_id: canvas_id.into(),
criteria: criteria.into(),
}
}
}
impl SlackApiMethod for CanvasesSectionsLookupRequest {
const METHOD: &'static str = "canvases.sections.lookup";
type Response = CanvasesSectionsLookupResponse;
}
#[doc(alias = "canvases.sections.lookup")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CanvasesSectionsLookupResponse {
#[serde(
default,
deserialize_with = "crate::de::vec",
skip_serializing_if = "Vec::is_empty"
)]
pub sections: Vec<CanvasesSectionsLookupResponseSections>,
#[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 CanvasesSectionsLookupResponseSections {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub id: Option<String>,
}
impl SlackClient {
#[doc(alias = "canvases.access.delete")]
pub async fn canvases_access_delete(
&self,
request: &CanvasesAccessDeleteRequest,
) -> Result<CanvasesAccessDeleteResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "canvases.access.set")]
pub async fn canvases_access_set(
&self,
request: &CanvasesAccessSetRequest,
) -> Result<CanvasesAccessSetResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "canvases.create")]
pub async fn canvases_create(
&self,
request: &CanvasesCreateRequest,
) -> Result<CanvasesCreateResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "canvases.delete")]
pub async fn canvases_delete(
&self,
request: &CanvasesDeleteRequest,
) -> Result<CanvasesDeleteResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "canvases.edit")]
pub async fn canvases_edit(
&self,
request: &CanvasesEditRequest,
) -> Result<CanvasesEditResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "canvases.getContent")]
pub async fn canvases_get_content(
&self,
request: &CanvasesGetContentRequest,
) -> Result<CanvasesGetContentResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "canvases.sections.lookup")]
pub async fn canvases_sections_lookup(
&self,
request: &CanvasesSectionsLookupRequest,
) -> Result<CanvasesSectionsLookupResponse, SlackError> {
self.call(request).await
}
}