v2_workflow_automation_UpdateWorkflow/
v2_workflow-automation_UpdateWorkflow.rs1use 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 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 .input_schema(InputSchema::new().parameters(vec![
47 InputSchemaParameters::new(
48 "input".to_string(),
49 InputSchemaParametersType::STRING,
50 ).default_value(Value::from("default"))
51 ]))
52 .output_schema(OutputSchema::new().parameters(vec![
53 OutputSchemaParameters::new(
54 "output".to_string(),
55 OutputSchemaParametersType::ARRAY_OBJECT,
56 ).value(Value::from("outputValue"))
57 ]))
58 .steps(vec![
59 Step::new(
60 "com.datadoghq.dd.monitor.listMonitors".to_string(),
61 "Step1".to_string(),
62 )
63 .connection_label("INTEGRATION_DATADOG".to_string())
64 .outbound_edges(vec![OutboundEdge::new(
65 "main".to_string(),
66 "Step2".to_string(),
67 )])
68 .parameters(vec![Parameter::new(
69 "tags".to_string(),
70 Value::from("service:monitoring"),
71 )]),
72 Step::new("com.datadoghq.core.noop".to_string(), "Step2".to_string()),
73 ])
74 .triggers(vec![
75 Trigger::MonitorTriggerWrapper(Box::new(
76 MonitorTriggerWrapper::new(
77 MonitorTrigger::new().rate_limit(
78 TriggerRateLimit::new()
79 .count(1)
80 .interval("3600s".to_string()),
81 ),
82 )
83 .start_step_names(vec!["Step1".to_string()]),
84 )),
85 Trigger::GithubWebhookTriggerWrapper(Box::new(
86 GithubWebhookTriggerWrapper::new(GithubWebhookTrigger::new())
87 .start_step_names(vec!["Step1".to_string()]),
88 )),
89 ]),
90 )
91 .tags(vec![
92 "team:infra".to_string(),
93 "service:monitoring".to_string(),
94 "foo:bar".to_string(),
95 ]),
96 WorkflowDataType::WORKFLOWS,
97 )
98 .id("22222222-2222-2222-2222-222222222222".to_string()),
99 );
100 let configuration = datadog::Configuration::new();
101 let api = WorkflowAutomationAPI::with_config(configuration);
102 let resp = api.update_workflow(workflow_data_id.clone(), body).await;
103 if let Ok(value) = resp {
104 println!("{:#?}", value);
105 } else {
106 println!("{:#?}", resp.unwrap_err());
107 }
108}