v2_on_call_UpdateOnCallSchedule/
v2_on-call_UpdateOnCallSchedule.rs

1// Update On-Call schedule returns "OK" response
2use chrono::{DateTime, Utc};
3use datadog_api_client::datadog;
4use datadog_api_client::datadogV2::api_on_call::OnCallAPI;
5use datadog_api_client::datadogV2::api_on_call::UpdateOnCallScheduleOptionalParams;
6use datadog_api_client::datadogV2::model::DataRelationshipsTeams;
7use datadog_api_client::datadogV2::model::DataRelationshipsTeamsDataItems;
8use datadog_api_client::datadogV2::model::DataRelationshipsTeamsDataItemsType;
9use datadog_api_client::datadogV2::model::LayerAttributesInterval;
10use datadog_api_client::datadogV2::model::ScheduleRequestDataAttributesLayersItemsMembersItems;
11use datadog_api_client::datadogV2::model::ScheduleRequestDataAttributesLayersItemsMembersItemsUser;
12use datadog_api_client::datadogV2::model::ScheduleUpdateRequest;
13use datadog_api_client::datadogV2::model::ScheduleUpdateRequestData;
14use datadog_api_client::datadogV2::model::ScheduleUpdateRequestDataAttributes;
15use datadog_api_client::datadogV2::model::ScheduleUpdateRequestDataAttributesLayersItems;
16use datadog_api_client::datadogV2::model::ScheduleUpdateRequestDataRelationships;
17use datadog_api_client::datadogV2::model::ScheduleUpdateRequestDataType;
18use datadog_api_client::datadogV2::model::TimeRestriction;
19use datadog_api_client::datadogV2::model::Weekday;
20
21#[tokio::main]
22async fn main() {
23    // there is a valid "schedule" in the system
24    let schedule_data_id = std::env::var("SCHEDULE_DATA_ID").unwrap();
25    let schedule_data_relationships_layers_data_0_id =
26        std::env::var("SCHEDULE_DATA_RELATIONSHIPS_LAYERS_DATA_0_ID").unwrap();
27
28    // there is a valid "user" in the system
29    let user_data_id = std::env::var("USER_DATA_ID").unwrap();
30
31    // there is a valid "dd_team" in the system
32    let dd_team_data_id = std::env::var("DD_TEAM_DATA_ID").unwrap();
33    let body = ScheduleUpdateRequest::new(
34        ScheduleUpdateRequestData::new(
35            ScheduleUpdateRequestDataAttributes::new(
36                vec![ScheduleUpdateRequestDataAttributesLayersItems::new(
37                    DateTime::parse_from_rfc3339("2021-11-01T11:11:11+00:00")
38                        .expect("Failed to parse datetime")
39                        .with_timezone(&Utc),
40                    LayerAttributesInterval::new().seconds(3600),
41                    vec![
42                        ScheduleRequestDataAttributesLayersItemsMembersItems::new().user(
43                            ScheduleRequestDataAttributesLayersItemsMembersItemsUser::new()
44                                .id(user_data_id.clone()),
45                        ),
46                    ],
47                    "Layer 1".to_string(),
48                    DateTime::parse_from_rfc3339("2021-11-06T11:11:11+00:00")
49                        .expect("Failed to parse datetime")
50                        .with_timezone(&Utc),
51                )
52                .end_date(
53                    DateTime::parse_from_rfc3339("2021-11-21T11:11:11+00:00")
54                        .expect("Failed to parse datetime")
55                        .with_timezone(&Utc),
56                )
57                .id(schedule_data_relationships_layers_data_0_id.clone())
58                .restrictions(vec![TimeRestriction::new()
59                    .end_day(Weekday::FRIDAY)
60                    .end_time("17:00:00".to_string())
61                    .start_day(Weekday::MONDAY)
62                    .start_time("09:00:00".to_string())])],
63                "Example-On-Call".to_string(),
64                "America/New_York".to_string(),
65            ),
66            schedule_data_id.clone(),
67            ScheduleUpdateRequestDataType::SCHEDULES,
68        )
69        .relationships(ScheduleUpdateRequestDataRelationships::new().teams(
70            DataRelationshipsTeams::new().data(vec![DataRelationshipsTeamsDataItems::new(
71                dd_team_data_id.clone(),
72                DataRelationshipsTeamsDataItemsType::TEAMS,
73            )]),
74        )),
75    );
76    let configuration = datadog::Configuration::new();
77    let api = OnCallAPI::with_config(configuration);
78    let resp = api
79        .update_on_call_schedule(
80            schedule_data_id.clone(),
81            body,
82            UpdateOnCallScheduleOptionalParams::default(),
83        )
84        .await;
85    if let Ok(value) = resp {
86        println!("{:#?}", value);
87    } else {
88        println!("{:#?}", resp.unwrap_err());
89    }
90}