From 8003f480eb8c8422b9ad49aceb0172d5ab6c75e2 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Mon, 30 Sep 2024 19:46:00 +0000 Subject: [PATCH] Regenerate client from commit 909e369c of spec repo --- .apigentools-info | 8 +- .generator/schemas/v2/openapi.yaml | 44 ++++ .../CreateSecurityMonitoringRule.java | 11 +- .../SecurityMonitoringReferenceTable.java | 248 ++++++++++++++++++ .../SecurityMonitoringRuleUpdatePayload.java | 42 +++ ...tyMonitoringStandardRuleCreatePayload.java | 43 +++ ...SecurityMonitoringStandardRulePayload.java | 43 +++ ...ecurityMonitoringStandardRuleResponse.java | 43 +++ ...rityMonitoringStandardRuleTestPayload.java | 43 +++ ..._detection_rule_returns_OK_response.freeze | 2 +- ..._a_detection_rule_returns_OK_response.json | 10 +- .../client/v2/api/security_monitoring.feature | 3 +- 12 files changed, 528 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringReferenceTable.java diff --git a/.apigentools-info b/.apigentools-info index 52a9df6cd91..8f6b751ac5e 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2024-09-30 14:37:33.047156", - "spec_repo_commit": "60bc9127" + "regenerated": "2024-09-30 19:44:25.543007", + "spec_repo_commit": "909e369c" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2024-09-30 14:37:33.070295", - "spec_repo_commit": "60bc9127" + "regenerated": "2024-09-30 19:44:25.557128", + "spec_repo_commit": "909e369c" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index fc61f2c6e41..ce325fb6281 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -19089,6 +19089,25 @@ components: meta: $ref: '#/components/schemas/ResponseMetaAttributes' type: object + SecurityMonitoringReferenceTable: + description: Reference table for the rule. + properties: + checkPresence: + description: Whether to include or exclude the matched values. + type: boolean + columnName: + description: The name of the column in the reference table. + type: string + logFieldPath: + description: The field in the log to match against the reference table. + type: string + ruleQueryName: + description: The name of the rule query to apply the reference table to. + type: string + tableName: + description: The name of the reference table. + type: string + type: object SecurityMonitoringRuleCase: description: Case when signal is generated. properties: @@ -19594,6 +19613,11 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringRuleQuery' type: array + referenceTables: + description: Reference tables for the rule. + items: + $ref: '#/components/schemas/SecurityMonitoringReferenceTable' + type: array tags: description: Tags for generated signals. items: @@ -20298,6 +20322,11 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringStandardRuleQuery' type: array + referenceTables: + description: Reference tables for the rule. + items: + $ref: '#/components/schemas/SecurityMonitoringReferenceTable' + type: array tags: description: Tags for generated signals. example: @@ -20365,6 +20394,11 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringStandardRuleQuery' type: array + referenceTables: + description: Reference tables for the rule. + items: + $ref: '#/components/schemas/SecurityMonitoringReferenceTable' + type: array tags: description: Tags for generated signals. example: @@ -20505,6 +20539,11 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringStandardRuleQuery' type: array + referenceTables: + description: Reference tables for the rule. + items: + $ref: '#/components/schemas/SecurityMonitoringReferenceTable' + type: array tags: description: Tags for generated signals. items: @@ -20569,6 +20608,11 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringStandardRuleQuery' type: array + referenceTables: + description: Reference tables for the rule. + items: + $ref: '#/components/schemas/SecurityMonitoringReferenceTable' + type: array tags: description: Tags for generated signals. example: diff --git a/examples/v2/security-monitoring/CreateSecurityMonitoringRule.java b/examples/v2/security-monitoring/CreateSecurityMonitoringRule.java index 0aa5b13e01a..b4cda43503b 100644 --- a/examples/v2/security-monitoring/CreateSecurityMonitoringRule.java +++ b/examples/v2/security-monitoring/CreateSecurityMonitoringRule.java @@ -3,6 +3,7 @@ import com.datadog.api.client.ApiClient; import com.datadog.api.client.ApiException; import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import com.datadog.api.client.v2.model.SecurityMonitoringReferenceTable; import com.datadog.api.client.v2.model.SecurityMonitoringRuleCaseCreate; import com.datadog.api.client.v2.model.SecurityMonitoringRuleCreatePayload; import com.datadog.api.client.v2.model.SecurityMonitoringRuleEvaluationWindow; @@ -45,7 +46,15 @@ public static void main(String[] args) { .maxSignalDuration(SecurityMonitoringRuleMaxSignalDuration.ONE_DAY)) .message("Test rule") .isEnabled(true) - .type(SecurityMonitoringRuleTypeCreate.LOG_DETECTION)); + .type(SecurityMonitoringRuleTypeCreate.LOG_DETECTION) + .referenceTables( + Collections.singletonList( + new SecurityMonitoringReferenceTable() + .tableName("synthetics_test_reference_table_dont_delete") + .columnName("value") + .logFieldPath("testtag") + .checkPresence(true) + .ruleQueryName("a")))); try { SecurityMonitoringRuleResponse result = apiInstance.createSecurityMonitoringRule(body); diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringReferenceTable.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringReferenceTable.java new file mode 100644 index 00000000000..99a70ba64c5 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringReferenceTable.java @@ -0,0 +1,248 @@ +/* + * 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.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Reference table for the rule. */ +@JsonPropertyOrder({ + SecurityMonitoringReferenceTable.JSON_PROPERTY_CHECK_PRESENCE, + SecurityMonitoringReferenceTable.JSON_PROPERTY_COLUMN_NAME, + SecurityMonitoringReferenceTable.JSON_PROPERTY_LOG_FIELD_PATH, + SecurityMonitoringReferenceTable.JSON_PROPERTY_RULE_QUERY_NAME, + SecurityMonitoringReferenceTable.JSON_PROPERTY_TABLE_NAME +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringReferenceTable { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CHECK_PRESENCE = "checkPresence"; + private Boolean checkPresence; + + public static final String JSON_PROPERTY_COLUMN_NAME = "columnName"; + private String columnName; + + public static final String JSON_PROPERTY_LOG_FIELD_PATH = "logFieldPath"; + private String logFieldPath; + + public static final String JSON_PROPERTY_RULE_QUERY_NAME = "ruleQueryName"; + private String ruleQueryName; + + public static final String JSON_PROPERTY_TABLE_NAME = "tableName"; + private String tableName; + + public SecurityMonitoringReferenceTable checkPresence(Boolean checkPresence) { + this.checkPresence = checkPresence; + return this; + } + + /** + * Whether to include or exclude the matched values. + * + * @return checkPresence + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CHECK_PRESENCE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getCheckPresence() { + return checkPresence; + } + + public void setCheckPresence(Boolean checkPresence) { + this.checkPresence = checkPresence; + } + + public SecurityMonitoringReferenceTable columnName(String columnName) { + this.columnName = columnName; + return this; + } + + /** + * The name of the column in the reference table. + * + * @return columnName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_COLUMN_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getColumnName() { + return columnName; + } + + public void setColumnName(String columnName) { + this.columnName = columnName; + } + + public SecurityMonitoringReferenceTable logFieldPath(String logFieldPath) { + this.logFieldPath = logFieldPath; + return this; + } + + /** + * The field in the log to match against the reference table. + * + * @return logFieldPath + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LOG_FIELD_PATH) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getLogFieldPath() { + return logFieldPath; + } + + public void setLogFieldPath(String logFieldPath) { + this.logFieldPath = logFieldPath; + } + + public SecurityMonitoringReferenceTable ruleQueryName(String ruleQueryName) { + this.ruleQueryName = ruleQueryName; + return this; + } + + /** + * The name of the rule query to apply the reference table to. + * + * @return ruleQueryName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RULE_QUERY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getRuleQueryName() { + return ruleQueryName; + } + + public void setRuleQueryName(String ruleQueryName) { + this.ruleQueryName = ruleQueryName; + } + + public SecurityMonitoringReferenceTable tableName(String tableName) { + this.tableName = tableName; + return this; + } + + /** + * The name of the reference table. + * + * @return tableName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TABLE_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringReferenceTable + */ + @JsonAnySetter + public SecurityMonitoringReferenceTable putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringReferenceTable object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringReferenceTable securityMonitoringReferenceTable = + (SecurityMonitoringReferenceTable) o; + return Objects.equals(this.checkPresence, securityMonitoringReferenceTable.checkPresence) + && Objects.equals(this.columnName, securityMonitoringReferenceTable.columnName) + && Objects.equals(this.logFieldPath, securityMonitoringReferenceTable.logFieldPath) + && Objects.equals(this.ruleQueryName, securityMonitoringReferenceTable.ruleQueryName) + && Objects.equals(this.tableName, securityMonitoringReferenceTable.tableName) + && Objects.equals( + this.additionalProperties, securityMonitoringReferenceTable.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + checkPresence, columnName, logFieldPath, ruleQueryName, tableName, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringReferenceTable {\n"); + sb.append(" checkPresence: ").append(toIndentedString(checkPresence)).append("\n"); + sb.append(" columnName: ").append(toIndentedString(columnName)).append("\n"); + sb.append(" logFieldPath: ").append(toIndentedString(logFieldPath)).append("\n"); + sb.append(" ruleQueryName: ").append(toIndentedString(ruleQueryName)).append("\n"); + sb.append(" tableName: ").append(toIndentedString(tableName)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleUpdatePayload.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleUpdatePayload.java index 8777f987249..dc76281775b 100644 --- a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleUpdatePayload.java +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleUpdatePayload.java @@ -29,6 +29,7 @@ SecurityMonitoringRuleUpdatePayload.JSON_PROPERTY_NAME, SecurityMonitoringRuleUpdatePayload.JSON_PROPERTY_OPTIONS, SecurityMonitoringRuleUpdatePayload.JSON_PROPERTY_QUERIES, + SecurityMonitoringRuleUpdatePayload.JSON_PROPERTY_REFERENCE_TABLES, SecurityMonitoringRuleUpdatePayload.JSON_PROPERTY_TAGS, SecurityMonitoringRuleUpdatePayload.JSON_PROPERTY_THIRD_PARTY_CASES, SecurityMonitoringRuleUpdatePayload.JSON_PROPERTY_VERSION @@ -64,6 +65,9 @@ public class SecurityMonitoringRuleUpdatePayload { public static final String JSON_PROPERTY_QUERIES = "queries"; private List queries = null; + public static final String JSON_PROPERTY_REFERENCE_TABLES = "referenceTables"; + private List referenceTables = null; + public static final String JSON_PROPERTY_TAGS = "tags"; private List tags = null; @@ -304,6 +308,41 @@ public void setQueries(List queries) { this.queries = queries; } + public SecurityMonitoringRuleUpdatePayload referenceTables( + List referenceTables) { + this.referenceTables = referenceTables; + for (SecurityMonitoringReferenceTable item : referenceTables) { + this.unparsed |= item.unparsed; + } + return this; + } + + public SecurityMonitoringRuleUpdatePayload addReferenceTablesItem( + SecurityMonitoringReferenceTable referenceTablesItem) { + if (this.referenceTables == null) { + this.referenceTables = new ArrayList<>(); + } + this.referenceTables.add(referenceTablesItem); + this.unparsed |= referenceTablesItem.unparsed; + return this; + } + + /** + * Reference tables for the rule. + * + * @return referenceTables + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REFERENCE_TABLES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getReferenceTables() { + return referenceTables; + } + + public void setReferenceTables(List referenceTables) { + this.referenceTables = referenceTables; + } + public SecurityMonitoringRuleUpdatePayload tags(List tags) { this.tags = tags; return this; @@ -458,6 +497,7 @@ public boolean equals(Object o) { && Objects.equals(this.name, securityMonitoringRuleUpdatePayload.name) && Objects.equals(this.options, securityMonitoringRuleUpdatePayload.options) && Objects.equals(this.queries, securityMonitoringRuleUpdatePayload.queries) + && Objects.equals(this.referenceTables, securityMonitoringRuleUpdatePayload.referenceTables) && Objects.equals(this.tags, securityMonitoringRuleUpdatePayload.tags) && Objects.equals(this.thirdPartyCases, securityMonitoringRuleUpdatePayload.thirdPartyCases) && Objects.equals(this.version, securityMonitoringRuleUpdatePayload.version) @@ -477,6 +517,7 @@ public int hashCode() { name, options, queries, + referenceTables, tags, thirdPartyCases, version, @@ -498,6 +539,7 @@ public String toString() { sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" options: ").append(toIndentedString(options)).append("\n"); sb.append(" queries: ").append(toIndentedString(queries)).append("\n"); + sb.append(" referenceTables: ").append(toIndentedString(referenceTables)).append("\n"); sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); sb.append(" thirdPartyCases: ").append(toIndentedString(thirdPartyCases)).append("\n"); sb.append(" version: ").append(toIndentedString(version)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleCreatePayload.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleCreatePayload.java index 982adc3aa11..6ec313caf52 100644 --- a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleCreatePayload.java +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleCreatePayload.java @@ -29,6 +29,7 @@ SecurityMonitoringStandardRuleCreatePayload.JSON_PROPERTY_NAME, SecurityMonitoringStandardRuleCreatePayload.JSON_PROPERTY_OPTIONS, SecurityMonitoringStandardRuleCreatePayload.JSON_PROPERTY_QUERIES, + SecurityMonitoringStandardRuleCreatePayload.JSON_PROPERTY_REFERENCE_TABLES, SecurityMonitoringStandardRuleCreatePayload.JSON_PROPERTY_TAGS, SecurityMonitoringStandardRuleCreatePayload.JSON_PROPERTY_THIRD_PARTY_CASES, SecurityMonitoringStandardRuleCreatePayload.JSON_PROPERTY_TYPE @@ -61,6 +62,9 @@ public class SecurityMonitoringStandardRuleCreatePayload { public static final String JSON_PROPERTY_QUERIES = "queries"; private List queries = new ArrayList<>(); + public static final String JSON_PROPERTY_REFERENCE_TABLES = "referenceTables"; + private List referenceTables = null; + public static final String JSON_PROPERTY_TAGS = "tags"; private List tags = null; @@ -293,6 +297,41 @@ public void setQueries(List queries) { this.queries = queries; } + public SecurityMonitoringStandardRuleCreatePayload referenceTables( + List referenceTables) { + this.referenceTables = referenceTables; + for (SecurityMonitoringReferenceTable item : referenceTables) { + this.unparsed |= item.unparsed; + } + return this; + } + + public SecurityMonitoringStandardRuleCreatePayload addReferenceTablesItem( + SecurityMonitoringReferenceTable referenceTablesItem) { + if (this.referenceTables == null) { + this.referenceTables = new ArrayList<>(); + } + this.referenceTables.add(referenceTablesItem); + this.unparsed |= referenceTablesItem.unparsed; + return this; + } + + /** + * Reference tables for the rule. + * + * @return referenceTables + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REFERENCE_TABLES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getReferenceTables() { + return referenceTables; + } + + public void setReferenceTables(List referenceTables) { + this.referenceTables = referenceTables; + } + public SecurityMonitoringStandardRuleCreatePayload tags(List tags) { this.tags = tags; return this; @@ -449,6 +488,8 @@ public boolean equals(Object o) { && Objects.equals(this.name, securityMonitoringStandardRuleCreatePayload.name) && Objects.equals(this.options, securityMonitoringStandardRuleCreatePayload.options) && Objects.equals(this.queries, securityMonitoringStandardRuleCreatePayload.queries) + && Objects.equals( + this.referenceTables, securityMonitoringStandardRuleCreatePayload.referenceTables) && Objects.equals(this.tags, securityMonitoringStandardRuleCreatePayload.tags) && Objects.equals( this.thirdPartyCases, securityMonitoringStandardRuleCreatePayload.thirdPartyCases) @@ -469,6 +510,7 @@ public int hashCode() { name, options, queries, + referenceTables, tags, thirdPartyCases, type, @@ -487,6 +529,7 @@ public String toString() { sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" options: ").append(toIndentedString(options)).append("\n"); sb.append(" queries: ").append(toIndentedString(queries)).append("\n"); + sb.append(" referenceTables: ").append(toIndentedString(referenceTables)).append("\n"); sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); sb.append(" thirdPartyCases: ").append(toIndentedString(thirdPartyCases)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRulePayload.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRulePayload.java index 9466ad0dcfe..783ac32541c 100644 --- a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRulePayload.java +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRulePayload.java @@ -29,6 +29,7 @@ SecurityMonitoringStandardRulePayload.JSON_PROPERTY_NAME, SecurityMonitoringStandardRulePayload.JSON_PROPERTY_OPTIONS, SecurityMonitoringStandardRulePayload.JSON_PROPERTY_QUERIES, + SecurityMonitoringStandardRulePayload.JSON_PROPERTY_REFERENCE_TABLES, SecurityMonitoringStandardRulePayload.JSON_PROPERTY_TAGS, SecurityMonitoringStandardRulePayload.JSON_PROPERTY_THIRD_PARTY_CASES, SecurityMonitoringStandardRulePayload.JSON_PROPERTY_TYPE @@ -61,6 +62,9 @@ public class SecurityMonitoringStandardRulePayload { public static final String JSON_PROPERTY_QUERIES = "queries"; private List queries = new ArrayList<>(); + public static final String JSON_PROPERTY_REFERENCE_TABLES = "referenceTables"; + private List referenceTables = null; + public static final String JSON_PROPERTY_TAGS = "tags"; private List tags = null; @@ -290,6 +294,41 @@ public void setQueries(List queries) { this.queries = queries; } + public SecurityMonitoringStandardRulePayload referenceTables( + List referenceTables) { + this.referenceTables = referenceTables; + for (SecurityMonitoringReferenceTable item : referenceTables) { + this.unparsed |= item.unparsed; + } + return this; + } + + public SecurityMonitoringStandardRulePayload addReferenceTablesItem( + SecurityMonitoringReferenceTable referenceTablesItem) { + if (this.referenceTables == null) { + this.referenceTables = new ArrayList<>(); + } + this.referenceTables.add(referenceTablesItem); + this.unparsed |= referenceTablesItem.unparsed; + return this; + } + + /** + * Reference tables for the rule. + * + * @return referenceTables + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REFERENCE_TABLES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getReferenceTables() { + return referenceTables; + } + + public void setReferenceTables(List referenceTables) { + this.referenceTables = referenceTables; + } + public SecurityMonitoringStandardRulePayload tags(List tags) { this.tags = tags; return this; @@ -445,6 +484,8 @@ public boolean equals(Object o) { && Objects.equals(this.name, securityMonitoringStandardRulePayload.name) && Objects.equals(this.options, securityMonitoringStandardRulePayload.options) && Objects.equals(this.queries, securityMonitoringStandardRulePayload.queries) + && Objects.equals( + this.referenceTables, securityMonitoringStandardRulePayload.referenceTables) && Objects.equals(this.tags, securityMonitoringStandardRulePayload.tags) && Objects.equals( this.thirdPartyCases, securityMonitoringStandardRulePayload.thirdPartyCases) @@ -464,6 +505,7 @@ public int hashCode() { name, options, queries, + referenceTables, tags, thirdPartyCases, type, @@ -482,6 +524,7 @@ public String toString() { sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" options: ").append(toIndentedString(options)).append("\n"); sb.append(" queries: ").append(toIndentedString(queries)).append("\n"); + sb.append(" referenceTables: ").append(toIndentedString(referenceTables)).append("\n"); sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); sb.append(" thirdPartyCases: ").append(toIndentedString(thirdPartyCases)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleResponse.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleResponse.java index 05c1bad00b1..870df2636fd 100644 --- a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleResponse.java +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleResponse.java @@ -36,6 +36,7 @@ SecurityMonitoringStandardRuleResponse.JSON_PROPERTY_NAME, SecurityMonitoringStandardRuleResponse.JSON_PROPERTY_OPTIONS, SecurityMonitoringStandardRuleResponse.JSON_PROPERTY_QUERIES, + SecurityMonitoringStandardRuleResponse.JSON_PROPERTY_REFERENCE_TABLES, SecurityMonitoringStandardRuleResponse.JSON_PROPERTY_TAGS, SecurityMonitoringStandardRuleResponse.JSON_PROPERTY_THIRD_PARTY_CASES, SecurityMonitoringStandardRuleResponse.JSON_PROPERTY_TYPE, @@ -94,6 +95,9 @@ public class SecurityMonitoringStandardRuleResponse { public static final String JSON_PROPERTY_QUERIES = "queries"; private List queries = null; + public static final String JSON_PROPERTY_REFERENCE_TABLES = "referenceTables"; + private List referenceTables = null; + public static final String JSON_PROPERTY_TAGS = "tags"; private List tags = null; @@ -497,6 +501,41 @@ public void setQueries(List queries) { this.queries = queries; } + public SecurityMonitoringStandardRuleResponse referenceTables( + List referenceTables) { + this.referenceTables = referenceTables; + for (SecurityMonitoringReferenceTable item : referenceTables) { + this.unparsed |= item.unparsed; + } + return this; + } + + public SecurityMonitoringStandardRuleResponse addReferenceTablesItem( + SecurityMonitoringReferenceTable referenceTablesItem) { + if (this.referenceTables == null) { + this.referenceTables = new ArrayList<>(); + } + this.referenceTables.add(referenceTablesItem); + this.unparsed |= referenceTablesItem.unparsed; + return this; + } + + /** + * Reference tables for the rule. + * + * @return referenceTables + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REFERENCE_TABLES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getReferenceTables() { + return referenceTables; + } + + public void setReferenceTables(List referenceTables) { + this.referenceTables = referenceTables; + } + public SecurityMonitoringStandardRuleResponse tags(List tags) { this.tags = tags; return this; @@ -706,6 +745,8 @@ public boolean equals(Object o) { && Objects.equals(this.name, securityMonitoringStandardRuleResponse.name) && Objects.equals(this.options, securityMonitoringStandardRuleResponse.options) && Objects.equals(this.queries, securityMonitoringStandardRuleResponse.queries) + && Objects.equals( + this.referenceTables, securityMonitoringStandardRuleResponse.referenceTables) && Objects.equals(this.tags, securityMonitoringStandardRuleResponse.tags) && Objects.equals( this.thirdPartyCases, securityMonitoringStandardRuleResponse.thirdPartyCases) @@ -736,6 +777,7 @@ public int hashCode() { name, options, queries, + referenceTables, tags, thirdPartyCases, type, @@ -766,6 +808,7 @@ public String toString() { sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" options: ").append(toIndentedString(options)).append("\n"); sb.append(" queries: ").append(toIndentedString(queries)).append("\n"); + sb.append(" referenceTables: ").append(toIndentedString(referenceTables)).append("\n"); sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); sb.append(" thirdPartyCases: ").append(toIndentedString(thirdPartyCases)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleTestPayload.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleTestPayload.java index 04621b1fad4..e1854c8cdeb 100644 --- a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleTestPayload.java +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringStandardRuleTestPayload.java @@ -29,6 +29,7 @@ SecurityMonitoringStandardRuleTestPayload.JSON_PROPERTY_NAME, SecurityMonitoringStandardRuleTestPayload.JSON_PROPERTY_OPTIONS, SecurityMonitoringStandardRuleTestPayload.JSON_PROPERTY_QUERIES, + SecurityMonitoringStandardRuleTestPayload.JSON_PROPERTY_REFERENCE_TABLES, SecurityMonitoringStandardRuleTestPayload.JSON_PROPERTY_TAGS, SecurityMonitoringStandardRuleTestPayload.JSON_PROPERTY_THIRD_PARTY_CASES, SecurityMonitoringStandardRuleTestPayload.JSON_PROPERTY_TYPE @@ -61,6 +62,9 @@ public class SecurityMonitoringStandardRuleTestPayload { public static final String JSON_PROPERTY_QUERIES = "queries"; private List queries = new ArrayList<>(); + public static final String JSON_PROPERTY_REFERENCE_TABLES = "referenceTables"; + private List referenceTables = null; + public static final String JSON_PROPERTY_TAGS = "tags"; private List tags = null; @@ -291,6 +295,41 @@ public void setQueries(List queries) { this.queries = queries; } + public SecurityMonitoringStandardRuleTestPayload referenceTables( + List referenceTables) { + this.referenceTables = referenceTables; + for (SecurityMonitoringReferenceTable item : referenceTables) { + this.unparsed |= item.unparsed; + } + return this; + } + + public SecurityMonitoringStandardRuleTestPayload addReferenceTablesItem( + SecurityMonitoringReferenceTable referenceTablesItem) { + if (this.referenceTables == null) { + this.referenceTables = new ArrayList<>(); + } + this.referenceTables.add(referenceTablesItem); + this.unparsed |= referenceTablesItem.unparsed; + return this; + } + + /** + * Reference tables for the rule. + * + * @return referenceTables + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REFERENCE_TABLES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getReferenceTables() { + return referenceTables; + } + + public void setReferenceTables(List referenceTables) { + this.referenceTables = referenceTables; + } + public SecurityMonitoringStandardRuleTestPayload tags(List tags) { this.tags = tags; return this; @@ -446,6 +485,8 @@ public boolean equals(Object o) { && Objects.equals(this.name, securityMonitoringStandardRuleTestPayload.name) && Objects.equals(this.options, securityMonitoringStandardRuleTestPayload.options) && Objects.equals(this.queries, securityMonitoringStandardRuleTestPayload.queries) + && Objects.equals( + this.referenceTables, securityMonitoringStandardRuleTestPayload.referenceTables) && Objects.equals(this.tags, securityMonitoringStandardRuleTestPayload.tags) && Objects.equals( this.thirdPartyCases, securityMonitoringStandardRuleTestPayload.thirdPartyCases) @@ -466,6 +507,7 @@ public int hashCode() { name, options, queries, + referenceTables, tags, thirdPartyCases, type, @@ -484,6 +526,7 @@ public String toString() { sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" options: ").append(toIndentedString(options)).append("\n"); sb.append(" queries: ").append(toIndentedString(queries)).append("\n"); + sb.append(" referenceTables: ").append(toIndentedString(referenceTables)).append("\n"); sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); sb.append(" thirdPartyCases: ").append(toIndentedString(thirdPartyCases)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); diff --git a/src/test/resources/cassettes/features/v2/Create_a_detection_rule_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Create_a_detection_rule_returns_OK_response.freeze index 701307e250d..76923cce50c 100644 --- a/src/test/resources/cassettes/features/v2/Create_a_detection_rule_returns_OK_response.freeze +++ b/src/test/resources/cassettes/features/v2/Create_a_detection_rule_returns_OK_response.freeze @@ -1 +1 @@ -2024-05-10T16:34:28.650Z \ No newline at end of file +2024-09-11T18:14:46.491Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_detection_rule_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Create_a_detection_rule_returns_OK_response.json index 2c389549063..4fe8e103ef2 100644 --- a/src/test/resources/cassettes/features/v2/Create_a_detection_rule_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v2/Create_a_detection_rule_returns_OK_response.json @@ -3,7 +3,7 @@ "httpRequest": { "body": { "type": "JSON", - "json": "{\"cases\":[{\"condition\":\"a > 0\",\"name\":\"\",\"notifications\":[],\"status\":\"info\"}],\"filters\":[],\"isEnabled\":true,\"message\":\"Test rule\",\"name\":\"Test-Create_a_detection_rule_returns_OK_response-1715358868\",\"options\":{\"evaluationWindow\":900,\"keepAlive\":3600,\"maxSignalDuration\":86400},\"queries\":[{\"aggregation\":\"count\",\"distinctFields\":[],\"groupByFields\":[],\"metric\":\"\",\"query\":\"@test:true\"}],\"tags\":[],\"type\":\"log_detection\"}" + "json": "{\"cases\":[{\"condition\":\"a > 0\",\"name\":\"\",\"notifications\":[],\"status\":\"info\"}],\"filters\":[],\"isEnabled\":true,\"message\":\"Test rule\",\"name\":\"Test-Create_a_detection_rule_returns_OK_response-1726078486\",\"options\":{\"evaluationWindow\":900,\"keepAlive\":3600,\"maxSignalDuration\":86400},\"queries\":[{\"aggregation\":\"count\",\"distinctFields\":[],\"groupByFields\":[],\"metric\":\"\",\"query\":\"@test:true\"}],\"referenceTables\":[{\"checkPresence\":true,\"columnName\":\"value\",\"logFieldPath\":\"testtag\",\"ruleQueryName\":\"a\",\"tableName\":\"synthetics_test_reference_table_dont_delete\"}],\"tags\":[],\"type\":\"log_detection\"}" }, "headers": {}, "method": "POST", @@ -12,7 +12,7 @@ "secure": true }, "httpResponse": { - "body": "{\"id\":\"oka-fqr-yqa\",\"version\":1,\"name\":\"Test-Create_a_detection_rule_returns_OK_response-1715358868\",\"createdAt\":1715358869030,\"creationAuthorId\":1445416,\"isDefault\":false,\"isPartner\":false,\"isEnabled\":true,\"isDeleted\":false,\"isDeprecated\":false,\"queries\":[{\"query\":\"@test:true\",\"groupByFields\":[],\"hasOptionalGroupByFields\":false,\"distinctFields\":[],\"aggregation\":\"count\",\"name\":\"\"}],\"options\":{\"keepAlive\":3600,\"maxSignalDuration\":86400,\"detectionMethod\":\"threshold\",\"evaluationWindow\":900},\"cases\":[{\"name\":\"\",\"status\":\"info\",\"notifications\":[],\"condition\":\"a > 0\"}],\"message\":\"Test rule\",\"tags\":[],\"hasExtendedTitle\":false,\"type\":\"log_detection\",\"filters\":[]}\n", + "body": "{\"id\":\"5br-mto-gse\",\"version\":1,\"name\":\"Test-Create_a_detection_rule_returns_OK_response-1726078486\",\"createdAt\":1726078486689,\"creationAuthorId\":1445416,\"isDefault\":false,\"isPartner\":false,\"isEnabled\":true,\"isBeta\":false,\"isDeleted\":false,\"isDeprecated\":false,\"queries\":[{\"query\":\"@test:true\",\"groupByFields\":[],\"hasOptionalGroupByFields\":false,\"distinctFields\":[],\"aggregation\":\"count\",\"name\":\"\"}],\"options\":{\"keepAlive\":3600,\"maxSignalDuration\":86400,\"detectionMethod\":\"threshold\",\"evaluationWindow\":900},\"cases\":[{\"name\":\"\",\"status\":\"info\",\"notifications\":[],\"condition\":\"a > 0\"}],\"message\":\"Test rule\",\"tags\":[],\"hasExtendedTitle\":false,\"type\":\"log_detection\",\"filters\":[],\"referenceTables\":[{\"tableName\":\"synthetics_test_reference_table_dont_delete\",\"columnName\":\"value\",\"logFieldPath\":\"testtag\",\"checkPresence\":true,\"ruleQueryName\":\"a\"}]}\n", "headers": { "Content-Type": [ "application/json" @@ -27,13 +27,13 @@ "timeToLive": { "unlimited": true }, - "id": "8974582a-809b-b984-6681-70c6d78aa628" + "id": "f8352665-e30f-0244-9026-0f076be3c3ad" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v2/security_monitoring/rules/oka-fqr-yqa", + "path": "/api/v2/security_monitoring/rules/5br-mto-gse", "keepAlive": false, "secure": true }, @@ -48,6 +48,6 @@ "timeToLive": { "unlimited": true }, - "id": "d3f91398-44fe-094a-07db-3845650a283b" + "id": "6f7f32a6-451f-8497-3279-78c8caa8ef34" } ] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature b/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature index dc66166540c..27e45dd3c2b 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature @@ -123,12 +123,13 @@ Feature: Security Monitoring @skip-validation @team:DataDog/k9-cloud-security-platform Scenario: Create a detection rule returns "OK" response Given new "CreateSecurityMonitoringRule" request - And body with value {"name":"{{ unique }}", "queries":[{"query":"@test:true","aggregation":"count","groupByFields":[],"distinctFields":[],"metric":""}],"filters":[],"cases":[{"name":"","status":"info","condition":"a > 0","notifications":[]}],"options":{"evaluationWindow":900,"keepAlive":3600,"maxSignalDuration":86400},"message":"Test rule","tags":[],"isEnabled":true, "type":"log_detection"} + And body with value {"name":"{{ unique }}", "queries":[{"query":"@test:true","aggregation":"count","groupByFields":[],"distinctFields":[],"metric":""}],"filters":[],"cases":[{"name":"","status":"info","condition":"a > 0","notifications":[]}],"options":{"evaluationWindow":900,"keepAlive":3600,"maxSignalDuration":86400},"message":"Test rule","tags":[],"isEnabled":true, "type":"log_detection", "referenceTables":[{"tableName": "synthetics_test_reference_table_dont_delete", "columnName": "value", "logFieldPath":"testtag", "checkPresence":true, "ruleQueryName":"a"}]} When the request is sent Then the response status is 200 OK And the response "name" is equal to "{{ unique }}" And the response "type" is equal to "log_detection" And the response "message" is equal to "Test rule" + And the response "referenceTables" is equal to [{"tableName": "synthetics_test_reference_table_dont_delete", "columnName": "value", "logFieldPath":"testtag", "checkPresence":true, "ruleQueryName":"a"}] @team:DataDog/k9-cloud-security-platform Scenario: Create a detection rule with detection method 'third_party' returns "OK" response