v2_security_monitoring_UpdateSecurityMonitoringRule/
v2_security-monitoring_UpdateSecurityMonitoringRule.rs

1// Update an existing rule returns "OK" response
2use 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    // there is a valid "security_rule" in the system
18    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}