Skip to content

Commit 4e91ddc

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Flag IP case action (#2539)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 7a0c3af commit 4e91ddc

File tree

11 files changed

+72
-16
lines changed

11 files changed

+72
-16
lines changed

.generated-info

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"spec_repo_commit": "06ccc32",
3-
"generated": "2025-07-21 13:56:34.429"
2+
"spec_repo_commit": "8ca2883",
3+
"generated": "2025-07-22 07:16:03.042"
44
}

.generator/schemas/v2/openapi.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34296,9 +34296,22 @@ components:
3429634296
format: int64
3429734297
minimum: 0
3429834298
type: integer
34299+
flaggedIPType:
34300+
$ref: '#/components/schemas/SecurityMonitoringRuleCaseActionOptionsFlaggedIPType'
3429934301
userBehaviorName:
3430034302
$ref: '#/components/schemas/SecurityMonitoringRuleCaseActionOptionsUserBehaviorName'
3430134303
type: object
34304+
SecurityMonitoringRuleCaseActionOptionsFlaggedIPType:
34305+
description: Used with the case action of type 'flag_ip'. The value specified
34306+
in this field is applied as a flag to the IP addresses.
34307+
enum:
34308+
- SUSPICIOUS
34309+
- FLAGGED
34310+
example: FLAGGED
34311+
type: string
34312+
x-enum-varnames:
34313+
- SUSPICIOUS
34314+
- FLAGGED
3430234315
SecurityMonitoringRuleCaseActionOptionsUserBehaviorName:
3430334316
description: Used with the case action of type 'user_behavior'. The value specified
3430434317
in this field is applied as a risk tag to all users affected by the rule.
@@ -34309,11 +34322,13 @@ components:
3430934322
- block_ip
3431034323
- block_user
3431134324
- user_behavior
34325+
- flag_ip
3431234326
type: string
3431334327
x-enum-varnames:
3431434328
- BLOCK_IP
3431534329
- BLOCK_USER
3431634330
- USER_BEHAVIOR
34331+
- FLAG_IP
3431734332
SecurityMonitoringRuleCaseCreate:
3431834333
description: Case when signal is generated.
3431934334
properties:
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"2025-04-09T15:02:05.047Z"
1+
"2025-07-17T10:35:24.061Z"

cassettes/v2/Security-Monitoring_1187227211/Create-a-detection-rule-with-type-application_security-returns-OK-response_4179263030/recording.har

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
},
99
"entries": [
1010
{
11-
"_id": "2f689fb3a0a54f45bf3637e6331a9f25",
11+
"_id": "29eb6c549b50360bd2c38ca9462c0177",
1212
"_order": 0,
1313
"cache": {},
1414
"request": {
15-
"bodySize": 723,
15+
"bodySize": 780,
1616
"cookies": [],
1717
"headers": [
1818
{
@@ -32,17 +32,17 @@
3232
"postData": {
3333
"mimeType": "application/json",
3434
"params": [],
35-
"text": "{\"cases\":[{\"actions\":[{\"options\":{\"duration\":900},\"type\":\"block_ip\"},{\"options\":{\"userBehaviorName\":\"behavior\"},\"type\":\"user_behavior\"}],\"condition\":\"a > 100000\",\"name\":\"\",\"notifications\":[],\"status\":\"info\"}],\"filters\":[],\"groupSignalsBy\":[\"service\"],\"isEnabled\":true,\"message\":\"Test rule\",\"name\":\"Test-Create_a_detection_rule_with_type_application_security_returns_OK_response-1744210925_appsec_rule\",\"options\":{\"detectionMethod\":\"threshold\",\"evaluationWindow\":900,\"keepAlive\":3600,\"maxSignalDuration\":86400},\"queries\":[{\"aggregation\":\"count\",\"distinctFields\":[],\"groupByFields\":[\"service\",\"@http.client_ip\"],\"query\":\"@appsec.security_activity:business_logic.users.login.failure\"}],\"tags\":[],\"type\":\"application_security\"}"
35+
"text": "{\"cases\":[{\"actions\":[{\"options\":{\"duration\":900},\"type\":\"block_ip\"},{\"options\":{\"userBehaviorName\":\"behavior\"},\"type\":\"user_behavior\"},{\"options\":{\"flaggedIPType\":\"FLAGGED\"},\"type\":\"flag_ip\"}],\"condition\":\"a > 100000\",\"name\":\"\",\"notifications\":[],\"status\":\"info\"}],\"filters\":[],\"groupSignalsBy\":[\"service\"],\"isEnabled\":true,\"message\":\"Test rule\",\"name\":\"Test-Create_a_detection_rule_with_type_application_security_returns_OK_response-1752748524_appsec_rule\",\"options\":{\"detectionMethod\":\"threshold\",\"evaluationWindow\":900,\"keepAlive\":3600,\"maxSignalDuration\":86400},\"queries\":[{\"aggregation\":\"count\",\"distinctFields\":[],\"groupByFields\":[\"service\",\"@http.client_ip\"],\"query\":\"@appsec.security_activity:business_logic.users.login.failure\"}],\"tags\":[],\"type\":\"application_security\"}"
3636
},
3737
"queryString": [],
3838
"url": "https://api.datadoghq.com/api/v2/security_monitoring/rules"
3939
},
4040
"response": {
41-
"bodySize": 1227,
41+
"bodySize": 1284,
4242
"content": {
4343
"mimeType": "application/json",
44-
"size": 1227,
45-
"text": "{\"name\":\"Test-Create_a_detection_rule_with_type_application_security_returns_OK_response-1744210925_appsec_rule\",\"createdAt\":1744210925675,\"isDefault\":false,\"isPartner\":false,\"isEnabled\":true,\"isBeta\":false,\"isDeleted\":false,\"isDeprecated\":false,\"queries\":[{\"query\":\"@appsec.security_activity:business_logic.users.login.failure\",\"groupByFields\":[\"service\",\"@http.client_ip\"],\"hasOptionalGroupByFields\":false,\"distinctFields\":[],\"aggregation\":\"count\",\"name\":\"\",\"dataSource\":\"app_sec_spans\"}],\"options\":{\"evaluationWindow\":900,\"detectionMethod\":\"threshold\",\"maxSignalDuration\":86400,\"keepAlive\":3600},\"cases\":[{\"name\":\"\",\"status\":\"info\",\"notifications\":[],\"condition\":\"a \\u003e 100000\",\"actions\":[{\"type\":\"block_ip\",\"options\":{\"duration\":900}},{\"type\":\"user_behavior\",\"options\":{\"userBehaviorName\":\"behavior\"}}]}],\"message\":\"Test rule\",\"tags\":[],\"hasExtendedTitle\":false,\"type\":\"application_security\",\"filters\":[],\"version\":1,\"id\":\"lfr-zxg-fyc\",\"blocking\":true,\"groupSignalsBy\":[\"service\"],\"dependencies\":[\"business_logic.users.login.failure\"],\"metadata\":{\"entities\":null,\"sources\":null},\"creationAuthorId\":2320499,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"updater\":{\"handle\":\"\",\"name\":\"\"}}"
44+
"size": 1284,
45+
"text": "{\"name\":\"Test-Create_a_detection_rule_with_type_application_security_returns_OK_response-1752748524_appsec_rule\",\"createdAt\":1752748524806,\"isDefault\":false,\"isPartner\":false,\"isEnabled\":true,\"isBeta\":false,\"isDeleted\":false,\"isDeprecated\":false,\"queries\":[{\"query\":\"@appsec.security_activity:business_logic.users.login.failure\",\"groupByFields\":[\"service\",\"@http.client_ip\"],\"hasOptionalGroupByFields\":false,\"distinctFields\":[],\"aggregation\":\"count\",\"name\":\"\",\"dataSource\":\"app_sec_spans\"}],\"options\":{\"evaluationWindow\":900,\"detectionMethod\":\"threshold\",\"maxSignalDuration\":86400,\"keepAlive\":3600},\"cases\":[{\"name\":\"\",\"status\":\"info\",\"notifications\":[],\"condition\":\"a \\u003e 100000\",\"actions\":[{\"type\":\"block_ip\",\"options\":{\"duration\":900}},{\"type\":\"user_behavior\",\"options\":{\"userBehaviorName\":\"behavior\"}},{\"type\":\"flag_ip\",\"options\":{\"flaggedIPType\":\"FLAGGED\"}}]}],\"message\":\"Test rule\",\"tags\":[],\"hasExtendedTitle\":false,\"type\":\"application_security\",\"filters\":[],\"version\":1,\"id\":\"wgo-lgy-ajy\",\"blocking\":true,\"groupSignalsBy\":[\"service\"],\"dependencies\":[\"business_logic.users.login.failure\"],\"metadata\":{\"entities\":null,\"sources\":null},\"creationAuthorId\":2320499,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"updater\":{\"handle\":\"\",\"name\":\"\"}}"
4646
},
4747
"cookies": [],
4848
"headers": [
@@ -57,11 +57,11 @@
5757
"status": 200,
5858
"statusText": "OK"
5959
},
60-
"startedDateTime": "2025-04-09T15:02:05.465Z",
61-
"time": 259
60+
"startedDateTime": "2025-07-17T10:35:24.741Z",
61+
"time": 100
6262
},
6363
{
64-
"_id": "a32045c85c74ebb299fe6584f15ea321",
64+
"_id": "eaf198f31c333ac309eb713901fb969e",
6565
"_order": 0,
6666
"cache": {},
6767
"request": {
@@ -78,7 +78,7 @@
7878
"httpVersion": "HTTP/1.1",
7979
"method": "DELETE",
8080
"queryString": [],
81-
"url": "https://api.datadoghq.com/api/v2/security_monitoring/rules/lfr-zxg-fyc"
81+
"url": "https://api.datadoghq.com/api/v2/security_monitoring/rules/wgo-lgy-ajy"
8282
},
8383
"response": {
8484
"bodySize": 0,
@@ -94,8 +94,8 @@
9494
"status": 204,
9595
"statusText": "No Content"
9696
},
97-
"startedDateTime": "2025-04-09T15:02:05.734Z",
98-
"time": 194
97+
"startedDateTime": "2025-07-17T10:35:24.848Z",
98+
"time": 105
9999
}
100100
],
101101
"pages": [],

examples/v2/security-monitoring/CreateSecurityMonitoringRule_1965169892.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ const params: v2.SecurityMonitoringApiCreateSecurityMonitoringRuleRequest = {
3939
userBehaviorName: "behavior",
4040
},
4141
},
42+
{
43+
type: "flag_ip",
44+
options: {
45+
flaggedIpType: "FLAGGED",
46+
},
47+
},
4248
],
4349
},
4450
],

features/v2/security_monitoring.feature

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ Feature: Security Monitoring
225225
@skip-validation @team:DataDog/k9-cloud-security-platform
226226
Scenario: Create a detection rule with type 'application_security 'returns "OK" response
227227
Given new "CreateSecurityMonitoringRule" request
228-
And body with value {"type":"application_security","name":"{{unique}}_appsec_rule","queries":[{"query":"@appsec.security_activity:business_logic.users.login.failure","aggregation":"count","groupByFields":["service","@http.client_ip"],"distinctFields":[]}],"filters":[],"cases":[{"name":"","status":"info","notifications":[],"condition":"a > 100000","actions":[{"type":"block_ip","options":{"duration":900}}, {"type":"user_behavior","options":{"userBehaviorName":"behavior"}}]}],"options":{"keepAlive":3600,"maxSignalDuration":86400,"evaluationWindow":900,"detectionMethod":"threshold"},"isEnabled":true,"message":"Test rule","tags":[],"groupSignalsBy":["service"]}
228+
And body with value {"type":"application_security","name":"{{unique}}_appsec_rule","queries":[{"query":"@appsec.security_activity:business_logic.users.login.failure","aggregation":"count","groupByFields":["service","@http.client_ip"],"distinctFields":[]}],"filters":[],"cases":[{"name":"","status":"info","notifications":[],"condition":"a > 100000","actions":[{"type":"block_ip","options":{"duration":900}}, {"type":"user_behavior","options":{"userBehaviorName":"behavior"}}, {"type":"flag_ip","options":{"flaggedIPType":"FLAGGED"}}]}],"options":{"keepAlive":3600,"maxSignalDuration":86400,"evaluationWindow":900,"detectionMethod":"threshold"},"isEnabled":true,"message":"Test rule","tags":[],"groupSignalsBy":["service"]}
229229
When the request is sent
230230
Then the response status is 200 OK
231231
And the response "name" is equal to "{{ unique }}_appsec_rule"

packages/datadog-api-client-v2/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2883,6 +2883,7 @@ export { SecurityMonitoringReferenceTable } from "./models/SecurityMonitoringRef
28832883
export { SecurityMonitoringRuleCase } from "./models/SecurityMonitoringRuleCase";
28842884
export { SecurityMonitoringRuleCaseAction } from "./models/SecurityMonitoringRuleCaseAction";
28852885
export { SecurityMonitoringRuleCaseActionOptions } from "./models/SecurityMonitoringRuleCaseActionOptions";
2886+
export { SecurityMonitoringRuleCaseActionOptionsFlaggedIPType } from "./models/SecurityMonitoringRuleCaseActionOptionsFlaggedIPType";
28862887
export { SecurityMonitoringRuleCaseActionType } from "./models/SecurityMonitoringRuleCaseActionType";
28872888
export { SecurityMonitoringRuleCaseCreate } from "./models/SecurityMonitoringRuleCaseCreate";
28882889
export { SecurityMonitoringRuleConvertPayload } from "./models/SecurityMonitoringRuleConvertPayload";

packages/datadog-api-client-v2/models/ObjectSerializer.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2958,10 +2958,15 @@ const enumsMap: { [key: string]: any[] } = {
29582958
SecurityFilterFilteredDataType: ["logs"],
29592959
SecurityFilterType: ["security_filters"],
29602960
SecurityMonitoringFilterAction: ["require", "suppress"],
2961+
SecurityMonitoringRuleCaseActionOptionsFlaggedIPType: [
2962+
"SUSPICIOUS",
2963+
"FLAGGED",
2964+
],
29612965
SecurityMonitoringRuleCaseActionType: [
29622966
"block_ip",
29632967
"block_user",
29642968
"user_behavior",
2969+
"flag_ip",
29652970
],
29662971
SecurityMonitoringRuleDetectionMethod: [
29672972
"threshold",

packages/datadog-api-client-v2/models/SecurityMonitoringRuleCaseActionOptions.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* This product includes software developed at Datadog (https://www.datadoghq.com/).
44
* Copyright 2020-Present Datadog, Inc.
55
*/
6+
import { SecurityMonitoringRuleCaseActionOptionsFlaggedIPType } from "./SecurityMonitoringRuleCaseActionOptionsFlaggedIPType";
67

78
import { AttributeTypeMap } from "../../datadog-api-client-common/util";
89

@@ -14,6 +15,10 @@ export class SecurityMonitoringRuleCaseActionOptions {
1415
* Duration of the action in seconds. 0 indicates no expiration.
1516
*/
1617
"duration"?: number;
18+
/**
19+
* Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.
20+
*/
21+
"flaggedIpType"?: SecurityMonitoringRuleCaseActionOptionsFlaggedIPType;
1722
/**
1823
* Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.
1924
*/
@@ -40,6 +45,10 @@ export class SecurityMonitoringRuleCaseActionOptions {
4045
type: "number",
4146
format: "int64",
4247
},
48+
flaggedIpType: {
49+
baseName: "flaggedIPType",
50+
type: "SecurityMonitoringRuleCaseActionOptionsFlaggedIPType",
51+
},
4352
userBehaviorName: {
4453
baseName: "userBehaviorName",
4554
type: "string",
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2020-Present Datadog, Inc.
5+
*/
6+
7+
import { UnparsedObject } from "../../datadog-api-client-common/util";
8+
9+
/**
10+
* Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.
11+
*/
12+
13+
export type SecurityMonitoringRuleCaseActionOptionsFlaggedIPType =
14+
| typeof SUSPICIOUS
15+
| typeof FLAGGED
16+
| UnparsedObject;
17+
export const SUSPICIOUS = "SUSPICIOUS";
18+
export const FLAGGED = "FLAGGED";

0 commit comments

Comments
 (0)