v2_on_call_CreateOnCallEscalationPolicy/
v2_on-call_CreateOnCallEscalationPolicy.rs1use 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 let user_data_id = std::env::var("USER_DATA_ID").unwrap();
22
23 let schedule_data_id = std::env::var("SCHEDULE_DATA_ID").unwrap();
25
26 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}