v2_workflow_automation_CreateWorkflow/
v2_workflow-automation_CreateWorkflow.rs

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