Skip to content

Commit f11cb1b

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add Incident Notification Rules Public Spec (#906)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 3f3c710 commit f11cb1b

File tree

58 files changed

+5695
-29
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+5695
-29
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 555 additions & 1 deletion
Large diffs are not rendered by default.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Create an incident notification rule returns "Created" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
4+
use datadog_api_client::datadogV2::model::CreateIncidentNotificationRuleRequest;
5+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleConditionsItems;
6+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributes;
7+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributesVisibility;
8+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateData;
9+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateDataRelationships;
10+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleType;
11+
use datadog_api_client::datadogV2::model::IncidentNotificationTemplateType;
12+
use datadog_api_client::datadogV2::model::IncidentTypeType;
13+
use datadog_api_client::datadogV2::model::RelationshipToIncidentNotificationTemplate;
14+
use datadog_api_client::datadogV2::model::RelationshipToIncidentNotificationTemplateData;
15+
use datadog_api_client::datadogV2::model::RelationshipToIncidentType;
16+
use datadog_api_client::datadogV2::model::RelationshipToIncidentTypeData;
17+
use uuid::Uuid;
18+
19+
#[tokio::main]
20+
async fn main() {
21+
let body = CreateIncidentNotificationRuleRequest::new(
22+
IncidentNotificationRuleCreateData::new(
23+
IncidentNotificationRuleCreateAttributes::new(
24+
vec![IncidentNotificationRuleConditionsItems::new(
25+
"severity".to_string(),
26+
vec!["SEV-1".to_string(), "SEV-2".to_string()],
27+
)],
28+
vec![
29+
"@[email protected]".to_string(),
30+
"@slack-channel".to_string(),
31+
],
32+
"incident_created_trigger".to_string(),
33+
)
34+
.enabled(true)
35+
.renotify_on(vec!["status".to_string(), "severity".to_string()])
36+
.visibility(IncidentNotificationRuleCreateAttributesVisibility::ORGANIZATION),
37+
IncidentNotificationRuleType::INCIDENT_NOTIFICATION_RULES,
38+
)
39+
.relationships(
40+
IncidentNotificationRuleCreateDataRelationships::new()
41+
.incident_type(RelationshipToIncidentType::new(
42+
RelationshipToIncidentTypeData::new(
43+
"00000000-0000-0000-0000-000000000000".to_string(),
44+
IncidentTypeType::INCIDENT_TYPES,
45+
),
46+
))
47+
.notification_template(RelationshipToIncidentNotificationTemplate::new(
48+
RelationshipToIncidentNotificationTemplateData::new(
49+
Uuid::parse_str("00000000-0000-0000-0000-000000000001")
50+
.expect("invalid UUID"),
51+
IncidentNotificationTemplateType::NOTIFICATION_TEMPLATES,
52+
),
53+
)),
54+
),
55+
);
56+
let mut configuration = datadog::Configuration::new();
57+
configuration.set_unstable_operation_enabled("v2.CreateIncidentNotificationRule", true);
58+
let api = IncidentsAPI::with_config(configuration);
59+
let resp = api.create_incident_notification_rule(body).await;
60+
if let Ok(value) = resp {
61+
println!("{:#?}", value);
62+
} else {
63+
println!("{:#?}", resp.unwrap_err());
64+
}
65+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Create incident notification rule returns "Created" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
4+
use datadog_api_client::datadogV2::model::CreateIncidentNotificationRuleRequest;
5+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleConditionsItems;
6+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributes;
7+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributesVisibility;
8+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateData;
9+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateDataRelationships;
10+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleType;
11+
use datadog_api_client::datadogV2::model::IncidentTypeType;
12+
use datadog_api_client::datadogV2::model::RelationshipToIncidentType;
13+
use datadog_api_client::datadogV2::model::RelationshipToIncidentTypeData;
14+
15+
#[tokio::main]
16+
async fn main() {
17+
// there is a valid "incident_type" in the system
18+
let incident_type_data_id = std::env::var("INCIDENT_TYPE_DATA_ID").unwrap();
19+
let body = CreateIncidentNotificationRuleRequest::new(
20+
IncidentNotificationRuleCreateData::new(
21+
IncidentNotificationRuleCreateAttributes::new(
22+
vec![IncidentNotificationRuleConditionsItems::new(
23+
"severity".to_string(),
24+
vec!["SEV-1".to_string(), "SEV-2".to_string()],
25+
)],
26+
vec!["@[email protected]".to_string()],
27+
"incident_created_trigger".to_string(),
28+
)
29+
.enabled(true)
30+
.visibility(IncidentNotificationRuleCreateAttributesVisibility::ORGANIZATION),
31+
IncidentNotificationRuleType::INCIDENT_NOTIFICATION_RULES,
32+
)
33+
.relationships(
34+
IncidentNotificationRuleCreateDataRelationships::new().incident_type(
35+
RelationshipToIncidentType::new(RelationshipToIncidentTypeData::new(
36+
incident_type_data_id.clone(),
37+
IncidentTypeType::INCIDENT_TYPES,
38+
)),
39+
),
40+
),
41+
);
42+
let mut configuration = datadog::Configuration::new();
43+
configuration.set_unstable_operation_enabled("v2.CreateIncidentNotificationRule", true);
44+
let api = IncidentsAPI::with_config(configuration);
45+
let resp = api.create_incident_notification_rule(body).await;
46+
if let Ok(value) = resp {
47+
println!("{:#?}", value);
48+
} else {
49+
println!("{:#?}", resp.unwrap_err());
50+
}
51+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Delete an incident notification rule returns "No Content" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::DeleteIncidentNotificationRuleOptionalParams;
4+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
5+
use uuid::Uuid;
6+
7+
#[tokio::main]
8+
async fn main() {
9+
let mut configuration = datadog::Configuration::new();
10+
configuration.set_unstable_operation_enabled("v2.DeleteIncidentNotificationRule", true);
11+
let api = IncidentsAPI::with_config(configuration);
12+
let resp = api
13+
.delete_incident_notification_rule(
14+
Uuid::parse_str("00000000-0000-0000-0000-000000000001").expect("invalid UUID"),
15+
DeleteIncidentNotificationRuleOptionalParams::default(),
16+
)
17+
.await;
18+
if let Ok(value) = resp {
19+
println!("{:#?}", value);
20+
} else {
21+
println!("{:#?}", resp.unwrap_err());
22+
}
23+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Delete incident notification rule returns "No Content" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::DeleteIncidentNotificationRuleOptionalParams;
4+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
5+
6+
#[tokio::main]
7+
async fn main() {
8+
// there is a valid "notification_rule" in the system
9+
let notification_rule_data_id =
10+
uuid::Uuid::parse_str(&std::env::var("NOTIFICATION_RULE_DATA_ID").unwrap())
11+
.expect("Invalid UUID");
12+
let mut configuration = datadog::Configuration::new();
13+
configuration.set_unstable_operation_enabled("v2.DeleteIncidentNotificationRule", true);
14+
let api = IncidentsAPI::with_config(configuration);
15+
let resp = api
16+
.delete_incident_notification_rule(
17+
notification_rule_data_id.clone(),
18+
DeleteIncidentNotificationRuleOptionalParams::default(),
19+
)
20+
.await;
21+
if let Ok(value) = resp {
22+
println!("{:#?}", value);
23+
} else {
24+
println!("{:#?}", resp.unwrap_err());
25+
}
26+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Get an incident notification rule returns "OK" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::GetIncidentNotificationRuleOptionalParams;
4+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
5+
use uuid::Uuid;
6+
7+
#[tokio::main]
8+
async fn main() {
9+
let mut configuration = datadog::Configuration::new();
10+
configuration.set_unstable_operation_enabled("v2.GetIncidentNotificationRule", true);
11+
let api = IncidentsAPI::with_config(configuration);
12+
let resp = api
13+
.get_incident_notification_rule(
14+
Uuid::parse_str("00000000-0000-0000-0000-000000000001").expect("invalid UUID"),
15+
GetIncidentNotificationRuleOptionalParams::default(),
16+
)
17+
.await;
18+
if let Ok(value) = resp {
19+
println!("{:#?}", value);
20+
} else {
21+
println!("{:#?}", resp.unwrap_err());
22+
}
23+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Get incident notification rule returns "OK" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::GetIncidentNotificationRuleOptionalParams;
4+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
5+
6+
#[tokio::main]
7+
async fn main() {
8+
// there is a valid "notification_rule" in the system
9+
let notification_rule_data_id =
10+
uuid::Uuid::parse_str(&std::env::var("NOTIFICATION_RULE_DATA_ID").unwrap())
11+
.expect("Invalid UUID");
12+
let mut configuration = datadog::Configuration::new();
13+
configuration.set_unstable_operation_enabled("v2.GetIncidentNotificationRule", true);
14+
let api = IncidentsAPI::with_config(configuration);
15+
let resp = api
16+
.get_incident_notification_rule(
17+
notification_rule_data_id.clone(),
18+
GetIncidentNotificationRuleOptionalParams::default(),
19+
)
20+
.await;
21+
if let Ok(value) = resp {
22+
println!("{:#?}", value);
23+
} else {
24+
println!("{:#?}", resp.unwrap_err());
25+
}
26+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// List incident notification rules returns "OK" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
4+
use datadog_api_client::datadogV2::api_incidents::ListIncidentNotificationRulesOptionalParams;
5+
6+
#[tokio::main]
7+
async fn main() {
8+
let mut configuration = datadog::Configuration::new();
9+
configuration.set_unstable_operation_enabled("v2.ListIncidentNotificationRules", true);
10+
let api = IncidentsAPI::with_config(configuration);
11+
let resp = api
12+
.list_incident_notification_rules(ListIncidentNotificationRulesOptionalParams::default())
13+
.await;
14+
if let Ok(value) = resp {
15+
println!("{:#?}", value);
16+
} else {
17+
println!("{:#?}", resp.unwrap_err());
18+
}
19+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// Update an incident notification rule returns "OK" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
4+
use datadog_api_client::datadogV2::api_incidents::UpdateIncidentNotificationRuleOptionalParams;
5+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleConditionsItems;
6+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributes;
7+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributesVisibility;
8+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateDataRelationships;
9+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleType;
10+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleUpdateData;
11+
use datadog_api_client::datadogV2::model::IncidentNotificationTemplateType;
12+
use datadog_api_client::datadogV2::model::IncidentTypeType;
13+
use datadog_api_client::datadogV2::model::PutIncidentNotificationRuleRequest;
14+
use datadog_api_client::datadogV2::model::RelationshipToIncidentNotificationTemplate;
15+
use datadog_api_client::datadogV2::model::RelationshipToIncidentNotificationTemplateData;
16+
use datadog_api_client::datadogV2::model::RelationshipToIncidentType;
17+
use datadog_api_client::datadogV2::model::RelationshipToIncidentTypeData;
18+
use uuid::Uuid;
19+
20+
#[tokio::main]
21+
async fn main() {
22+
let body = PutIncidentNotificationRuleRequest::new(
23+
IncidentNotificationRuleUpdateData::new(
24+
IncidentNotificationRuleCreateAttributes::new(
25+
vec![IncidentNotificationRuleConditionsItems::new(
26+
"severity".to_string(),
27+
vec!["SEV-1".to_string(), "SEV-2".to_string()],
28+
)],
29+
vec![
30+
"@[email protected]".to_string(),
31+
"@slack-channel".to_string(),
32+
],
33+
"incident_created_trigger".to_string(),
34+
)
35+
.enabled(true)
36+
.renotify_on(vec!["status".to_string(), "severity".to_string()])
37+
.visibility(IncidentNotificationRuleCreateAttributesVisibility::ORGANIZATION),
38+
Uuid::parse_str("00000000-0000-0000-0000-000000000001").expect("invalid UUID"),
39+
IncidentNotificationRuleType::INCIDENT_NOTIFICATION_RULES,
40+
)
41+
.relationships(
42+
IncidentNotificationRuleCreateDataRelationships::new()
43+
.incident_type(RelationshipToIncidentType::new(
44+
RelationshipToIncidentTypeData::new(
45+
"00000000-0000-0000-0000-000000000000".to_string(),
46+
IncidentTypeType::INCIDENT_TYPES,
47+
),
48+
))
49+
.notification_template(RelationshipToIncidentNotificationTemplate::new(
50+
RelationshipToIncidentNotificationTemplateData::new(
51+
Uuid::parse_str("00000000-0000-0000-0000-000000000001")
52+
.expect("invalid UUID"),
53+
IncidentNotificationTemplateType::NOTIFICATION_TEMPLATES,
54+
),
55+
)),
56+
),
57+
);
58+
let mut configuration = datadog::Configuration::new();
59+
configuration.set_unstable_operation_enabled("v2.UpdateIncidentNotificationRule", true);
60+
let api = IncidentsAPI::with_config(configuration);
61+
let resp = api
62+
.update_incident_notification_rule(
63+
Uuid::parse_str("00000000-0000-0000-0000-000000000001").expect("invalid UUID"),
64+
body,
65+
UpdateIncidentNotificationRuleOptionalParams::default(),
66+
)
67+
.await;
68+
if let Ok(value) = resp {
69+
println!("{:#?}", value);
70+
} else {
71+
println!("{:#?}", resp.unwrap_err());
72+
}
73+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// Update incident notification rule returns "OK" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
4+
use datadog_api_client::datadogV2::api_incidents::UpdateIncidentNotificationRuleOptionalParams;
5+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleConditionsItems;
6+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributes;
7+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributesVisibility;
8+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateDataRelationships;
9+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleType;
10+
use datadog_api_client::datadogV2::model::IncidentNotificationRuleUpdateData;
11+
use datadog_api_client::datadogV2::model::IncidentTypeType;
12+
use datadog_api_client::datadogV2::model::PutIncidentNotificationRuleRequest;
13+
use datadog_api_client::datadogV2::model::RelationshipToIncidentType;
14+
use datadog_api_client::datadogV2::model::RelationshipToIncidentTypeData;
15+
16+
#[tokio::main]
17+
async fn main() {
18+
// there is a valid "notification_rule" in the system
19+
let notification_rule_data_id =
20+
uuid::Uuid::parse_str(&std::env::var("NOTIFICATION_RULE_DATA_ID").unwrap())
21+
.expect("Invalid UUID");
22+
23+
// there is a valid "incident_type" in the system
24+
let incident_type_data_id = std::env::var("INCIDENT_TYPE_DATA_ID").unwrap();
25+
let body = PutIncidentNotificationRuleRequest::new(
26+
IncidentNotificationRuleUpdateData::new(
27+
IncidentNotificationRuleCreateAttributes::new(
28+
vec![IncidentNotificationRuleConditionsItems::new(
29+
"severity".to_string(),
30+
vec!["SEV-1".to_string()],
31+
)],
32+
vec!["@[email protected]".to_string()],
33+
"incident_modified_trigger".to_string(),
34+
)
35+
.enabled(false)
36+
.visibility(IncidentNotificationRuleCreateAttributesVisibility::PRIVATE),
37+
notification_rule_data_id.clone(),
38+
IncidentNotificationRuleType::INCIDENT_NOTIFICATION_RULES,
39+
)
40+
.relationships(
41+
IncidentNotificationRuleCreateDataRelationships::new().incident_type(
42+
RelationshipToIncidentType::new(RelationshipToIncidentTypeData::new(
43+
incident_type_data_id.clone(),
44+
IncidentTypeType::INCIDENT_TYPES,
45+
)),
46+
),
47+
),
48+
);
49+
let mut configuration = datadog::Configuration::new();
50+
configuration.set_unstable_operation_enabled("v2.UpdateIncidentNotificationRule", true);
51+
let api = IncidentsAPI::with_config(configuration);
52+
let resp = api
53+
.update_incident_notification_rule(
54+
notification_rule_data_id.clone(),
55+
body,
56+
UpdateIncidentNotificationRuleOptionalParams::default(),
57+
)
58+
.await;
59+
if let Ok(value) = resp {
60+
println!("{:#?}", value);
61+
} else {
62+
println!("{:#?}", resp.unwrap_err());
63+
}
64+
}

0 commit comments

Comments
 (0)