v2_workflow_automation_UpdateWorkflow/
v2_workflow-automation_UpdateWorkflow.rs

1// Update an existing Workflow returns "Successfully updated a workflow." response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_workflow_automation::WorkflowAutomationAPI;
4use datadog_api_client::datadogV2::model::Connection;
5use datadog_api_client::datadogV2::model::ConnectionEnv;
6use datadog_api_client::datadogV2::model::ConnectionEnvEnv;
7use datadog_api_client::datadogV2::model::GithubWebhookTrigger;
8use datadog_api_client::datadogV2::model::GithubWebhookTriggerWrapper;
9use datadog_api_client::datadogV2::model::InputSchema;
10use datadog_api_client::datadogV2::model::InputSchemaParameters;
11use datadog_api_client::datadogV2::model::InputSchemaParametersType;
12use datadog_api_client::datadogV2::model::MonitorTrigger;
13use datadog_api_client::datadogV2::model::MonitorTriggerWrapper;
14use datadog_api_client::datadogV2::model::OutboundEdge;
15use datadog_api_client::datadogV2::model::OutputSchema;
16use datadog_api_client::datadogV2::model::OutputSchemaParameters;
17use datadog_api_client::datadogV2::model::OutputSchemaParametersType;
18use datadog_api_client::datadogV2::model::Parameter;
19use datadog_api_client::datadogV2::model::Spec;
20use datadog_api_client::datadogV2::model::Step;
21use datadog_api_client::datadogV2::model::Trigger;
22use datadog_api_client::datadogV2::model::TriggerRateLimit;
23use datadog_api_client::datadogV2::model::UpdateWorkflowRequest;
24use datadog_api_client::datadogV2::model::WorkflowDataType;
25use datadog_api_client::datadogV2::model::WorkflowDataUpdate;
26use datadog_api_client::datadogV2::model::WorkflowDataUpdateAttributes;
27use serde_json::Value;
28
29#[tokio::main]
30async fn main() {
31    // there is a valid "workflow" in the system
32    let workflow_data_id = std::env::var("WORKFLOW_DATA_ID").unwrap();
33    let body = UpdateWorkflowRequest::new(
34        WorkflowDataUpdate::new(
35            WorkflowDataUpdateAttributes::new()
36                .description("A sample workflow.".to_string())
37                .name("Example Workflow".to_string())
38                .published(true)
39                .spec(
40                    Spec::new()
41                        .connection_envs(vec![ConnectionEnv::new(ConnectionEnvEnv::DEFAULT)
42                            .connections(vec![Connection::new(
43                                "11111111-1111-1111-1111-111111111111".to_string(),
44                                "INTEGRATION_DATADOG".to_string(),
45                            )])])
46                        .handle("my-handle".to_string())
47                        .input_schema(InputSchema::new().parameters(vec![
48                                        InputSchemaParameters::new(
49                                            "input".to_string(),
50                                            InputSchemaParametersType::STRING,
51                                        ).default_value(Value::from("default"))
52                                    ]))
53                        .output_schema(OutputSchema::new().parameters(vec![
54                                        OutputSchemaParameters::new(
55                                            "output".to_string(),
56                                            OutputSchemaParametersType::ARRAY_OBJECT,
57                                        ).value(Value::from("outputValue"))
58                                    ]))
59                        .steps(vec![
60                            Step::new(
61                                "com.datadoghq.dd.monitor.listMonitors".to_string(),
62                                "Step1".to_string(),
63                            )
64                            .connection_label("INTEGRATION_DATADOG".to_string())
65                            .outbound_edges(vec![OutboundEdge::new(
66                                "main".to_string(),
67                                "Step2".to_string(),
68                            )])
69                            .parameters(vec![Parameter::new(
70                                "tags".to_string(),
71                                Value::from("service:monitoring"),
72                            )]),
73                            Step::new("com.datadoghq.core.noop".to_string(), "Step2".to_string()),
74                        ])
75                        .triggers(vec![
76                            Trigger::MonitorTriggerWrapper(Box::new(
77                                MonitorTriggerWrapper::new(
78                                    MonitorTrigger::new().rate_limit(
79                                        TriggerRateLimit::new()
80                                            .count(1)
81                                            .interval("3600s".to_string()),
82                                    ),
83                                )
84                                .start_step_names(vec!["Step1".to_string()]),
85                            )),
86                            Trigger::GithubWebhookTriggerWrapper(Box::new(
87                                GithubWebhookTriggerWrapper::new(GithubWebhookTrigger::new())
88                                    .start_step_names(vec!["Step1".to_string()]),
89                            )),
90                        ]),
91                )
92                .tags(vec![
93                    "team:infra".to_string(),
94                    "service:monitoring".to_string(),
95                    "foo:bar".to_string(),
96                ]),
97            WorkflowDataType::WORKFLOWS,
98        )
99        .id("22222222-2222-2222-2222-222222222222".to_string()),
100    );
101    let configuration = datadog::Configuration::new();
102    let api = WorkflowAutomationAPI::with_config(configuration);
103    let resp = api.update_workflow(workflow_data_id.clone(), body).await;
104    if let Ok(value) = resp {
105        println!("{:#?}", value);
106    } else {
107        println!("{:#?}", resp.unwrap_err());
108    }
109}