slack_messaging/composition_objects/
workflow.rs

1use super::Trigger;
2use serde::Serialize;
3
4/// [Workflow object](https://docs.slack.dev/reference/block-kit/composition-objects/workflow-object)
5/// representation.
6///
7/// # Example
8///
9/// ```
10/// # use slack_messaging::composition_objects::{InputParameter, Trigger, Workflow};
11/// let workflow = Workflow::builder()
12///     .trigger(
13///         Trigger::builder()
14///              .url("https://slack.com/shortcuts/Ft0123ABC456/123...xyz")
15///              .customizable_input_parameter(
16///                  InputParameter::builder()
17///                      .name("input_parameter_a")
18///                      .value("Value for input param A")
19///                      .build()
20///              )
21///              .customizable_input_parameter(
22///                  InputParameter::builder()
23///                      .name("input_parameter_b")
24///                      .value("Value for input param B")
25///                      .build()
26///              )
27///              .build()
28///     )
29///     .build();
30///
31/// let expected = serde_json::json!({
32///     "trigger": {
33///         "url": "https://slack.com/shortcuts/Ft0123ABC456/123...xyz",
34///         "customizable_input_parameters": [
35///             {
36///                 "name": "input_parameter_a",
37///                 "value": "Value for input param A"
38///             },
39///             {
40///                 "name": "input_parameter_b",
41///                 "value": "Value for input param B"
42///             }
43///         ]
44///     }
45/// });
46///
47/// let json = serde_json::to_value(workflow).unwrap();
48///
49/// assert_eq!(json, expected);
50/// ```
51#[derive(Debug, Clone, Serialize)]
52pub struct Workflow {
53    pub(super) trigger: Trigger,
54}