v2_on_call_CreateOnCallSchedule/
v2_on-call_CreateOnCallSchedule.rs

1// Create On-Call schedule returns "Created" response
2use chrono::{DateTime, Utc};
3use datadog_api_client::datadog;
4use datadog_api_client::datadogV2::api_on_call::CreateOnCallScheduleOptionalParams;
5use datadog_api_client::datadogV2::api_on_call::OnCallAPI;
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::ScheduleCreateRequest;
11use datadog_api_client::datadogV2::model::ScheduleCreateRequestData;
12use datadog_api_client::datadogV2::model::ScheduleCreateRequestDataAttributes;
13use datadog_api_client::datadogV2::model::ScheduleCreateRequestDataAttributesLayersItems;
14use datadog_api_client::datadogV2::model::ScheduleCreateRequestDataRelationships;
15use datadog_api_client::datadogV2::model::ScheduleCreateRequestDataType;
16use datadog_api_client::datadogV2::model::ScheduleRequestDataAttributesLayersItemsMembersItems;
17use datadog_api_client::datadogV2::model::ScheduleRequestDataAttributesLayersItemsMembersItemsUser;
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 "user" in the system
24    let user_data_id = std::env::var("USER_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 = ScheduleCreateRequest::new(
29        ScheduleCreateRequestData::new(
30            ScheduleCreateRequestDataAttributes::new(
31                vec![ScheduleCreateRequestDataAttributesLayersItems::new(
32                    DateTime::parse_from_rfc3339("2021-11-01T11:11:11+00:00")
33                        .expect("Failed to parse datetime")
34                        .with_timezone(&Utc),
35                    LayerAttributesInterval::new().days(1),
36                    vec![
37                        ScheduleRequestDataAttributesLayersItemsMembersItems::new().user(
38                            ScheduleRequestDataAttributesLayersItemsMembersItemsUser::new()
39                                .id(user_data_id.clone()),
40                        ),
41                    ],
42                    "Layer 1".to_string(),
43                    DateTime::parse_from_rfc3339("2021-11-06T11:11:11+00:00")
44                        .expect("Failed to parse datetime")
45                        .with_timezone(&Utc),
46                )
47                .end_date(
48                    DateTime::parse_from_rfc3339("2021-11-21T11:11:11+00:00")
49                        .expect("Failed to parse datetime")
50                        .with_timezone(&Utc),
51                )
52                .restrictions(vec![TimeRestriction::new()
53                    .end_day(Weekday::FRIDAY)
54                    .end_time("17:00:00".to_string())
55                    .start_day(Weekday::MONDAY)
56                    .start_time("09:00:00".to_string())])],
57                "Example-On-Call".to_string(),
58                "America/New_York".to_string(),
59            ),
60            ScheduleCreateRequestDataType::SCHEDULES,
61        )
62        .relationships(ScheduleCreateRequestDataRelationships::new().teams(
63            DataRelationshipsTeams::new().data(vec![DataRelationshipsTeamsDataItems::new(
64                dd_team_data_id.clone(),
65                DataRelationshipsTeamsDataItemsType::TEAMS,
66            )]),
67        )),
68    );
69    let configuration = datadog::Configuration::new();
70    let api = OnCallAPI::with_config(configuration);
71    let resp = api
72        .create_on_call_schedule(body, CreateOnCallScheduleOptionalParams::default())
73        .await;
74    if let Ok(value) = resp {
75        println!("{:#?}", value);
76    } else {
77        println!("{:#?}", resp.unwrap_err());
78    }
79}