Skip to content

Commit 1bad62c

Browse files
author
ci.datadog-api-spec
committed
Regenerate client from commit f8c068d of spec repo
1 parent 4a5c7fa commit 1bad62c

File tree

6 files changed

+165
-1
lines changed

6 files changed

+165
-1
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47194,6 +47194,8 @@ components:
4719447194
properties:
4719547195
forgetAfter:
4719647196
$ref: '#/components/schemas/SecurityMonitoringRuleNewValueOptionsForgetAfter'
47197+
instantaneousBaseline:
47198+
$ref: '#/components/schemas/SecurityMonitoringRuleNewValueOptionsInstantaneousBaseline'
4719747199
learningDuration:
4719847200
$ref: '#/components/schemas/SecurityMonitoringRuleNewValueOptionsLearningDuration'
4719947201
learningMethod:
@@ -47219,6 +47221,15 @@ components:
4721947221
- TWO_WEEKS
4722047222
- THREE_WEEKS
4722147223
- FOUR_WEEKS
47224+
SecurityMonitoringRuleNewValueOptionsInstantaneousBaseline:
47225+
description: 'If true, every time Datadog learns a new group-by value, it takes
47226+
old matching values within the learning window and builds the baseline with
47227+
it.
47228+
47229+
Therefore, it attempts to build the baseline swiftly using existing values
47230+
instead of learning them over time.'
47231+
example: false
47232+
type: boolean
4722247233
SecurityMonitoringRuleNewValueOptionsLearningDuration:
4722347234
default: 0
4722447235
description: 'The duration in days during which values are learned, and after
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
// Validate a detection rule with detection method 'new_value' with enabled feature 'instantaneousBaseline' returns "OK"
2+
response
3+
4+
import com.datadog.api.client.ApiException;
5+
import com.datadog.api.client.ApiClient;
6+
import com.datadog.api.client.v2.api.SecurityMonitoringApi;
7+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleCaseCreate;
8+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleDetectionMethod;
9+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleEvaluationWindow;
10+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleKeepAlive;
11+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleMaxSignalDuration;
12+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleNewValueOptions;
13+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleNewValueOptionsForgetAfter;
14+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleNewValueOptionsInstantaneousBaseline;
15+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleNewValueOptionsLearningDuration;
16+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleNewValueOptionsLearningMethod;
17+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleNewValueOptionsLearningThreshold;
18+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleOptions;
19+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleQueryAggregation;
20+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleSeverity;
21+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleTypeCreate;
22+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleValidatePayload;
23+
import com.datadog.api.client.v2.model.SecurityMonitoringStandardDataSource;
24+
import com.datadog.api.client.v2.model.SecurityMonitoringStandardRulePayload;
25+
import com.datadog.api.client.v2.model.SecurityMonitoringStandardRuleQuery;
26+
import java.io.File;
27+
import java.time.OffsetDateTime;
28+
import java.util.Arrays;
29+
import java.util.Collections;
30+
import java.util.List;
31+
import java.util.Map;
32+
import java.util.UUID;
33+
34+
public class Example {
35+
public static void main(String[] args) {
36+
ApiClient defaultClient = ApiClient.getDefaultApiClient();
37+
SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient);
38+
39+
SecurityMonitoringRuleValidatePayload body = new SecurityMonitoringRuleValidatePayload(
40+
new SecurityMonitoringStandardRulePayload()
41+
.cases(Collections.singletonList(new SecurityMonitoringRuleCaseCreate()
42+
.name("")
43+
.status(SecurityMonitoringRuleSeverity.INFO)))
44+
.hasExtendedTitle(true)
45+
.isEnabled(true)
46+
.message("My security monitoring rule")
47+
.name("My security monitoring rule")
48+
.options(new SecurityMonitoringRuleOptions()
49+
.evaluationWindow(SecurityMonitoringRuleEvaluationWindow.ZERO_MINUTES)
50+
.keepAlive(SecurityMonitoringRuleKeepAlive.FIVE_MINUTES)
51+
.maxSignalDuration(SecurityMonitoringRuleMaxSignalDuration.TEN_MINUTES)
52+
.detectionMethod(SecurityMonitoringRuleDetectionMethod.NEW_VALUE)
53+
.newValueOptions(new SecurityMonitoringRuleNewValueOptions()
54+
.forgetAfter(SecurityMonitoringRuleNewValueOptionsForgetAfter.ONE_WEEK)
55+
.instantaneousBaseline(true)
56+
.learningDuration(SecurityMonitoringRuleNewValueOptionsLearningDuration.ONE_DAY)
57+
.learningThreshold(SecurityMonitoringRuleNewValueOptionsLearningThreshold.ZERO_OCCURRENCES)
58+
.learningMethod(SecurityMonitoringRuleNewValueOptionsLearningMethod.DURATION)))
59+
.queries(Collections.singletonList(new SecurityMonitoringStandardRuleQuery()
60+
.query("source:source_here")
61+
.groupByFields(Collections.singletonList("@userIdentity.assumed_role"))
62+
.metric("name")
63+
.metrics(Collections.singletonList("name"))
64+
.aggregation(SecurityMonitoringRuleQueryAggregation.NEW_VALUE)
65+
.name("")
66+
.dataSource(SecurityMonitoringStandardDataSource.LOGS)))
67+
.tags(Arrays.asList("env:prod", "team:security"))
68+
.type(SecurityMonitoringRuleTypeCreate.LOG_DETECTION));
69+
70+
try {
71+
apiInstance.validateSecurityMonitoringRule(body);
72+
} catch (ApiException e) {
73+
System.err.println("Exception when calling SecurityMonitoringApi#validateSecurityMonitoringRule");
74+
System.err.println("Status code: " + e.getCode());
75+
System.err.println("Reason: " + e.getResponseBody());
76+
System.err.println("Response headers: " + e.getResponseHeaders());
77+
e.printStackTrace();
78+
}
79+
}
80+
}

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

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
/** Options on new value detection method. */
2020
@JsonPropertyOrder({
2121
SecurityMonitoringRuleNewValueOptions.JSON_PROPERTY_FORGET_AFTER,
22+
SecurityMonitoringRuleNewValueOptions.JSON_PROPERTY_INSTANTANEOUS_BASELINE,
2223
SecurityMonitoringRuleNewValueOptions.JSON_PROPERTY_LEARNING_DURATION,
2324
SecurityMonitoringRuleNewValueOptions.JSON_PROPERTY_LEARNING_METHOD,
2425
SecurityMonitoringRuleNewValueOptions.JSON_PROPERTY_LEARNING_THRESHOLD
@@ -30,6 +31,9 @@ public class SecurityMonitoringRuleNewValueOptions {
3031
public static final String JSON_PROPERTY_FORGET_AFTER = "forgetAfter";
3132
private SecurityMonitoringRuleNewValueOptionsForgetAfter forgetAfter;
3233

34+
public static final String JSON_PROPERTY_INSTANTANEOUS_BASELINE = "instantaneousBaseline";
35+
private Boolean instantaneousBaseline;
36+
3337
public static final String JSON_PROPERTY_LEARNING_DURATION = "learningDuration";
3438
private SecurityMonitoringRuleNewValueOptionsLearningDuration learningDuration =
3539
SecurityMonitoringRuleNewValueOptionsLearningDuration.ZERO_DAYS;
@@ -68,6 +72,30 @@ public void setForgetAfter(SecurityMonitoringRuleNewValueOptionsForgetAfter forg
6872
this.forgetAfter = forgetAfter;
6973
}
7074

75+
public SecurityMonitoringRuleNewValueOptions instantaneousBaseline(
76+
Boolean instantaneousBaseline) {
77+
this.instantaneousBaseline = instantaneousBaseline;
78+
return this;
79+
}
80+
81+
/**
82+
* If true, every time Datadog learns a new group-by value, it takes old matching values within
83+
* the learning window and builds the baseline with it. Therefore, it attempts to build the
84+
* baseline swiftly using existing values instead of learning them over time.
85+
*
86+
* @return instantaneousBaseline
87+
*/
88+
@jakarta.annotation.Nullable
89+
@JsonProperty(JSON_PROPERTY_INSTANTANEOUS_BASELINE)
90+
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
91+
public Boolean getInstantaneousBaseline() {
92+
return instantaneousBaseline;
93+
}
94+
95+
public void setInstantaneousBaseline(Boolean instantaneousBaseline) {
96+
this.instantaneousBaseline = instantaneousBaseline;
97+
}
98+
7199
public SecurityMonitoringRuleNewValueOptions learningDuration(
72100
SecurityMonitoringRuleNewValueOptionsLearningDuration learningDuration) {
73101
this.learningDuration = learningDuration;
@@ -210,6 +238,8 @@ public boolean equals(Object o) {
210238
SecurityMonitoringRuleNewValueOptions securityMonitoringRuleNewValueOptions =
211239
(SecurityMonitoringRuleNewValueOptions) o;
212240
return Objects.equals(this.forgetAfter, securityMonitoringRuleNewValueOptions.forgetAfter)
241+
&& Objects.equals(
242+
this.instantaneousBaseline, securityMonitoringRuleNewValueOptions.instantaneousBaseline)
213243
&& Objects.equals(
214244
this.learningDuration, securityMonitoringRuleNewValueOptions.learningDuration)
215245
&& Objects.equals(this.learningMethod, securityMonitoringRuleNewValueOptions.learningMethod)
@@ -222,14 +252,22 @@ public boolean equals(Object o) {
222252
@Override
223253
public int hashCode() {
224254
return Objects.hash(
225-
forgetAfter, learningDuration, learningMethod, learningThreshold, additionalProperties);
255+
forgetAfter,
256+
instantaneousBaseline,
257+
learningDuration,
258+
learningMethod,
259+
learningThreshold,
260+
additionalProperties);
226261
}
227262

228263
@Override
229264
public String toString() {
230265
StringBuilder sb = new StringBuilder();
231266
sb.append("class SecurityMonitoringRuleNewValueOptions {\n");
232267
sb.append(" forgetAfter: ").append(toIndentedString(forgetAfter)).append("\n");
268+
sb.append(" instantaneousBaseline: ")
269+
.append(toIndentedString(instantaneousBaseline))
270+
.append("\n");
233271
sb.append(" learningDuration: ").append(toIndentedString(learningDuration)).append("\n");
234272
sb.append(" learningMethod: ").append(toIndentedString(learningMethod)).append("\n");
235273
sb.append(" learningThreshold: ").append(toIndentedString(learningThreshold)).append("\n");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2025-12-08T13:34:07.734Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
[
2+
{
3+
"httpRequest": {
4+
"body": {
5+
"type": "JSON",
6+
"json": "{\"cases\":[{\"name\":\"\",\"notifications\":[],\"status\":\"info\"}],\"hasExtendedTitle\":true,\"isEnabled\":true,\"message\":\"My security monitoring rule\",\"name\":\"My security monitoring rule\",\"options\":{\"detectionMethod\":\"new_value\",\"evaluationWindow\":0,\"keepAlive\":300,\"maxSignalDuration\":600,\"newValueOptions\":{\"forgetAfter\":7,\"instantaneousBaseline\":true,\"learningDuration\":1,\"learningMethod\":\"duration\",\"learningThreshold\":0}},\"queries\":[{\"aggregation\":\"new_value\",\"dataSource\":\"logs\",\"distinctFields\":[],\"groupByFields\":[\"@userIdentity.assumed_role\"],\"metric\":\"name\",\"metrics\":[\"name\"],\"name\":\"\",\"query\":\"source:source_here\"}],\"tags\":[\"env:prod\",\"team:security\"],\"type\":\"log_detection\"}"
7+
},
8+
"headers": {},
9+
"method": "POST",
10+
"path": "/api/v2/security_monitoring/rules/validation",
11+
"keepAlive": false,
12+
"secure": true
13+
},
14+
"httpResponse": {
15+
"headers": {},
16+
"statusCode": 204,
17+
"reasonPhrase": "No Content"
18+
},
19+
"times": {
20+
"remainingTimes": 1
21+
},
22+
"timeToLive": {
23+
"unlimited": true
24+
},
25+
"id": "cbc72101-0d20-de2d-84fc-d5191be021fe"
26+
}
27+
]

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
@@ -1797,6 +1797,13 @@ Feature: Security Monitoring
17971797
When the request is sent
17981798
Then the response status is 204 OK
17991799

1800+
@team:DataDog/k9-cloud-security-platform
1801+
Scenario: Validate a detection rule with detection method 'new_value' with enabled feature 'instantaneousBaseline' returns "OK" response
1802+
Given new "ValidateSecurityMonitoringRule" request
1803+
And body with value {"cases":[{"name":"","status":"info","notifications":[]}],"hasExtendedTitle":true,"isEnabled":true,"message":"My security monitoring rule","name":"My security monitoring rule","options":{"evaluationWindow":0,"keepAlive":300,"maxSignalDuration":600,"detectionMethod":"new_value","newValueOptions":{"forgetAfter":7,"instantaneousBaseline":true,"learningDuration":1,"learningThreshold":0,"learningMethod":"duration"}},"queries":[{"query":"source:source_here","groupByFields":["@userIdentity.assumed_role"],"distinctFields":[],"metric":"name","metrics":["name"],"aggregation":"new_value","name":"","dataSource":"logs"}],"tags":["env:prod","team:security"],"type":"log_detection"}
1804+
When the request is sent
1805+
Then the response status is 204 OK
1806+
18001807
@team:DataDog/k9-cloud-security-platform
18011808
Scenario: Validate a detection rule with detection method 'sequence_detection' returns "OK" response
18021809
Given new "ValidateSecurityMonitoringRule" request

0 commit comments

Comments
 (0)