v2_security_monitoring_UpdateSecurityMonitoringRule/
v2_security-monitoring_UpdateSecurityMonitoringRule.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
4use datadog_api_client::datadogV2::model::SecurityMonitoringRuleCase;
5use datadog_api_client::datadogV2::model::SecurityMonitoringRuleEvaluationWindow;
6use datadog_api_client::datadogV2::model::SecurityMonitoringRuleKeepAlive;
7use datadog_api_client::datadogV2::model::SecurityMonitoringRuleMaxSignalDuration;
8use datadog_api_client::datadogV2::model::SecurityMonitoringRuleOptions;
9use datadog_api_client::datadogV2::model::SecurityMonitoringRuleQuery;
10use datadog_api_client::datadogV2::model::SecurityMonitoringRuleQueryAggregation;
11use datadog_api_client::datadogV2::model::SecurityMonitoringRuleSeverity;
12use datadog_api_client::datadogV2::model::SecurityMonitoringRuleUpdatePayload;
13use datadog_api_client::datadogV2::model::SecurityMonitoringStandardRuleQuery;
14
15#[tokio::main]
16async fn main() {
17 let security_rule_id = std::env::var("SECURITY_RULE_ID").unwrap();
19 let body = SecurityMonitoringRuleUpdatePayload::new()
20 .cases(vec![SecurityMonitoringRuleCase::new()
21 .condition("a > 0".to_string())
22 .name("".to_string())
23 .notifications(vec![])
24 .status(SecurityMonitoringRuleSeverity::INFO)])
25 .filters(vec![])
26 .is_enabled(true)
27 .message("Test rule".to_string())
28 .name("Example-Security-Monitoring-Updated".to_string())
29 .options(
30 SecurityMonitoringRuleOptions::new()
31 .evaluation_window(SecurityMonitoringRuleEvaluationWindow::FIFTEEN_MINUTES)
32 .keep_alive(SecurityMonitoringRuleKeepAlive::ONE_HOUR)
33 .max_signal_duration(SecurityMonitoringRuleMaxSignalDuration::ONE_DAY),
34 )
35 .queries(vec![
36 SecurityMonitoringRuleQuery::SecurityMonitoringStandardRuleQuery(Box::new(
37 SecurityMonitoringStandardRuleQuery::new()
38 .aggregation(SecurityMonitoringRuleQueryAggregation::COUNT)
39 .distinct_fields(vec![])
40 .group_by_fields(vec![])
41 .metrics(vec![])
42 .query("@test:true".to_string()),
43 )),
44 ])
45 .tags(vec![]);
46 let configuration = datadog::Configuration::new();
47 let api = SecurityMonitoringAPI::with_config(configuration);
48 let resp = api
49 .update_security_monitoring_rule(security_rule_id.clone(), body)
50 .await;
51 if let Ok(value) = resp {
52 println!("{:#?}", value);
53 } else {
54 println!("{:#?}", resp.unwrap_err());
55 }
56}