diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 95a832b986b..93122232d76 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -64151,6 +64151,63 @@ components: - TWO_DAYS - ONE_WEEK - TWO_WEEKS + SecurityMonitoringRuleBulkDeleteAttributes: + description: Attributes for bulk deleting security monitoring rules. + properties: + ruleIds: + description: List of rule IDs to delete. + example: + - abc-000-u7q + - abc-000-7dd + items: + description: A rule ID to delete. + type: string + minItems: 1 + type: array + required: + - ruleIds + type: object + SecurityMonitoringRuleBulkDeleteData: + description: Data for bulk deleting security monitoring rules. + properties: + attributes: + $ref: "#/components/schemas/SecurityMonitoringRuleBulkDeleteAttributes" + type: + $ref: "#/components/schemas/SecurityMonitoringRuleBulkDeleteRequestDataType" + required: + - attributes + - type + type: object + SecurityMonitoringRuleBulkDeletePayload: + description: Payload for bulk deleting security monitoring rules. + properties: + data: + $ref: "#/components/schemas/SecurityMonitoringRuleBulkDeleteData" + required: + - data + type: object + SecurityMonitoringRuleBulkDeleteRequestDataType: + description: The resource type for a bulk delete request. + enum: + - bulk_delete_rules + example: bulk_delete_rules + type: string + x-enum-varnames: + - BULK_DELETE_RULES + SecurityMonitoringRuleBulkDeleteResponse: + description: Response for bulk deleting security monitoring rules. + properties: + deletedRules: + description: List of successfully deleted rule IDs. + items: + type: string + type: array + failedRules: + description: List of rule IDs that could not be deleted. + items: + type: string + type: array + type: object SecurityMonitoringRuleBulkExportAttributes: description: Attributes for bulk exporting security monitoring rules. properties: @@ -123130,6 +123187,53 @@ paths: operator: OR permissions: - security_monitoring_rules_write + /api/v2/security_monitoring/rules/bulk_delete: + delete: + description: |- + Delete multiple security monitoring rules in a single request. Default rules cannot be deleted. + operationId: BulkDeleteSecurityMonitoringRules + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + ruleIds: + - abc-000-u7q + - abc-000-7dd + type: bulk_delete_rules + schema: + $ref: "#/components/schemas/SecurityMonitoringRuleBulkDeletePayload" + required: true + responses: + "200": + content: + "application/json": + schema: + $ref: "#/components/schemas/SecurityMonitoringRuleBulkDeleteResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_rules_write + summary: Bulk delete security monitoring rules + tags: ["Security Monitoring"] + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - security_monitoring_rules_write /api/v2/security_monitoring/rules/bulk_export: post: description: |- diff --git a/examples/v2/security-monitoring/BulkDeleteSecurityMonitoringRules.java b/examples/v2/security-monitoring/BulkDeleteSecurityMonitoringRules.java new file mode 100644 index 00000000000..6e1075d31b2 --- /dev/null +++ b/examples/v2/security-monitoring/BulkDeleteSecurityMonitoringRules.java @@ -0,0 +1,40 @@ +// Bulk delete security monitoring rules returns "OK" response + +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.SecurityMonitoringRuleBulkDeleteAttributes; +import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkDeleteData; +import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkDeletePayload; +import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkDeleteRequestDataType; +import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkDeleteResponse; +import java.util.Arrays; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + SecurityMonitoringRuleBulkDeletePayload body = + new SecurityMonitoringRuleBulkDeletePayload() + .data( + new SecurityMonitoringRuleBulkDeleteData() + .attributes( + new SecurityMonitoringRuleBulkDeleteAttributes() + .ruleIds(Arrays.asList("abc-000-u7q", "abc-000-7dd"))) + .type(SecurityMonitoringRuleBulkDeleteRequestDataType.BULK_DELETE_RULES)); + + try { + SecurityMonitoringRuleBulkDeleteResponse result = + apiInstance.bulkDeleteSecurityMonitoringRules(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling SecurityMonitoringApi#bulkDeleteSecurityMonitoringRules"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java b/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java index 1f00e134d92..b8beced4994 100644 --- a/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java @@ -69,6 +69,8 @@ import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetsResponse; import com.datadog.api.client.v2.model.SecurityMonitoringListRulesResponse; import com.datadog.api.client.v2.model.SecurityMonitoringPaginatedSuppressionsResponse; +import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkDeletePayload; +import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkDeleteResponse; import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkExportPayload; import com.datadog.api.client.v2.model.SecurityMonitoringRuleConvertPayload; import com.datadog.api.client.v2.model.SecurityMonitoringRuleConvertResponse; @@ -607,6 +609,147 @@ public CompletableFuture> attachJiraIssueWithHt new GenericType() {}); } + /** + * Bulk delete security monitoring rules. + * + *

See {@link #bulkDeleteSecurityMonitoringRulesWithHttpInfo}. + * + * @param body (required) + * @return SecurityMonitoringRuleBulkDeleteResponse + * @throws ApiException if fails to make API call + */ + public SecurityMonitoringRuleBulkDeleteResponse bulkDeleteSecurityMonitoringRules( + SecurityMonitoringRuleBulkDeletePayload body) throws ApiException { + return bulkDeleteSecurityMonitoringRulesWithHttpInfo(body).getData(); + } + + /** + * Bulk delete security monitoring rules. + * + *

See {@link #bulkDeleteSecurityMonitoringRulesWithHttpInfoAsync}. + * + * @param body (required) + * @return CompletableFuture<SecurityMonitoringRuleBulkDeleteResponse> + */ + public CompletableFuture + bulkDeleteSecurityMonitoringRulesAsync(SecurityMonitoringRuleBulkDeletePayload body) { + return bulkDeleteSecurityMonitoringRulesWithHttpInfoAsync(body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Delete multiple security monitoring rules in a single request. Default rules cannot be deleted. + * + * @param body (required) + * @return ApiResponse<SecurityMonitoringRuleBulkDeleteResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
403 Not Authorized -
404 Not Found -
429 Too many requests -
+ */ + public ApiResponse + bulkDeleteSecurityMonitoringRulesWithHttpInfo(SecurityMonitoringRuleBulkDeletePayload body) + throws ApiException { + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, + "Missing the required parameter 'body' when calling bulkDeleteSecurityMonitoringRules"); + } + // create path and map variables + String localVarPath = "/api/v2/security_monitoring/rules/bulk_delete"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.bulkDeleteSecurityMonitoringRules", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "DELETE", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Bulk delete security monitoring rules. + * + *

See {@link #bulkDeleteSecurityMonitoringRulesWithHttpInfo}. + * + * @param body (required) + * @return CompletableFuture<ApiResponse<SecurityMonitoringRuleBulkDeleteResponse>> + */ + public CompletableFuture> + bulkDeleteSecurityMonitoringRulesWithHttpInfoAsync( + SecurityMonitoringRuleBulkDeletePayload body) { + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'body' when calling" + + " bulkDeleteSecurityMonitoringRules")); + return result; + } + // create path and map variables + String localVarPath = "/api/v2/security_monitoring/rules/bulk_delete"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.bulkDeleteSecurityMonitoringRules", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "DELETE", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + /** * Bulk update security signals. * diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteAttributes.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteAttributes.java new file mode 100644 index 00000000000..651112df358 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteAttributes.java @@ -0,0 +1,154 @@ +/* + * 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.JsonCreator; +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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** Attributes for bulk deleting security monitoring rules. */ +@JsonPropertyOrder({SecurityMonitoringRuleBulkDeleteAttributes.JSON_PROPERTY_RULE_IDS}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringRuleBulkDeleteAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_RULE_IDS = "ruleIds"; + private List ruleIds = new ArrayList<>(); + + public SecurityMonitoringRuleBulkDeleteAttributes() {} + + @JsonCreator + public SecurityMonitoringRuleBulkDeleteAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_RULE_IDS) List ruleIds) { + this.ruleIds = ruleIds; + } + + public SecurityMonitoringRuleBulkDeleteAttributes ruleIds(List ruleIds) { + this.ruleIds = ruleIds; + return this; + } + + public SecurityMonitoringRuleBulkDeleteAttributes addRuleIdsItem(String ruleIdsItem) { + this.ruleIds.add(ruleIdsItem); + return this; + } + + /** + * List of rule IDs to delete. + * + * @return ruleIds + */ + @JsonProperty(JSON_PROPERTY_RULE_IDS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getRuleIds() { + return ruleIds; + } + + public void setRuleIds(List ruleIds) { + this.ruleIds = ruleIds; + } + + /** + * 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 SecurityMonitoringRuleBulkDeleteAttributes + */ + @JsonAnySetter + public SecurityMonitoringRuleBulkDeleteAttributes 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 SecurityMonitoringRuleBulkDeleteAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringRuleBulkDeleteAttributes securityMonitoringRuleBulkDeleteAttributes = + (SecurityMonitoringRuleBulkDeleteAttributes) o; + return Objects.equals(this.ruleIds, securityMonitoringRuleBulkDeleteAttributes.ruleIds) + && Objects.equals( + this.additionalProperties, + securityMonitoringRuleBulkDeleteAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(ruleIds, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringRuleBulkDeleteAttributes {\n"); + sb.append(" ruleIds: ").append(toIndentedString(ruleIds)).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/SecurityMonitoringRuleBulkDeleteData.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteData.java new file mode 100644 index 00000000000..5872899da42 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteData.java @@ -0,0 +1,186 @@ +/* + * 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.JsonCreator; +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; + +/** Data for bulk deleting security monitoring rules. */ +@JsonPropertyOrder({ + SecurityMonitoringRuleBulkDeleteData.JSON_PROPERTY_ATTRIBUTES, + SecurityMonitoringRuleBulkDeleteData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringRuleBulkDeleteData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private SecurityMonitoringRuleBulkDeleteAttributes attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SecurityMonitoringRuleBulkDeleteRequestDataType type; + + public SecurityMonitoringRuleBulkDeleteData() {} + + @JsonCreator + public SecurityMonitoringRuleBulkDeleteData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + SecurityMonitoringRuleBulkDeleteAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + SecurityMonitoringRuleBulkDeleteRequestDataType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public SecurityMonitoringRuleBulkDeleteData attributes( + SecurityMonitoringRuleBulkDeleteAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Attributes for bulk deleting security monitoring rules. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringRuleBulkDeleteAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SecurityMonitoringRuleBulkDeleteAttributes attributes) { + this.attributes = attributes; + } + + public SecurityMonitoringRuleBulkDeleteData type( + SecurityMonitoringRuleBulkDeleteRequestDataType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The resource type for a bulk delete request. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringRuleBulkDeleteRequestDataType getType() { + return type; + } + + public void setType(SecurityMonitoringRuleBulkDeleteRequestDataType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * 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 SecurityMonitoringRuleBulkDeleteData + */ + @JsonAnySetter + public SecurityMonitoringRuleBulkDeleteData 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 SecurityMonitoringRuleBulkDeleteData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringRuleBulkDeleteData securityMonitoringRuleBulkDeleteData = + (SecurityMonitoringRuleBulkDeleteData) o; + return Objects.equals(this.attributes, securityMonitoringRuleBulkDeleteData.attributes) + && Objects.equals(this.type, securityMonitoringRuleBulkDeleteData.type) + && Objects.equals( + this.additionalProperties, securityMonitoringRuleBulkDeleteData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringRuleBulkDeleteData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).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/SecurityMonitoringRuleBulkDeletePayload.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeletePayload.java new file mode 100644 index 00000000000..66eb365e52b --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeletePayload.java @@ -0,0 +1,149 @@ +/* + * 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.JsonCreator; +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; + +/** Payload for bulk deleting security monitoring rules. */ +@JsonPropertyOrder({SecurityMonitoringRuleBulkDeletePayload.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringRuleBulkDeletePayload { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private SecurityMonitoringRuleBulkDeleteData data; + + public SecurityMonitoringRuleBulkDeletePayload() {} + + @JsonCreator + public SecurityMonitoringRuleBulkDeletePayload( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + SecurityMonitoringRuleBulkDeleteData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public SecurityMonitoringRuleBulkDeletePayload data(SecurityMonitoringRuleBulkDeleteData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * Data for bulk deleting security monitoring rules. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringRuleBulkDeleteData getData() { + return data; + } + + public void setData(SecurityMonitoringRuleBulkDeleteData data) { + this.data = data; + } + + /** + * 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 SecurityMonitoringRuleBulkDeletePayload + */ + @JsonAnySetter + public SecurityMonitoringRuleBulkDeletePayload 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 SecurityMonitoringRuleBulkDeletePayload object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringRuleBulkDeletePayload securityMonitoringRuleBulkDeletePayload = + (SecurityMonitoringRuleBulkDeletePayload) o; + return Objects.equals(this.data, securityMonitoringRuleBulkDeletePayload.data) + && Objects.equals( + this.additionalProperties, + securityMonitoringRuleBulkDeletePayload.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringRuleBulkDeletePayload {\n"); + sb.append(" data: ").append(toIndentedString(data)).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/SecurityMonitoringRuleBulkDeleteRequestDataType.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteRequestDataType.java new file mode 100644 index 00000000000..57abd42def1 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteRequestDataType.java @@ -0,0 +1,63 @@ +/* + * 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 resource type for a bulk delete request. */ +@JsonSerialize( + using = + SecurityMonitoringRuleBulkDeleteRequestDataType + .SecurityMonitoringRuleBulkDeleteRequestDataTypeSerializer.class) +public class SecurityMonitoringRuleBulkDeleteRequestDataType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("bulk_delete_rules")); + + public static final SecurityMonitoringRuleBulkDeleteRequestDataType BULK_DELETE_RULES = + new SecurityMonitoringRuleBulkDeleteRequestDataType("bulk_delete_rules"); + + SecurityMonitoringRuleBulkDeleteRequestDataType(String value) { + super(value, allowedValues); + } + + public static class SecurityMonitoringRuleBulkDeleteRequestDataTypeSerializer + extends StdSerializer { + public SecurityMonitoringRuleBulkDeleteRequestDataTypeSerializer( + Class t) { + super(t); + } + + public SecurityMonitoringRuleBulkDeleteRequestDataTypeSerializer() { + this(null); + } + + @Override + public void serialize( + SecurityMonitoringRuleBulkDeleteRequestDataType value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SecurityMonitoringRuleBulkDeleteRequestDataType fromValue(String value) { + return new SecurityMonitoringRuleBulkDeleteRequestDataType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteResponse.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteResponse.java new file mode 100644 index 00000000000..94dc4462bfc --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringRuleBulkDeleteResponse.java @@ -0,0 +1,185 @@ +/* + * 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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** Response for bulk deleting security monitoring rules. */ +@JsonPropertyOrder({ + SecurityMonitoringRuleBulkDeleteResponse.JSON_PROPERTY_DELETED_RULES, + SecurityMonitoringRuleBulkDeleteResponse.JSON_PROPERTY_FAILED_RULES +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringRuleBulkDeleteResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DELETED_RULES = "deletedRules"; + private List deletedRules = null; + + public static final String JSON_PROPERTY_FAILED_RULES = "failedRules"; + private List failedRules = null; + + public SecurityMonitoringRuleBulkDeleteResponse deletedRules(List deletedRules) { + this.deletedRules = deletedRules; + return this; + } + + public SecurityMonitoringRuleBulkDeleteResponse addDeletedRulesItem(String deletedRulesItem) { + if (this.deletedRules == null) { + this.deletedRules = new ArrayList<>(); + } + this.deletedRules.add(deletedRulesItem); + return this; + } + + /** + * List of successfully deleted rule IDs. + * + * @return deletedRules + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DELETED_RULES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getDeletedRules() { + return deletedRules; + } + + public void setDeletedRules(List deletedRules) { + this.deletedRules = deletedRules; + } + + public SecurityMonitoringRuleBulkDeleteResponse failedRules(List failedRules) { + this.failedRules = failedRules; + return this; + } + + public SecurityMonitoringRuleBulkDeleteResponse addFailedRulesItem(String failedRulesItem) { + if (this.failedRules == null) { + this.failedRules = new ArrayList<>(); + } + this.failedRules.add(failedRulesItem); + return this; + } + + /** + * List of rule IDs that could not be deleted. + * + * @return failedRules + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_FAILED_RULES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getFailedRules() { + return failedRules; + } + + public void setFailedRules(List failedRules) { + this.failedRules = failedRules; + } + + /** + * 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 SecurityMonitoringRuleBulkDeleteResponse + */ + @JsonAnySetter + public SecurityMonitoringRuleBulkDeleteResponse 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 SecurityMonitoringRuleBulkDeleteResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringRuleBulkDeleteResponse securityMonitoringRuleBulkDeleteResponse = + (SecurityMonitoringRuleBulkDeleteResponse) o; + return Objects.equals(this.deletedRules, securityMonitoringRuleBulkDeleteResponse.deletedRules) + && Objects.equals(this.failedRules, securityMonitoringRuleBulkDeleteResponse.failedRules) + && Objects.equals( + this.additionalProperties, + securityMonitoringRuleBulkDeleteResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(deletedRules, failedRules, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringRuleBulkDeleteResponse {\n"); + sb.append(" deletedRules: ").append(toIndentedString(deletedRules)).append("\n"); + sb.append(" failedRules: ").append(toIndentedString(failedRules)).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/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 820747b79b7..48a978cc215 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 @@ -99,6 +99,27 @@ Feature: Security Monitoring And the response "data.attributes.insights" has item with field "resource_id" with value "ZGZhMDI3ZjdjMDM3YjJmNzcxNTlhZGMwMjdmZWNiNTZ-MTVlYTNmYWU3NjNlOTNlYTE2YjM4N2JmZmI4Yjk5N2Y=" And the response "data.attributes.insights" has item with field "resource_id" with value "MmUzMzZkODQ2YTI3NDU0OTk4NDk3NzhkOTY5YjU2Zjh-YWJjZGI1ODI4OTYzNWM3ZmUwZTBlOWRkYTRiMGUyOGQ=" + @generated @skip @team:DataDog/k9-cloud-siem + Scenario: Bulk delete security monitoring rules returns "Bad Request" response + Given new "BulkDeleteSecurityMonitoringRules" request + And body with value {"data": {"attributes": {"ruleIds": ["abc-000-u7q", "abc-000-7dd"]}, "type": "bulk_delete_rules"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-siem + Scenario: Bulk delete security monitoring rules returns "Not Found" response + Given new "BulkDeleteSecurityMonitoringRules" request + And body with value {"data": {"attributes": {"ruleIds": ["abc-000-u7q", "abc-000-7dd"]}, "type": "bulk_delete_rules"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/k9-cloud-siem + Scenario: Bulk delete security monitoring rules returns "OK" response + Given new "BulkDeleteSecurityMonitoringRules" request + And body with value {"data": {"attributes": {"ruleIds": ["abc-000-u7q", "abc-000-7dd"]}, "type": "bulk_delete_rules"}} + When the request is sent + Then the response status is 200 OK + @skip @team:DataDog/k9-cloud-siem Scenario: Bulk export security monitoring rules returns "Bad Request" response Given new "BulkExportSecurityMonitoringRules" request diff --git a/src/test/resources/com/datadog/api/client/v2/api/undo.json b/src/test/resources/com/datadog/api/client/v2/api/undo.json index 21d7896f03b..d5a8323e270 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/undo.json +++ b/src/test/resources/com/datadog/api/client/v2/api/undo.json @@ -5675,6 +5675,12 @@ "type": "unsafe" } }, + "BulkDeleteSecurityMonitoringRules": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, "BulkExportSecurityMonitoringRules": { "tag": "Security Monitoring", "undo": {