Skip to main content

slack_morphism/models/blocks/
workflow.rs

1use rsb_derive::Builder;
2use serde::{Deserialize, Serialize};
3use serde_with::skip_serializing_none;
4use url::Url;
5
6use super::kit::{SlackAccessibilityLabel, SlackBlockButtonStyle, SlackBlockPlainTextOnly};
7use crate::SlackActionId;
8
9/**
10 * https://docs.slack.dev/reference/block-kit/composition-objects/workflow-object
11 */
12#[skip_serializing_none]
13#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
14pub struct SlackWorkflowTriggerInputParameter {
15    pub name: String,
16    pub value: String,
17}
18
19#[skip_serializing_none]
20#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
21pub struct SlackWorkflowTrigger {
22    pub url: Url,
23    pub customizable_input_parameters: Option<Vec<SlackWorkflowTriggerInputParameter>>,
24}
25
26#[skip_serializing_none]
27#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
28pub struct SlackWorkflow {
29    pub trigger: SlackWorkflowTrigger,
30}
31
32/**
33 * https://docs.slack.dev/reference/block-kit/block-elements/workflow-button-element
34 */
35#[skip_serializing_none]
36#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
37pub struct SlackBlockWorkflowButtonElement {
38    pub action_id: SlackActionId,
39    pub text: SlackBlockPlainTextOnly,
40    pub workflow: SlackWorkflow,
41    pub style: Option<SlackBlockButtonStyle>,
42    pub accessibility_label: Option<SlackAccessibilityLabel>,
43}