Skip to content

Commit 2655e74

Browse files
author
ci.datadog-api-spec
committed
Regenerate client from commit f914b1d of spec repo
1 parent acc6f05 commit 2655e74

9 files changed

Lines changed: 316 additions & 1 deletion

.generator/schemas/v2/openapi.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47128,6 +47128,8 @@ components:
4712847128
properties:
4712947129
forgetAfter:
4713047130
$ref: '#/components/schemas/SecurityMonitoringRuleNewValueOptionsForgetAfter'
47131+
instantaneousBaseline:
47132+
$ref: '#/components/schemas/SecurityMonitoringRuleNewValueOptionsInstantaneousBaseline'
4713147133
learningDuration:
4713247134
$ref: '#/components/schemas/SecurityMonitoringRuleNewValueOptionsLearningDuration'
4713347135
learningMethod:
@@ -47153,6 +47155,15 @@ components:
4715347155
- TWO_WEEKS
4715447156
- THREE_WEEKS
4715547157
- FOUR_WEEKS
47158+
SecurityMonitoringRuleNewValueOptionsInstantaneousBaseline:
47159+
description: 'If true, every time Datadog learns a new group-by value, it takes
47160+
old matching values within the learning window and builds the baseline with
47161+
it.
47162+
47163+
Therefore, it attempts to build the baseline swiftly using existing values
47164+
instead of learning them over time.'
47165+
example: false
47166+
type: boolean
4715647167
SecurityMonitoringRuleNewValueOptionsLearningDuration:
4715747168
default: 0
4715847169
description: 'The duration in days during which values are learned, and after
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
// Create a detection rule with type 'new_value' with 'instantaneousBaseline' enabled returns "OK"
2+
// response
3+
4+
import com.datadog.api.client.ApiClient;
5+
import com.datadog.api.client.ApiException;
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.SecurityMonitoringRuleCreatePayload;
9+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleDetectionMethod;
10+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleEvaluationWindow;
11+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleKeepAlive;
12+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleMaxSignalDuration;
13+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleNewValueOptions;
14+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleNewValueOptionsForgetAfter;
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.SecurityMonitoringRuleResponse;
21+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleSeverity;
22+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleTypeCreate;
23+
import com.datadog.api.client.v2.model.SecurityMonitoringStandardDataSource;
24+
import com.datadog.api.client.v2.model.SecurityMonitoringStandardRuleCreatePayload;
25+
import com.datadog.api.client.v2.model.SecurityMonitoringStandardRuleQuery;
26+
import java.util.Collections;
27+
28+
public class Example {
29+
public static void main(String[] args) {
30+
ApiClient defaultClient = ApiClient.getDefaultApiClient();
31+
SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient);
32+
33+
SecurityMonitoringRuleCreatePayload body =
34+
new SecurityMonitoringRuleCreatePayload(
35+
new SecurityMonitoringStandardRuleCreatePayload()
36+
.name("Example-Security-Monitoring")
37+
.queries(
38+
Collections.singletonList(
39+
new SecurityMonitoringStandardRuleQuery()
40+
.query("source:source_here")
41+
.groupByFields(Collections.singletonList("@userIdentity.assumed_role"))
42+
.metric("name")
43+
.metrics(Collections.singletonList("name"))
44+
.aggregation(SecurityMonitoringRuleQueryAggregation.NEW_VALUE)
45+
.name("")
46+
.dataSource(SecurityMonitoringStandardDataSource.LOGS)))
47+
.cases(
48+
Collections.singletonList(
49+
new SecurityMonitoringRuleCaseCreate()
50+
.name("")
51+
.status(SecurityMonitoringRuleSeverity.INFO)))
52+
.options(
53+
new SecurityMonitoringRuleOptions()
54+
.evaluationWindow(SecurityMonitoringRuleEvaluationWindow.ZERO_MINUTES)
55+
.keepAlive(SecurityMonitoringRuleKeepAlive.FIVE_MINUTES)
56+
.maxSignalDuration(SecurityMonitoringRuleMaxSignalDuration.TEN_MINUTES)
57+
.detectionMethod(SecurityMonitoringRuleDetectionMethod.NEW_VALUE)
58+
.newValueOptions(
59+
new SecurityMonitoringRuleNewValueOptions()
60+
.forgetAfter(
61+
SecurityMonitoringRuleNewValueOptionsForgetAfter.ONE_WEEK)
62+
.instantaneousBaseline(true)
63+
.learningDuration(
64+
SecurityMonitoringRuleNewValueOptionsLearningDuration.ONE_DAY)
65+
.learningThreshold(
66+
SecurityMonitoringRuleNewValueOptionsLearningThreshold
67+
.ZERO_OCCURRENCES)
68+
.learningMethod(
69+
SecurityMonitoringRuleNewValueOptionsLearningMethod.DURATION)))
70+
.message("Test rule")
71+
.isEnabled(true)
72+
.type(SecurityMonitoringRuleTypeCreate.LOG_DETECTION));
73+
74+
try {
75+
SecurityMonitoringRuleResponse result = apiInstance.createSecurityMonitoringRule(body);
76+
System.out.println(result);
77+
} catch (ApiException e) {
78+
System.err.println(
79+
"Exception when calling SecurityMonitoringApi#createSecurityMonitoringRule");
80+
System.err.println("Status code: " + e.getCode());
81+
System.err.println("Reason: " + e.getResponseBody());
82+
System.err.println("Response headers: " + e.getResponseHeaders());
83+
e.printStackTrace();
84+
}
85+
}
86+
}
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:33:04.674Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
[
2+
{
3+
"httpRequest": {
4+
"body": {
5+
"type": "JSON",
6+
"json": "{\"cases\":[{\"name\":\"\",\"notifications\":[],\"status\":\"info\"}],\"filters\":[],\"isEnabled\":true,\"message\":\"Test rule\",\"name\":\"Test-Create_a_detection_rule_with_type_new_value_with_instantaneousBaseline_enabled_returns_OK_response-1765200784\",\"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\":[],\"type\":\"log_detection\"}"
7+
},
8+
"headers": {},
9+
"method": "POST",
10+
"path": "/api/v2/security_monitoring/rules",
11+
"keepAlive": false,
12+
"secure": true
13+
},
14+
"httpResponse": {
15+
"body": "{\"name\":\"Test-Create_a_detection_rule_with_type_new_value_with_instantaneousBaseline_enabled_returns_OK_response-1765200784\",\"createdAt\":1765200785065,\"isDefault\":false,\"isPartner\":false,\"isEnabled\":true,\"isBeta\":false,\"isDeleted\":false,\"isDeprecated\":false,\"queries\":[{\"query\":\"source:source_here\",\"groupByFields\":[\"@userIdentity.assumed_role\"],\"hasOptionalGroupByFields\":false,\"distinctFields\":[],\"metric\":\"name\",\"metrics\":[\"name\"],\"aggregation\":\"new_value\",\"name\":\"\",\"dataSource\":\"logs\"}],\"options\":{\"evaluationWindow\":0,\"detectionMethod\":\"new_value\",\"maxSignalDuration\":600,\"keepAlive\":300,\"newValueOptions\":{\"forgetAfter\":7,\"learningDuration\":1,\"learningThreshold\":0,\"learningMethod\":\"duration\",\"instantaneousBaseline\":true,\"instantaneousBaselineTimeoutMinutes\":30}},\"cases\":[{\"name\":\"\",\"status\":\"info\",\"notifications\":[]}],\"message\":\"Test rule\",\"tags\":[],\"hasExtendedTitle\":false,\"type\":\"log_detection\",\"filters\":[],\"version\":1,\"id\":\"3gy-3te-j5o\",\"blocking\":false,\"metadata\":{\"entities\":null,\"sources\":null},\"creationAuthorId\":1445416,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"updater\":{\"handle\":\"\",\"name\":\"\"}}",
16+
"headers": {
17+
"Content-Type": [
18+
"application/json"
19+
]
20+
},
21+
"statusCode": 200,
22+
"reasonPhrase": "OK"
23+
},
24+
"times": {
25+
"remainingTimes": 1
26+
},
27+
"timeToLive": {
28+
"unlimited": true
29+
},
30+
"id": "eafecefa-b2c7-455a-664b-33534f1cdbaf"
31+
},
32+
{
33+
"httpRequest": {
34+
"headers": {},
35+
"method": "DELETE",
36+
"path": "/api/v2/security_monitoring/rules/3gy-3te-j5o",
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": "0c96e628-ee26-7d20-48cd-7968e316812d"
52+
}
53+
]
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+
]

0 commit comments

Comments
 (0)