Skip to content

Commit c71af55

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Security notifications - Add SAST and secret rule types (#3737)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 5865bf4 commit c71af55

File tree

6 files changed

+133
-3
lines changed

6 files changed

+133
-3
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57796,7 +57796,8 @@ components:
5779657796
Signal-based notification rules can filter signals based on rule types application_security, log_detection,
5779757797
workload_security, signal_correlation, cloud_configuration and infrastructure_configuration.
5779857798
Vulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,
57799-
application_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, api_security, host_vulnerability and iac_misconfiguration.
57799+
application_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration,
57800+
api_security, host_vulnerability, iac_misconfiguration, sast_vulnerability and secret_vulnerability.
5780057801
enum:
5780157802
- application_security
5780257803
- log_detection
@@ -57813,6 +57814,8 @@ components:
5781357814
- api_security
5781457815
- host_vulnerability
5781557816
- iac_misconfiguration
57817+
- sast_vulnerability
57818+
- secret_vulnerability
5781657819
type: string
5781757820
x-enum-varnames:
5781857821
- APPLICATION_SECURITY
@@ -57830,6 +57833,8 @@ components:
5783057833
- API_SECURITY
5783157834
- HOST_VULNERABILITY
5783257835
- IAC_MISCONFIGURATION
57836+
- SAST_VULNERABILITY
57837+
- SECRET_VULNERABILITY
5783357838
RuleUser:
5783457839
description: User creating or modifying a rule.
5783557840
properties:
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// Create a new vulnerability-based notification rule with sast and secret rule types returns
2+
// "Successfully created the
3+
// notification rule." response
4+
5+
import com.datadog.api.client.ApiClient;
6+
import com.datadog.api.client.ApiException;
7+
import com.datadog.api.client.v2.api.SecurityMonitoringApi;
8+
import com.datadog.api.client.v2.model.CreateNotificationRuleParameters;
9+
import com.datadog.api.client.v2.model.CreateNotificationRuleParametersData;
10+
import com.datadog.api.client.v2.model.CreateNotificationRuleParametersDataAttributes;
11+
import com.datadog.api.client.v2.model.NotificationRuleResponse;
12+
import com.datadog.api.client.v2.model.NotificationRulesType;
13+
import com.datadog.api.client.v2.model.RuleSeverity;
14+
import com.datadog.api.client.v2.model.RuleTypesItems;
15+
import com.datadog.api.client.v2.model.Selectors;
16+
import com.datadog.api.client.v2.model.TriggerSource;
17+
import java.util.Arrays;
18+
import java.util.Collections;
19+
20+
public class Example {
21+
public static void main(String[] args) {
22+
ApiClient defaultClient = ApiClient.getDefaultApiClient();
23+
SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient);
24+
25+
CreateNotificationRuleParameters body =
26+
new CreateNotificationRuleParameters()
27+
.data(
28+
new CreateNotificationRuleParametersData()
29+
.attributes(
30+
new CreateNotificationRuleParametersDataAttributes()
31+
.enabled(true)
32+
.name("Example-Security-Monitoring")
33+
.selectors(
34+
new Selectors()
35+
.query("(source:production_service OR env:prod)")
36+
.ruleTypes(
37+
Arrays.asList(
38+
RuleTypesItems.SAST_VULNERABILITY,
39+
RuleTypesItems.SECRET_VULNERABILITY))
40+
.severities(Collections.singletonList(RuleSeverity.CRITICAL))
41+
.triggerSource(TriggerSource.SECURITY_FINDINGS))
42+
.targets(Collections.singletonList("@john.doe@email.com"))
43+
.timeAggregation(86400L))
44+
.type(NotificationRulesType.NOTIFICATION_RULES));
45+
46+
try {
47+
NotificationRuleResponse result = apiInstance.createVulnerabilityNotificationRule(body);
48+
System.out.println(result);
49+
} catch (ApiException e) {
50+
System.err.println(
51+
"Exception when calling SecurityMonitoringApi#createVulnerabilityNotificationRule");
52+
System.err.println("Status code: " + e.getCode());
53+
System.err.println("Reason: " + e.getResponseBody());
54+
System.err.println("Response headers: " + e.getResponseHeaders());
55+
e.printStackTrace();
56+
}
57+
}
58+
}

src/main/java/com/datadog/api/client/v2/model/RuleTypesItems.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
* signal_correlation, cloud_configuration and infrastructure_configuration. Vulnerability-based
2525
* notification rules can filter vulnerabilities based on rule types application_code_vulnerability,
2626
* application_library_vulnerability, attack_path, container_image_vulnerability, identity_risk,
27-
* misconfiguration, api_security, host_vulnerability and iac_misconfiguration.
27+
* misconfiguration, api_security, host_vulnerability, iac_misconfiguration, sast_vulnerability and
28+
* secret_vulnerability.
2829
*/
2930
@JsonSerialize(using = RuleTypesItems.RuleTypesItemsSerializer.class)
3031
public class RuleTypesItems extends ModelEnum<String> {
@@ -46,7 +47,9 @@ public class RuleTypesItems extends ModelEnum<String> {
4647
"misconfiguration",
4748
"api_security",
4849
"host_vulnerability",
49-
"iac_misconfiguration"));
50+
"iac_misconfiguration",
51+
"sast_vulnerability",
52+
"secret_vulnerability"));
5053

5154
public static final RuleTypesItems APPLICATION_SECURITY =
5255
new RuleTypesItems("application_security");
@@ -70,6 +73,9 @@ public class RuleTypesItems extends ModelEnum<String> {
7073
public static final RuleTypesItems HOST_VULNERABILITY = new RuleTypesItems("host_vulnerability");
7174
public static final RuleTypesItems IAC_MISCONFIGURATION =
7275
new RuleTypesItems("iac_misconfiguration");
76+
public static final RuleTypesItems SAST_VULNERABILITY = new RuleTypesItems("sast_vulnerability");
77+
public static final RuleTypesItems SECRET_VULNERABILITY =
78+
new RuleTypesItems("secret_vulnerability");
7379

7480
RuleTypesItems(String value) {
7581
super(value, allowedValues);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2026-04-16T13:47:18.057Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
[
2+
{
3+
"httpRequest": {
4+
"body": {
5+
"type": "JSON",
6+
"json": "{\"data\":{\"attributes\":{\"enabled\":true,\"name\":\"Test-Create_a_new_vulnerability_based_notification_rule_with_sast_and_secret_rule_types_returns_Successfu-1776347238\",\"selectors\":{\"query\":\"(source:production_service OR env:prod)\",\"rule_types\":[\"sast_vulnerability\",\"secret_vulnerability\"],\"severities\":[\"critical\"],\"trigger_source\":\"security_findings\"},\"targets\":[\"@john.doe@email.com\"],\"time_aggregation\":86400},\"type\":\"notification_rules\"}}"
7+
},
8+
"headers": {},
9+
"method": "POST",
10+
"path": "/api/v2/security/vulnerabilities/notification_rules",
11+
"keepAlive": false,
12+
"secure": true
13+
},
14+
"httpResponse": {
15+
"body": "{\"data\":{\"id\":\"exz-ipg-n1m\",\"type\":\"notification_rules\",\"attributes\":{\"created_at\":1776347239287,\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"enabled\":true,\"modified_at\":1776347239287,\"modified_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"name\":\"Test-Create_a_new_vulnerability_based_notification_rule_with_sast_and_secret_rule_types_returns_Successfu-1776347238\",\"selectors\":{\"severities\":[\"critical\"],\"rule_types\":[\"sast_vulnerability\",\"secret_vulnerability\"],\"query\":\"(source:production_service OR env:prod)\",\"trigger_source\":\"security_findings\"},\"targets\":[\"@john.doe@email.com\"],\"time_aggregation\":86400,\"version\":1}}}",
16+
"headers": {
17+
"Content-Type": [
18+
"application/vnd.api+json"
19+
]
20+
},
21+
"statusCode": 201,
22+
"reasonPhrase": "Created"
23+
},
24+
"times": {
25+
"remainingTimes": 1
26+
},
27+
"timeToLive": {
28+
"unlimited": true
29+
},
30+
"id": "c063ba47-07a3-14ad-0932-fc744f457fd5"
31+
},
32+
{
33+
"httpRequest": {
34+
"headers": {},
35+
"method": "DELETE",
36+
"path": "/api/v2/security/vulnerabilities/notification_rules/exz-ipg-n1m",
37+
"keepAlive": false,
38+
"secure": true
39+
},
40+
"httpResponse": {
41+
"headers": {},
42+
"statusCode": 204,
43+
"reasonPhrase": "No Content"
44+
},
45+
"times": {
46+
"remainingTimes": 1
47+
},
48+
"timeToLive": {
49+
"unlimited": true
50+
},
51+
"id": "9dbd8db3-f734-efcb-f0da-5e234a383dd7"
52+
}
53+
]

src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,13 @@ Feature: Security Monitoring
591591
When the request is sent
592592
Then the response status is 201 Successfully created the notification rule.
593593

594+
@team:DataDog/cloud-security-posture-management
595+
Scenario: Create a new vulnerability-based notification rule with sast and secret rule types returns "Successfully created the notification rule." response
596+
Given new "CreateVulnerabilityNotificationRule" request
597+
And body with value {"data": {"attributes": {"enabled": true, "name": "{{ unique }}", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["sast_vulnerability", "secret_vulnerability"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}}
598+
When the request is sent
599+
Then the response status is 201 Successfully created the notification rule.
600+
594601
@team:DataDog/k9-cloud-siem
595602
Scenario: Create a scheduled detection rule returns "OK" response
596603
Given new "CreateSecurityMonitoringRule" request

0 commit comments

Comments
 (0)