v2_security_monitoring_CreateSecurityMonitoringRule/
v2_security-monitoring_CreateSecurityMonitoringRule.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
4use datadog_api_client::datadogV2::model::SecurityMonitoringReferenceTable;
5use datadog_api_client::datadogV2::model::SecurityMonitoringRuleCaseCreate;
6use datadog_api_client::datadogV2::model::SecurityMonitoringRuleCreatePayload;
7use datadog_api_client::datadogV2::model::SecurityMonitoringRuleEvaluationWindow;
8use datadog_api_client::datadogV2::model::SecurityMonitoringRuleKeepAlive;
9use datadog_api_client::datadogV2::model::SecurityMonitoringRuleMaxSignalDuration;
10use datadog_api_client::datadogV2::model::SecurityMonitoringRuleOptions;
11use datadog_api_client::datadogV2::model::SecurityMonitoringRuleQueryAggregation;
12use datadog_api_client::datadogV2::model::SecurityMonitoringRuleSeverity;
13use datadog_api_client::datadogV2::model::SecurityMonitoringRuleTypeCreate;
14use datadog_api_client::datadogV2::model::SecurityMonitoringStandardRuleCreatePayload;
15use datadog_api_client::datadogV2::model::SecurityMonitoringStandardRuleQuery;
16
17#[tokio::main]
18async fn main() {
19 let body =
20 SecurityMonitoringRuleCreatePayload::SecurityMonitoringStandardRuleCreatePayload(Box::new(
21 SecurityMonitoringStandardRuleCreatePayload::new(
22 vec![
23 SecurityMonitoringRuleCaseCreate::new(SecurityMonitoringRuleSeverity::INFO)
24 .condition("a > 0".to_string())
25 .name("".to_string())
26 .notifications(vec![]),
27 ],
28 true,
29 "Test rule".to_string(),
30 "Example-Security-Monitoring".to_string(),
31 SecurityMonitoringRuleOptions::new()
32 .evaluation_window(SecurityMonitoringRuleEvaluationWindow::FIFTEEN_MINUTES)
33 .keep_alive(SecurityMonitoringRuleKeepAlive::ONE_HOUR)
34 .max_signal_duration(SecurityMonitoringRuleMaxSignalDuration::ONE_DAY),
35 vec![SecurityMonitoringStandardRuleQuery::new()
36 .aggregation(SecurityMonitoringRuleQueryAggregation::COUNT)
37 .distinct_fields(vec![])
38 .group_by_fields(vec![])
39 .metric("".to_string())
40 .query("@test:true".to_string())],
41 )
42 .filters(vec![])
43 .reference_tables(vec![SecurityMonitoringReferenceTable::new()
44 .check_presence(true)
45 .column_name("value".to_string())
46 .log_field_path("testtag".to_string())
47 .rule_query_name("a".to_string())
48 .table_name("synthetics_test_reference_table_dont_delete".to_string())])
49 .tags(vec![])
50 .type_(SecurityMonitoringRuleTypeCreate::LOG_DETECTION),
51 ));
52 let configuration = datadog::Configuration::new();
53 let api = SecurityMonitoringAPI::with_config(configuration);
54 let resp = api.create_security_monitoring_rule(body).await;
55 if let Ok(value) = resp {
56 println!("{:#?}", value);
57 } else {
58 println!("{:#?}", resp.unwrap_err());
59 }
60}