v2_incidents_UpdateIncidentNotificationRule/
v2_incidents_UpdateIncidentNotificationRule.rs

1// Update an incident notification rule returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_incidents::IncidentsAPI;
4use datadog_api_client::datadogV2::api_incidents::UpdateIncidentNotificationRuleOptionalParams;
5use datadog_api_client::datadogV2::model::IncidentNotificationRuleConditionsItems;
6use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributes;
7use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateAttributesVisibility;
8use datadog_api_client::datadogV2::model::IncidentNotificationRuleCreateDataRelationships;
9use datadog_api_client::datadogV2::model::IncidentNotificationRuleType;
10use datadog_api_client::datadogV2::model::IncidentNotificationRuleUpdateData;
11use datadog_api_client::datadogV2::model::IncidentNotificationTemplateType;
12use datadog_api_client::datadogV2::model::IncidentTypeType;
13use datadog_api_client::datadogV2::model::PutIncidentNotificationRuleRequest;
14use datadog_api_client::datadogV2::model::RelationshipToIncidentNotificationTemplate;
15use datadog_api_client::datadogV2::model::RelationshipToIncidentNotificationTemplateData;
16use datadog_api_client::datadogV2::model::RelationshipToIncidentType;
17use datadog_api_client::datadogV2::model::RelationshipToIncidentTypeData;
18use uuid::Uuid;
19
20#[tokio::main]
21async 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                    "@team-email@company.com".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}