Skip to content

Commit d3a118b

Browse files
author
ci.datadog-api-spec
committed
Regenerate client from commit c40a673 of spec repo
1 parent 5453d0b commit d3a118b

18 files changed

+470
-6
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63779,6 +63779,67 @@ paths:
6377963779
tags:
6378063780
- Security Monitoring
6378163781
x-codegen-request-body-name: body
63782+
/api/v2/security_monitoring/configuration/suppressions/rules:
63783+
post:
63784+
description: Get the list of suppressions that would affect future rule evaluations
63785+
for a given rule query. This endpoint is useful to preview which suppressions
63786+
would apply to a rule before creating or updating it.
63787+
operationId: GetSuppressionsAffectingFutureRule
63788+
requestBody:
63789+
content:
63790+
application/json:
63791+
schema:
63792+
$ref: '#/components/schemas/SecurityMonitoringRuleCreatePayload'
63793+
required: true
63794+
responses:
63795+
'200':
63796+
content:
63797+
application/json:
63798+
schema:
63799+
$ref: '#/components/schemas/SecurityMonitoringSuppressionsResponse'
63800+
description: OK
63801+
'400':
63802+
$ref: '#/components/responses/BadRequestResponse'
63803+
'403':
63804+
$ref: '#/components/responses/NotAuthorizedResponse'
63805+
'429':
63806+
$ref: '#/components/responses/TooManyRequestsResponse'
63807+
security:
63808+
- apiKeyAuth: []
63809+
appKeyAuth: []
63810+
- AuthZ:
63811+
- security_monitoring_suppressions_read
63812+
summary: Get suppressions affecting future rule evaluations
63813+
tags:
63814+
- Security Monitoring
63815+
/api/v2/security_monitoring/configuration/suppressions/rules/{rule_id}:
63816+
get:
63817+
description: Get the list of suppressions that affect a specific existing rule
63818+
by its ID.
63819+
operationId: GetSuppressionsAffectingRule
63820+
parameters:
63821+
- $ref: '#/components/parameters/SecurityMonitoringRuleID'
63822+
responses:
63823+
'200':
63824+
content:
63825+
application/json:
63826+
schema:
63827+
$ref: '#/components/schemas/SecurityMonitoringSuppressionsResponse'
63828+
description: OK
63829+
'403':
63830+
$ref: '#/components/responses/NotAuthorizedResponse'
63831+
'404':
63832+
$ref: '#/components/responses/NotFoundResponse'
63833+
'429':
63834+
$ref: '#/components/responses/TooManyRequestsResponse'
63835+
security:
63836+
- apiKeyAuth: []
63837+
appKeyAuth: []
63838+
- AuthZ:
63839+
- security_monitoring_suppressions_read
63840+
summary: Get suppressions affecting a specific rule
63841+
tags:
63842+
- Security Monitoring
6378263843
/api/v2/security_monitoring/configuration/suppressions/{suppression_id}:
6378363844
delete:
6378463845
description: Delete a specific suppression rule.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
"""
2+
Get suppressions affecting future rule evaluations returns "OK" response
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
7+
from datadog_api_client.v2.model.security_monitoring_reference_table import SecurityMonitoringReferenceTable
8+
from datadog_api_client.v2.model.security_monitoring_rule_case_create import SecurityMonitoringRuleCaseCreate
9+
from datadog_api_client.v2.model.security_monitoring_rule_evaluation_window import (
10+
SecurityMonitoringRuleEvaluationWindow,
11+
)
12+
from datadog_api_client.v2.model.security_monitoring_rule_keep_alive import SecurityMonitoringRuleKeepAlive
13+
from datadog_api_client.v2.model.security_monitoring_rule_max_signal_duration import (
14+
SecurityMonitoringRuleMaxSignalDuration,
15+
)
16+
from datadog_api_client.v2.model.security_monitoring_rule_options import SecurityMonitoringRuleOptions
17+
from datadog_api_client.v2.model.security_monitoring_rule_query_aggregation import (
18+
SecurityMonitoringRuleQueryAggregation,
19+
)
20+
from datadog_api_client.v2.model.security_monitoring_rule_severity import SecurityMonitoringRuleSeverity
21+
from datadog_api_client.v2.model.security_monitoring_rule_type_create import SecurityMonitoringRuleTypeCreate
22+
from datadog_api_client.v2.model.security_monitoring_standard_rule_create_payload import (
23+
SecurityMonitoringStandardRuleCreatePayload,
24+
)
25+
from datadog_api_client.v2.model.security_monitoring_standard_rule_query import SecurityMonitoringStandardRuleQuery
26+
27+
body = SecurityMonitoringStandardRuleCreatePayload(
28+
name="Example-Security-Monitoring",
29+
queries=[
30+
SecurityMonitoringStandardRuleQuery(
31+
query="@test:true",
32+
aggregation=SecurityMonitoringRuleQueryAggregation.COUNT,
33+
group_by_fields=[],
34+
distinct_fields=[],
35+
metric="",
36+
),
37+
],
38+
filters=[],
39+
cases=[
40+
SecurityMonitoringRuleCaseCreate(
41+
name="",
42+
status=SecurityMonitoringRuleSeverity.INFO,
43+
condition="a > 0",
44+
notifications=[],
45+
),
46+
],
47+
options=SecurityMonitoringRuleOptions(
48+
evaluation_window=SecurityMonitoringRuleEvaluationWindow.FIFTEEN_MINUTES,
49+
keep_alive=SecurityMonitoringRuleKeepAlive.ONE_HOUR,
50+
max_signal_duration=SecurityMonitoringRuleMaxSignalDuration.ONE_DAY,
51+
),
52+
message="Test rule",
53+
tags=[],
54+
is_enabled=True,
55+
type=SecurityMonitoringRuleTypeCreate.LOG_DETECTION,
56+
reference_tables=[
57+
SecurityMonitoringReferenceTable(
58+
table_name="synthetics_test_reference_table_dont_delete",
59+
column_name="value",
60+
log_field_path="testtag",
61+
check_presence=True,
62+
rule_query_name="a",
63+
),
64+
],
65+
)
66+
67+
configuration = Configuration()
68+
with ApiClient(configuration) as api_client:
69+
api_instance = SecurityMonitoringApi(api_client)
70+
response = api_instance.get_suppressions_affecting_future_rule(body=body)
71+
72+
print(response)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
Get suppressions affecting a specific rule returns "OK" response
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
7+
8+
configuration = Configuration()
9+
with ApiClient(configuration) as api_client:
10+
api_instance = SecurityMonitoringApi(api_client)
11+
response = api_instance.get_suppressions_affecting_rule(
12+
rule_id="rule_id",
13+
)
14+
15+
print(response)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""
2+
Get suppressions affecting rule returns "OK" response
3+
"""
4+
5+
from os import environ
6+
from datadog_api_client import ApiClient, Configuration
7+
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
8+
9+
# there is a valid "security_rule" in the system
10+
SECURITY_RULE_ID = environ["SECURITY_RULE_ID"]
11+
12+
configuration = Configuration()
13+
with ApiClient(configuration) as api_client:
14+
api_instance = SecurityMonitoringApi(api_client)
15+
response = api_instance.get_suppressions_affecting_rule(
16+
rule_id=SECURITY_RULE_ID,
17+
)
18+
19+
print(response)

src/datadog_api_client/v2/api/security_monitoring_api.py

Lines changed: 86 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,6 @@
5959
from datadog_api_client.v2.model.security_monitoring_suppression_create_request import (
6060
SecurityMonitoringSuppressionCreateRequest,
6161
)
62-
from datadog_api_client.v2.model.security_monitoring_suppression_update_request import (
63-
SecurityMonitoringSuppressionUpdateRequest,
64-
)
65-
from datadog_api_client.v2.model.security_monitoring_list_rules_response import SecurityMonitoringListRulesResponse
66-
from datadog_api_client.v2.model.security_monitoring_rule_response import SecurityMonitoringRuleResponse
6762
from datadog_api_client.v2.model.security_monitoring_rule_create_payload import SecurityMonitoringRuleCreatePayload
6863
from datadog_api_client.v2.model.security_monitoring_standard_rule_create_payload import (
6964
SecurityMonitoringStandardRuleCreatePayload,
@@ -72,6 +67,11 @@
7267
SecurityMonitoringSignalRuleCreatePayload,
7368
)
7469
from datadog_api_client.v2.model.cloud_configuration_rule_create_payload import CloudConfigurationRuleCreatePayload
70+
from datadog_api_client.v2.model.security_monitoring_suppression_update_request import (
71+
SecurityMonitoringSuppressionUpdateRequest,
72+
)
73+
from datadog_api_client.v2.model.security_monitoring_list_rules_response import SecurityMonitoringListRulesResponse
74+
from datadog_api_client.v2.model.security_monitoring_rule_response import SecurityMonitoringRuleResponse
7575
from datadog_api_client.v2.model.security_monitoring_rule_convert_response import SecurityMonitoringRuleConvertResponse
7676
from datadog_api_client.v2.model.security_monitoring_rule_convert_payload import SecurityMonitoringRuleConvertPayload
7777
from datadog_api_client.v2.model.security_monitoring_standard_rule_payload import SecurityMonitoringStandardRulePayload
@@ -880,6 +880,49 @@ def __init__(self, api_client=None):
880880
api_client=api_client,
881881
)
882882

883+
self._get_suppressions_affecting_future_rule_endpoint = _Endpoint(
884+
settings={
885+
"response_type": (SecurityMonitoringSuppressionsResponse,),
886+
"auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
887+
"endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/rules",
888+
"operation_id": "get_suppressions_affecting_future_rule",
889+
"http_method": "POST",
890+
"version": "v2",
891+
},
892+
params_map={
893+
"body": {
894+
"required": True,
895+
"openapi_types": (SecurityMonitoringRuleCreatePayload,),
896+
"location": "body",
897+
},
898+
},
899+
headers_map={"accept": ["application/json"], "content_type": ["application/json"]},
900+
api_client=api_client,
901+
)
902+
903+
self._get_suppressions_affecting_rule_endpoint = _Endpoint(
904+
settings={
905+
"response_type": (SecurityMonitoringSuppressionsResponse,),
906+
"auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
907+
"endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/rules/{rule_id}",
908+
"operation_id": "get_suppressions_affecting_rule",
909+
"http_method": "GET",
910+
"version": "v2",
911+
},
912+
params_map={
913+
"rule_id": {
914+
"required": True,
915+
"openapi_types": (str,),
916+
"attribute": "rule_id",
917+
"location": "path",
918+
},
919+
},
920+
headers_map={
921+
"accept": ["application/json"],
922+
},
923+
api_client=api_client,
924+
)
925+
883926
self._get_vulnerability_notification_rule_endpoint = _Endpoint(
884927
settings={
885928
"response_type": (NotificationRuleResponse,),
@@ -2504,6 +2547,44 @@ def get_signal_notification_rules(
25042547
kwargs: Dict[str, Any] = {}
25052548
return self._get_signal_notification_rules_endpoint.call_with_http_info(**kwargs)
25062549

2550+
def get_suppressions_affecting_future_rule(
2551+
self,
2552+
body: Union[
2553+
SecurityMonitoringRuleCreatePayload,
2554+
SecurityMonitoringStandardRuleCreatePayload,
2555+
SecurityMonitoringSignalRuleCreatePayload,
2556+
CloudConfigurationRuleCreatePayload,
2557+
],
2558+
) -> SecurityMonitoringSuppressionsResponse:
2559+
"""Get suppressions affecting future rule evaluations.
2560+
2561+
Get the list of suppressions that would affect future rule evaluations for a given rule query. This endpoint is useful to preview which suppressions would apply to a rule before creating or updating it.
2562+
2563+
:type body: SecurityMonitoringRuleCreatePayload
2564+
:rtype: SecurityMonitoringSuppressionsResponse
2565+
"""
2566+
kwargs: Dict[str, Any] = {}
2567+
kwargs["body"] = body
2568+
2569+
return self._get_suppressions_affecting_future_rule_endpoint.call_with_http_info(**kwargs)
2570+
2571+
def get_suppressions_affecting_rule(
2572+
self,
2573+
rule_id: str,
2574+
) -> SecurityMonitoringSuppressionsResponse:
2575+
"""Get suppressions affecting a specific rule.
2576+
2577+
Get the list of suppressions that affect a specific existing rule by its ID.
2578+
2579+
:param rule_id: The ID of the rule.
2580+
:type rule_id: str
2581+
:rtype: SecurityMonitoringSuppressionsResponse
2582+
"""
2583+
kwargs: Dict[str, Any] = {}
2584+
kwargs["rule_id"] = rule_id
2585+
2586+
return self._get_suppressions_affecting_rule_endpoint.call_with_http_info(**kwargs)
2587+
25072588
def get_vulnerability_notification_rule(
25082589
self,
25092590
id: str,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2024-05-10T16:34:46.085Z
1+
2025-08-28T16:16:42.707Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2025-08-28T17:02:24.601Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
interactions:
2+
- request:
3+
body: '{"invalid_field":"invalid"}'
4+
headers:
5+
accept:
6+
- application/json
7+
content-type:
8+
- application/json
9+
method: POST
10+
uri: https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/rules
11+
response:
12+
body:
13+
string: '{"errors":["invalid_argument(Invalid rule configuration)"]}'
14+
headers:
15+
content-type:
16+
- application/json
17+
status:
18+
code: 400
19+
message: Bad Request
20+
version: 1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2025-08-28T17:02:24.978Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
interactions:
2+
- request:
3+
body: '{"cases":[{"condition":"a > 0","name":"","notifications":[],"status":"info"}],"filters":[],"isEnabled":true,"message":"Test
4+
rule","name":"Test-Get_suppressions_affecting_future_rule_evaluations_returns_OK_response-1756400544","options":{"evaluationWindow":900,"keepAlive":3600,"maxSignalDuration":86400},"queries":[{"aggregation":"count","distinctFields":[],"groupByFields":[],"metric":"","query":"@test:true"}],"referenceTables":[{"checkPresence":true,"columnName":"value","logFieldPath":"testtag","ruleQueryName":"a","tableName":"synthetics_test_reference_table_dont_delete"}],"tags":[],"type":"log_detection"}'
5+
headers:
6+
accept:
7+
- application/json
8+
content-type:
9+
- application/json
10+
method: POST
11+
uri: https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/rules
12+
response:
13+
body:
14+
string: '{"data":[]}'
15+
headers:
16+
content-type:
17+
- application/vnd.api+json
18+
status:
19+
code: 200
20+
message: OK
21+
version: 1

0 commit comments

Comments
 (0)