v2_security_monitoring_PatchSignalNotificationRule/
v2_security-monitoring_PatchSignalNotificationRule.rs1use datadog_api_client::datadog;
4use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
5use datadog_api_client::datadogV2::model::NotificationRulesType;
6use datadog_api_client::datadogV2::model::PatchNotificationRuleParameters;
7use datadog_api_client::datadogV2::model::PatchNotificationRuleParametersData;
8use datadog_api_client::datadogV2::model::PatchNotificationRuleParametersDataAttributes;
9use datadog_api_client::datadogV2::model::RuleSeverity;
10use datadog_api_client::datadogV2::model::RuleTypesItems;
11use datadog_api_client::datadogV2::model::Selectors;
12use datadog_api_client::datadogV2::model::TriggerSource;
13
14#[tokio::main]
15async fn main() {
16 let valid_signal_notification_rule_data_id =
18 std::env::var("VALID_SIGNAL_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_signal_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_signal_notification_rule(valid_signal_notification_rule_data_id.clone(), body)
43 .await;
44 if let Ok(value) = resp {
45 println!("{:#?}", value);
46 } else {
47 println!("{:#?}", resp.unwrap_err());
48 }
49}