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}