Skip to content

Commit 41af9f2

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Security Monitoring - Related Suppressions for a Rule (#884)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent d4e6ab2 commit 41af9f2

17 files changed

+789
-30
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64757,6 +64757,65 @@ paths:
6475764757
tags:
6475864758
- Security Monitoring
6475964759
x-codegen-request-body-name: body
64760+
/api/v2/security_monitoring/configuration/suppressions/rules:
64761+
post:
64762+
description: Get the list of suppressions that would affect a rule.
64763+
operationId: GetSuppressionsAffectingFutureRule
64764+
requestBody:
64765+
content:
64766+
application/json:
64767+
schema:
64768+
$ref: '#/components/schemas/SecurityMonitoringRuleCreatePayload'
64769+
required: true
64770+
responses:
64771+
'200':
64772+
content:
64773+
application/json:
64774+
schema:
64775+
$ref: '#/components/schemas/SecurityMonitoringSuppressionsResponse'
64776+
description: OK
64777+
'400':
64778+
$ref: '#/components/responses/BadRequestResponse'
64779+
'403':
64780+
$ref: '#/components/responses/NotAuthorizedResponse'
64781+
'429':
64782+
$ref: '#/components/responses/TooManyRequestsResponse'
64783+
security:
64784+
- apiKeyAuth: []
64785+
appKeyAuth: []
64786+
- AuthZ:
64787+
- security_monitoring_suppressions_read
64788+
summary: Get suppressions affecting future rule
64789+
tags:
64790+
- Security Monitoring
64791+
/api/v2/security_monitoring/configuration/suppressions/rules/{rule_id}:
64792+
get:
64793+
description: Get the list of suppressions that affect a specific existing rule
64794+
by its ID.
64795+
operationId: GetSuppressionsAffectingRule
64796+
parameters:
64797+
- $ref: '#/components/parameters/SecurityMonitoringRuleID'
64798+
responses:
64799+
'200':
64800+
content:
64801+
application/json:
64802+
schema:
64803+
$ref: '#/components/schemas/SecurityMonitoringSuppressionsResponse'
64804+
description: OK
64805+
'403':
64806+
$ref: '#/components/responses/NotAuthorizedResponse'
64807+
'404':
64808+
$ref: '#/components/responses/NotFoundResponse'
64809+
'429':
64810+
$ref: '#/components/responses/TooManyRequestsResponse'
64811+
security:
64812+
- apiKeyAuth: []
64813+
appKeyAuth: []
64814+
- AuthZ:
64815+
- security_monitoring_suppressions_read
64816+
summary: Get suppressions affecting a specific rule
64817+
tags:
64818+
- Security Monitoring
6476064819
/api/v2/security_monitoring/configuration/suppressions/{suppression_id}:
6476164820
delete:
6476264821
description: Delete a specific suppression rule.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// Get suppressions affecting future rule returns "OK" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
4+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleCaseCreate;
5+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleCreatePayload;
6+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleEvaluationWindow;
7+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleKeepAlive;
8+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleMaxSignalDuration;
9+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleOptions;
10+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleQueryAggregation;
11+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleSeverity;
12+
use datadog_api_client::datadogV2::model::SecurityMonitoringRuleTypeCreate;
13+
use datadog_api_client::datadogV2::model::SecurityMonitoringStandardRuleCreatePayload;
14+
use datadog_api_client::datadogV2::model::SecurityMonitoringStandardRuleQuery;
15+
16+
#[tokio::main]
17+
async fn main() {
18+
let body =
19+
SecurityMonitoringRuleCreatePayload::SecurityMonitoringStandardRuleCreatePayload(Box::new(
20+
SecurityMonitoringStandardRuleCreatePayload::new(
21+
vec![
22+
SecurityMonitoringRuleCaseCreate::new(SecurityMonitoringRuleSeverity::INFO)
23+
.condition("a > 0".to_string())
24+
.name("".to_string())
25+
.notifications(vec![]),
26+
],
27+
true,
28+
"Test rule".to_string(),
29+
"Example-Security-Monitoring".to_string(),
30+
SecurityMonitoringRuleOptions::new()
31+
.evaluation_window(SecurityMonitoringRuleEvaluationWindow::FIFTEEN_MINUTES)
32+
.keep_alive(SecurityMonitoringRuleKeepAlive::ONE_HOUR)
33+
.max_signal_duration(SecurityMonitoringRuleMaxSignalDuration::ONE_DAY),
34+
vec![SecurityMonitoringStandardRuleQuery::new()
35+
.aggregation(SecurityMonitoringRuleQueryAggregation::COUNT)
36+
.distinct_fields(vec![])
37+
.group_by_fields(vec![])
38+
.metrics(vec![])
39+
.query("@test:true".to_string())],
40+
)
41+
.filters(vec![])
42+
.tags(vec![])
43+
.type_(SecurityMonitoringRuleTypeCreate::LOG_DETECTION),
44+
));
45+
let configuration = datadog::Configuration::new();
46+
let api = SecurityMonitoringAPI::with_config(configuration);
47+
let resp = api.get_suppressions_affecting_future_rule(body).await;
48+
if let Ok(value) = resp {
49+
println!("{:#?}", value);
50+
} else {
51+
println!("{:#?}", resp.unwrap_err());
52+
}
53+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Get suppressions affecting a specific rule returns "OK" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
4+
5+
#[tokio::main]
6+
async fn main() {
7+
// there is a valid "security_rule" in the system
8+
let security_rule_id = std::env::var("SECURITY_RULE_ID").unwrap();
9+
let configuration = datadog::Configuration::new();
10+
let api = SecurityMonitoringAPI::with_config(configuration);
11+
let resp = api
12+
.get_suppressions_affecting_rule(security_rule_id.clone())
13+
.await;
14+
if let Ok(value) = resp {
15+
println!("{:#?}", value);
16+
} else {
17+
println!("{:#?}", resp.unwrap_err());
18+
}
19+
}

0 commit comments

Comments
 (0)