diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index a0d18121678..ce659f72c1b 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -155,6 +155,14 @@ components: required: false schema: $ref: '#/components/schemas/ApplicationKeysSort' + ApplicationSecurityPolicyIDParam: + description: The ID of the policy. + example: recommended + in: path + name: policy_id + required: true + schema: + type: string ApplicationSecurityWafCustomRuleIDParam: description: The ID of the custom rule. example: 3b5-v82-ns6 @@ -3159,6 +3167,292 @@ components: type: string x-enum-varnames: - APPLICATION_KEYS + ApplicationSecurityPolicyAttributes: + description: A WAF policy. + properties: + description: + description: Description of the WAF policy. + example: Policy applied to internal web applications. + type: string + isDefault: + description: Make this policy the default policy. The default policy is + applied to every services not specifically added to another policy. + example: false + type: boolean + name: + description: The Name of the WAF policy. + example: Internal Network Policy + type: string + protectionPresets: + description: Presets enabled on this policy. + items: + example: attack-tools + type: string + type: array + rules: + description: Rule overrides applied by the policy. + items: + $ref: '#/components/schemas/ApplicationSecurityPolicyRuleOverride' + type: array + scope: + description: The scope of the WAF policy. + items: + $ref: '#/components/schemas/ApplicationSecurityPolicyScope' + type: array + version: + default: 0 + description: Version of the WAF ruleset maintained by Datadog used by this + policy. 0 is the default value. + example: 0 + format: int64 + type: integer + required: + - name + - description + type: object + ApplicationSecurityPolicyCreateAttributes: + description: Create a new WAF policy. + properties: + basedOn: + description: When creating a new policy, clone the policy indicated by this + identifier. + example: recommended + type: string + description: + description: Description of the WAF policy. + example: Policy applied to internal web applications. + type: string + isDefault: + description: Make this policy the default policy. The default policy is + applied to every services not specifically added to another policy. + example: false + type: boolean + name: + description: The Name of the WAF policy. + example: Internal Network Policy + type: string + protectionPresets: + description: Presets enabled on this policy. + items: + example: attack-tools + type: string + type: array + rules: + description: Rule overrides applied by the policy. + items: + $ref: '#/components/schemas/ApplicationSecurityPolicyRuleOverride' + type: array + scope: + description: The scope of the WAF policy. + items: + $ref: '#/components/schemas/ApplicationSecurityPolicyScope' + type: array + version: + default: 0 + description: Version of the WAF ruleset maintained by Datadog used by this + policy. 0 is the default value. + example: 0 + format: int64 + type: integer + required: + - name + - description + - basedOn + type: object + ApplicationSecurityPolicyCreateData: + description: Object for a single WAF policy. + properties: + attributes: + $ref: '#/components/schemas/ApplicationSecurityPolicyCreateAttributes' + type: + $ref: '#/components/schemas/ApplicationSecurityPolicyType' + required: + - attributes + - type + type: object + ApplicationSecurityPolicyCreateRequest: + description: Request object that includes the policy to create. + properties: + data: + $ref: '#/components/schemas/ApplicationSecurityPolicyCreateData' + required: + - data + type: object + ApplicationSecurityPolicyData: + description: Object for a single WAF policy. + properties: + attributes: + $ref: '#/components/schemas/ApplicationSecurityPolicyAttributes' + id: + description: The ID of the policy. + example: 2857c47d-1e3a-4300-8b2f-dc24089c084b + readOnly: true + type: string + metadata: + $ref: '#/components/schemas/ApplicationSecurityPolicyMetadata' + type: + $ref: '#/components/schemas/ApplicationSecurityPolicyType' + type: object + ApplicationSecurityPolicyListResponse: + description: Response object that includes a list of WAF policies. + properties: + data: + description: The WAF policy data. + items: + $ref: '#/components/schemas/ApplicationSecurityPolicyData' + type: array + type: object + ApplicationSecurityPolicyMetadata: + description: Metadata associated with the WAF policy. + properties: + added_at: + description: The date and time the WAF policy was created. + example: '2021-01-01T00:00:00Z' + format: date-time + type: string + added_by: + description: The handle of the user who created the WAF policy. + example: john.doe@datadoghq.com + type: string + added_by_name: + description: The name of the user who created the WAF policy. + example: John Doe + type: string + modified_at: + description: The date and time the WAF policy was last updated. + example: '2021-01-01T00:00:00Z' + format: date-time + type: string + modified_by: + description: The handle of the user who last updated the WAF policy. + example: john.doe@datadoghq.com + type: string + modified_by_name: + description: The name of the user who last updated the WAF policy. + example: John Doe + type: string + readOnly: true + type: object + ApplicationSecurityPolicyResponse: + description: Response object that includes a single WAF policy. + properties: + data: + $ref: '#/components/schemas/ApplicationSecurityPolicyData' + type: object + ApplicationSecurityPolicyRuleOverride: + description: Override WAF rule parameters for services in a policy. + properties: + blocking: + description: When blocking is enabled, the rule will block the traffic matched + by this rule. + example: false + type: boolean + enabled: + description: When false, this rule will not match any traffic. + example: true + type: boolean + id: + description: Override the parameters for this WAF rule identifier. + example: rasp-001-002 + type: string + required: + - id + - enabled + - blocking + type: object + ApplicationSecurityPolicyScope: + description: The scope of the WAF policy. + properties: + env: + description: The environment scope for the WAF policy. + example: prod + type: string + service: + description: The service scope for the WAF policy. + example: billing-service + type: string + required: + - service + - env + type: object + ApplicationSecurityPolicyType: + default: policy + description: The type of the resource. The value should always be `policy`. + enum: + - policy + example: policy + type: string + x-enum-varnames: + - POLICY + ApplicationSecurityPolicyUpdateAttributes: + description: Update a WAF policy. + properties: + description: + description: Description of the WAF policy. + example: Policy applied to internal web applications. + type: string + isDefault: + description: Make this policy the default policy. The default policy is + applied to every services not specifically added to another policy. + example: false + type: boolean + name: + description: The Name of the WAF policy. + example: Internal Network Policy + type: string + protectionPresets: + description: Presets enabled on this policy. + example: + - attack-tools + items: + example: attack-tools + type: string + type: array + rules: + description: Rule overrides applied by the policy. + items: + $ref: '#/components/schemas/ApplicationSecurityPolicyRuleOverride' + type: array + scope: + description: The scope of the WAF policy. + items: + $ref: '#/components/schemas/ApplicationSecurityPolicyScope' + type: array + version: + default: 0 + description: Version of the WAF ruleset maintained by Datadog used by this + policy. 0 is the default value. + example: 0 + format: int64 + type: integer + required: + - name + - description + - version + - isDefault + - rules + - protectionPresets + - scope + type: object + ApplicationSecurityPolicyUpdateData: + description: Object for a single WAF policy. + properties: + attributes: + $ref: '#/components/schemas/ApplicationSecurityPolicyUpdateAttributes' + type: + $ref: '#/components/schemas/ApplicationSecurityPolicyType' + required: + - attributes + - type + type: object + ApplicationSecurityPolicyUpdateRequest: + description: Request object that includes the policy to update. + properties: + data: + $ref: '#/components/schemas/ApplicationSecurityPolicyUpdateData' + required: + - data + type: object ApplicationSecurityWafCustomRuleAction: description: The definition of `ApplicationSecurityWafCustomRuleAction` object. properties: @@ -67009,6 +67303,130 @@ paths: permissions: - appsec_protect_write x-terraform-resource: appsec_waf_exclusion_filter + /api/v2/remote_config/products/asm/waf/policies: + get: + description: Retrieve a list of WAF policies. + operationId: ListApplicationSecurityWAFPolicies + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSecurityPolicyListResponse' + description: OK + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: List all WAF policies + tags: + - Application Security + post: + description: Create a new WAF policy. + operationId: CreateApplicationSecurityWafPolicy + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSecurityPolicyCreateRequest' + description: The new WAF policy. + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSecurityPolicyResponse' + description: Created + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '409': + $ref: '#/components/responses/ConcurrentModificationResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Create a WAF Policy + tags: + - Application Security + x-codegen-request-body-name: body + /api/v2/remote_config/products/asm/waf/policies/{policy_id}: + delete: + description: Delete a specific WAF policy. + operationId: DeleteApplicationSecurityWafPolicy + parameters: + - $ref: '#/components/parameters/ApplicationSecurityPolicyIDParam' + responses: + '204': + description: No Content + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '409': + $ref: '#/components/responses/ConcurrentModificationResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Delete a WAF Policy + tags: + - Application Security + x-terraform-resource: appsec_waf_policy + get: + description: Retrieve a WAF policy by ID. + operationId: GetApplicationSecurityWafPolicy + parameters: + - $ref: '#/components/parameters/ApplicationSecurityPolicyIDParam' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSecurityPolicyResponse' + description: OK + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Get a WAF Policy + tags: + - Application Security + x-terraform-resource: appsec_waf_policy + put: + description: 'Update a specific WAF policy. + + Returns the Policy object when the request is successful.' + operationId: UpdateApplicationSecurityWafPolicy + parameters: + - $ref: '#/components/parameters/ApplicationSecurityPolicyIDParam' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSecurityPolicyUpdateRequest' + description: New WAF Policy. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSecurityPolicyResponse' + description: OK + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '409': + $ref: '#/components/responses/ConcurrentModificationResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Update a WAF Policy + tags: + - Application Security + x-codegen-request-body-name: body + x-terraform-resource: appsec_waf_policy /api/v2/remote_config/products/cws/agent_rules: get: description: 'Get the list of Workload Protection agent rules. diff --git a/examples/v2/application-security/CreateApplicationSecurityWafPolicy.java b/examples/v2/application-security/CreateApplicationSecurityWafPolicy.java new file mode 100644 index 00000000000..1d23ce73efa --- /dev/null +++ b/examples/v2/application-security/CreateApplicationSecurityWafPolicy.java @@ -0,0 +1,58 @@ +// Create a WAF Policy returns "Created" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.ApplicationSecurityApi; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyCreateAttributes; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyCreateData; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyCreateRequest; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyResponse; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyRuleOverride; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyScope; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyType; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + ApplicationSecurityApi apiInstance = new ApplicationSecurityApi(defaultClient); + + ApplicationSecurityPolicyCreateRequest body = + new ApplicationSecurityPolicyCreateRequest() + .data( + new ApplicationSecurityPolicyCreateData() + .attributes( + new ApplicationSecurityPolicyCreateAttributes() + .basedOn("recommended") + .description("Policy applied to internal web applications.") + .isDefault(false) + .name("Internal Network Policy") + .protectionPresets(Collections.singletonList("attack-tools")) + .rules( + Collections.singletonList( + new ApplicationSecurityPolicyRuleOverride() + .blocking(false) + .enabled(true) + .id("rasp-001-002"))) + .scope( + Collections.singletonList( + new ApplicationSecurityPolicyScope() + .env("prod") + .service("billing-service"))) + .version(0L)) + .type(ApplicationSecurityPolicyType.POLICY)); + + try { + ApplicationSecurityPolicyResponse result = + apiInstance.createApplicationSecurityWafPolicy(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling ApplicationSecurityApi#createApplicationSecurityWafPolicy"); + 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/examples/v2/application-security/DeleteApplicationSecurityWafPolicy.java b/examples/v2/application-security/DeleteApplicationSecurityWafPolicy.java new file mode 100644 index 00000000000..8b331bd1cc5 --- /dev/null +++ b/examples/v2/application-security/DeleteApplicationSecurityWafPolicy.java @@ -0,0 +1,23 @@ +// Delete a WAF Policy returns "No Content" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.ApplicationSecurityApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + ApplicationSecurityApi apiInstance = new ApplicationSecurityApi(defaultClient); + + try { + apiInstance.deleteApplicationSecurityWafPolicy("policy_id"); + } catch (ApiException e) { + System.err.println( + "Exception when calling ApplicationSecurityApi#deleteApplicationSecurityWafPolicy"); + 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/examples/v2/application-security/GetApplicationSecurityWafPolicy.java b/examples/v2/application-security/GetApplicationSecurityWafPolicy.java new file mode 100644 index 00000000000..73a846c09ef --- /dev/null +++ b/examples/v2/application-security/GetApplicationSecurityWafPolicy.java @@ -0,0 +1,26 @@ +// Get a WAF Policy returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.ApplicationSecurityApi; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + ApplicationSecurityApi apiInstance = new ApplicationSecurityApi(defaultClient); + + try { + ApplicationSecurityPolicyResponse result = + apiInstance.getApplicationSecurityWafPolicy("policy_id"); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling ApplicationSecurityApi#getApplicationSecurityWafPolicy"); + 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/examples/v2/application-security/ListApplicationSecurityWAFPolicies.java b/examples/v2/application-security/ListApplicationSecurityWAFPolicies.java new file mode 100644 index 00000000000..83ea5930b34 --- /dev/null +++ b/examples/v2/application-security/ListApplicationSecurityWAFPolicies.java @@ -0,0 +1,26 @@ +// List all WAF policies returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.ApplicationSecurityApi; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyListResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + ApplicationSecurityApi apiInstance = new ApplicationSecurityApi(defaultClient); + + try { + ApplicationSecurityPolicyListResponse result = + apiInstance.listApplicationSecurityWAFPolicies(); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling ApplicationSecurityApi#listApplicationSecurityWAFPolicies"); + 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/examples/v2/application-security/UpdateApplicationSecurityWafPolicy.java b/examples/v2/application-security/UpdateApplicationSecurityWafPolicy.java new file mode 100644 index 00000000000..01d2c72923c --- /dev/null +++ b/examples/v2/application-security/UpdateApplicationSecurityWafPolicy.java @@ -0,0 +1,57 @@ +// Update a WAF Policy returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.ApplicationSecurityApi; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyResponse; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyRuleOverride; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyScope; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyType; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyUpdateAttributes; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyUpdateData; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyUpdateRequest; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + ApplicationSecurityApi apiInstance = new ApplicationSecurityApi(defaultClient); + + ApplicationSecurityPolicyUpdateRequest body = + new ApplicationSecurityPolicyUpdateRequest() + .data( + new ApplicationSecurityPolicyUpdateData() + .attributes( + new ApplicationSecurityPolicyUpdateAttributes() + .description("Policy applied to internal web applications.") + .isDefault(false) + .name("Internal Network Policy") + .protectionPresets(Collections.singletonList("attack-tools")) + .rules( + Collections.singletonList( + new ApplicationSecurityPolicyRuleOverride() + .blocking(false) + .enabled(true) + .id("rasp-001-002"))) + .scope( + Collections.singletonList( + new ApplicationSecurityPolicyScope() + .env("prod") + .service("billing-service"))) + .version(0L)) + .type(ApplicationSecurityPolicyType.POLICY)); + + try { + ApplicationSecurityPolicyResponse result = + apiInstance.updateApplicationSecurityWafPolicy("policy_id", body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling ApplicationSecurityApi#updateApplicationSecurityWafPolicy"); + 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/ApplicationSecurityApi.java b/src/main/java/com/datadog/api/client/v2/api/ApplicationSecurityApi.java index 4e7648a792a..7416aa0f726 100644 --- a/src/main/java/com/datadog/api/client/v2/api/ApplicationSecurityApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/ApplicationSecurityApi.java @@ -4,6 +4,10 @@ import com.datadog.api.client.ApiException; import com.datadog.api.client.ApiResponse; import com.datadog.api.client.Pair; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyCreateRequest; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyListResponse; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyResponse; +import com.datadog.api.client.v2.model.ApplicationSecurityPolicyUpdateRequest; import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleCreateRequest; import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleListResponse; import com.datadog.api.client.v2.model.ApplicationSecurityWafCustomRuleResponse; @@ -341,6 +345,147 @@ public ApplicationSecurityWafExclusionFilterResponse createApplicationSecurityWa new GenericType() {}); } + /** + * Create a WAF Policy. + * + *

See {@link #createApplicationSecurityWafPolicyWithHttpInfo}. + * + * @param body The new WAF policy. (required) + * @return ApplicationSecurityPolicyResponse + * @throws ApiException if fails to make API call + */ + public ApplicationSecurityPolicyResponse createApplicationSecurityWafPolicy( + ApplicationSecurityPolicyCreateRequest body) throws ApiException { + return createApplicationSecurityWafPolicyWithHttpInfo(body).getData(); + } + + /** + * Create a WAF Policy. + * + *

See {@link #createApplicationSecurityWafPolicyWithHttpInfoAsync}. + * + * @param body The new WAF policy. (required) + * @return CompletableFuture<ApplicationSecurityPolicyResponse> + */ + public CompletableFuture + createApplicationSecurityWafPolicyAsync(ApplicationSecurityPolicyCreateRequest body) { + return createApplicationSecurityWafPolicyWithHttpInfoAsync(body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Create a new WAF policy. + * + * @param body The new WAF policy. (required) + * @return ApiResponse<ApplicationSecurityPolicyResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
201 Created -
400 Bad Request -
403 Not Authorized -
409 Concurrent Modification -
429 Too many requests -
+ */ + public ApiResponse + createApplicationSecurityWafPolicyWithHttpInfo(ApplicationSecurityPolicyCreateRequest 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 createApplicationSecurityWafPolicy"); + } + // create path and map variables + String localVarPath = "/api/v2/remote_config/products/asm/waf/policies"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.createApplicationSecurityWafPolicy", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Create a WAF Policy. + * + *

See {@link #createApplicationSecurityWafPolicyWithHttpInfo}. + * + * @param body The new WAF policy. (required) + * @return CompletableFuture<ApiResponse<ApplicationSecurityPolicyResponse>> + */ + public CompletableFuture> + createApplicationSecurityWafPolicyWithHttpInfoAsync( + ApplicationSecurityPolicyCreateRequest 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" + + " createApplicationSecurityWafPolicy")); + return result; + } + // create path and map variables + String localVarPath = "/api/v2/remote_config/products/asm/waf/policies"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.createApplicationSecurityWafPolicy", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + /** * Delete a WAF Custom Rule. * @@ -627,6 +772,145 @@ public ApiResponse deleteApplicationSecurityWafExclusionFilterWithHttpInfo null); } + /** + * Delete a WAF Policy. + * + *

See {@link #deleteApplicationSecurityWafPolicyWithHttpInfo}. + * + * @param policyId The ID of the policy. (required) + * @throws ApiException if fails to make API call + */ + public void deleteApplicationSecurityWafPolicy(String policyId) throws ApiException { + deleteApplicationSecurityWafPolicyWithHttpInfo(policyId); + } + + /** + * Delete a WAF Policy. + * + *

See {@link #deleteApplicationSecurityWafPolicyWithHttpInfoAsync}. + * + * @param policyId The ID of the policy. (required) + * @return CompletableFuture + */ + public CompletableFuture deleteApplicationSecurityWafPolicyAsync(String policyId) { + return deleteApplicationSecurityWafPolicyWithHttpInfoAsync(policyId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Delete a specific WAF policy. + * + * @param policyId The ID of the policy. (required) + * @return ApiResponse<Void> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
204 No Content -
403 Not Authorized -
404 Not Found -
409 Concurrent Modification -
429 Too many requests -
+ */ + public ApiResponse deleteApplicationSecurityWafPolicyWithHttpInfo(String policyId) + throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'policyId' is set + if (policyId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'policyId' when calling" + + " deleteApplicationSecurityWafPolicy"); + } + // create path and map variables + String localVarPath = + "/api/v2/remote_config/products/asm/waf/policies/{policy_id}" + .replaceAll("\\{" + "policy_id" + "\\}", apiClient.escapeString(policyId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.deleteApplicationSecurityWafPolicy", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + + /** + * Delete a WAF Policy. + * + *

See {@link #deleteApplicationSecurityWafPolicyWithHttpInfo}. + * + * @param policyId The ID of the policy. (required) + * @return CompletableFuture<ApiResponse<Void>> + */ + public CompletableFuture> deleteApplicationSecurityWafPolicyWithHttpInfoAsync( + String policyId) { + Object localVarPostBody = null; + + // verify the required parameter 'policyId' is set + if (policyId == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'policyId' when calling" + + " deleteApplicationSecurityWafPolicy")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/remote_config/products/asm/waf/policies/{policy_id}" + .replaceAll("\\{" + "policy_id" + "\\}", apiClient.escapeString(policyId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.deleteApplicationSecurityWafPolicy", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + /** * Get a WAF custom rule. * @@ -772,30 +1056,179 @@ public ApplicationSecurityWafCustomRuleResponse getApplicationSecurityWafCustomR } /** - * Get a WAF exclusion filter. + * Get a WAF exclusion filter. + * + *

See {@link #getApplicationSecurityWafExclusionFilterWithHttpInfo}. + * + * @param exclusionFilterId The identifier of the WAF exclusion filter. (required) + * @return ApplicationSecurityWafExclusionFilterResponse + * @throws ApiException if fails to make API call + */ + public ApplicationSecurityWafExclusionFilterResponse getApplicationSecurityWafExclusionFilter( + String exclusionFilterId) throws ApiException { + return getApplicationSecurityWafExclusionFilterWithHttpInfo(exclusionFilterId).getData(); + } + + /** + * Get a WAF exclusion filter. + * + *

See {@link #getApplicationSecurityWafExclusionFilterWithHttpInfoAsync}. + * + * @param exclusionFilterId The identifier of the WAF exclusion filter. (required) + * @return CompletableFuture<ApplicationSecurityWafExclusionFilterResponse> + */ + public CompletableFuture + getApplicationSecurityWafExclusionFilterAsync(String exclusionFilterId) { + return getApplicationSecurityWafExclusionFilterWithHttpInfoAsync(exclusionFilterId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Retrieve a specific WAF exclusion filter using its identifier. + * + * @param exclusionFilterId The identifier of the WAF exclusion filter. (required) + * @return ApiResponse<ApplicationSecurityWafExclusionFilterResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
403 Not Authorized -
404 Not Found -
429 Too many requests -
+ */ + public ApiResponse + getApplicationSecurityWafExclusionFilterWithHttpInfo(String exclusionFilterId) + throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'exclusionFilterId' is set + if (exclusionFilterId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'exclusionFilterId' when calling" + + " getApplicationSecurityWafExclusionFilter"); + } + // create path and map variables + String localVarPath = + "/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}" + .replaceAll( + "\\{" + "exclusion_filter_id" + "\\}", + apiClient.escapeString(exclusionFilterId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.getApplicationSecurityWafExclusionFilter", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get a WAF exclusion filter. + * + *

See {@link #getApplicationSecurityWafExclusionFilterWithHttpInfo}. + * + * @param exclusionFilterId The identifier of the WAF exclusion filter. (required) + * @return + * CompletableFuture<ApiResponse<ApplicationSecurityWafExclusionFilterResponse>> + */ + public CompletableFuture> + getApplicationSecurityWafExclusionFilterWithHttpInfoAsync(String exclusionFilterId) { + Object localVarPostBody = null; + + // verify the required parameter 'exclusionFilterId' is set + if (exclusionFilterId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'exclusionFilterId' when calling" + + " getApplicationSecurityWafExclusionFilter")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}" + .replaceAll( + "\\{" + "exclusion_filter_id" + "\\}", + apiClient.escapeString(exclusionFilterId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.getApplicationSecurityWafExclusionFilter", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get a WAF Policy. * - *

See {@link #getApplicationSecurityWafExclusionFilterWithHttpInfo}. + *

See {@link #getApplicationSecurityWafPolicyWithHttpInfo}. * - * @param exclusionFilterId The identifier of the WAF exclusion filter. (required) - * @return ApplicationSecurityWafExclusionFilterResponse + * @param policyId The ID of the policy. (required) + * @return ApplicationSecurityPolicyResponse * @throws ApiException if fails to make API call */ - public ApplicationSecurityWafExclusionFilterResponse getApplicationSecurityWafExclusionFilter( - String exclusionFilterId) throws ApiException { - return getApplicationSecurityWafExclusionFilterWithHttpInfo(exclusionFilterId).getData(); + public ApplicationSecurityPolicyResponse getApplicationSecurityWafPolicy(String policyId) + throws ApiException { + return getApplicationSecurityWafPolicyWithHttpInfo(policyId).getData(); } /** - * Get a WAF exclusion filter. + * Get a WAF Policy. * - *

See {@link #getApplicationSecurityWafExclusionFilterWithHttpInfoAsync}. + *

See {@link #getApplicationSecurityWafPolicyWithHttpInfoAsync}. * - * @param exclusionFilterId The identifier of the WAF exclusion filter. (required) - * @return CompletableFuture<ApplicationSecurityWafExclusionFilterResponse> + * @param policyId The ID of the policy. (required) + * @return CompletableFuture<ApplicationSecurityPolicyResponse> */ - public CompletableFuture - getApplicationSecurityWafExclusionFilterAsync(String exclusionFilterId) { - return getApplicationSecurityWafExclusionFilterWithHttpInfoAsync(exclusionFilterId) + public CompletableFuture getApplicationSecurityWafPolicyAsync( + String policyId) { + return getApplicationSecurityWafPolicyWithHttpInfoAsync(policyId) .thenApply( response -> { return response.getData(); @@ -803,10 +1236,10 @@ public ApplicationSecurityWafExclusionFilterResponse getApplicationSecurityWafEx } /** - * Retrieve a specific WAF exclusion filter using its identifier. + * Retrieve a WAF policy by ID. * - * @param exclusionFilterId The identifier of the WAF exclusion filter. (required) - * @return ApiResponse<ApplicationSecurityWafExclusionFilterResponse> + * @param policyId The ID of the policy. (required) + * @return ApiResponse<ApplicationSecurityPolicyResponse> * @throws ApiException if fails to make API call * @http.response.details * @@ -814,34 +1247,29 @@ public ApplicationSecurityWafExclusionFilterResponse getApplicationSecurityWafEx * * * - * * *
Status Code Description Response Headers
200 OK -
403 Not Authorized -
404 Not Found -
429 Too many requests -
*/ - public ApiResponse - getApplicationSecurityWafExclusionFilterWithHttpInfo(String exclusionFilterId) - throws ApiException { + public ApiResponse getApplicationSecurityWafPolicyWithHttpInfo( + String policyId) throws ApiException { Object localVarPostBody = null; - // verify the required parameter 'exclusionFilterId' is set - if (exclusionFilterId == null) { + // verify the required parameter 'policyId' is set + if (policyId == null) { throw new ApiException( 400, - "Missing the required parameter 'exclusionFilterId' when calling" - + " getApplicationSecurityWafExclusionFilter"); + "Missing the required parameter 'policyId' when calling getApplicationSecurityWafPolicy"); } // create path and map variables String localVarPath = - "/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}" - .replaceAll( - "\\{" + "exclusion_filter_id" + "\\}", - apiClient.escapeString(exclusionFilterId.toString())); + "/api/v2/remote_config/products/asm/waf/policies/{policy_id}" + .replaceAll("\\{" + "policy_id" + "\\}", apiClient.escapeString(policyId.toString())); Map localVarHeaderParams = new HashMap(); Invocation.Builder builder = apiClient.createBuilder( - "v2.ApplicationSecurityApi.getApplicationSecurityWafExclusionFilter", + "v2.ApplicationSecurityApi.getApplicationSecurityWafPolicy", localVarPath, new ArrayList(), localVarHeaderParams, @@ -856,39 +1284,36 @@ public ApplicationSecurityWafExclusionFilterResponse getApplicationSecurityWafEx localVarPostBody, new HashMap(), false, - new GenericType() {}); + new GenericType() {}); } /** - * Get a WAF exclusion filter. + * Get a WAF Policy. * - *

See {@link #getApplicationSecurityWafExclusionFilterWithHttpInfo}. + *

See {@link #getApplicationSecurityWafPolicyWithHttpInfo}. * - * @param exclusionFilterId The identifier of the WAF exclusion filter. (required) - * @return - * CompletableFuture<ApiResponse<ApplicationSecurityWafExclusionFilterResponse>> + * @param policyId The ID of the policy. (required) + * @return CompletableFuture<ApiResponse<ApplicationSecurityPolicyResponse>> */ - public CompletableFuture> - getApplicationSecurityWafExclusionFilterWithHttpInfoAsync(String exclusionFilterId) { + public CompletableFuture> + getApplicationSecurityWafPolicyWithHttpInfoAsync(String policyId) { Object localVarPostBody = null; - // verify the required parameter 'exclusionFilterId' is set - if (exclusionFilterId == null) { - CompletableFuture> result = + // verify the required parameter 'policyId' is set + if (policyId == null) { + CompletableFuture> result = new CompletableFuture<>(); result.completeExceptionally( new ApiException( 400, - "Missing the required parameter 'exclusionFilterId' when calling" - + " getApplicationSecurityWafExclusionFilter")); + "Missing the required parameter 'policyId' when calling" + + " getApplicationSecurityWafPolicy")); return result; } // create path and map variables String localVarPath = - "/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}" - .replaceAll( - "\\{" + "exclusion_filter_id" + "\\}", - apiClient.escapeString(exclusionFilterId.toString())); + "/api/v2/remote_config/products/asm/waf/policies/{policy_id}" + .replaceAll("\\{" + "policy_id" + "\\}", apiClient.escapeString(policyId.toString())); Map localVarHeaderParams = new HashMap(); @@ -896,7 +1321,7 @@ public ApplicationSecurityWafExclusionFilterResponse getApplicationSecurityWafEx try { builder = apiClient.createBuilder( - "v2.ApplicationSecurityApi.getApplicationSecurityWafExclusionFilter", + "v2.ApplicationSecurityApi.getApplicationSecurityWafPolicy", localVarPath, new ArrayList(), localVarHeaderParams, @@ -904,7 +1329,7 @@ public ApplicationSecurityWafExclusionFilterResponse getApplicationSecurityWafEx new String[] {"application/json"}, new String[] {"apiKeyAuth", "appKeyAuth"}); } catch (ApiException ex) { - CompletableFuture> result = + CompletableFuture> result = new CompletableFuture<>(); result.completeExceptionally(ex); return result; @@ -917,7 +1342,7 @@ public ApplicationSecurityWafExclusionFilterResponse getApplicationSecurityWafEx localVarPostBody, new HashMap(), false, - new GenericType() {}); + new GenericType() {}); } /** @@ -1150,6 +1575,120 @@ public ApplicationSecurityWafExclusionFiltersResponse listApplicationSecurityWaf new GenericType() {}); } + /** + * List all WAF policies. + * + *

See {@link #listApplicationSecurityWAFPoliciesWithHttpInfo}. + * + * @return ApplicationSecurityPolicyListResponse + * @throws ApiException if fails to make API call + */ + public ApplicationSecurityPolicyListResponse listApplicationSecurityWAFPolicies() + throws ApiException { + return listApplicationSecurityWAFPoliciesWithHttpInfo().getData(); + } + + /** + * List all WAF policies. + * + *

See {@link #listApplicationSecurityWAFPoliciesWithHttpInfoAsync}. + * + * @return CompletableFuture<ApplicationSecurityPolicyListResponse> + */ + public CompletableFuture + listApplicationSecurityWAFPoliciesAsync() { + return listApplicationSecurityWAFPoliciesWithHttpInfoAsync() + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Retrieve a list of WAF policies. + * + * @return ApiResponse<ApplicationSecurityPolicyListResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
403 Not Authorized -
429 Too many requests -
+ */ + public ApiResponse + listApplicationSecurityWAFPoliciesWithHttpInfo() throws ApiException { + Object localVarPostBody = null; + // create path and map variables + String localVarPath = "/api/v2/remote_config/products/asm/waf/policies"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.listApplicationSecurityWAFPolicies", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * List all WAF policies. + * + *

See {@link #listApplicationSecurityWAFPoliciesWithHttpInfo}. + * + * @return CompletableFuture<ApiResponse<ApplicationSecurityPolicyListResponse>> + */ + public CompletableFuture> + listApplicationSecurityWAFPoliciesWithHttpInfoAsync() { + Object localVarPostBody = null; + // create path and map variables + String localVarPath = "/api/v2/remote_config/products/asm/waf/policies"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.listApplicationSecurityWAFPolicies", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + /** * Update a WAF Custom Rule. * @@ -1506,4 +2045,175 @@ public ApplicationSecurityWafExclusionFilterResponse updateApplicationSecurityWa false, new GenericType() {}); } + + /** + * Update a WAF Policy. + * + *

See {@link #updateApplicationSecurityWafPolicyWithHttpInfo}. + * + * @param policyId The ID of the policy. (required) + * @param body New WAF Policy. (required) + * @return ApplicationSecurityPolicyResponse + * @throws ApiException if fails to make API call + */ + public ApplicationSecurityPolicyResponse updateApplicationSecurityWafPolicy( + String policyId, ApplicationSecurityPolicyUpdateRequest body) throws ApiException { + return updateApplicationSecurityWafPolicyWithHttpInfo(policyId, body).getData(); + } + + /** + * Update a WAF Policy. + * + *

See {@link #updateApplicationSecurityWafPolicyWithHttpInfoAsync}. + * + * @param policyId The ID of the policy. (required) + * @param body New WAF Policy. (required) + * @return CompletableFuture<ApplicationSecurityPolicyResponse> + */ + public CompletableFuture + updateApplicationSecurityWafPolicyAsync( + String policyId, ApplicationSecurityPolicyUpdateRequest body) { + return updateApplicationSecurityWafPolicyWithHttpInfoAsync(policyId, body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Update a specific WAF policy. Returns the Policy object when the request is successful. + * + * @param policyId The ID of the policy. (required) + * @param body New WAF Policy. (required) + * @return ApiResponse<ApplicationSecurityPolicyResponse> + * @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 -
409 Concurrent Modification -
429 Too many requests -
+ */ + public ApiResponse + updateApplicationSecurityWafPolicyWithHttpInfo( + String policyId, ApplicationSecurityPolicyUpdateRequest body) throws ApiException { + Object localVarPostBody = body; + + // verify the required parameter 'policyId' is set + if (policyId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'policyId' when calling" + + " updateApplicationSecurityWafPolicy"); + } + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, + "Missing the required parameter 'body' when calling updateApplicationSecurityWafPolicy"); + } + // create path and map variables + String localVarPath = + "/api/v2/remote_config/products/asm/waf/policies/{policy_id}" + .replaceAll("\\{" + "policy_id" + "\\}", apiClient.escapeString(policyId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.updateApplicationSecurityWafPolicy", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "PUT", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Update a WAF Policy. + * + *

See {@link #updateApplicationSecurityWafPolicyWithHttpInfo}. + * + * @param policyId The ID of the policy. (required) + * @param body New WAF Policy. (required) + * @return CompletableFuture<ApiResponse<ApplicationSecurityPolicyResponse>> + */ + public CompletableFuture> + updateApplicationSecurityWafPolicyWithHttpInfoAsync( + String policyId, ApplicationSecurityPolicyUpdateRequest body) { + Object localVarPostBody = body; + + // verify the required parameter 'policyId' is set + if (policyId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'policyId' when calling" + + " updateApplicationSecurityWafPolicy")); + return result; + } + + // 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" + + " updateApplicationSecurityWafPolicy")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/remote_config/products/asm/waf/policies/{policy_id}" + .replaceAll("\\{" + "policy_id" + "\\}", apiClient.escapeString(policyId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.ApplicationSecurityApi.updateApplicationSecurityWafPolicy", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "PUT", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } } diff --git a/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyAttributes.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyAttributes.java new file mode 100644 index 00000000000..16558ac7e6e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyAttributes.java @@ -0,0 +1,358 @@ +/* + * 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; + +/** A WAF policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyAttributes.JSON_PROPERTY_DESCRIPTION, + ApplicationSecurityPolicyAttributes.JSON_PROPERTY_IS_DEFAULT, + ApplicationSecurityPolicyAttributes.JSON_PROPERTY_NAME, + ApplicationSecurityPolicyAttributes.JSON_PROPERTY_PROTECTION_PRESETS, + ApplicationSecurityPolicyAttributes.JSON_PROPERTY_RULES, + ApplicationSecurityPolicyAttributes.JSON_PROPERTY_SCOPE, + ApplicationSecurityPolicyAttributes.JSON_PROPERTY_VERSION +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_IS_DEFAULT = "isDefault"; + private Boolean isDefault; + + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_PROTECTION_PRESETS = "protectionPresets"; + private List protectionPresets = null; + + public static final String JSON_PROPERTY_RULES = "rules"; + private List rules = null; + + public static final String JSON_PROPERTY_SCOPE = "scope"; + private List scope = null; + + public static final String JSON_PROPERTY_VERSION = "version"; + private Long version = 0l; + + public ApplicationSecurityPolicyAttributes() {} + + @JsonCreator + public ApplicationSecurityPolicyAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_DESCRIPTION) String description, + @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name) { + this.description = description; + this.name = name; + } + + public ApplicationSecurityPolicyAttributes description(String description) { + this.description = description; + return this; + } + + /** + * Description of the WAF policy. + * + * @return description + */ + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public ApplicationSecurityPolicyAttributes isDefault(Boolean isDefault) { + this.isDefault = isDefault; + return this; + } + + /** + * Make this policy the default policy. The default policy is applied to every services not + * specifically added to another policy. + * + * @return isDefault + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_IS_DEFAULT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getIsDefault() { + return isDefault; + } + + public void setIsDefault(Boolean isDefault) { + this.isDefault = isDefault; + } + + public ApplicationSecurityPolicyAttributes name(String name) { + this.name = name; + return this; + } + + /** + * The Name of the WAF policy. + * + * @return name + */ + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ApplicationSecurityPolicyAttributes protectionPresets(List protectionPresets) { + this.protectionPresets = protectionPresets; + return this; + } + + public ApplicationSecurityPolicyAttributes addProtectionPresetsItem( + String protectionPresetsItem) { + if (this.protectionPresets == null) { + this.protectionPresets = new ArrayList<>(); + } + this.protectionPresets.add(protectionPresetsItem); + return this; + } + + /** + * Presets enabled on this policy. + * + * @return protectionPresets + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROTECTION_PRESETS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getProtectionPresets() { + return protectionPresets; + } + + public void setProtectionPresets(List protectionPresets) { + this.protectionPresets = protectionPresets; + } + + public ApplicationSecurityPolicyAttributes rules( + List rules) { + this.rules = rules; + for (ApplicationSecurityPolicyRuleOverride item : rules) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ApplicationSecurityPolicyAttributes addRulesItem( + ApplicationSecurityPolicyRuleOverride rulesItem) { + if (this.rules == null) { + this.rules = new ArrayList<>(); + } + this.rules.add(rulesItem); + this.unparsed |= rulesItem.unparsed; + return this; + } + + /** + * Rule overrides applied by the policy. + * + * @return rules + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RULES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getRules() { + return rules; + } + + public void setRules(List rules) { + this.rules = rules; + } + + public ApplicationSecurityPolicyAttributes scope(List scope) { + this.scope = scope; + for (ApplicationSecurityPolicyScope item : scope) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ApplicationSecurityPolicyAttributes addScopeItem( + ApplicationSecurityPolicyScope scopeItem) { + if (this.scope == null) { + this.scope = new ArrayList<>(); + } + this.scope.add(scopeItem); + this.unparsed |= scopeItem.unparsed; + return this; + } + + /** + * The scope of the WAF policy. + * + * @return scope + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SCOPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getScope() { + return scope; + } + + public void setScope(List scope) { + this.scope = scope; + } + + public ApplicationSecurityPolicyAttributes version(Long version) { + this.version = version; + return this; + } + + /** + * Version of the WAF ruleset maintained by Datadog used by this policy. 0 is the default value. + * + * @return version + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_VERSION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + /** + * 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 ApplicationSecurityPolicyAttributes + */ + @JsonAnySetter + public ApplicationSecurityPolicyAttributes 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 ApplicationSecurityPolicyAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyAttributes applicationSecurityPolicyAttributes = + (ApplicationSecurityPolicyAttributes) o; + return Objects.equals(this.description, applicationSecurityPolicyAttributes.description) + && Objects.equals(this.isDefault, applicationSecurityPolicyAttributes.isDefault) + && Objects.equals(this.name, applicationSecurityPolicyAttributes.name) + && Objects.equals( + this.protectionPresets, applicationSecurityPolicyAttributes.protectionPresets) + && Objects.equals(this.rules, applicationSecurityPolicyAttributes.rules) + && Objects.equals(this.scope, applicationSecurityPolicyAttributes.scope) + && Objects.equals(this.version, applicationSecurityPolicyAttributes.version) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + description, + isDefault, + name, + protectionPresets, + rules, + scope, + version, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyAttributes {\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" isDefault: ").append(toIndentedString(isDefault)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" protectionPresets: ").append(toIndentedString(protectionPresets)).append("\n"); + sb.append(" rules: ").append(toIndentedString(rules)).append("\n"); + sb.append(" scope: ").append(toIndentedString(scope)).append("\n"); + sb.append(" version: ").append(toIndentedString(version)).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/ApplicationSecurityPolicyCreateAttributes.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyCreateAttributes.java new file mode 100644 index 00000000000..dce2b2aa152 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyCreateAttributes.java @@ -0,0 +1,390 @@ +/* + * 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; + +/** Create a new WAF policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyCreateAttributes.JSON_PROPERTY_BASED_ON, + ApplicationSecurityPolicyCreateAttributes.JSON_PROPERTY_DESCRIPTION, + ApplicationSecurityPolicyCreateAttributes.JSON_PROPERTY_IS_DEFAULT, + ApplicationSecurityPolicyCreateAttributes.JSON_PROPERTY_NAME, + ApplicationSecurityPolicyCreateAttributes.JSON_PROPERTY_PROTECTION_PRESETS, + ApplicationSecurityPolicyCreateAttributes.JSON_PROPERTY_RULES, + ApplicationSecurityPolicyCreateAttributes.JSON_PROPERTY_SCOPE, + ApplicationSecurityPolicyCreateAttributes.JSON_PROPERTY_VERSION +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyCreateAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_BASED_ON = "basedOn"; + private String basedOn; + + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_IS_DEFAULT = "isDefault"; + private Boolean isDefault; + + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_PROTECTION_PRESETS = "protectionPresets"; + private List protectionPresets = null; + + public static final String JSON_PROPERTY_RULES = "rules"; + private List rules = null; + + public static final String JSON_PROPERTY_SCOPE = "scope"; + private List scope = null; + + public static final String JSON_PROPERTY_VERSION = "version"; + private Long version = 0l; + + public ApplicationSecurityPolicyCreateAttributes() {} + + @JsonCreator + public ApplicationSecurityPolicyCreateAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_BASED_ON) String basedOn, + @JsonProperty(required = true, value = JSON_PROPERTY_DESCRIPTION) String description, + @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name) { + this.basedOn = basedOn; + this.description = description; + this.name = name; + } + + public ApplicationSecurityPolicyCreateAttributes basedOn(String basedOn) { + this.basedOn = basedOn; + return this; + } + + /** + * When creating a new policy, clone the policy indicated by this identifier. + * + * @return basedOn + */ + @JsonProperty(JSON_PROPERTY_BASED_ON) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getBasedOn() { + return basedOn; + } + + public void setBasedOn(String basedOn) { + this.basedOn = basedOn; + } + + public ApplicationSecurityPolicyCreateAttributes description(String description) { + this.description = description; + return this; + } + + /** + * Description of the WAF policy. + * + * @return description + */ + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public ApplicationSecurityPolicyCreateAttributes isDefault(Boolean isDefault) { + this.isDefault = isDefault; + return this; + } + + /** + * Make this policy the default policy. The default policy is applied to every services not + * specifically added to another policy. + * + * @return isDefault + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_IS_DEFAULT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getIsDefault() { + return isDefault; + } + + public void setIsDefault(Boolean isDefault) { + this.isDefault = isDefault; + } + + public ApplicationSecurityPolicyCreateAttributes name(String name) { + this.name = name; + return this; + } + + /** + * The Name of the WAF policy. + * + * @return name + */ + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ApplicationSecurityPolicyCreateAttributes protectionPresets( + List protectionPresets) { + this.protectionPresets = protectionPresets; + return this; + } + + public ApplicationSecurityPolicyCreateAttributes addProtectionPresetsItem( + String protectionPresetsItem) { + if (this.protectionPresets == null) { + this.protectionPresets = new ArrayList<>(); + } + this.protectionPresets.add(protectionPresetsItem); + return this; + } + + /** + * Presets enabled on this policy. + * + * @return protectionPresets + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROTECTION_PRESETS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getProtectionPresets() { + return protectionPresets; + } + + public void setProtectionPresets(List protectionPresets) { + this.protectionPresets = protectionPresets; + } + + public ApplicationSecurityPolicyCreateAttributes rules( + List rules) { + this.rules = rules; + for (ApplicationSecurityPolicyRuleOverride item : rules) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ApplicationSecurityPolicyCreateAttributes addRulesItem( + ApplicationSecurityPolicyRuleOverride rulesItem) { + if (this.rules == null) { + this.rules = new ArrayList<>(); + } + this.rules.add(rulesItem); + this.unparsed |= rulesItem.unparsed; + return this; + } + + /** + * Rule overrides applied by the policy. + * + * @return rules + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RULES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getRules() { + return rules; + } + + public void setRules(List rules) { + this.rules = rules; + } + + public ApplicationSecurityPolicyCreateAttributes scope( + List scope) { + this.scope = scope; + for (ApplicationSecurityPolicyScope item : scope) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ApplicationSecurityPolicyCreateAttributes addScopeItem( + ApplicationSecurityPolicyScope scopeItem) { + if (this.scope == null) { + this.scope = new ArrayList<>(); + } + this.scope.add(scopeItem); + this.unparsed |= scopeItem.unparsed; + return this; + } + + /** + * The scope of the WAF policy. + * + * @return scope + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SCOPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getScope() { + return scope; + } + + public void setScope(List scope) { + this.scope = scope; + } + + public ApplicationSecurityPolicyCreateAttributes version(Long version) { + this.version = version; + return this; + } + + /** + * Version of the WAF ruleset maintained by Datadog used by this policy. 0 is the default value. + * + * @return version + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_VERSION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + /** + * 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 ApplicationSecurityPolicyCreateAttributes + */ + @JsonAnySetter + public ApplicationSecurityPolicyCreateAttributes 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 ApplicationSecurityPolicyCreateAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyCreateAttributes applicationSecurityPolicyCreateAttributes = + (ApplicationSecurityPolicyCreateAttributes) o; + return Objects.equals(this.basedOn, applicationSecurityPolicyCreateAttributes.basedOn) + && Objects.equals(this.description, applicationSecurityPolicyCreateAttributes.description) + && Objects.equals(this.isDefault, applicationSecurityPolicyCreateAttributes.isDefault) + && Objects.equals(this.name, applicationSecurityPolicyCreateAttributes.name) + && Objects.equals( + this.protectionPresets, applicationSecurityPolicyCreateAttributes.protectionPresets) + && Objects.equals(this.rules, applicationSecurityPolicyCreateAttributes.rules) + && Objects.equals(this.scope, applicationSecurityPolicyCreateAttributes.scope) + && Objects.equals(this.version, applicationSecurityPolicyCreateAttributes.version) + && Objects.equals( + this.additionalProperties, + applicationSecurityPolicyCreateAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + basedOn, + description, + isDefault, + name, + protectionPresets, + rules, + scope, + version, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyCreateAttributes {\n"); + sb.append(" basedOn: ").append(toIndentedString(basedOn)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" isDefault: ").append(toIndentedString(isDefault)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" protectionPresets: ").append(toIndentedString(protectionPresets)).append("\n"); + sb.append(" rules: ").append(toIndentedString(rules)).append("\n"); + sb.append(" scope: ").append(toIndentedString(scope)).append("\n"); + sb.append(" version: ").append(toIndentedString(version)).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/ApplicationSecurityPolicyCreateData.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyCreateData.java new file mode 100644 index 00000000000..7b3ea8a56d8 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyCreateData.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.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; + +/** Object for a single WAF policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyCreateData.JSON_PROPERTY_ATTRIBUTES, + ApplicationSecurityPolicyCreateData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyCreateData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private ApplicationSecurityPolicyCreateAttributes attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private ApplicationSecurityPolicyType type = ApplicationSecurityPolicyType.POLICY; + + public ApplicationSecurityPolicyCreateData() {} + + @JsonCreator + public ApplicationSecurityPolicyCreateData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + ApplicationSecurityPolicyCreateAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ApplicationSecurityPolicyType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public ApplicationSecurityPolicyCreateData attributes( + ApplicationSecurityPolicyCreateAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Create a new WAF policy. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ApplicationSecurityPolicyCreateAttributes getAttributes() { + return attributes; + } + + public void setAttributes(ApplicationSecurityPolicyCreateAttributes attributes) { + this.attributes = attributes; + } + + public ApplicationSecurityPolicyCreateData type(ApplicationSecurityPolicyType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of the resource. The value should always be policy. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ApplicationSecurityPolicyType getType() { + return type; + } + + public void setType(ApplicationSecurityPolicyType 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 ApplicationSecurityPolicyCreateData + */ + @JsonAnySetter + public ApplicationSecurityPolicyCreateData 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 ApplicationSecurityPolicyCreateData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyCreateData applicationSecurityPolicyCreateData = + (ApplicationSecurityPolicyCreateData) o; + return Objects.equals(this.attributes, applicationSecurityPolicyCreateData.attributes) + && Objects.equals(this.type, applicationSecurityPolicyCreateData.type) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyCreateData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyCreateData {\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/ApplicationSecurityPolicyCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyCreateRequest.java new file mode 100644 index 00000000000..0ff29897f6b --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyCreateRequest.java @@ -0,0 +1,148 @@ +/* + * 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; + +/** Request object that includes the policy to create. */ +@JsonPropertyOrder({ApplicationSecurityPolicyCreateRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyCreateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private ApplicationSecurityPolicyCreateData data; + + public ApplicationSecurityPolicyCreateRequest() {} + + @JsonCreator + public ApplicationSecurityPolicyCreateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + ApplicationSecurityPolicyCreateData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public ApplicationSecurityPolicyCreateRequest data(ApplicationSecurityPolicyCreateData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * Object for a single WAF policy. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ApplicationSecurityPolicyCreateData getData() { + return data; + } + + public void setData(ApplicationSecurityPolicyCreateData 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 ApplicationSecurityPolicyCreateRequest + */ + @JsonAnySetter + public ApplicationSecurityPolicyCreateRequest 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 ApplicationSecurityPolicyCreateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyCreateRequest applicationSecurityPolicyCreateRequest = + (ApplicationSecurityPolicyCreateRequest) o; + return Objects.equals(this.data, applicationSecurityPolicyCreateRequest.data) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyCreateRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyCreateRequest {\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/ApplicationSecurityPolicyData.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyData.java new file mode 100644 index 00000000000..3a9616f11a3 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyData.java @@ -0,0 +1,206 @@ +/* + * 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; + +/** Object for a single WAF policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyData.JSON_PROPERTY_ATTRIBUTES, + ApplicationSecurityPolicyData.JSON_PROPERTY_ID, + ApplicationSecurityPolicyData.JSON_PROPERTY_METADATA, + ApplicationSecurityPolicyData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private ApplicationSecurityPolicyAttributes attributes; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_METADATA = "metadata"; + private ApplicationSecurityPolicyMetadata metadata; + + public static final String JSON_PROPERTY_TYPE = "type"; + private ApplicationSecurityPolicyType type = ApplicationSecurityPolicyType.POLICY; + + public ApplicationSecurityPolicyData attributes(ApplicationSecurityPolicyAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * A WAF policy. + * + * @return attributes + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ApplicationSecurityPolicyAttributes getAttributes() { + return attributes; + } + + public void setAttributes(ApplicationSecurityPolicyAttributes attributes) { + this.attributes = attributes; + } + + /** + * The ID of the policy. + * + * @return id + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getId() { + return id; + } + + /** + * Metadata associated with the WAF policy. + * + * @return metadata + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_METADATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ApplicationSecurityPolicyMetadata getMetadata() { + return metadata; + } + + public ApplicationSecurityPolicyData type(ApplicationSecurityPolicyType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of the resource. The value should always be policy. + * + * @return type + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ApplicationSecurityPolicyType getType() { + return type; + } + + public void setType(ApplicationSecurityPolicyType 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 ApplicationSecurityPolicyData + */ + @JsonAnySetter + public ApplicationSecurityPolicyData 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 ApplicationSecurityPolicyData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyData applicationSecurityPolicyData = (ApplicationSecurityPolicyData) o; + return Objects.equals(this.attributes, applicationSecurityPolicyData.attributes) + && Objects.equals(this.id, applicationSecurityPolicyData.id) + && Objects.equals(this.metadata, applicationSecurityPolicyData.metadata) + && Objects.equals(this.type, applicationSecurityPolicyData.type) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, id, metadata, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" metadata: ").append(toIndentedString(metadata)).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/ApplicationSecurityPolicyListResponse.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyListResponse.java new file mode 100644 index 00000000000..d3377e09a1d --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyListResponse.java @@ -0,0 +1,151 @@ +/* + * 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 object that includes a list of WAF policies. */ +@JsonPropertyOrder({ApplicationSecurityPolicyListResponse.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyListResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private List data = null; + + public ApplicationSecurityPolicyListResponse data(List data) { + this.data = data; + for (ApplicationSecurityPolicyData item : data) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ApplicationSecurityPolicyListResponse addDataItem(ApplicationSecurityPolicyData dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + this.unparsed |= dataItem.unparsed; + return this; + } + + /** + * The WAF policy data. + * + * @return data + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getData() { + return data; + } + + public void setData(List 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 ApplicationSecurityPolicyListResponse + */ + @JsonAnySetter + public ApplicationSecurityPolicyListResponse 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 ApplicationSecurityPolicyListResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyListResponse applicationSecurityPolicyListResponse = + (ApplicationSecurityPolicyListResponse) o; + return Objects.equals(this.data, applicationSecurityPolicyListResponse.data) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyListResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyListResponse {\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/ApplicationSecurityPolicyMetadata.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyMetadata.java new file mode 100644 index 00000000000..5c74cefcb0b --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyMetadata.java @@ -0,0 +1,282 @@ +/* + * 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.time.OffsetDateTime; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Metadata associated with the WAF policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyMetadata.JSON_PROPERTY_ADDED_AT, + ApplicationSecurityPolicyMetadata.JSON_PROPERTY_ADDED_BY, + ApplicationSecurityPolicyMetadata.JSON_PROPERTY_ADDED_BY_NAME, + ApplicationSecurityPolicyMetadata.JSON_PROPERTY_MODIFIED_AT, + ApplicationSecurityPolicyMetadata.JSON_PROPERTY_MODIFIED_BY, + ApplicationSecurityPolicyMetadata.JSON_PROPERTY_MODIFIED_BY_NAME +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyMetadata { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ADDED_AT = "added_at"; + private OffsetDateTime addedAt; + + public static final String JSON_PROPERTY_ADDED_BY = "added_by"; + private String addedBy; + + public static final String JSON_PROPERTY_ADDED_BY_NAME = "added_by_name"; + private String addedByName; + + public static final String JSON_PROPERTY_MODIFIED_AT = "modified_at"; + private OffsetDateTime modifiedAt; + + public static final String JSON_PROPERTY_MODIFIED_BY = "modified_by"; + private String modifiedBy; + + public static final String JSON_PROPERTY_MODIFIED_BY_NAME = "modified_by_name"; + private String modifiedByName; + + public ApplicationSecurityPolicyMetadata addedAt(OffsetDateTime addedAt) { + this.addedAt = addedAt; + return this; + } + + /** + * The date and time the WAF policy was created. + * + * @return addedAt + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDED_AT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public OffsetDateTime getAddedAt() { + return addedAt; + } + + public void setAddedAt(OffsetDateTime addedAt) { + this.addedAt = addedAt; + } + + public ApplicationSecurityPolicyMetadata addedBy(String addedBy) { + this.addedBy = addedBy; + return this; + } + + /** + * The handle of the user who created the WAF policy. + * + * @return addedBy + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDED_BY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAddedBy() { + return addedBy; + } + + public void setAddedBy(String addedBy) { + this.addedBy = addedBy; + } + + public ApplicationSecurityPolicyMetadata addedByName(String addedByName) { + this.addedByName = addedByName; + return this; + } + + /** + * The name of the user who created the WAF policy. + * + * @return addedByName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDED_BY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAddedByName() { + return addedByName; + } + + public void setAddedByName(String addedByName) { + this.addedByName = addedByName; + } + + public ApplicationSecurityPolicyMetadata modifiedAt(OffsetDateTime modifiedAt) { + this.modifiedAt = modifiedAt; + return this; + } + + /** + * The date and time the WAF policy was last updated. + * + * @return modifiedAt + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MODIFIED_AT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public OffsetDateTime getModifiedAt() { + return modifiedAt; + } + + public void setModifiedAt(OffsetDateTime modifiedAt) { + this.modifiedAt = modifiedAt; + } + + public ApplicationSecurityPolicyMetadata modifiedBy(String modifiedBy) { + this.modifiedBy = modifiedBy; + return this; + } + + /** + * The handle of the user who last updated the WAF policy. + * + * @return modifiedBy + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MODIFIED_BY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getModifiedBy() { + return modifiedBy; + } + + public void setModifiedBy(String modifiedBy) { + this.modifiedBy = modifiedBy; + } + + public ApplicationSecurityPolicyMetadata modifiedByName(String modifiedByName) { + this.modifiedByName = modifiedByName; + return this; + } + + /** + * The name of the user who last updated the WAF policy. + * + * @return modifiedByName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MODIFIED_BY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getModifiedByName() { + return modifiedByName; + } + + public void setModifiedByName(String modifiedByName) { + this.modifiedByName = modifiedByName; + } + + /** + * 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 ApplicationSecurityPolicyMetadata + */ + @JsonAnySetter + public ApplicationSecurityPolicyMetadata 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 ApplicationSecurityPolicyMetadata object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyMetadata applicationSecurityPolicyMetadata = + (ApplicationSecurityPolicyMetadata) o; + return Objects.equals(this.addedAt, applicationSecurityPolicyMetadata.addedAt) + && Objects.equals(this.addedBy, applicationSecurityPolicyMetadata.addedBy) + && Objects.equals(this.addedByName, applicationSecurityPolicyMetadata.addedByName) + && Objects.equals(this.modifiedAt, applicationSecurityPolicyMetadata.modifiedAt) + && Objects.equals(this.modifiedBy, applicationSecurityPolicyMetadata.modifiedBy) + && Objects.equals(this.modifiedByName, applicationSecurityPolicyMetadata.modifiedByName) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyMetadata.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + addedAt, + addedBy, + addedByName, + modifiedAt, + modifiedBy, + modifiedByName, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyMetadata {\n"); + sb.append(" addedAt: ").append(toIndentedString(addedAt)).append("\n"); + sb.append(" addedBy: ").append(toIndentedString(addedBy)).append("\n"); + sb.append(" addedByName: ").append(toIndentedString(addedByName)).append("\n"); + sb.append(" modifiedAt: ").append(toIndentedString(modifiedAt)).append("\n"); + sb.append(" modifiedBy: ").append(toIndentedString(modifiedBy)).append("\n"); + sb.append(" modifiedByName: ").append(toIndentedString(modifiedByName)).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/ApplicationSecurityPolicyResponse.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyResponse.java new file mode 100644 index 00000000000..e54e96d5101 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyResponse.java @@ -0,0 +1,138 @@ +/* + * 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; + +/** Response object that includes a single WAF policy. */ +@JsonPropertyOrder({ApplicationSecurityPolicyResponse.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private ApplicationSecurityPolicyData data; + + public ApplicationSecurityPolicyResponse data(ApplicationSecurityPolicyData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * Object for a single WAF policy. + * + * @return data + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ApplicationSecurityPolicyData getData() { + return data; + } + + public void setData(ApplicationSecurityPolicyData 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 ApplicationSecurityPolicyResponse + */ + @JsonAnySetter + public ApplicationSecurityPolicyResponse 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 ApplicationSecurityPolicyResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyResponse applicationSecurityPolicyResponse = + (ApplicationSecurityPolicyResponse) o; + return Objects.equals(this.data, applicationSecurityPolicyResponse.data) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyResponse {\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/ApplicationSecurityPolicyRuleOverride.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyRuleOverride.java new file mode 100644 index 00000000000..0be6ee629fa --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyRuleOverride.java @@ -0,0 +1,203 @@ +/* + * 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; + +/** Override WAF rule parameters for services in a policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyRuleOverride.JSON_PROPERTY_BLOCKING, + ApplicationSecurityPolicyRuleOverride.JSON_PROPERTY_ENABLED, + ApplicationSecurityPolicyRuleOverride.JSON_PROPERTY_ID +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyRuleOverride { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_BLOCKING = "blocking"; + private Boolean blocking; + + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public ApplicationSecurityPolicyRuleOverride() {} + + @JsonCreator + public ApplicationSecurityPolicyRuleOverride( + @JsonProperty(required = true, value = JSON_PROPERTY_BLOCKING) Boolean blocking, + @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id) { + this.blocking = blocking; + this.enabled = enabled; + this.id = id; + } + + public ApplicationSecurityPolicyRuleOverride blocking(Boolean blocking) { + this.blocking = blocking; + return this; + } + + /** + * When blocking is enabled, the rule will block the traffic matched by this rule. + * + * @return blocking + */ + @JsonProperty(JSON_PROPERTY_BLOCKING) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Boolean getBlocking() { + return blocking; + } + + public void setBlocking(Boolean blocking) { + this.blocking = blocking; + } + + public ApplicationSecurityPolicyRuleOverride enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * When false, this rule will not match any traffic. + * + * @return enabled + */ + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public ApplicationSecurityPolicyRuleOverride id(String id) { + this.id = id; + return this; + } + + /** + * Override the parameters for this WAF rule identifier. + * + * @return id + */ + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + /** + * 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 ApplicationSecurityPolicyRuleOverride + */ + @JsonAnySetter + public ApplicationSecurityPolicyRuleOverride 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 ApplicationSecurityPolicyRuleOverride object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyRuleOverride applicationSecurityPolicyRuleOverride = + (ApplicationSecurityPolicyRuleOverride) o; + return Objects.equals(this.blocking, applicationSecurityPolicyRuleOverride.blocking) + && Objects.equals(this.enabled, applicationSecurityPolicyRuleOverride.enabled) + && Objects.equals(this.id, applicationSecurityPolicyRuleOverride.id) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyRuleOverride.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(blocking, enabled, id, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyRuleOverride {\n"); + sb.append(" blocking: ").append(toIndentedString(blocking)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).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/ApplicationSecurityPolicyScope.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyScope.java new file mode 100644 index 00000000000..8180fe64ff2 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyScope.java @@ -0,0 +1,175 @@ +/* + * 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; + +/** The scope of the WAF policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyScope.JSON_PROPERTY_ENV, + ApplicationSecurityPolicyScope.JSON_PROPERTY_SERVICE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyScope { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ENV = "env"; + private String env; + + public static final String JSON_PROPERTY_SERVICE = "service"; + private String service; + + public ApplicationSecurityPolicyScope() {} + + @JsonCreator + public ApplicationSecurityPolicyScope( + @JsonProperty(required = true, value = JSON_PROPERTY_ENV) String env, + @JsonProperty(required = true, value = JSON_PROPERTY_SERVICE) String service) { + this.env = env; + this.service = service; + } + + public ApplicationSecurityPolicyScope env(String env) { + this.env = env; + return this; + } + + /** + * The environment scope for the WAF policy. + * + * @return env + */ + @JsonProperty(JSON_PROPERTY_ENV) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getEnv() { + return env; + } + + public void setEnv(String env) { + this.env = env; + } + + public ApplicationSecurityPolicyScope service(String service) { + this.service = service; + return this; + } + + /** + * The service scope for the WAF policy. + * + * @return service + */ + @JsonProperty(JSON_PROPERTY_SERVICE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + /** + * 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 ApplicationSecurityPolicyScope + */ + @JsonAnySetter + public ApplicationSecurityPolicyScope 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 ApplicationSecurityPolicyScope object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyScope applicationSecurityPolicyScope = + (ApplicationSecurityPolicyScope) o; + return Objects.equals(this.env, applicationSecurityPolicyScope.env) + && Objects.equals(this.service, applicationSecurityPolicyScope.service) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyScope.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(env, service, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyScope {\n"); + sb.append(" env: ").append(toIndentedString(env)).append("\n"); + sb.append(" service: ").append(toIndentedString(service)).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/ApplicationSecurityPolicyType.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyType.java new file mode 100644 index 00000000000..5e76020f920 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyType.java @@ -0,0 +1,56 @@ +/* + * 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 resource. The value should always be policy. */ +@JsonSerialize(using = ApplicationSecurityPolicyType.ApplicationSecurityPolicyTypeSerializer.class) +public class ApplicationSecurityPolicyType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("policy")); + + public static final ApplicationSecurityPolicyType POLICY = + new ApplicationSecurityPolicyType("policy"); + + ApplicationSecurityPolicyType(String value) { + super(value, allowedValues); + } + + public static class ApplicationSecurityPolicyTypeSerializer + extends StdSerializer { + public ApplicationSecurityPolicyTypeSerializer(Class t) { + super(t); + } + + public ApplicationSecurityPolicyTypeSerializer() { + this(null); + } + + @Override + public void serialize( + ApplicationSecurityPolicyType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static ApplicationSecurityPolicyType fromValue(String value) { + return new ApplicationSecurityPolicyType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyUpdateAttributes.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyUpdateAttributes.java new file mode 100644 index 00000000000..8f40185da04 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyUpdateAttributes.java @@ -0,0 +1,360 @@ +/* + * 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; + +/** Update a WAF policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyUpdateAttributes.JSON_PROPERTY_DESCRIPTION, + ApplicationSecurityPolicyUpdateAttributes.JSON_PROPERTY_IS_DEFAULT, + ApplicationSecurityPolicyUpdateAttributes.JSON_PROPERTY_NAME, + ApplicationSecurityPolicyUpdateAttributes.JSON_PROPERTY_PROTECTION_PRESETS, + ApplicationSecurityPolicyUpdateAttributes.JSON_PROPERTY_RULES, + ApplicationSecurityPolicyUpdateAttributes.JSON_PROPERTY_SCOPE, + ApplicationSecurityPolicyUpdateAttributes.JSON_PROPERTY_VERSION +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyUpdateAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_IS_DEFAULT = "isDefault"; + private Boolean isDefault; + + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_PROTECTION_PRESETS = "protectionPresets"; + private List protectionPresets = new ArrayList<>(); + + public static final String JSON_PROPERTY_RULES = "rules"; + private List rules = new ArrayList<>(); + + public static final String JSON_PROPERTY_SCOPE = "scope"; + private List scope = new ArrayList<>(); + + public static final String JSON_PROPERTY_VERSION = "version"; + private Long version = 0l; + + public ApplicationSecurityPolicyUpdateAttributes() {} + + @JsonCreator + public ApplicationSecurityPolicyUpdateAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_DESCRIPTION) String description, + @JsonProperty(required = true, value = JSON_PROPERTY_IS_DEFAULT) Boolean isDefault, + @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name, + @JsonProperty(required = true, value = JSON_PROPERTY_PROTECTION_PRESETS) + List protectionPresets, + @JsonProperty(required = true, value = JSON_PROPERTY_RULES) + List rules, + @JsonProperty(required = true, value = JSON_PROPERTY_SCOPE) + List scope, + @JsonProperty(required = true, value = JSON_PROPERTY_VERSION) Long version) { + this.description = description; + this.isDefault = isDefault; + this.name = name; + this.protectionPresets = protectionPresets; + this.rules = rules; + this.scope = scope; + this.version = version; + } + + public ApplicationSecurityPolicyUpdateAttributes description(String description) { + this.description = description; + return this; + } + + /** + * Description of the WAF policy. + * + * @return description + */ + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public ApplicationSecurityPolicyUpdateAttributes isDefault(Boolean isDefault) { + this.isDefault = isDefault; + return this; + } + + /** + * Make this policy the default policy. The default policy is applied to every services not + * specifically added to another policy. + * + * @return isDefault + */ + @JsonProperty(JSON_PROPERTY_IS_DEFAULT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Boolean getIsDefault() { + return isDefault; + } + + public void setIsDefault(Boolean isDefault) { + this.isDefault = isDefault; + } + + public ApplicationSecurityPolicyUpdateAttributes name(String name) { + this.name = name; + return this; + } + + /** + * The Name of the WAF policy. + * + * @return name + */ + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ApplicationSecurityPolicyUpdateAttributes protectionPresets( + List protectionPresets) { + this.protectionPresets = protectionPresets; + return this; + } + + public ApplicationSecurityPolicyUpdateAttributes addProtectionPresetsItem( + String protectionPresetsItem) { + this.protectionPresets.add(protectionPresetsItem); + return this; + } + + /** + * Presets enabled on this policy. + * + * @return protectionPresets + */ + @JsonProperty(JSON_PROPERTY_PROTECTION_PRESETS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getProtectionPresets() { + return protectionPresets; + } + + public void setProtectionPresets(List protectionPresets) { + this.protectionPresets = protectionPresets; + } + + public ApplicationSecurityPolicyUpdateAttributes rules( + List rules) { + this.rules = rules; + for (ApplicationSecurityPolicyRuleOverride item : rules) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ApplicationSecurityPolicyUpdateAttributes addRulesItem( + ApplicationSecurityPolicyRuleOverride rulesItem) { + this.rules.add(rulesItem); + this.unparsed |= rulesItem.unparsed; + return this; + } + + /** + * Rule overrides applied by the policy. + * + * @return rules + */ + @JsonProperty(JSON_PROPERTY_RULES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getRules() { + return rules; + } + + public void setRules(List rules) { + this.rules = rules; + } + + public ApplicationSecurityPolicyUpdateAttributes scope( + List scope) { + this.scope = scope; + for (ApplicationSecurityPolicyScope item : scope) { + this.unparsed |= item.unparsed; + } + return this; + } + + public ApplicationSecurityPolicyUpdateAttributes addScopeItem( + ApplicationSecurityPolicyScope scopeItem) { + this.scope.add(scopeItem); + this.unparsed |= scopeItem.unparsed; + return this; + } + + /** + * The scope of the WAF policy. + * + * @return scope + */ + @JsonProperty(JSON_PROPERTY_SCOPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getScope() { + return scope; + } + + public void setScope(List scope) { + this.scope = scope; + } + + public ApplicationSecurityPolicyUpdateAttributes version(Long version) { + this.version = version; + return this; + } + + /** + * Version of the WAF ruleset maintained by Datadog used by this policy. 0 is the default value. + * + * @return version + */ + @JsonProperty(JSON_PROPERTY_VERSION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + /** + * 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 ApplicationSecurityPolicyUpdateAttributes + */ + @JsonAnySetter + public ApplicationSecurityPolicyUpdateAttributes 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 ApplicationSecurityPolicyUpdateAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyUpdateAttributes applicationSecurityPolicyUpdateAttributes = + (ApplicationSecurityPolicyUpdateAttributes) o; + return Objects.equals(this.description, applicationSecurityPolicyUpdateAttributes.description) + && Objects.equals(this.isDefault, applicationSecurityPolicyUpdateAttributes.isDefault) + && Objects.equals(this.name, applicationSecurityPolicyUpdateAttributes.name) + && Objects.equals( + this.protectionPresets, applicationSecurityPolicyUpdateAttributes.protectionPresets) + && Objects.equals(this.rules, applicationSecurityPolicyUpdateAttributes.rules) + && Objects.equals(this.scope, applicationSecurityPolicyUpdateAttributes.scope) + && Objects.equals(this.version, applicationSecurityPolicyUpdateAttributes.version) + && Objects.equals( + this.additionalProperties, + applicationSecurityPolicyUpdateAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + description, + isDefault, + name, + protectionPresets, + rules, + scope, + version, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyUpdateAttributes {\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" isDefault: ").append(toIndentedString(isDefault)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" protectionPresets: ").append(toIndentedString(protectionPresets)).append("\n"); + sb.append(" rules: ").append(toIndentedString(rules)).append("\n"); + sb.append(" scope: ").append(toIndentedString(scope)).append("\n"); + sb.append(" version: ").append(toIndentedString(version)).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/ApplicationSecurityPolicyUpdateData.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyUpdateData.java new file mode 100644 index 00000000000..3aa7777a837 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyUpdateData.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.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; + +/** Object for a single WAF policy. */ +@JsonPropertyOrder({ + ApplicationSecurityPolicyUpdateData.JSON_PROPERTY_ATTRIBUTES, + ApplicationSecurityPolicyUpdateData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyUpdateData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private ApplicationSecurityPolicyUpdateAttributes attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private ApplicationSecurityPolicyType type = ApplicationSecurityPolicyType.POLICY; + + public ApplicationSecurityPolicyUpdateData() {} + + @JsonCreator + public ApplicationSecurityPolicyUpdateData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + ApplicationSecurityPolicyUpdateAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + ApplicationSecurityPolicyType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public ApplicationSecurityPolicyUpdateData attributes( + ApplicationSecurityPolicyUpdateAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Update a WAF policy. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ApplicationSecurityPolicyUpdateAttributes getAttributes() { + return attributes; + } + + public void setAttributes(ApplicationSecurityPolicyUpdateAttributes attributes) { + this.attributes = attributes; + } + + public ApplicationSecurityPolicyUpdateData type(ApplicationSecurityPolicyType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of the resource. The value should always be policy. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ApplicationSecurityPolicyType getType() { + return type; + } + + public void setType(ApplicationSecurityPolicyType 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 ApplicationSecurityPolicyUpdateData + */ + @JsonAnySetter + public ApplicationSecurityPolicyUpdateData 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 ApplicationSecurityPolicyUpdateData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyUpdateData applicationSecurityPolicyUpdateData = + (ApplicationSecurityPolicyUpdateData) o; + return Objects.equals(this.attributes, applicationSecurityPolicyUpdateData.attributes) + && Objects.equals(this.type, applicationSecurityPolicyUpdateData.type) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyUpdateData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyUpdateData {\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/ApplicationSecurityPolicyUpdateRequest.java b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyUpdateRequest.java new file mode 100644 index 00000000000..5304d69a39e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ApplicationSecurityPolicyUpdateRequest.java @@ -0,0 +1,148 @@ +/* + * 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; + +/** Request object that includes the policy to update. */ +@JsonPropertyOrder({ApplicationSecurityPolicyUpdateRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ApplicationSecurityPolicyUpdateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private ApplicationSecurityPolicyUpdateData data; + + public ApplicationSecurityPolicyUpdateRequest() {} + + @JsonCreator + public ApplicationSecurityPolicyUpdateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + ApplicationSecurityPolicyUpdateData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public ApplicationSecurityPolicyUpdateRequest data(ApplicationSecurityPolicyUpdateData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * Object for a single WAF policy. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ApplicationSecurityPolicyUpdateData getData() { + return data; + } + + public void setData(ApplicationSecurityPolicyUpdateData 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 ApplicationSecurityPolicyUpdateRequest + */ + @JsonAnySetter + public ApplicationSecurityPolicyUpdateRequest 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 ApplicationSecurityPolicyUpdateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSecurityPolicyUpdateRequest applicationSecurityPolicyUpdateRequest = + (ApplicationSecurityPolicyUpdateRequest) o; + return Objects.equals(this.data, applicationSecurityPolicyUpdateRequest.data) + && Objects.equals( + this.additionalProperties, applicationSecurityPolicyUpdateRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSecurityPolicyUpdateRequest {\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/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..fa4288ef7ca 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 @@ -13,6 +13,27 @@ Feature: Application Security And a valid "appKeyAuth" key in the system And an instance of "ApplicationSecurity" API + @generated @skip @team:DataDog/asm-backend + Scenario: Create a WAF Policy returns "Bad Request" response + Given new "CreateApplicationSecurityWafPolicy" request + And body with value {"data": {"attributes": {"basedOn": "recommended", "description": "Policy applied to internal web applications.", "isDefault": false, "name": "Internal Network Policy", "protectionPresets": ["attack-tools"], "rules": [{"blocking": false, "enabled": true, "id": "rasp-001-002"}], "scope": [{"env": "prod", "service": "billing-service"}], "version": 0}, "type": "policy"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/asm-backend + Scenario: Create a WAF Policy returns "Concurrent Modification" response + Given new "CreateApplicationSecurityWafPolicy" request + And body with value {"data": {"attributes": {"basedOn": "recommended", "description": "Policy applied to internal web applications.", "isDefault": false, "name": "Internal Network Policy", "protectionPresets": ["attack-tools"], "rules": [{"blocking": false, "enabled": true, "id": "rasp-001-002"}], "scope": [{"env": "prod", "service": "billing-service"}], "version": 0}, "type": "policy"}} + When the request is sent + Then the response status is 409 Concurrent Modification + + @generated @skip @team:DataDog/asm-backend + Scenario: Create a WAF Policy returns "Created" response + Given new "CreateApplicationSecurityWafPolicy" request + And body with value {"data": {"attributes": {"basedOn": "recommended", "description": "Policy applied to internal web applications.", "isDefault": false, "name": "Internal Network Policy", "protectionPresets": ["attack-tools"], "rules": [{"blocking": false, "enabled": true, "id": "rasp-001-002"}], "scope": [{"env": "prod", "service": "billing-service"}], "version": 0}, "type": "policy"}} + When the request is sent + Then the response status is 201 Created + @generated @skip @team:DataDog/asm-backend Scenario: Create a WAF custom rule returns "Bad Request" response Given new "CreateApplicationSecurityWafCustomRule" request @@ -84,6 +105,27 @@ Feature: Application Security When the request is sent Then the response status is 404 Not Found + @generated @skip @team:DataDog/asm-backend + Scenario: Delete a WAF Policy returns "Concurrent Modification" response + Given new "DeleteApplicationSecurityWafPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 409 Concurrent Modification + + @generated @skip @team:DataDog/asm-backend + Scenario: Delete a WAF Policy returns "No Content" response + Given new "DeleteApplicationSecurityWafPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/asm-backend + Scenario: Delete a WAF Policy returns "Not Found" response + Given new "DeleteApplicationSecurityWafPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + @generated @skip @team:DataDog/asm-backend Scenario: Delete a WAF exclusion filter returns "Concurrent Modification" response Given new "DeleteApplicationSecurityWafExclusionFilter" request @@ -106,6 +148,13 @@ Feature: Application Security When the request is sent Then the response status is 204 OK + @generated @skip @team:DataDog/asm-backend + Scenario: Get a WAF Policy returns "OK" response + Given new "GetApplicationSecurityWafPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/asm-backend Scenario: Get a WAF custom rule returns "OK" response Given new "GetApplicationSecurityWafCustomRule" request @@ -140,6 +189,12 @@ Feature: Application Security When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/asm-backend + Scenario: List all WAF policies returns "OK" response + Given new "ListApplicationSecurityWAFPolicies" request + When the request is sent + Then the response status is 200 OK + @team:DataDog/asm-backend Scenario: Update a WAF Custom Rule returns "Bad Request" response Given there is a valid "custom_rule" in the system @@ -174,6 +229,38 @@ Feature: Application Security When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/asm-backend + Scenario: Update a WAF Policy returns "Bad Request" response + Given new "UpdateApplicationSecurityWafPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"description": "Policy applied to internal web applications.", "isDefault": false, "name": "Internal Network Policy", "protectionPresets": ["attack-tools"], "rules": [{"blocking": false, "enabled": true, "id": "rasp-001-002"}], "scope": [{"env": "prod", "service": "billing-service"}], "version": 0}, "type": "policy"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/asm-backend + Scenario: Update a WAF Policy returns "Concurrent Modification" response + Given new "UpdateApplicationSecurityWafPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"description": "Policy applied to internal web applications.", "isDefault": false, "name": "Internal Network Policy", "protectionPresets": ["attack-tools"], "rules": [{"blocking": false, "enabled": true, "id": "rasp-001-002"}], "scope": [{"env": "prod", "service": "billing-service"}], "version": 0}, "type": "policy"}} + When the request is sent + Then the response status is 409 Concurrent Modification + + @generated @skip @team:DataDog/asm-backend + Scenario: Update a WAF Policy returns "Not Found" response + Given new "UpdateApplicationSecurityWafPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"description": "Policy applied to internal web applications.", "isDefault": false, "name": "Internal Network Policy", "protectionPresets": ["attack-tools"], "rules": [{"blocking": false, "enabled": true, "id": "rasp-001-002"}], "scope": [{"env": "prod", "service": "billing-service"}], "version": 0}, "type": "policy"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/asm-backend + Scenario: Update a WAF Policy returns "OK" response + Given new "UpdateApplicationSecurityWafPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"description": "Policy applied to internal web applications.", "isDefault": false, "name": "Internal Network Policy", "protectionPresets": ["attack-tools"], "rules": [{"blocking": false, "enabled": true, "id": "rasp-001-002"}], "scope": [{"env": "prod", "service": "billing-service"}], "version": 0}, "type": "policy"}} + When the request is sent + Then the response status is 200 OK + @team:DataDog/asm-backend Scenario: Update a WAF exclusion filter returns "Bad Request" response Given there is a valid "custom_rule" in the system diff --git a/src/test/resources/com/datadog/api/client/v2/api/given.json b/src/test/resources/com/datadog/api/client/v2/api/given.json index 06f7f855c1a..24cd82910f0 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/given.json +++ b/src/test/resources/com/datadog/api/client/v2/api/given.json @@ -693,6 +693,18 @@ "tag": "Application Security", "operationId": "CreateApplicationSecurityWafExclusionFilter" }, + { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"policy\",\n \"attributes\": {\n \"name\": \"Test policy\",\n \"description\": \"This is a test policy.\",\n \"basedOn\": \"recommended\"\n }\n }\n}" + } + ], + "step": "there is a valid \"policy\" in the system", + "key": "policy", + "tag": "Application Security", + "operationId": "CreateApplicationSecurityWafPolicy" + }, { "parameters": [ { 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 c4c269d3cab..01cf520a88c 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 @@ -2715,6 +2715,43 @@ "type": "idempotent" } }, + "ListApplicationSecurityWAFPolicies": { + "tag": "Application Security", + "undo": { + "type": "safe" + } + }, + "CreateApplicationSecurityWafPolicy": { + "tag": "Application Security", + "undo": { + "operationId": "DeleteApplicationSecurityWafPolicy", + "parameters": [ + { + "name": "policy_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "DeleteApplicationSecurityWafPolicy": { + "tag": "Application Security", + "undo": { + "type": "idempotent" + } + }, + "GetApplicationSecurityWafPolicy": { + "tag": "Application Security", + "undo": { + "type": "safe" + } + }, + "UpdateApplicationSecurityWafPolicy": { + "tag": "Application Security", + "undo": { + "type": "idempotent" + } + }, "ListCSMThreatsAgentRules": { "tag": "CSM Threats", "undo": {