v2_on_call_CreateOnCallEscalationPolicy/
v2_on-call_CreateOnCallEscalationPolicy.rs

1// Create On-Call escalation policy returns "Created" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_on_call::CreateOnCallEscalationPolicyOptionalParams;
4use datadog_api_client::datadogV2::api_on_call::OnCallAPI;
5use datadog_api_client::datadogV2::model::DataRelationshipsTeams;
6use datadog_api_client::datadogV2::model::DataRelationshipsTeamsDataItems;
7use datadog_api_client::datadogV2::model::DataRelationshipsTeamsDataItemsType;
8use datadog_api_client::datadogV2::model::EscalationPolicyCreateRequest;
9use datadog_api_client::datadogV2::model::EscalationPolicyCreateRequestData;
10use datadog_api_client::datadogV2::model::EscalationPolicyCreateRequestDataAttributes;
11use datadog_api_client::datadogV2::model::EscalationPolicyCreateRequestDataAttributesStepsItems;
12use datadog_api_client::datadogV2::model::EscalationPolicyCreateRequestDataRelationships;
13use datadog_api_client::datadogV2::model::EscalationPolicyCreateRequestDataType;
14use datadog_api_client::datadogV2::model::EscalationPolicyStepAttributesAssignment;
15use datadog_api_client::datadogV2::model::EscalationPolicyStepTarget;
16use datadog_api_client::datadogV2::model::EscalationPolicyStepTargetType;
17
18#[tokio::main]
19async fn main() {
20    // there is a valid "user" in the system
21    let user_data_id = std::env::var("USER_DATA_ID").unwrap();
22
23    // there is a valid "schedule" in the system
24    let schedule_data_id = std::env::var("SCHEDULE_DATA_ID").unwrap();
25
26    // there is a valid "dd_team" in the system
27    let dd_team_data_id = std::env::var("DD_TEAM_DATA_ID").unwrap();
28    let body = EscalationPolicyCreateRequest::new(
29        EscalationPolicyCreateRequestData::new(
30            EscalationPolicyCreateRequestDataAttributes::new(
31                "Example-On-Call".to_string(),
32                vec![
33                    EscalationPolicyCreateRequestDataAttributesStepsItems::new(vec![
34                        EscalationPolicyStepTarget::new()
35                            .id(user_data_id.clone())
36                            .type_(EscalationPolicyStepTargetType::USERS),
37                        EscalationPolicyStepTarget::new()
38                            .id(schedule_data_id.clone())
39                            .type_(EscalationPolicyStepTargetType::SCHEDULES),
40                        EscalationPolicyStepTarget::new()
41                            .id(dd_team_data_id.clone())
42                            .type_(EscalationPolicyStepTargetType::TEAMS),
43                    ])
44                    .assignment(EscalationPolicyStepAttributesAssignment::DEFAULT)
45                    .escalate_after_seconds(3600),
46                    EscalationPolicyCreateRequestDataAttributesStepsItems::new(vec![
47                        EscalationPolicyStepTarget::new()
48                            .id(dd_team_data_id.clone())
49                            .type_(EscalationPolicyStepTargetType::TEAMS),
50                    ])
51                    .assignment(EscalationPolicyStepAttributesAssignment::ROUND_ROBIN)
52                    .escalate_after_seconds(3600),
53                ],
54            )
55            .resolve_page_on_policy_end(true)
56            .retries(2),
57            EscalationPolicyCreateRequestDataType::POLICIES,
58        )
59        .relationships(EscalationPolicyCreateRequestDataRelationships::new().teams(
60            DataRelationshipsTeams::new().data(vec![DataRelationshipsTeamsDataItems::new(
61                dd_team_data_id.clone(),
62                DataRelationshipsTeamsDataItemsType::TEAMS,
63            )]),
64        )),
65    );
66    let configuration = datadog::Configuration::new();
67    let api = OnCallAPI::with_config(configuration);
68    let resp = api
69        .create_on_call_escalation_policy(
70            body,
71            CreateOnCallEscalationPolicyOptionalParams::default()
72                .include("steps.targets".to_string()),
73        )
74        .await;
75    if let Ok(value) = resp {
76        println!("{:#?}", value);
77    } else {
78        println!("{:#?}", resp.unwrap_err());
79    }
80}