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