v2_security_monitoring_RunHistoricalJob/
v2_security-monitoring_RunHistoricalJob.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
4use datadog_api_client::datadogV2::model::HistoricalJobOptions;
5use datadog_api_client::datadogV2::model::HistoricalJobQuery;
6use datadog_api_client::datadogV2::model::JobDefinition;
7use datadog_api_client::datadogV2::model::RunHistoricalJobRequest;
8use datadog_api_client::datadogV2::model::RunHistoricalJobRequestAttributes;
9use datadog_api_client::datadogV2::model::RunHistoricalJobRequestData;
10use datadog_api_client::datadogV2::model::RunHistoricalJobRequestDataType;
11use datadog_api_client::datadogV2::model::SecurityMonitoringRuleCaseCreate;
12use datadog_api_client::datadogV2::model::SecurityMonitoringRuleEvaluationWindow;
13use datadog_api_client::datadogV2::model::SecurityMonitoringRuleKeepAlive;
14use datadog_api_client::datadogV2::model::SecurityMonitoringRuleMaxSignalDuration;
15use datadog_api_client::datadogV2::model::SecurityMonitoringRuleQueryAggregation;
16use datadog_api_client::datadogV2::model::SecurityMonitoringRuleSeverity;
17
18#[tokio::main]
19async fn main() {
20 let body = RunHistoricalJobRequest::new().data(
21 RunHistoricalJobRequestData::new()
22 .attributes(
23 RunHistoricalJobRequestAttributes::new().job_definition(
24 JobDefinition::new(
25 vec![SecurityMonitoringRuleCaseCreate::new(
26 SecurityMonitoringRuleSeverity::INFO,
27 )
28 .condition("a > 1".to_string())
29 .name("Condition 1".to_string())
30 .notifications(vec![])],
31 1730387522611,
32 "main".to_string(),
33 "A large number of failed login attempts.".to_string(),
34 "Excessive number of failed attempts.".to_string(),
35 vec![HistoricalJobQuery::new()
36 .aggregation(SecurityMonitoringRuleQueryAggregation::COUNT)
37 .distinct_fields(vec![])
38 .group_by_fields(vec![])
39 .query("source:non_existing_src_weekend".to_string())],
40 1730387532611,
41 )
42 .options(
43 HistoricalJobOptions::new()
44 .evaluation_window(
45 SecurityMonitoringRuleEvaluationWindow::FIFTEEN_MINUTES,
46 )
47 .keep_alive(SecurityMonitoringRuleKeepAlive::ONE_HOUR)
48 .max_signal_duration(SecurityMonitoringRuleMaxSignalDuration::ONE_DAY),
49 )
50 .tags(vec![])
51 .type_("log_detection".to_string()),
52 ),
53 )
54 .type_(RunHistoricalJobRequestDataType::HISTORICALDETECTIONSJOBCREATE),
55 );
56 let mut configuration = datadog::Configuration::new();
57 configuration.set_unstable_operation_enabled("v2.RunHistoricalJob", true);
58 let api = SecurityMonitoringAPI::with_config(configuration);
59 let resp = api.run_historical_job(body).await;
60 if let Ok(value) = resp {
61 println!("{:#?}", value);
62 } else {
63 println!("{:#?}", resp.unwrap_err());
64 }
65}