Skip to content

Commit b6ce78f

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Added optional field filters when creating a cloud configuration rule (#1902)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 1a084b8 commit b6ce78f

File tree

7 files changed

+69
-12
lines changed

7 files changed

+69
-12
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.5",
7-
"regenerated": "2023-07-19 18:05:03.712229",
8-
"spec_repo_commit": "e9066fe1"
7+
"regenerated": "2023-07-20 14:24:42.709002",
8+
"spec_repo_commit": "878f93fe"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.5",
12-
"regenerated": "2023-07-19 18:05:03.728984",
13-
"spec_repo_commit": "e9066fe1"
12+
"regenerated": "2023-07-20 14:24:42.721852",
13+
"spec_repo_commit": "878f93fe"
1414
}
1515
}
1616
}

.generator/schemas/v2/openapi.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2696,6 +2696,12 @@ components:
26962696
type: array
26972697
complianceSignalOptions:
26982698
$ref: '#/components/schemas/CloudConfigurationRuleComplianceSignalOptions'
2699+
filters:
2700+
description: Additional queries to filter matched events before they are
2701+
processed.
2702+
items:
2703+
$ref: '#/components/schemas/SecurityMonitoringFilter'
2704+
type: array
26992705
isEnabled:
27002706
description: Whether the rule is enabled.
27012707
example: true

examples/v2/security-monitoring/CreateSecurityMonitoringRule_1092490364.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@
1010
import com.datadog.api.client.v2.model.CloudConfigurationRuleCreatePayload;
1111
import com.datadog.api.client.v2.model.CloudConfigurationRuleOptions;
1212
import com.datadog.api.client.v2.model.CloudConfigurationRuleType;
13+
import com.datadog.api.client.v2.model.SecurityMonitoringFilter;
14+
import com.datadog.api.client.v2.model.SecurityMonitoringFilterAction;
1315
import com.datadog.api.client.v2.model.SecurityMonitoringRuleCreatePayload;
1416
import com.datadog.api.client.v2.model.SecurityMonitoringRuleResponse;
1517
import com.datadog.api.client.v2.model.SecurityMonitoringRuleSeverity;
18+
import java.util.Arrays;
1619
import java.util.Collections;
1720

1821
public class Example {
@@ -50,7 +53,15 @@ public static void main(String[] args) {
5053
.complianceSignalOptions(
5154
new CloudConfigurationRuleComplianceSignalOptions()
5255
.userActivationStatus(true)
53-
.userGroupByFields(Collections.singletonList("@account_id"))));
56+
.userGroupByFields(Collections.singletonList("@account_id")))
57+
.filters(
58+
Arrays.asList(
59+
new SecurityMonitoringFilter()
60+
.action(SecurityMonitoringFilterAction.REQUIRE)
61+
.query("resource_id:helo*"),
62+
new SecurityMonitoringFilter()
63+
.action(SecurityMonitoringFilterAction.SUPPRESS)
64+
.query("control:helo*"))));
5465

5566
try {
5667
SecurityMonitoringRuleResponse result = apiInstance.createSecurityMonitoringRule(body);

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
@JsonPropertyOrder({
2424
CloudConfigurationRuleCreatePayload.JSON_PROPERTY_CASES,
2525
CloudConfigurationRuleCreatePayload.JSON_PROPERTY_COMPLIANCE_SIGNAL_OPTIONS,
26+
CloudConfigurationRuleCreatePayload.JSON_PROPERTY_FILTERS,
2627
CloudConfigurationRuleCreatePayload.JSON_PROPERTY_IS_ENABLED,
2728
CloudConfigurationRuleCreatePayload.JSON_PROPERTY_MESSAGE,
2829
CloudConfigurationRuleCreatePayload.JSON_PROPERTY_NAME,
@@ -40,6 +41,9 @@ public class CloudConfigurationRuleCreatePayload {
4041
public static final String JSON_PROPERTY_COMPLIANCE_SIGNAL_OPTIONS = "complianceSignalOptions";
4142
private CloudConfigurationRuleComplianceSignalOptions complianceSignalOptions;
4243

44+
public static final String JSON_PROPERTY_FILTERS = "filters";
45+
private List<SecurityMonitoringFilter> filters = null;
46+
4347
public static final String JSON_PROPERTY_IS_ENABLED = "isEnabled";
4448
private Boolean isEnabled;
4549

@@ -135,6 +139,39 @@ public void setComplianceSignalOptions(
135139
this.complianceSignalOptions = complianceSignalOptions;
136140
}
137141

142+
public CloudConfigurationRuleCreatePayload filters(List<SecurityMonitoringFilter> filters) {
143+
this.filters = filters;
144+
for (SecurityMonitoringFilter item : filters) {
145+
this.unparsed |= item.unparsed;
146+
}
147+
return this;
148+
}
149+
150+
public CloudConfigurationRuleCreatePayload addFiltersItem(SecurityMonitoringFilter filtersItem) {
151+
if (this.filters == null) {
152+
this.filters = new ArrayList<>();
153+
}
154+
this.filters.add(filtersItem);
155+
this.unparsed |= filtersItem.unparsed;
156+
return this;
157+
}
158+
159+
/**
160+
* Additional queries to filter matched events before they are processed.
161+
*
162+
* @return filters
163+
*/
164+
@jakarta.annotation.Nullable
165+
@JsonProperty(JSON_PROPERTY_FILTERS)
166+
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
167+
public List<SecurityMonitoringFilter> getFilters() {
168+
return filters;
169+
}
170+
171+
public void setFilters(List<SecurityMonitoringFilter> filters) {
172+
this.filters = filters;
173+
}
174+
138175
public CloudConfigurationRuleCreatePayload isEnabled(Boolean isEnabled) {
139176
this.isEnabled = isEnabled;
140177
return this;
@@ -331,6 +368,7 @@ public boolean equals(Object o) {
331368
&& Objects.equals(
332369
this.complianceSignalOptions,
333370
cloudConfigurationRuleCreatePayload.complianceSignalOptions)
371+
&& Objects.equals(this.filters, cloudConfigurationRuleCreatePayload.filters)
334372
&& Objects.equals(this.isEnabled, cloudConfigurationRuleCreatePayload.isEnabled)
335373
&& Objects.equals(this.message, cloudConfigurationRuleCreatePayload.message)
336374
&& Objects.equals(this.name, cloudConfigurationRuleCreatePayload.name)
@@ -346,6 +384,7 @@ public int hashCode() {
346384
return Objects.hash(
347385
cases,
348386
complianceSignalOptions,
387+
filters,
349388
isEnabled,
350389
message,
351390
name,
@@ -363,6 +402,7 @@ public String toString() {
363402
sb.append(" complianceSignalOptions: ")
364403
.append(toIndentedString(complianceSignalOptions))
365404
.append("\n");
405+
sb.append(" filters: ").append(toIndentedString(filters)).append("\n");
366406
sb.append(" isEnabled: ").append(toIndentedString(isEnabled)).append("\n");
367407
sb.append(" message: ").append(toIndentedString(message)).append("\n");
368408
sb.append(" name: ").append(toIndentedString(name)).append("\n");
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2022-12-16T18:53:53.418Z
1+
2023-07-20T12:27:33.661Z

src/test/resources/cassettes/features/v2/Create_a_cloud_configuration_rule_returns_OK_response.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"httpRequest": {
44
"body": {
55
"type": "JSON",
6-
"json": "{\"cases\":[{\"notifications\":[\"channel\"],\"status\":\"info\"}],\"complianceSignalOptions\":{\"userActivationStatus\":true,\"userGroupByFields\":[\"@account_id\"]},\"isEnabled\":false,\"message\":\"ddd\",\"name\":\"Test-Create_a_cloud_configuration_rule_returns_OK_response-1671216833_cloud\",\"options\":{\"complianceRuleOptions\":{\"complexRule\":false,\"regoRule\":{\"policy\":\"package datadog\\n\",\"resourceTypes\":[\"gcp_compute_disk\"]},\"resourceType\":\"gcp_compute_disk\"}},\"tags\":[\"my:tag\"],\"type\":\"cloud_configuration\"}"
6+
"json": "{\"cases\":[{\"notifications\":[\"channel\"],\"status\":\"info\"}],\"complianceSignalOptions\":{\"userActivationStatus\":true,\"userGroupByFields\":[\"@account_id\"]},\"filters\":[{\"action\":\"require\",\"query\":\"resource_id:helo*\"},{\"action\":\"suppress\",\"query\":\"control:helo*\"}],\"isEnabled\":false,\"message\":\"ddd\",\"name\":\"Test-Create_a_cloud_configuration_rule_returns_OK_response-1689856053_cloud\",\"options\":{\"complianceRuleOptions\":{\"complexRule\":false,\"regoRule\":{\"policy\":\"package datadog\\n\",\"resourceTypes\":[\"gcp_compute_disk\"]},\"resourceType\":\"gcp_compute_disk\"}},\"tags\":[\"my:tag\"],\"type\":\"cloud_configuration\"}"
77
},
88
"headers": {},
99
"method": "POST",
@@ -12,7 +12,7 @@
1212
"secure": true
1313
},
1414
"httpResponse": {
15-
"body": "{\"creationAuthorId\":1445416,\"tags\":[\"my:tag\"],\"type\":\"cloud_configuration\",\"isEnabled\":false,\"hasExtendedTitle\":true,\"message\":\"ddd\",\"options\":{\"detectionMethod\":\"threshold\",\"evaluationWindow\":7200,\"maxSignalDuration\":86400,\"complianceRuleOptions\":{\"resourceType\":\"gcp_compute_disk\",\"regoRule\":{\"policy\":\"package datadog\\n\",\"resourceTypes\":[\"gcp_compute_disk\"]},\"complexRule\":false},\"keepAlive\":21600},\"version\":1,\"createdAt\":1671216834196,\"filters\":[],\"queries\":[{\"query\":\"resource_type:gcp_compute_disk\",\"groupByFields\":[\"resource_type\",\"resource_id\"],\"aggregation\":\"count\",\"name\":\"a\",\"distinctFields\":[]}],\"isDeleted\":false,\"complianceSignalOptions\":{\"defaultActivationStatus\":null,\"userActivationStatus\":true,\"defaultGroupByFields\":null,\"userGroupByFields\":[\"@account_id\"]},\"cases\":[{\"status\":\"info\",\"notifications\":[\"channel\"],\"name\":\"\",\"condition\":\"a > 0\"}],\"id\":\"fat-bma-9yo\",\"isDefault\":false,\"name\":\"Test-Create_a_cloud_configuration_rule_returns_OK_response-1671216833_cloud\"}\n",
15+
"body": "{\"id\":\"rmr-xkf-scr\",\"version\":1,\"name\":\"Test-Create_a_cloud_configuration_rule_returns_OK_response-1689856053_cloud\",\"createdAt\":1689856054469,\"creationAuthorId\":1445416,\"isDefault\":false,\"isEnabled\":false,\"isDeleted\":false,\"isDeprecated\":false,\"queries\":[{\"query\":\"resource_type:gcp_compute_disk\",\"groupByFields\":[\"resource_type\",\"resource_id\"],\"distinctFields\":[],\"aggregation\":\"count\",\"name\":\"a\"}],\"options\":{\"keepAlive\":21600,\"maxSignalDuration\":86400,\"detectionMethod\":\"threshold\",\"evaluationWindow\":7200,\"complianceRuleOptions\":{\"resourceType\":\"gcp_compute_disk\",\"regoRule\":{\"policy\":\"package datadog\\n\",\"resourceTypes\":[\"gcp_compute_disk\"]},\"complexRule\":false}},\"complianceSignalOptions\":{\"defaultActivationStatus\":null,\"defaultGroupByFields\":null,\"userActivationStatus\":true,\"userGroupByFields\":[\"@account_id\"]},\"cases\":[{\"condition\":\"a > 0\",\"name\":\"\",\"status\":\"info\",\"notifications\":[\"channel\"]}],\"message\":\"ddd\",\"tags\":[\"my:tag\"],\"hasExtendedTitle\":true,\"type\":\"cloud_configuration\",\"filters\":[{\"action\":\"require\",\"query\":\"resource_id:helo*\"},{\"action\":\"suppress\",\"query\":\"control:helo*\"}]}\n",
1616
"headers": {
1717
"Content-Type": [
1818
"application/json"
@@ -27,13 +27,13 @@
2727
"timeToLive": {
2828
"unlimited": true
2929
},
30-
"id": "d06540ca-e8aa-cb41-1cd0-62b8c1919a24"
30+
"id": "242acd1f-1aa8-dce4-04b8-00b78709e4a4"
3131
},
3232
{
3333
"httpRequest": {
3434
"headers": {},
3535
"method": "DELETE",
36-
"path": "/api/v2/security_monitoring/rules/fat-bma-9yo",
36+
"path": "/api/v2/security_monitoring/rules/rmr-xkf-scr",
3737
"keepAlive": false,
3838
"secure": true
3939
},
@@ -48,6 +48,6 @@
4848
"timeToLive": {
4949
"unlimited": true
5050
},
51-
"id": "578b9528-6605-978c-f0b8-3aad6a998b79"
51+
"id": "fcc1c54c-47a8-bc3f-4da5-4d41c1afd208"
5252
}
5353
]

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Feature: Security Monitoring
5858
@team:DataDog/k9-cloud-security-platform
5959
Scenario: Create a cloud_configuration rule returns "OK" response
6060
Given new "CreateSecurityMonitoringRule" request
61-
And body with value {"type":"cloud_configuration","name":"{{ unique }}_cloud","isEnabled":false,"cases":[{"status":"info","notifications":["channel"]}],"options":{"complianceRuleOptions":{"resourceType":"gcp_compute_disk","complexRule": false,"regoRule":{"policy":"package datadog\n","resourceTypes":["gcp_compute_disk"]}}},"message":"ddd","tags":["my:tag"],"complianceSignalOptions":{"userActivationStatus":true,"userGroupByFields":["@account_id"]}}
61+
And body with value {"type":"cloud_configuration","name":"{{ unique }}_cloud","isEnabled":false,"cases":[{"status":"info","notifications":["channel"]}],"options":{"complianceRuleOptions":{"resourceType":"gcp_compute_disk","complexRule": false,"regoRule":{"policy":"package datadog\n","resourceTypes":["gcp_compute_disk"]}}},"message":"ddd","tags":["my:tag"],"complianceSignalOptions":{"userActivationStatus":true,"userGroupByFields":["@account_id"]},"filters":[{"action":"require","query":"resource_id:helo*"},{"action":"suppress","query":"control:helo*"}]}
6262
When the request is sent
6363
Then the response status is 200 OK
6464
And the response "name" is equal to "{{ unique }}_cloud"

0 commit comments

Comments
 (0)