v2_on_call_CreateOnCallSchedule/
v2_on-call_CreateOnCallSchedule.rs1use 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 let user_data_id = std::env::var("USER_DATA_ID").unwrap();
25
26 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}