From 36bdc694cc0f48946d3623292db991d0494db8b5 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 7 Apr 2026 11:45:15 +0000 Subject: [PATCH] Regenerate client from commit 3325bb4 of spec repo --- .generator/schemas/v2/openapi.yaml | 26 +++++++ ...reateApplicationSecurityWafCustomRule.java | 4 ++ ...ecurityWafCustomRuleConditionOperator.java | 14 +++- ...urityWafCustomRuleConditionParameters.java | 34 ++++++++- ...yWafCustomRuleConditionParametersType.java | 71 +++++++++++++++++++ .../v2/api/application_security.feature | 10 +-- 6 files changed, 152 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionParametersType.java diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index e83df8269e5..dd709e2ef0e 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -4338,6 +4338,10 @@ components: - ip_match - "!ip_match" - capture_data + - exists + - "!exists" + - equals + - "!equals" example: "match_regex" type: string x-enum-varnames: @@ -4352,6 +4356,10 @@ components: - IP_MATCH - NOT_IP_MATCH - CAPTURE_DATA + - EXISTS + - NOT_EXISTS + - EQUALS + - NOT_EQUALS ApplicationSecurityWafCustomRuleConditionOptions: description: Options for the operator of this condition. properties: @@ -4392,6 +4400,8 @@ components: description: "Regex to use with the condition. Only used with match_regex and !match_regex operator." example: "path.*" type: string + type: + $ref: "#/components/schemas/ApplicationSecurityWafCustomRuleConditionParametersType" value: description: |- Store the captured value in the specified tag name. Only used with the capture_data operator. @@ -4400,6 +4410,22 @@ components: required: - inputs type: object + ApplicationSecurityWafCustomRuleConditionParametersType: + description: The type of the value to compare against. Only used with the equals and !equals operator. + enum: + - boolean + - signed + - unsigned + - float + - string + example: "string" + type: string + x-enum-varnames: + - BOOLEAN + - SIGNED + - UNSIGNED + - FLOAT + - STRING ApplicationSecurityWafCustomRuleCreateAttributes: description: "Create a new WAF custom rule." properties: diff --git a/examples/v2/application-security/CreateApplicationSecurityWafCustomRule.java b/examples/v2/application-security/CreateApplicationSecurityWafCustomRule.java index 8b76dcb895a..4b85e73ac02 100644 --- a/examples/v2/application-security/CreateApplicationSecurityWafCustomRule.java +++ b/examples/v2/application-security/CreateApplicationSecurityWafCustomRule.java @@ -12,6 +12,7 @@ import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleConditionOperator; import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleConditionOptions; import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleConditionParameters; +import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleConditionParametersType; import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleCreateAttributes; import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleCreateData; import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleCreateRequest; @@ -62,6 +63,9 @@ public static void main(String[] args) { .caseSensitive(false) .minLength(0L)) .regex("path.*") + .type( + ApplicationSecurityWafCustomRuleConditionParametersType + .STRING) .value("custom_tag")))) .enabled(false) .name("Block request from a bad useragent") diff --git a/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionOperator.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionOperator.java index 7b7fcddbd3b..55d4a85008a 100644 --- a/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionOperator.java +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionOperator.java @@ -38,7 +38,11 @@ public class ApplicationSecurityWafCustomRuleConditionOperator extends ModelEnum "!exact_match", "ip_match", "!ip_match", - "capture_data")); + "capture_data", + "exists", + "!exists", + "equals", + "!equals")); public static final ApplicationSecurityWafCustomRuleConditionOperator MATCH_REGEX = new ApplicationSecurityWafCustomRuleConditionOperator("match_regex"); @@ -62,6 +66,14 @@ public class ApplicationSecurityWafCustomRuleConditionOperator extends ModelEnum new ApplicationSecurityWafCustomRuleConditionOperator("!ip_match"); public static final ApplicationSecurityWafCustomRuleConditionOperator CAPTURE_DATA = new ApplicationSecurityWafCustomRuleConditionOperator("capture_data"); + public static final ApplicationSecurityWafCustomRuleConditionOperator EXISTS = + new ApplicationSecurityWafCustomRuleConditionOperator("exists"); + public static final ApplicationSecurityWafCustomRuleConditionOperator NOT_EXISTS = + new ApplicationSecurityWafCustomRuleConditionOperator("!exists"); + public static final ApplicationSecurityWafCustomRuleConditionOperator EQUALS = + new ApplicationSecurityWafCustomRuleConditionOperator("equals"); + public static final ApplicationSecurityWafCustomRuleConditionOperator NOT_EQUALS = + new ApplicationSecurityWafCustomRuleConditionOperator("!equals"); ApplicationSecurityWafCustomRuleConditionOperator(String value) { super(value, allowedValues); diff --git a/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionParameters.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionParameters.java index a2665d7d9bb..a7f0375e3e4 100644 --- a/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionParameters.java +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionParameters.java @@ -26,6 +26,7 @@ ApplicationSecurityWafCustomRuleConditionParameters.JSON_PROPERTY_LIST, ApplicationSecurityWafCustomRuleConditionParameters.JSON_PROPERTY_OPTIONS, ApplicationSecurityWafCustomRuleConditionParameters.JSON_PROPERTY_REGEX, + ApplicationSecurityWafCustomRuleConditionParameters.JSON_PROPERTY_TYPE, ApplicationSecurityWafCustomRuleConditionParameters.JSON_PROPERTY_VALUE }) @jakarta.annotation.Generated( @@ -47,6 +48,9 @@ public class ApplicationSecurityWafCustomRuleConditionParameters { public static final String JSON_PROPERTY_REGEX = "regex"; private String regex; + public static final String JSON_PROPERTY_TYPE = "type"; + private ApplicationSecurityWafCustomRuleConditionParametersType type; + public static final String JSON_PROPERTY_VALUE = "value"; private String value; @@ -186,6 +190,32 @@ public void setRegex(String regex) { this.regex = regex; } + public ApplicationSecurityWafCustomRuleConditionParameters type( + ApplicationSecurityWafCustomRuleConditionParametersType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of the value to compare against. Only used with the equals and !equals operator. + * + * @return type + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ApplicationSecurityWafCustomRuleConditionParametersType getType() { + return type; + } + + public void setType(ApplicationSecurityWafCustomRuleConditionParametersType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + public ApplicationSecurityWafCustomRuleConditionParameters value(String value) { this.value = value; return this; @@ -273,6 +303,7 @@ public boolean equals(Object o) { && Objects.equals(this.list, applicationSecurityWafCustomRuleConditionParameters.list) && Objects.equals(this.options, applicationSecurityWafCustomRuleConditionParameters.options) && Objects.equals(this.regex, applicationSecurityWafCustomRuleConditionParameters.regex) + && Objects.equals(this.type, applicationSecurityWafCustomRuleConditionParameters.type) && Objects.equals(this.value, applicationSecurityWafCustomRuleConditionParameters.value) && Objects.equals( this.additionalProperties, @@ -281,7 +312,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(data, inputs, list, options, regex, value, additionalProperties); + return Objects.hash(data, inputs, list, options, regex, type, value, additionalProperties); } @Override @@ -293,6 +324,7 @@ public String toString() { sb.append(" list: ").append(toIndentedString(list)).append("\n"); sb.append(" options: ").append(toIndentedString(options)).append("\n"); sb.append(" regex: ").append(toIndentedString(regex)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); sb.append(" value: ").append(toIndentedString(value)).append("\n"); sb.append(" additionalProperties: ") .append(toIndentedString(additionalProperties)) diff --git a/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionParametersType.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionParametersType.java new file mode 100644 index 00000000000..69ee5d27814 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityWafCustomRuleConditionParametersType.java @@ -0,0 +1,71 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The type of the value to compare against. Only used with the equals and !equals operator. */ +@JsonSerialize( + using = + ApplicationSecurityWafCustomRuleConditionParametersType + .ApplicationSecurityWafCustomRuleConditionParametersTypeSerializer.class) +public class ApplicationSecurityWafCustomRuleConditionParametersType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("boolean", "signed", "unsigned", "float", "string")); + + public static final ApplicationSecurityWafCustomRuleConditionParametersType BOOLEAN = + new ApplicationSecurityWafCustomRuleConditionParametersType("boolean"); + public static final ApplicationSecurityWafCustomRuleConditionParametersType SIGNED = + new ApplicationSecurityWafCustomRuleConditionParametersType("signed"); + public static final ApplicationSecurityWafCustomRuleConditionParametersType UNSIGNED = + new ApplicationSecurityWafCustomRuleConditionParametersType("unsigned"); + public static final ApplicationSecurityWafCustomRuleConditionParametersType FLOAT = + new ApplicationSecurityWafCustomRuleConditionParametersType("float"); + public static final ApplicationSecurityWafCustomRuleConditionParametersType STRING = + new ApplicationSecurityWafCustomRuleConditionParametersType("string"); + + ApplicationSecurityWafCustomRuleConditionParametersType(String value) { + super(value, allowedValues); + } + + public static class ApplicationSecurityWafCustomRuleConditionParametersTypeSerializer + extends StdSerializer { + public ApplicationSecurityWafCustomRuleConditionParametersTypeSerializer( + Class t) { + super(t); + } + + public ApplicationSecurityWafCustomRuleConditionParametersTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ApplicationSecurityWafCustomRuleConditionParametersType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ApplicationSecurityWafCustomRuleConditionParametersType fromValue(String value) { + return new ApplicationSecurityWafCustomRuleConditionParametersType(value); + } +} diff --git a/src/test/resources/com/datadog/api/client/v2/api/application_security.feature b/src/test/resources/com/datadog/api/client/v2/api/application_security.feature index f10a470ff2e..aad0642b718 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/application_security.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/application_security.feature @@ -16,21 +16,21 @@ Feature: Application Security @generated @skip @team:DataDog/asm-backend Scenario: Create a WAF custom rule returns "Bad Request" response Given new "CreateApplicationSecurityWafCustomRule" request - And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "value": "custom_tag"}}], "enabled": false, "name": "Block request from a bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} + And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "type": "string", "value": "custom_tag"}}], "enabled": false, "name": "Block request from a bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} When the request is sent Then the response status is 400 Bad Request @generated @skip @team:DataDog/asm-backend Scenario: Create a WAF custom rule returns "Concurrent Modification" response Given new "CreateApplicationSecurityWafCustomRule" request - And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "value": "custom_tag"}}], "enabled": false, "name": "Block request from a bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} + And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "type": "string", "value": "custom_tag"}}], "enabled": false, "name": "Block request from a bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} When the request is sent Then the response status is 409 Concurrent Modification @generated @skip @team:DataDog/asm-backend Scenario: Create a WAF custom rule returns "Created" response Given new "CreateApplicationSecurityWafCustomRule" request - And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "value": "custom_tag"}}], "enabled": false, "name": "Block request from a bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} + And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "type": "string", "value": "custom_tag"}}], "enabled": false, "name": "Block request from a bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} When the request is sent Then the response status is 201 Created @@ -153,7 +153,7 @@ Feature: Application Security Scenario: Update a WAF Custom Rule returns "Concurrent Modification" response Given new "UpdateApplicationSecurityWafCustomRule" request And request contains "custom_rule_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "value": "custom_tag"}}], "enabled": false, "name": "Block request from bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} + And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "type": "string", "value": "custom_tag"}}], "enabled": false, "name": "Block request from bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} When the request is sent Then the response status is 409 Concurrent Modification @@ -161,7 +161,7 @@ Feature: Application Security Scenario: Update a WAF Custom Rule returns "Not Found" response Given new "UpdateApplicationSecurityWafCustomRule" request And request contains "custom_rule_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "value": "custom_tag"}}], "enabled": false, "name": "Block request from bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} + And body with value {"data": {"attributes": {"action": {"action": "block_request", "parameters": {"location": "/blocking", "status_code": 403}}, "blocking": false, "conditions": [{"operator": "match_regex", "parameters": {"data": "blocked_users", "inputs": [{"address": "server.db.statement", "key_path": []}], "list": [], "options": {"case_sensitive": false, "min_length": 0}, "regex": "path.*", "type": "string", "value": "custom_tag"}}], "enabled": false, "name": "Block request from bad useragent", "path_glob": "/api/search/*", "scope": [{"env": "prod", "service": "billing-service"}], "tags": {"category": "business_logic", "type": "users.login.success"}}, "type": "custom_rule"}} When the request is sent Then the response status is 404 Not Found