diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index d8f50ea9305..06d25d8d70b 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -100798,6 +100798,208 @@ components: required: - type type: object + SeverityModifierRuleAction: + description: |- + The action to take when a severity modifier rule matches a finding. This is a discriminated union on `type`: `set` assigns a fixed severity, while `shift` moves the severity up or down by one rank. + + A severity modifier rule's `rule.query` must not filter on `@severity` or on the `@severity_details.user_adjusted.*` namespace; use `@severity_details.adjusted.value` to filter on the Datadog-adjusted severity instead. + discriminator: + mapping: + set: "#/components/schemas/SeverityModifierRuleSetAction" + shift: "#/components/schemas/SeverityModifierRuleShiftAction" + propertyName: type + oneOf: + - $ref: "#/components/schemas/SeverityModifierRuleSetAction" + - $ref: "#/components/schemas/SeverityModifierRuleShiftAction" + SeverityModifierRuleAttributesCreate: + description: Attributes for creating or updating a severity modifier rule. + properties: + action: + $ref: "#/components/schemas/SeverityModifierRuleAction" + enabled: + description: Whether the severity modifier rule is enabled. + example: true + type: boolean + name: + description: The name of the severity modifier rule. + example: "Downgrade misconfigurations in dev" + maxLength: 255 + minLength: 1 + type: string + rule: + $ref: "#/components/schemas/AutomationRuleScope" + required: + - name + - rule + - action + type: object + SeverityModifierRuleAttributesResponse: + description: Attributes of a severity modifier rule as returned by the API. + properties: + action: + $ref: "#/components/schemas/SeverityModifierRuleAction" + created_at: + description: The Unix timestamp in milliseconds when the rule was created. + example: 1722439510282 + format: int64 + type: integer + created_by: + $ref: "#/components/schemas/AutomationRuleCreatedBy" + enabled: + description: Whether the severity modifier rule is enabled. + example: true + type: boolean + modified_at: + description: The Unix timestamp in milliseconds when the rule was last modified. + example: 1722439510282 + format: int64 + type: integer + modified_by: + $ref: "#/components/schemas/AutomationRuleModifiedBy" + name: + description: The name of the severity modifier rule. + example: "Downgrade misconfigurations in dev" + maxLength: 255 + minLength: 1 + type: string + rule: + $ref: "#/components/schemas/AutomationRuleScope" + required: + - name + - enabled + - rule + - action + - created_at + - created_by + - modified_at + - modified_by + type: object + SeverityModifierRuleCreateRequest: + description: The body of a severity modifier rule create request. + properties: + data: + $ref: "#/components/schemas/SeverityModifierRuleDataCreate" + required: + - data + type: object + SeverityModifierRuleDataCreate: + description: The data object for a severity modifier rule create or update request. + properties: + attributes: + $ref: "#/components/schemas/SeverityModifierRuleAttributesCreate" + type: + $ref: "#/components/schemas/SeverityModifierRuleType" + required: + - type + - attributes + type: object + SeverityModifierRuleDataResponse: + description: The data object for a severity modifier rule as returned by the API. + properties: + attributes: + $ref: "#/components/schemas/SeverityModifierRuleAttributesResponse" + id: + description: The ID of the severity modifier rule. + example: "00000000-0000-0000-0000-000000000000" + format: uuid + type: string + type: + $ref: "#/components/schemas/SeverityModifierRuleType" + required: + - id + - type + - attributes + type: object + SeverityModifierRuleResponse: + description: A single severity modifier rule response. + properties: + data: + $ref: "#/components/schemas/SeverityModifierRuleDataResponse" + required: + - data + type: object + SeverityModifierRuleSetAction: + description: Sets matched findings to a fixed severity. + properties: + description: + description: An optional free-form explanation for the severity change. + example: "Lower severity for dev environment noise" + maxLength: 20000 + type: string + severity: + $ref: "#/components/schemas/SeverityModifierSeverity" + type: + $ref: "#/components/schemas/SeverityModifierRuleSetActionType" + required: + - type + - severity + type: object + SeverityModifierRuleSetActionType: + description: The type of a severity modifier rule action that sets a fixed severity. + enum: + - set + example: set + type: string + x-enum-varnames: + - SET + SeverityModifierRuleShiftAction: + description: Shifts matched findings up or down by one severity rank. + properties: + description: + description: An optional free-form explanation for the severity change. + example: "Lower severity for dev environment noise" + maxLength: 20000 + type: string + severity_delta: + $ref: "#/components/schemas/SeverityModifierSeverityDelta" + type: + $ref: "#/components/schemas/SeverityModifierRuleShiftActionType" + required: + - type + - severity_delta + type: object + SeverityModifierRuleShiftActionType: + description: The type of a severity modifier rule action that shifts the severity by one rank. + enum: + - shift + example: shift + type: string + x-enum-varnames: + - SHIFT + SeverityModifierRuleType: + description: The JSON:API type for severity modifier rules. + enum: + - severity_modifier_rules + example: severity_modifier_rules + type: string + x-enum-varnames: + - SEVERITY_MODIFIER_RULES + SeverityModifierSeverity: + description: The severity to assign to matched findings. `info_none` is not supported for the `iac_misconfiguration`, `runtime_code_vulnerability`, `secret`, or `static_code_vulnerability` finding types. + enum: + - info_none + - low + - medium + - high + - critical + example: low + type: string + x-enum-varnames: + - INFO_NONE + - LOW + - MEDIUM + - HIGH + - CRITICAL + SeverityModifierSeverityDelta: + description: The direction in which to shift the severity of matched findings by one rank. + enum: + - up_one + - down_one + example: up_one + type: string + x-enum-varnames: + - UP_ONE + - DOWN_ONE SharedDashboardGlobalTime: additionalProperties: {} description: Default time range configuration for the shared dashboard. @@ -185952,6 +186154,196 @@ paths: x-unstable: |- **Note**: This endpoint is in Preview and is subject to change. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/security/findings/automation/severity_modifier_rules: + post: + description: Create a new severity modifier rule for the current organization. + operationId: CreateSecurityFindingsAutomationSeverityModifierRule + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + action: + description: "Lower severity for dev environment noise" + severity: low + type: set + enabled: true + name: "Downgrade misconfigurations in dev" + rule: + finding_types: + - misconfiguration + query: "env:dev" + type: severity_modifier_rules + schema: + $ref: "#/components/schemas/SeverityModifierRuleCreateRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + action: + description: "Lower severity for dev environment noise" + severity: low + type: set + created_at: 1722439510282 + created_by: + id: "00000000-0000-0000-0000-000000000000" + name: "Jane Doe" + type: user + enabled: true + modified_at: 1722439510282 + modified_by: + id: "00000000-0000-0000-0000-000000000000" + name: "Jane Doe" + type: user + name: "Downgrade misconfigurations in dev" + rule: + finding_types: + - misconfiguration + query: "env:dev" + id: "00000000-0000-0000-0000-000000000000" + type: severity_modifier_rules + schema: + $ref: "#/components/schemas/SeverityModifierRuleResponse" + description: Successfully created the severity modifier rule + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/ForbiddenResponse" + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unprocessable Entity + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Create a severity modifier rule + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - security_pipelines_write + x-unstable: |- + **Note**: This endpoint is in Preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/security/findings/automation/severity_modifier_rules/{rule_id}: + delete: + description: Delete an existing severity modifier rule by ID. + operationId: DeleteSecurityFindingsAutomationSeverityModifierRule + parameters: + - description: The ID of the severity modifier rule. + in: path + name: rule_id + required: true + schema: + example: "00000000-0000-0000-0000-000000000000" + format: uuid + type: string + responses: + "204": + description: "Rule successfully deleted." + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Delete a severity modifier rule + tags: + - Security Monitoring + x-permission: + operator: OR + permissions: + - security_pipelines_write + x-unstable: |- + **Note**: This endpoint is in Preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + get: + description: Get the details of a severity modifier rule by ID. + operationId: GetSecurityFindingsAutomationSeverityModifierRule + parameters: + - description: The ID of the severity modifier rule. + in: path + name: rule_id + required: true + schema: + example: "00000000-0000-0000-0000-000000000000" + format: uuid + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + action: + description: "Lower severity for dev environment noise" + severity: low + type: set + created_at: 1722439510282 + created_by: + id: "00000000-0000-0000-0000-000000000000" + name: "Jane Doe" + type: user + enabled: true + modified_at: 1722439510282 + modified_by: + id: "00000000-0000-0000-0000-000000000000" + name: "Jane Doe" + type: user + name: "Downgrade misconfigurations in dev" + rule: + finding_types: + - misconfiguration + query: "env:dev" + id: "00000000-0000-0000-0000-000000000000" + type: severity_modifier_rules + schema: + $ref: "#/components/schemas/SeverityModifierRuleResponse" + description: Successfully retrieved the severity modifier rule + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get a severity modifier rule + tags: + - Security Monitoring + x-permission: + operator: OR + permissions: + - security_pipelines_read + x-unstable: |- + **Note**: This endpoint is in Preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/security/findings/automation/ticket_creation_rules: get: description: Get all ticket creation rules for the current organization. diff --git a/examples/v2/security-monitoring/CreateSecurityFindingsAutomationSeverityModifierRule.java b/examples/v2/security-monitoring/CreateSecurityFindingsAutomationSeverityModifierRule.java new file mode 100644 index 00000000000..b8f5759f1a2 --- /dev/null +++ b/examples/v2/security-monitoring/CreateSecurityFindingsAutomationSeverityModifierRule.java @@ -0,0 +1,63 @@ +// Create a severity modifier rule returns "Successfully created the severity modifier rule" +// response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import com.datadog.api.client.v2.model.AutomationRuleScope; +import com.datadog.api.client.v2.model.SecurityFindingType; +import com.datadog.api.client.v2.model.SeverityModifierRuleAction; +import com.datadog.api.client.v2.model.SeverityModifierRuleAttributesCreate; +import com.datadog.api.client.v2.model.SeverityModifierRuleCreateRequest; +import com.datadog.api.client.v2.model.SeverityModifierRuleDataCreate; +import com.datadog.api.client.v2.model.SeverityModifierRuleResponse; +import com.datadog.api.client.v2.model.SeverityModifierRuleSetAction; +import com.datadog.api.client.v2.model.SeverityModifierRuleSetActionType; +import com.datadog.api.client.v2.model.SeverityModifierRuleType; +import com.datadog.api.client.v2.model.SeverityModifierSeverity; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setUnstableOperationEnabled( + "v2.createSecurityFindingsAutomationSeverityModifierRule", true); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + SeverityModifierRuleCreateRequest body = + new SeverityModifierRuleCreateRequest() + .data( + new SeverityModifierRuleDataCreate() + .attributes( + new SeverityModifierRuleAttributesCreate() + .action( + new SeverityModifierRuleAction( + new SeverityModifierRuleSetAction() + .description("Lower severity for dev environment noise") + .severity(SeverityModifierSeverity.LOW) + .type(SeverityModifierRuleSetActionType.SET))) + .enabled(true) + .name("Downgrade misconfigurations in dev") + .rule( + new AutomationRuleScope() + .findingTypes( + Collections.singletonList( + SecurityFindingType.MISCONFIGURATION)) + .query("env:prod team:platform"))) + .type(SeverityModifierRuleType.SEVERITY_MODIFIER_RULES)); + + try { + SeverityModifierRuleResponse result = + apiInstance.createSecurityFindingsAutomationSeverityModifierRule(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling" + + " SecurityMonitoringApi#createSecurityFindingsAutomationSeverityModifierRule"); + 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/security-monitoring/DeleteSecurityFindingsAutomationSeverityModifierRule.java b/examples/v2/security-monitoring/DeleteSecurityFindingsAutomationSeverityModifierRule.java new file mode 100644 index 00000000000..038e1affe08 --- /dev/null +++ b/examples/v2/security-monitoring/DeleteSecurityFindingsAutomationSeverityModifierRule.java @@ -0,0 +1,37 @@ +// Delete a severity modifier rule returns "Rule successfully deleted." response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setUnstableOperationEnabled( + "v2.deleteSecurityFindingsAutomationSeverityModifierRule", true); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + // there is a valid "valid_severity_modifier_rule" in the system + UUID VALID_SEVERITY_MODIFIER_RULE_DATA_ID = null; + try { + VALID_SEVERITY_MODIFIER_RULE_DATA_ID = + UUID.fromString(System.getenv("VALID_SEVERITY_MODIFIER_RULE_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + + try { + apiInstance.deleteSecurityFindingsAutomationSeverityModifierRule( + VALID_SEVERITY_MODIFIER_RULE_DATA_ID); + } catch (ApiException e) { + System.err.println( + "Exception when calling" + + " SecurityMonitoringApi#deleteSecurityFindingsAutomationSeverityModifierRule"); + 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/security-monitoring/GetSecurityFindingsAutomationSeverityModifierRule.java b/examples/v2/security-monitoring/GetSecurityFindingsAutomationSeverityModifierRule.java new file mode 100644 index 00000000000..f4776670897 --- /dev/null +++ b/examples/v2/security-monitoring/GetSecurityFindingsAutomationSeverityModifierRule.java @@ -0,0 +1,40 @@ +// Get a severity modifier rule returns "Successfully retrieved the severity modifier rule" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import com.datadog.api.client.v2.model.SeverityModifierRuleResponse; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setUnstableOperationEnabled( + "v2.getSecurityFindingsAutomationSeverityModifierRule", true); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + // there is a valid "valid_severity_modifier_rule" in the system + UUID VALID_SEVERITY_MODIFIER_RULE_DATA_ID = null; + try { + VALID_SEVERITY_MODIFIER_RULE_DATA_ID = + UUID.fromString(System.getenv("VALID_SEVERITY_MODIFIER_RULE_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + + try { + SeverityModifierRuleResponse result = + apiInstance.getSecurityFindingsAutomationSeverityModifierRule( + VALID_SEVERITY_MODIFIER_RULE_DATA_ID); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling" + + " SecurityMonitoringApi#getSecurityFindingsAutomationSeverityModifierRule"); + 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/ApiClient.java b/src/main/java/com/datadog/api/client/ApiClient.java index 75edc5e3243..485c1e842df 100644 --- a/src/main/java/com/datadog/api/client/ApiClient.java +++ b/src/main/java/com/datadog/api/client/ApiClient.java @@ -877,6 +877,7 @@ public class ApiClient { put("v2.createSampleLogGenerationSubscription", false); put("v2.createSecurityFindingsAutomationDueDateRule", false); put("v2.createSecurityFindingsAutomationMuteRule", false); + put("v2.createSecurityFindingsAutomationSeverityModifierRule", false); put("v2.createSecurityFindingsAutomationTicketCreationRule", false); put("v2.createSecurityMonitoringDataset", false); put("v2.createSecurityMonitoringIntegrationConfig", false); @@ -888,6 +889,7 @@ public class ApiClient { put("v2.deleteSampleLogGenerationSubscription", false); put("v2.deleteSecurityFindingsAutomationDueDateRule", false); put("v2.deleteSecurityFindingsAutomationMuteRule", false); + put("v2.deleteSecurityFindingsAutomationSeverityModifierRule", false); put("v2.deleteSecurityFindingsAutomationTicketCreationRule", false); put("v2.deleteSecurityMonitoringDataset", false); put("v2.deleteSecurityMonitoringIntegrationConfig", false); @@ -902,6 +904,7 @@ public class ApiClient { put("v2.getSecretsRules", false); put("v2.getSecurityFindingsAutomationDueDateRule", false); put("v2.getSecurityFindingsAutomationMuteRule", false); + put("v2.getSecurityFindingsAutomationSeverityModifierRule", false); put("v2.getSecurityFindingsAutomationTicketCreationRule", false); put("v2.getSecurityMonitoringDataset", false); put("v2.getSecurityMonitoringDatasetByVersion", false); diff --git a/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java b/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java index 97f78fc6f0f..96967c76faa 100644 --- a/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java @@ -159,6 +159,8 @@ import com.datadog.api.client.v2.model.SecurityMonitoringTerraformConvertRequest; import com.datadog.api.client.v2.model.SecurityMonitoringTerraformExportResponse; import com.datadog.api.client.v2.model.SecurityMonitoringTerraformResourceType; +import com.datadog.api.client.v2.model.SeverityModifierRuleCreateRequest; +import com.datadog.api.client.v2.model.SeverityModifierRuleResponse; import com.datadog.api.client.v2.model.SignalEntitiesResponse; import com.datadog.api.client.v2.model.SingleEntityContextResponse; import com.datadog.api.client.v2.model.TicketCreationRuleCreateRequest; @@ -4671,6 +4673,167 @@ public ApiResponse createSecurityFindingsAutomationMuteRuleWit new GenericType() {}); } + /** + * Create a severity modifier rule. + * + *

See {@link #createSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo}. + * + * @param body (required) + * @return SeverityModifierRuleResponse + * @throws ApiException if fails to make API call + */ + public SeverityModifierRuleResponse createSecurityFindingsAutomationSeverityModifierRule( + SeverityModifierRuleCreateRequest body) throws ApiException { + return createSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo(body).getData(); + } + + /** + * Create a severity modifier rule. + * + *

See {@link #createSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync}. + * + * @param body (required) + * @return CompletableFuture<SeverityModifierRuleResponse> + */ + public CompletableFuture + createSecurityFindingsAutomationSeverityModifierRuleAsync( + SeverityModifierRuleCreateRequest body) { + return createSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync(body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Create a new severity modifier rule for the current organization. + * + * @param body (required) + * @return ApiResponse<SeverityModifierRuleResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
201 Successfully created the severity modifier rule -
400 Bad Request -
403 Forbidden -
422 Unprocessable Entity -
429 Too many requests -
+ */ + public ApiResponse + createSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo( + SeverityModifierRuleCreateRequest body) throws ApiException { + // Check if unstable operation is enabled + String operationId = "createSecurityFindingsAutomationSeverityModifierRule"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, + "Missing the required parameter 'body' when calling" + + " createSecurityFindingsAutomationSeverityModifierRule"); + } + // create path and map variables + String localVarPath = "/api/v2/security/findings/automation/severity_modifier_rules"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.createSecurityFindingsAutomationSeverityModifierRule", + 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 severity modifier rule. + * + *

See {@link #createSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo}. + * + * @param body (required) + * @return CompletableFuture<ApiResponse<SeverityModifierRuleResponse>> + */ + public CompletableFuture> + createSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync( + SeverityModifierRuleCreateRequest body) { + // Check if unstable operation is enabled + String operationId = "createSecurityFindingsAutomationSeverityModifierRule"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + 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" + + " createSecurityFindingsAutomationSeverityModifierRule")); + return result; + } + // create path and map variables + String localVarPath = "/api/v2/security/findings/automation/severity_modifier_rules"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.createSecurityFindingsAutomationSeverityModifierRule", + 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() {}); + } + /** * Create a ticket creation rule. * @@ -7565,6 +7728,163 @@ public ApiResponse deleteSecurityFindingsAutomationMuteRuleWithHttpInfo(UU null); } + /** + * Delete a severity modifier rule. + * + *

See {@link #deleteSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo}. + * + * @param ruleId The ID of the severity modifier rule. (required) + * @throws ApiException if fails to make API call + */ + public void deleteSecurityFindingsAutomationSeverityModifierRule(UUID ruleId) + throws ApiException { + deleteSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo(ruleId); + } + + /** + * Delete a severity modifier rule. + * + *

See {@link #deleteSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync}. + * + * @param ruleId The ID of the severity modifier rule. (required) + * @return CompletableFuture + */ + public CompletableFuture deleteSecurityFindingsAutomationSeverityModifierRuleAsync( + UUID ruleId) { + return deleteSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync(ruleId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Delete an existing severity modifier rule by ID. + * + * @param ruleId The ID of the severity modifier rule. (required) + * @return ApiResponse<Void> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
204 Rule successfully deleted. -
403 Forbidden -
404 Not Found -
429 Too many requests -
+ */ + public ApiResponse deleteSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo( + UUID ruleId) throws ApiException { + // Check if unstable operation is enabled + String operationId = "deleteSecurityFindingsAutomationSeverityModifierRule"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = null; + + // verify the required parameter 'ruleId' is set + if (ruleId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'ruleId' when calling" + + " deleteSecurityFindingsAutomationSeverityModifierRule"); + } + // create path and map variables + String localVarPath = + "/api/v2/security/findings/automation/severity_modifier_rules/{rule_id}" + .replaceAll("\\{" + "rule_id" + "\\}", apiClient.escapeString(ruleId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.deleteSecurityFindingsAutomationSeverityModifierRule", + 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 severity modifier rule. + * + *

See {@link #deleteSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo}. + * + * @param ruleId The ID of the severity modifier rule. (required) + * @return CompletableFuture<ApiResponse<Void>> + */ + public CompletableFuture> + deleteSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync(UUID ruleId) { + // Check if unstable operation is enabled + String operationId = "deleteSecurityFindingsAutomationSeverityModifierRule"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = null; + + // verify the required parameter 'ruleId' is set + if (ruleId == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'ruleId' when calling" + + " deleteSecurityFindingsAutomationSeverityModifierRule")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/security/findings/automation/severity_modifier_rules/{rule_id}" + .replaceAll("\\{" + "rule_id" + "\\}", apiClient.escapeString(ruleId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.deleteSecurityFindingsAutomationSeverityModifierRule", + 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); + } + /** * Delete a ticket creation rule. * @@ -12655,6 +12975,168 @@ public ApiResponse getSecurityFindingsAutomationMuteRuleWithHt new GenericType() {}); } + /** + * Get a severity modifier rule. + * + *

See {@link #getSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo}. + * + * @param ruleId The ID of the severity modifier rule. (required) + * @return SeverityModifierRuleResponse + * @throws ApiException if fails to make API call + */ + public SeverityModifierRuleResponse getSecurityFindingsAutomationSeverityModifierRule(UUID ruleId) + throws ApiException { + return getSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo(ruleId).getData(); + } + + /** + * Get a severity modifier rule. + * + *

See {@link #getSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync}. + * + * @param ruleId The ID of the severity modifier rule. (required) + * @return CompletableFuture<SeverityModifierRuleResponse> + */ + public CompletableFuture + getSecurityFindingsAutomationSeverityModifierRuleAsync(UUID ruleId) { + return getSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync(ruleId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Get the details of a severity modifier rule by ID. + * + * @param ruleId The ID of the severity modifier rule. (required) + * @return ApiResponse<SeverityModifierRuleResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 Successfully retrieved the severity modifier rule -
403 Forbidden -
404 Not Found -
429 Too many requests -
+ */ + public ApiResponse + getSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo(UUID ruleId) + throws ApiException { + // Check if unstable operation is enabled + String operationId = "getSecurityFindingsAutomationSeverityModifierRule"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = null; + + // verify the required parameter 'ruleId' is set + if (ruleId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'ruleId' when calling" + + " getSecurityFindingsAutomationSeverityModifierRule"); + } + // create path and map variables + String localVarPath = + "/api/v2/security/findings/automation/severity_modifier_rules/{rule_id}" + .replaceAll("\\{" + "rule_id" + "\\}", apiClient.escapeString(ruleId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.getSecurityFindingsAutomationSeverityModifierRule", + 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 severity modifier rule. + * + *

See {@link #getSecurityFindingsAutomationSeverityModifierRuleWithHttpInfo}. + * + * @param ruleId The ID of the severity modifier rule. (required) + * @return CompletableFuture<ApiResponse<SeverityModifierRuleResponse>> + */ + public CompletableFuture> + getSecurityFindingsAutomationSeverityModifierRuleWithHttpInfoAsync(UUID ruleId) { + // Check if unstable operation is enabled + String operationId = "getSecurityFindingsAutomationSeverityModifierRule"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = null; + + // verify the required parameter 'ruleId' is set + if (ruleId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'ruleId' when calling" + + " getSecurityFindingsAutomationSeverityModifierRule")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/security/findings/automation/severity_modifier_rules/{rule_id}" + .replaceAll("\\{" + "rule_id" + "\\}", apiClient.escapeString(ruleId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.getSecurityFindingsAutomationSeverityModifierRule", + 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 ticket creation rule. * diff --git a/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleAction.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleAction.java new file mode 100644 index 00000000000..80a6479069b --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleAction.java @@ -0,0 +1,289 @@ +/* + * 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.AbstractOpenApiSchema; +import com.datadog.api.client.JSON; +import com.datadog.api.client.UnparsedObject; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import jakarta.ws.rs.core.GenericType; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +@JsonDeserialize(using = SeverityModifierRuleAction.SeverityModifierRuleActionDeserializer.class) +@JsonSerialize(using = SeverityModifierRuleAction.SeverityModifierRuleActionSerializer.class) +public class SeverityModifierRuleAction extends AbstractOpenApiSchema { + private static final Logger log = Logger.getLogger(SeverityModifierRuleAction.class.getName()); + + @JsonIgnore public boolean unparsed = false; + + public static class SeverityModifierRuleActionSerializer + extends StdSerializer { + public SeverityModifierRuleActionSerializer(Class t) { + super(t); + } + + public SeverityModifierRuleActionSerializer() { + this(null); + } + + @Override + public void serialize( + SeverityModifierRuleAction value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.getActualInstance()); + } + } + + public static class SeverityModifierRuleActionDeserializer + extends StdDeserializer { + public SeverityModifierRuleActionDeserializer() { + this(SeverityModifierRuleAction.class); + } + + public SeverityModifierRuleActionDeserializer(Class vc) { + super(vc); + } + + @Override + public SeverityModifierRuleAction deserialize(JsonParser jp, DeserializationContext ctxt) + throws IOException, JsonProcessingException { + JsonNode tree = jp.readValueAsTree(); + Object deserialized = null; + Object tmp = null; + boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS); + int match = 0; + JsonToken token = tree.traverse(jp.getCodec()).nextToken(); + // deserialize SeverityModifierRuleSetAction + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (SeverityModifierRuleSetAction.class.equals(Integer.class) + || SeverityModifierRuleSetAction.class.equals(Long.class) + || SeverityModifierRuleSetAction.class.equals(Float.class) + || SeverityModifierRuleSetAction.class.equals(Double.class) + || SeverityModifierRuleSetAction.class.equals(Boolean.class) + || SeverityModifierRuleSetAction.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((SeverityModifierRuleSetAction.class.equals(Integer.class) + || SeverityModifierRuleSetAction.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((SeverityModifierRuleSetAction.class.equals(Float.class) + || SeverityModifierRuleSetAction.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (SeverityModifierRuleSetAction.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (SeverityModifierRuleSetAction.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = tree.traverse(jp.getCodec()).readValueAs(SeverityModifierRuleSetAction.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((SeverityModifierRuleSetAction) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'SeverityModifierRuleSetAction'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log(Level.FINER, "Input data does not match schema 'SeverityModifierRuleSetAction'", e); + } + + // deserialize SeverityModifierRuleShiftAction + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (SeverityModifierRuleShiftAction.class.equals(Integer.class) + || SeverityModifierRuleShiftAction.class.equals(Long.class) + || SeverityModifierRuleShiftAction.class.equals(Float.class) + || SeverityModifierRuleShiftAction.class.equals(Double.class) + || SeverityModifierRuleShiftAction.class.equals(Boolean.class) + || SeverityModifierRuleShiftAction.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((SeverityModifierRuleShiftAction.class.equals(Integer.class) + || SeverityModifierRuleShiftAction.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((SeverityModifierRuleShiftAction.class.equals(Float.class) + || SeverityModifierRuleShiftAction.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (SeverityModifierRuleShiftAction.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (SeverityModifierRuleShiftAction.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = tree.traverse(jp.getCodec()).readValueAs(SeverityModifierRuleShiftAction.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((SeverityModifierRuleShiftAction) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'SeverityModifierRuleShiftAction'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, "Input data does not match schema 'SeverityModifierRuleShiftAction'", e); + } + + SeverityModifierRuleAction ret = new SeverityModifierRuleAction(); + if (match == 1) { + ret.setActualInstance(deserialized); + } else { + Map res = + new ObjectMapper() + .readValue( + tree.traverse(jp.getCodec()).readValueAsTree().toString(), + new TypeReference>() {}); + ret.setActualInstance(new UnparsedObject(res)); + } + return ret; + } + + /** Handle deserialization of the 'null' value. */ + @Override + public SeverityModifierRuleAction getNullValue(DeserializationContext ctxt) + throws JsonMappingException { + throw new JsonMappingException(ctxt.getParser(), "SeverityModifierRuleAction cannot be null"); + } + } + + // store a list of schema names defined in oneOf + public static final Map schemas = new HashMap(); + + public SeverityModifierRuleAction() { + super("oneOf", Boolean.FALSE); + } + + public SeverityModifierRuleAction(SeverityModifierRuleSetAction o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + public SeverityModifierRuleAction(SeverityModifierRuleShiftAction o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + static { + schemas.put( + "SeverityModifierRuleSetAction", new GenericType() {}); + schemas.put( + "SeverityModifierRuleShiftAction", new GenericType() {}); + JSON.registerDescendants( + SeverityModifierRuleAction.class, Collections.unmodifiableMap(schemas)); + } + + @Override + public Map getSchemas() { + return SeverityModifierRuleAction.schemas; + } + + /** + * Set the instance that matches the oneOf child schema, check the instance parameter is valid + * against the oneOf child schemas: SeverityModifierRuleSetAction, SeverityModifierRuleShiftAction + * + *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a + * composed schema (allOf, anyOf, oneOf). + */ + @Override + public void setActualInstance(Object instance) { + if (JSON.isInstanceOf(SeverityModifierRuleSetAction.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + if (JSON.isInstanceOf( + SeverityModifierRuleShiftAction.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + + if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + throw new RuntimeException( + "Invalid instance type. Must be SeverityModifierRuleSetAction," + + " SeverityModifierRuleShiftAction"); + } + + /** + * Get the actual instance, which can be the following: SeverityModifierRuleSetAction, + * SeverityModifierRuleShiftAction + * + * @return The actual instance (SeverityModifierRuleSetAction, SeverityModifierRuleShiftAction) + */ + @Override + public Object getActualInstance() { + return super.getActualInstance(); + } + + /** + * Get the actual instance of `SeverityModifierRuleSetAction`. If the actual instance is not + * `SeverityModifierRuleSetAction`, the ClassCastException will be thrown. + * + * @return The actual instance of `SeverityModifierRuleSetAction` + * @throws ClassCastException if the instance is not `SeverityModifierRuleSetAction` + */ + public SeverityModifierRuleSetAction getSeverityModifierRuleSetAction() + throws ClassCastException { + return (SeverityModifierRuleSetAction) super.getActualInstance(); + } + + /** + * Get the actual instance of `SeverityModifierRuleShiftAction`. If the actual instance is not + * `SeverityModifierRuleShiftAction`, the ClassCastException will be thrown. + * + * @return The actual instance of `SeverityModifierRuleShiftAction` + * @throws ClassCastException if the instance is not `SeverityModifierRuleShiftAction` + */ + public SeverityModifierRuleShiftAction getSeverityModifierRuleShiftAction() + throws ClassCastException { + return (SeverityModifierRuleShiftAction) super.getActualInstance(); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleAttributesCreate.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleAttributesCreate.java new file mode 100644 index 00000000000..7db020d4973 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleAttributesCreate.java @@ -0,0 +1,247 @@ +/* + * 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; + +/** Attributes for creating or updating a severity modifier rule. */ +@JsonPropertyOrder({ + SeverityModifierRuleAttributesCreate.JSON_PROPERTY_ACTION, + SeverityModifierRuleAttributesCreate.JSON_PROPERTY_ENABLED, + SeverityModifierRuleAttributesCreate.JSON_PROPERTY_NAME, + SeverityModifierRuleAttributesCreate.JSON_PROPERTY_RULE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SeverityModifierRuleAttributesCreate { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ACTION = "action"; + private SeverityModifierRuleAction action; + + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_RULE = "rule"; + private AutomationRuleScope rule; + + public SeverityModifierRuleAttributesCreate() {} + + @JsonCreator + public SeverityModifierRuleAttributesCreate( + @JsonProperty(required = true, value = JSON_PROPERTY_ACTION) + SeverityModifierRuleAction action, + @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name, + @JsonProperty(required = true, value = JSON_PROPERTY_RULE) AutomationRuleScope rule) { + this.action = action; + this.unparsed |= action.unparsed; + this.name = name; + this.rule = rule; + this.unparsed |= rule.unparsed; + } + + public SeverityModifierRuleAttributesCreate action(SeverityModifierRuleAction action) { + this.action = action; + this.unparsed |= action.unparsed; + return this; + } + + /** + * The action to take when a severity modifier rule matches a finding. This is a discriminated + * union on type: set assigns a fixed severity, while shift + * moves the severity up or down by one rank. + * + *

A severity modifier rule's rule.query must not filter on @severity + * or on the @severity_details.user_adjusted.* namespace; use + * @severity_details.adjusted.value to filter on the Datadog-adjusted severity instead. + * + * @return action + */ + @JsonProperty(JSON_PROPERTY_ACTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleAction getAction() { + return action; + } + + public void setAction(SeverityModifierRuleAction action) { + this.action = action; + if (action != null) { + this.unparsed |= action.unparsed; + } + } + + public SeverityModifierRuleAttributesCreate enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Whether the severity modifier rule is enabled. + * + * @return enabled + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public SeverityModifierRuleAttributesCreate name(String name) { + this.name = name; + return this; + } + + /** + * The name of the severity modifier rule. + * + * @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 SeverityModifierRuleAttributesCreate rule(AutomationRuleScope rule) { + this.rule = rule; + this.unparsed |= rule.unparsed; + return this; + } + + /** + * Defines the scope of findings to which the automation rule applies. + * + * @return rule + */ + @JsonProperty(JSON_PROPERTY_RULE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public AutomationRuleScope getRule() { + return rule; + } + + public void setRule(AutomationRuleScope rule) { + this.rule = rule; + if (rule != null) { + this.unparsed |= rule.unparsed; + } + } + + /** + * 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 SeverityModifierRuleAttributesCreate + */ + @JsonAnySetter + public SeverityModifierRuleAttributesCreate 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 SeverityModifierRuleAttributesCreate object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SeverityModifierRuleAttributesCreate severityModifierRuleAttributesCreate = + (SeverityModifierRuleAttributesCreate) o; + return Objects.equals(this.action, severityModifierRuleAttributesCreate.action) + && Objects.equals(this.enabled, severityModifierRuleAttributesCreate.enabled) + && Objects.equals(this.name, severityModifierRuleAttributesCreate.name) + && Objects.equals(this.rule, severityModifierRuleAttributesCreate.rule) + && Objects.equals( + this.additionalProperties, severityModifierRuleAttributesCreate.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(action, enabled, name, rule, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SeverityModifierRuleAttributesCreate {\n"); + sb.append(" action: ").append(toIndentedString(action)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" rule: ").append(toIndentedString(rule)).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/SeverityModifierRuleAttributesResponse.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleAttributesResponse.java new file mode 100644 index 00000000000..d9b78e0a1c3 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleAttributesResponse.java @@ -0,0 +1,381 @@ +/* + * 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; + +/** Attributes of a severity modifier rule as returned by the API. */ +@JsonPropertyOrder({ + SeverityModifierRuleAttributesResponse.JSON_PROPERTY_ACTION, + SeverityModifierRuleAttributesResponse.JSON_PROPERTY_CREATED_AT, + SeverityModifierRuleAttributesResponse.JSON_PROPERTY_CREATED_BY, + SeverityModifierRuleAttributesResponse.JSON_PROPERTY_ENABLED, + SeverityModifierRuleAttributesResponse.JSON_PROPERTY_MODIFIED_AT, + SeverityModifierRuleAttributesResponse.JSON_PROPERTY_MODIFIED_BY, + SeverityModifierRuleAttributesResponse.JSON_PROPERTY_NAME, + SeverityModifierRuleAttributesResponse.JSON_PROPERTY_RULE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SeverityModifierRuleAttributesResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ACTION = "action"; + private SeverityModifierRuleAction action; + + public static final String JSON_PROPERTY_CREATED_AT = "created_at"; + private Long createdAt; + + public static final String JSON_PROPERTY_CREATED_BY = "created_by"; + private AutomationRuleCreatedBy createdBy; + + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_MODIFIED_AT = "modified_at"; + private Long modifiedAt; + + public static final String JSON_PROPERTY_MODIFIED_BY = "modified_by"; + private AutomationRuleModifiedBy modifiedBy; + + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_RULE = "rule"; + private AutomationRuleScope rule; + + public SeverityModifierRuleAttributesResponse() {} + + @JsonCreator + public SeverityModifierRuleAttributesResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_ACTION) + SeverityModifierRuleAction action, + @JsonProperty(required = true, value = JSON_PROPERTY_CREATED_AT) Long createdAt, + @JsonProperty(required = true, value = JSON_PROPERTY_CREATED_BY) + AutomationRuleCreatedBy createdBy, + @JsonProperty(required = true, value = JSON_PROPERTY_ENABLED) Boolean enabled, + @JsonProperty(required = true, value = JSON_PROPERTY_MODIFIED_AT) Long modifiedAt, + @JsonProperty(required = true, value = JSON_PROPERTY_MODIFIED_BY) + AutomationRuleModifiedBy modifiedBy, + @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name, + @JsonProperty(required = true, value = JSON_PROPERTY_RULE) AutomationRuleScope rule) { + this.action = action; + this.unparsed |= action.unparsed; + this.createdAt = createdAt; + this.createdBy = createdBy; + this.unparsed |= createdBy.unparsed; + this.enabled = enabled; + this.modifiedAt = modifiedAt; + this.modifiedBy = modifiedBy; + this.unparsed |= modifiedBy.unparsed; + this.name = name; + this.rule = rule; + this.unparsed |= rule.unparsed; + } + + public SeverityModifierRuleAttributesResponse action(SeverityModifierRuleAction action) { + this.action = action; + this.unparsed |= action.unparsed; + return this; + } + + /** + * The action to take when a severity modifier rule matches a finding. This is a discriminated + * union on type: set assigns a fixed severity, while shift + * moves the severity up or down by one rank. + * + *

A severity modifier rule's rule.query must not filter on @severity + * or on the @severity_details.user_adjusted.* namespace; use + * @severity_details.adjusted.value to filter on the Datadog-adjusted severity instead. + * + * @return action + */ + @JsonProperty(JSON_PROPERTY_ACTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleAction getAction() { + return action; + } + + public void setAction(SeverityModifierRuleAction action) { + this.action = action; + if (action != null) { + this.unparsed |= action.unparsed; + } + } + + public SeverityModifierRuleAttributesResponse createdAt(Long createdAt) { + this.createdAt = createdAt; + return this; + } + + /** + * The Unix timestamp in milliseconds when the rule was created. + * + * @return createdAt + */ + @JsonProperty(JSON_PROPERTY_CREATED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Long createdAt) { + this.createdAt = createdAt; + } + + public SeverityModifierRuleAttributesResponse createdBy(AutomationRuleCreatedBy createdBy) { + this.createdBy = createdBy; + this.unparsed |= createdBy.unparsed; + return this; + } + + /** + * The user or Datadog system who created the rule. + * + * @return createdBy + */ + @JsonProperty(JSON_PROPERTY_CREATED_BY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public AutomationRuleCreatedBy getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(AutomationRuleCreatedBy createdBy) { + this.createdBy = createdBy; + if (createdBy != null) { + this.unparsed |= createdBy.unparsed; + } + } + + public SeverityModifierRuleAttributesResponse enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Whether the severity modifier rule is enabled. + * + * @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 SeverityModifierRuleAttributesResponse modifiedAt(Long modifiedAt) { + this.modifiedAt = modifiedAt; + return this; + } + + /** + * The Unix timestamp in milliseconds when the rule was last modified. + * + * @return modifiedAt + */ + @JsonProperty(JSON_PROPERTY_MODIFIED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getModifiedAt() { + return modifiedAt; + } + + public void setModifiedAt(Long modifiedAt) { + this.modifiedAt = modifiedAt; + } + + public SeverityModifierRuleAttributesResponse modifiedBy(AutomationRuleModifiedBy modifiedBy) { + this.modifiedBy = modifiedBy; + this.unparsed |= modifiedBy.unparsed; + return this; + } + + /** + * The user or Datadog system who last modified the rule. + * + * @return modifiedBy + */ + @JsonProperty(JSON_PROPERTY_MODIFIED_BY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public AutomationRuleModifiedBy getModifiedBy() { + return modifiedBy; + } + + public void setModifiedBy(AutomationRuleModifiedBy modifiedBy) { + this.modifiedBy = modifiedBy; + if (modifiedBy != null) { + this.unparsed |= modifiedBy.unparsed; + } + } + + public SeverityModifierRuleAttributesResponse name(String name) { + this.name = name; + return this; + } + + /** + * The name of the severity modifier rule. + * + * @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 SeverityModifierRuleAttributesResponse rule(AutomationRuleScope rule) { + this.rule = rule; + this.unparsed |= rule.unparsed; + return this; + } + + /** + * Defines the scope of findings to which the automation rule applies. + * + * @return rule + */ + @JsonProperty(JSON_PROPERTY_RULE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public AutomationRuleScope getRule() { + return rule; + } + + public void setRule(AutomationRuleScope rule) { + this.rule = rule; + if (rule != null) { + this.unparsed |= rule.unparsed; + } + } + + /** + * 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 SeverityModifierRuleAttributesResponse + */ + @JsonAnySetter + public SeverityModifierRuleAttributesResponse 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 SeverityModifierRuleAttributesResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SeverityModifierRuleAttributesResponse severityModifierRuleAttributesResponse = + (SeverityModifierRuleAttributesResponse) o; + return Objects.equals(this.action, severityModifierRuleAttributesResponse.action) + && Objects.equals(this.createdAt, severityModifierRuleAttributesResponse.createdAt) + && Objects.equals(this.createdBy, severityModifierRuleAttributesResponse.createdBy) + && Objects.equals(this.enabled, severityModifierRuleAttributesResponse.enabled) + && Objects.equals(this.modifiedAt, severityModifierRuleAttributesResponse.modifiedAt) + && Objects.equals(this.modifiedBy, severityModifierRuleAttributesResponse.modifiedBy) + && Objects.equals(this.name, severityModifierRuleAttributesResponse.name) + && Objects.equals(this.rule, severityModifierRuleAttributesResponse.rule) + && Objects.equals( + this.additionalProperties, severityModifierRuleAttributesResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + action, + createdAt, + createdBy, + enabled, + modifiedAt, + modifiedBy, + name, + rule, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SeverityModifierRuleAttributesResponse {\n"); + sb.append(" action: ").append(toIndentedString(action)).append("\n"); + sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); + sb.append(" createdBy: ").append(toIndentedString(createdBy)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" modifiedAt: ").append(toIndentedString(modifiedAt)).append("\n"); + sb.append(" modifiedBy: ").append(toIndentedString(modifiedBy)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" rule: ").append(toIndentedString(rule)).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/SeverityModifierRuleCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleCreateRequest.java new file mode 100644 index 00000000000..2371d21fd88 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleCreateRequest.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.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 body of a severity modifier rule create request. */ +@JsonPropertyOrder({SeverityModifierRuleCreateRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SeverityModifierRuleCreateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private SeverityModifierRuleDataCreate data; + + public SeverityModifierRuleCreateRequest() {} + + @JsonCreator + public SeverityModifierRuleCreateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + SeverityModifierRuleDataCreate data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public SeverityModifierRuleCreateRequest data(SeverityModifierRuleDataCreate data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * The data object for a severity modifier rule create or update request. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleDataCreate getData() { + return data; + } + + public void setData(SeverityModifierRuleDataCreate data) { + this.data = data; + if (data != null) { + this.unparsed |= data.unparsed; + } + } + + /** + * 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 SeverityModifierRuleCreateRequest + */ + @JsonAnySetter + public SeverityModifierRuleCreateRequest 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 SeverityModifierRuleCreateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SeverityModifierRuleCreateRequest severityModifierRuleCreateRequest = + (SeverityModifierRuleCreateRequest) o; + return Objects.equals(this.data, severityModifierRuleCreateRequest.data) + && Objects.equals( + this.additionalProperties, severityModifierRuleCreateRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SeverityModifierRuleCreateRequest {\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/SeverityModifierRuleDataCreate.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleDataCreate.java new file mode 100644 index 00000000000..9b8716ca704 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleDataCreate.java @@ -0,0 +1,187 @@ +/* + * 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 data object for a severity modifier rule create or update request. */ +@JsonPropertyOrder({ + SeverityModifierRuleDataCreate.JSON_PROPERTY_ATTRIBUTES, + SeverityModifierRuleDataCreate.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SeverityModifierRuleDataCreate { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private SeverityModifierRuleAttributesCreate attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SeverityModifierRuleType type; + + public SeverityModifierRuleDataCreate() {} + + @JsonCreator + public SeverityModifierRuleDataCreate( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + SeverityModifierRuleAttributesCreate attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) SeverityModifierRuleType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public SeverityModifierRuleDataCreate attributes( + SeverityModifierRuleAttributesCreate attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Attributes for creating or updating a severity modifier rule. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleAttributesCreate getAttributes() { + return attributes; + } + + public void setAttributes(SeverityModifierRuleAttributesCreate attributes) { + this.attributes = attributes; + if (attributes != null) { + this.unparsed |= attributes.unparsed; + } + } + + public SeverityModifierRuleDataCreate type(SeverityModifierRuleType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The JSON:API type for severity modifier rules. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleType getType() { + return type; + } + + public void setType(SeverityModifierRuleType 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 SeverityModifierRuleDataCreate + */ + @JsonAnySetter + public SeverityModifierRuleDataCreate 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 SeverityModifierRuleDataCreate object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SeverityModifierRuleDataCreate severityModifierRuleDataCreate = + (SeverityModifierRuleDataCreate) o; + return Objects.equals(this.attributes, severityModifierRuleDataCreate.attributes) + && Objects.equals(this.type, severityModifierRuleDataCreate.type) + && Objects.equals( + this.additionalProperties, severityModifierRuleDataCreate.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SeverityModifierRuleDataCreate {\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/SeverityModifierRuleDataResponse.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleDataResponse.java new file mode 100644 index 00000000000..b2ebd745a9f --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleDataResponse.java @@ -0,0 +1,216 @@ +/* + * 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; +import java.util.UUID; + +/** The data object for a severity modifier rule as returned by the API. */ +@JsonPropertyOrder({ + SeverityModifierRuleDataResponse.JSON_PROPERTY_ATTRIBUTES, + SeverityModifierRuleDataResponse.JSON_PROPERTY_ID, + SeverityModifierRuleDataResponse.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SeverityModifierRuleDataResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private SeverityModifierRuleAttributesResponse attributes; + + public static final String JSON_PROPERTY_ID = "id"; + private UUID id; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SeverityModifierRuleType type; + + public SeverityModifierRuleDataResponse() {} + + @JsonCreator + public SeverityModifierRuleDataResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + SeverityModifierRuleAttributesResponse attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) UUID id, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) SeverityModifierRuleType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.id = id; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public SeverityModifierRuleDataResponse attributes( + SeverityModifierRuleAttributesResponse attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Attributes of a severity modifier rule as returned by the API. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleAttributesResponse getAttributes() { + return attributes; + } + + public void setAttributes(SeverityModifierRuleAttributesResponse attributes) { + this.attributes = attributes; + if (attributes != null) { + this.unparsed |= attributes.unparsed; + } + } + + public SeverityModifierRuleDataResponse id(UUID id) { + this.id = id; + return this; + } + + /** + * The ID of the severity modifier rule. + * + * @return id + */ + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public SeverityModifierRuleDataResponse type(SeverityModifierRuleType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The JSON:API type for severity modifier rules. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleType getType() { + return type; + } + + public void setType(SeverityModifierRuleType 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 SeverityModifierRuleDataResponse + */ + @JsonAnySetter + public SeverityModifierRuleDataResponse 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 SeverityModifierRuleDataResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SeverityModifierRuleDataResponse severityModifierRuleDataResponse = + (SeverityModifierRuleDataResponse) o; + return Objects.equals(this.attributes, severityModifierRuleDataResponse.attributes) + && Objects.equals(this.id, severityModifierRuleDataResponse.id) + && Objects.equals(this.type, severityModifierRuleDataResponse.type) + && Objects.equals( + this.additionalProperties, severityModifierRuleDataResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, id, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SeverityModifierRuleDataResponse {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).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/SeverityModifierRuleResponse.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleResponse.java new file mode 100644 index 00000000000..9b5b796295c --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleResponse.java @@ -0,0 +1,150 @@ +/* + * 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; + +/** A single severity modifier rule response. */ +@JsonPropertyOrder({SeverityModifierRuleResponse.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SeverityModifierRuleResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private SeverityModifierRuleDataResponse data; + + public SeverityModifierRuleResponse() {} + + @JsonCreator + public SeverityModifierRuleResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + SeverityModifierRuleDataResponse data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public SeverityModifierRuleResponse data(SeverityModifierRuleDataResponse data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * The data object for a severity modifier rule as returned by the API. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleDataResponse getData() { + return data; + } + + public void setData(SeverityModifierRuleDataResponse data) { + this.data = data; + if (data != null) { + this.unparsed |= data.unparsed; + } + } + + /** + * 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 SeverityModifierRuleResponse + */ + @JsonAnySetter + public SeverityModifierRuleResponse 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 SeverityModifierRuleResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SeverityModifierRuleResponse severityModifierRuleResponse = (SeverityModifierRuleResponse) o; + return Objects.equals(this.data, severityModifierRuleResponse.data) + && Objects.equals( + this.additionalProperties, severityModifierRuleResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SeverityModifierRuleResponse {\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/SeverityModifierRuleSetAction.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleSetAction.java new file mode 100644 index 00000000000..a42ea401b1d --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleSetAction.java @@ -0,0 +1,215 @@ +/* + * 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; + +/** Sets matched findings to a fixed severity. */ +@JsonPropertyOrder({ + SeverityModifierRuleSetAction.JSON_PROPERTY_DESCRIPTION, + SeverityModifierRuleSetAction.JSON_PROPERTY_SEVERITY, + SeverityModifierRuleSetAction.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SeverityModifierRuleSetAction { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_SEVERITY = "severity"; + private SeverityModifierSeverity severity; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SeverityModifierRuleSetActionType type; + + public SeverityModifierRuleSetAction() {} + + @JsonCreator + public SeverityModifierRuleSetAction( + @JsonProperty(required = true, value = JSON_PROPERTY_SEVERITY) + SeverityModifierSeverity severity, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + SeverityModifierRuleSetActionType type) { + this.severity = severity; + this.unparsed |= !severity.isValid(); + this.type = type; + this.unparsed |= !type.isValid(); + } + + public SeverityModifierRuleSetAction description(String description) { + this.description = description; + return this; + } + + /** + * An optional free-form explanation for the severity change. + * + * @return description + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public SeverityModifierRuleSetAction severity(SeverityModifierSeverity severity) { + this.severity = severity; + this.unparsed |= !severity.isValid(); + return this; + } + + /** + * The severity to assign to matched findings. info_none is not supported for the + * iac_misconfiguration, runtime_code_vulnerability, secret + * , or static_code_vulnerability finding types. + * + * @return severity + */ + @JsonProperty(JSON_PROPERTY_SEVERITY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierSeverity getSeverity() { + return severity; + } + + public void setSeverity(SeverityModifierSeverity severity) { + if (!severity.isValid()) { + this.unparsed = true; + } + this.severity = severity; + } + + public SeverityModifierRuleSetAction type(SeverityModifierRuleSetActionType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of a severity modifier rule action that sets a fixed severity. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleSetActionType getType() { + return type; + } + + public void setType(SeverityModifierRuleSetActionType 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 SeverityModifierRuleSetAction + */ + @JsonAnySetter + public SeverityModifierRuleSetAction 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 SeverityModifierRuleSetAction object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SeverityModifierRuleSetAction severityModifierRuleSetAction = (SeverityModifierRuleSetAction) o; + return Objects.equals(this.description, severityModifierRuleSetAction.description) + && Objects.equals(this.severity, severityModifierRuleSetAction.severity) + && Objects.equals(this.type, severityModifierRuleSetAction.type) + && Objects.equals( + this.additionalProperties, severityModifierRuleSetAction.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(description, severity, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SeverityModifierRuleSetAction {\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" severity: ").append(toIndentedString(severity)).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/SeverityModifierRuleSetActionType.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleSetActionType.java new file mode 100644 index 00000000000..f10b50e4684 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleSetActionType.java @@ -0,0 +1,57 @@ +/* + * 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 a severity modifier rule action that sets a fixed severity. */ +@JsonSerialize( + using = SeverityModifierRuleSetActionType.SeverityModifierRuleSetActionTypeSerializer.class) +public class SeverityModifierRuleSetActionType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("set")); + + public static final SeverityModifierRuleSetActionType SET = + new SeverityModifierRuleSetActionType("set"); + + SeverityModifierRuleSetActionType(String value) { + super(value, allowedValues); + } + + public static class SeverityModifierRuleSetActionTypeSerializer + extends StdSerializer { + public SeverityModifierRuleSetActionTypeSerializer(Class t) { + super(t); + } + + public SeverityModifierRuleSetActionTypeSerializer() { + this(null); + } + + @Override + public void serialize( + SeverityModifierRuleSetActionType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SeverityModifierRuleSetActionType fromValue(String value) { + return new SeverityModifierRuleSetActionType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleShiftAction.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleShiftAction.java new file mode 100644 index 00000000000..215cfd9c455 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleShiftAction.java @@ -0,0 +1,215 @@ +/* + * 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; + +/** Shifts matched findings up or down by one severity rank. */ +@JsonPropertyOrder({ + SeverityModifierRuleShiftAction.JSON_PROPERTY_DESCRIPTION, + SeverityModifierRuleShiftAction.JSON_PROPERTY_SEVERITY_DELTA, + SeverityModifierRuleShiftAction.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SeverityModifierRuleShiftAction { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_SEVERITY_DELTA = "severity_delta"; + private SeverityModifierSeverityDelta severityDelta; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SeverityModifierRuleShiftActionType type; + + public SeverityModifierRuleShiftAction() {} + + @JsonCreator + public SeverityModifierRuleShiftAction( + @JsonProperty(required = true, value = JSON_PROPERTY_SEVERITY_DELTA) + SeverityModifierSeverityDelta severityDelta, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + SeverityModifierRuleShiftActionType type) { + this.severityDelta = severityDelta; + this.unparsed |= !severityDelta.isValid(); + this.type = type; + this.unparsed |= !type.isValid(); + } + + public SeverityModifierRuleShiftAction description(String description) { + this.description = description; + return this; + } + + /** + * An optional free-form explanation for the severity change. + * + * @return description + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public SeverityModifierRuleShiftAction severityDelta( + SeverityModifierSeverityDelta severityDelta) { + this.severityDelta = severityDelta; + this.unparsed |= !severityDelta.isValid(); + return this; + } + + /** + * The direction in which to shift the severity of matched findings by one rank. + * + * @return severityDelta + */ + @JsonProperty(JSON_PROPERTY_SEVERITY_DELTA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierSeverityDelta getSeverityDelta() { + return severityDelta; + } + + public void setSeverityDelta(SeverityModifierSeverityDelta severityDelta) { + if (!severityDelta.isValid()) { + this.unparsed = true; + } + this.severityDelta = severityDelta; + } + + public SeverityModifierRuleShiftAction type(SeverityModifierRuleShiftActionType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of a severity modifier rule action that shifts the severity by one rank. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SeverityModifierRuleShiftActionType getType() { + return type; + } + + public void setType(SeverityModifierRuleShiftActionType 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 SeverityModifierRuleShiftAction + */ + @JsonAnySetter + public SeverityModifierRuleShiftAction 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 SeverityModifierRuleShiftAction object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SeverityModifierRuleShiftAction severityModifierRuleShiftAction = + (SeverityModifierRuleShiftAction) o; + return Objects.equals(this.description, severityModifierRuleShiftAction.description) + && Objects.equals(this.severityDelta, severityModifierRuleShiftAction.severityDelta) + && Objects.equals(this.type, severityModifierRuleShiftAction.type) + && Objects.equals( + this.additionalProperties, severityModifierRuleShiftAction.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(description, severityDelta, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SeverityModifierRuleShiftAction {\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" severityDelta: ").append(toIndentedString(severityDelta)).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/SeverityModifierRuleShiftActionType.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleShiftActionType.java new file mode 100644 index 00000000000..c69c63edae1 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleShiftActionType.java @@ -0,0 +1,58 @@ +/* + * 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 a severity modifier rule action that shifts the severity by one rank. */ +@JsonSerialize( + using = SeverityModifierRuleShiftActionType.SeverityModifierRuleShiftActionTypeSerializer.class) +public class SeverityModifierRuleShiftActionType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("shift")); + + public static final SeverityModifierRuleShiftActionType SHIFT = + new SeverityModifierRuleShiftActionType("shift"); + + SeverityModifierRuleShiftActionType(String value) { + super(value, allowedValues); + } + + public static class SeverityModifierRuleShiftActionTypeSerializer + extends StdSerializer { + public SeverityModifierRuleShiftActionTypeSerializer( + Class t) { + super(t); + } + + public SeverityModifierRuleShiftActionTypeSerializer() { + this(null); + } + + @Override + public void serialize( + SeverityModifierRuleShiftActionType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SeverityModifierRuleShiftActionType fromValue(String value) { + return new SeverityModifierRuleShiftActionType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleType.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleType.java new file mode 100644 index 00000000000..c7ea6beb2d6 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierRuleType.java @@ -0,0 +1,57 @@ +/* + * 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 JSON:API type for severity modifier rules. */ +@JsonSerialize(using = SeverityModifierRuleType.SeverityModifierRuleTypeSerializer.class) +public class SeverityModifierRuleType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("severity_modifier_rules")); + + public static final SeverityModifierRuleType SEVERITY_MODIFIER_RULES = + new SeverityModifierRuleType("severity_modifier_rules"); + + SeverityModifierRuleType(String value) { + super(value, allowedValues); + } + + public static class SeverityModifierRuleTypeSerializer + extends StdSerializer { + public SeverityModifierRuleTypeSerializer(Class t) { + super(t); + } + + public SeverityModifierRuleTypeSerializer() { + this(null); + } + + @Override + public void serialize( + SeverityModifierRuleType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SeverityModifierRuleType fromValue(String value) { + return new SeverityModifierRuleType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SeverityModifierSeverity.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierSeverity.java new file mode 100644 index 00000000000..dc374ba046a --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierSeverity.java @@ -0,0 +1,65 @@ +/* + * 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 severity to assign to matched findings. info_none is not supported for the + * iac_misconfiguration, runtime_code_vulnerability, secret, + * or static_code_vulnerability finding types. + */ +@JsonSerialize(using = SeverityModifierSeverity.SeverityModifierSeveritySerializer.class) +public class SeverityModifierSeverity extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("info_none", "low", "medium", "high", "critical")); + + public static final SeverityModifierSeverity INFO_NONE = + new SeverityModifierSeverity("info_none"); + public static final SeverityModifierSeverity LOW = new SeverityModifierSeverity("low"); + public static final SeverityModifierSeverity MEDIUM = new SeverityModifierSeverity("medium"); + public static final SeverityModifierSeverity HIGH = new SeverityModifierSeverity("high"); + public static final SeverityModifierSeverity CRITICAL = new SeverityModifierSeverity("critical"); + + SeverityModifierSeverity(String value) { + super(value, allowedValues); + } + + public static class SeverityModifierSeveritySerializer + extends StdSerializer { + public SeverityModifierSeveritySerializer(Class t) { + super(t); + } + + public SeverityModifierSeveritySerializer() { + this(null); + } + + @Override + public void serialize( + SeverityModifierSeverity value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SeverityModifierSeverity fromValue(String value) { + return new SeverityModifierSeverity(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SeverityModifierSeverityDelta.java b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierSeverityDelta.java new file mode 100644 index 00000000000..3062600c92a --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SeverityModifierSeverityDelta.java @@ -0,0 +1,59 @@ +/* + * 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 direction in which to shift the severity of matched findings by one rank. */ +@JsonSerialize(using = SeverityModifierSeverityDelta.SeverityModifierSeverityDeltaSerializer.class) +public class SeverityModifierSeverityDelta extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("up_one", "down_one")); + + public static final SeverityModifierSeverityDelta UP_ONE = + new SeverityModifierSeverityDelta("up_one"); + public static final SeverityModifierSeverityDelta DOWN_ONE = + new SeverityModifierSeverityDelta("down_one"); + + SeverityModifierSeverityDelta(String value) { + super(value, allowedValues); + } + + public static class SeverityModifierSeverityDeltaSerializer + extends StdSerializer { + public SeverityModifierSeverityDeltaSerializer(Class t) { + super(t); + } + + public SeverityModifierSeverityDeltaSerializer() { + this(null); + } + + @Override + public void serialize( + SeverityModifierSeverityDelta value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SeverityModifierSeverityDelta fromValue(String value) { + return new SeverityModifierSeverityDelta(value); + } +} diff --git a/src/test/resources/cassettes/features/v2/Delete_a_severity_modifier_rule_returns_Rule_successfully_deleted_response.freeze b/src/test/resources/cassettes/features/v2/Delete_a_severity_modifier_rule_returns_Rule_successfully_deleted_response.freeze new file mode 100644 index 00000000000..5812a38a047 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Delete_a_severity_modifier_rule_returns_Rule_successfully_deleted_response.freeze @@ -0,0 +1 @@ +2026-08-03T09:17:25.445Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_severity_modifier_rule_returns_Rule_successfully_deleted_response.json b/src/test/resources/cassettes/features/v2/Delete_a_severity_modifier_rule_returns_Rule_successfully_deleted_response.json new file mode 100644 index 00000000000..401f5cefcb5 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Delete_a_severity_modifier_rule_returns_Rule_successfully_deleted_response.json @@ -0,0 +1,79 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"action\":{\"severity\":\"low\",\"type\":\"set\"},\"enabled\":true,\"name\":\"Test-Delete_a_severity_modifier_rule_returns_Rule_successfully_deleted_response-1785748645\",\"rule\":{\"finding_types\":[\"misconfiguration\"],\"query\":\"env:staging\"}},\"type\":\"severity_modifier_rules\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/security/findings/automation/severity_modifier_rules", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"ec796c54-ec53-4b2f-bb14-36d4b224f92c\",\"type\":\"severity_modifier_rules\",\"attributes\":{\"action\":{\"type\":\"set\",\"severity\":\"low\"},\"created_at\":1785748647705,\"created_by\":{\"type\":\"user\",\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"enabled\":true,\"modified_at\":1785748647705,\"modified_by\":{\"type\":\"user\",\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"name\":\"Test-Delete_a_severity_modifier_rule_returns_Rule_successfully_deleted_response-1785748645\",\"rule\":{\"finding_types\":[\"misconfiguration\"],\"query\":\"env:staging\"}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "74b46408-32d6-77f5-f662-473b5b6e7fec" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security/findings/automation/severity_modifier_rules/ec796c54-ec53-4b2f-bb14-36d4b224f92c", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "b49f12b9-8fe6-adc7-0d47-541fe7f6c35a" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security/findings/automation/severity_modifier_rules/ec796c54-ec53-4b2f-bb14-36d4b224f92c", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"title\":\"Not Found\",\"detail\":\"rule does not exist\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "b49f12b9-8fe6-adc7-0d47-541fe7f6c35b" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response.freeze b/src/test/resources/cassettes/features/v2/Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response.freeze new file mode 100644 index 00000000000..87000b7fb8d --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response.freeze @@ -0,0 +1 @@ +2026-08-03T09:17:28.616Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response.json b/src/test/resources/cassettes/features/v2/Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response.json new file mode 100644 index 00000000000..def332fabfb --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response.json @@ -0,0 +1,79 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"action\":{\"severity\":\"low\",\"type\":\"set\"},\"enabled\":true,\"name\":\"Test-Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response-1785748648\",\"rule\":{\"finding_types\":[\"misconfiguration\"],\"query\":\"env:staging\"}},\"type\":\"severity_modifier_rules\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/security/findings/automation/severity_modifier_rules", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"fec045ba-40ba-42ef-a107-f7fba8717e11\",\"type\":\"severity_modifier_rules\",\"attributes\":{\"action\":{\"type\":\"set\",\"severity\":\"low\"},\"created_at\":1785748648838,\"created_by\":{\"type\":\"user\",\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"enabled\":true,\"modified_at\":1785748648838,\"modified_by\":{\"type\":\"user\",\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"name\":\"Test-Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response-1785748648\",\"rule\":{\"finding_types\":[\"misconfiguration\"],\"query\":\"env:staging\"}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "7fcdafdd-1b61-3e0d-2c71-6e5f79d9b7d0" + }, + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/security/findings/automation/severity_modifier_rules/fec045ba-40ba-42ef-a107-f7fba8717e11", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"fec045ba-40ba-42ef-a107-f7fba8717e11\",\"type\":\"severity_modifier_rules\",\"attributes\":{\"action\":{\"type\":\"set\",\"severity\":\"low\"},\"created_at\":1785748648838,\"created_by\":{\"type\":\"user\",\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"enabled\":true,\"modified_at\":1785748648838,\"modified_by\":{\"type\":\"user\",\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"name\":\"Test-Get_a_severity_modifier_rule_returns_Successfully_retrieved_the_severity_modifier_rule_response-1785748648\",\"rule\":{\"finding_types\":[\"misconfiguration\"],\"query\":\"env:staging\"}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "69fbd695-085a-b929-f1c9-1f006f5eafbf" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security/findings/automation/severity_modifier_rules/fec045ba-40ba-42ef-a107-f7fba8717e11", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "b2a6d9bc-fb8b-3146-2340-d49fd3559f47" + } +] \ No newline at end of file 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 6e48ed1fc53..55b45d6012e 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 @@ -1354,6 +1354,18 @@ "tag": "Security Monitoring", "operationId": "CreateSecurityFindingsAutomationMuteRule" }, + { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"severity_modifier_rules\",\n \"attributes\": {\n \"name\": \"{{ unique }}\",\n \"enabled\": true,\n \"rule\": {\n \"finding_types\": [\"misconfiguration\"],\n \"query\": \"env:staging\"\n },\n \"action\": {\n \"type\": \"set\",\n \"severity\": \"low\"\n }\n }\n }\n}" + } + ], + "step": "there is a valid \"valid_severity_modifier_rule\" in the system", + "key": "valid_severity_modifier_rule", + "tag": "Security Monitoring", + "operationId": "CreateSecurityFindingsAutomationSeverityModifierRule" + }, { "parameters": [ { diff --git a/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature b/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature index 14f3d34a11d..e0e80656653 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature @@ -952,6 +952,30 @@ Feature: Security Monitoring And the response "data.attributes.exclusion_filters[0].name" is equal to "Exclude staging" And the response "data.attributes.exclusion_filters[0].query" is equal to "source:staging" + @generated @skip @team:DataDog/k9-automation + Scenario: Create a severity modifier rule returns "Bad Request" response + Given operation "CreateSecurityFindingsAutomationSeverityModifierRule" enabled + And new "CreateSecurityFindingsAutomationSeverityModifierRule" request + And body with value {"data": {"attributes": {"action": {"description": "Lower severity for dev environment noise", "severity": "low", "type": "set"}, "enabled": true, "name": "Downgrade misconfigurations in dev", "rule": {"finding_types": ["misconfiguration"], "query": "env:prod team:platform"}}, "type": "severity_modifier_rules"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-automation + Scenario: Create a severity modifier rule returns "Successfully created the severity modifier rule" response + Given operation "CreateSecurityFindingsAutomationSeverityModifierRule" enabled + And new "CreateSecurityFindingsAutomationSeverityModifierRule" request + And body with value {"data": {"attributes": {"action": {"description": "Lower severity for dev environment noise", "severity": "low", "type": "set"}, "enabled": true, "name": "Downgrade misconfigurations in dev", "rule": {"finding_types": ["misconfiguration"], "query": "env:prod team:platform"}}, "type": "severity_modifier_rules"}} + When the request is sent + Then the response status is 201 Successfully created the severity modifier rule + + @generated @skip @team:DataDog/k9-automation + Scenario: Create a severity modifier rule returns "Unprocessable Entity" response + Given operation "CreateSecurityFindingsAutomationSeverityModifierRule" enabled + And new "CreateSecurityFindingsAutomationSeverityModifierRule" request + And body with value {"data": {"attributes": {"action": {"description": "Lower severity for dev environment noise", "severity": "low", "type": "set"}, "enabled": true, "name": "Downgrade misconfigurations in dev", "rule": {"finding_types": ["misconfiguration"], "query": "env:prod team:platform"}}, "type": "severity_modifier_rules"}} + When the request is sent + Then the response status is 422 Unprocessable Entity + @generated @skip @team:DataDog/cloud-siem Scenario: Create a suppression rule returns "Bad Request" response Given new "CreateSecurityMonitoringSuppression" request @@ -1265,6 +1289,23 @@ Feature: Security Monitoring When the request is sent Then the response status is 204 OK + @generated @skip @team:DataDog/k9-automation + Scenario: Delete a severity modifier rule returns "Not Found" response + Given operation "DeleteSecurityFindingsAutomationSeverityModifierRule" enabled + And new "DeleteSecurityFindingsAutomationSeverityModifierRule" request + And request contains "rule_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/k9-automation + Scenario: Delete a severity modifier rule returns "Rule successfully deleted." response + Given operation "DeleteSecurityFindingsAutomationSeverityModifierRule" enabled + And there is a valid "valid_severity_modifier_rule" in the system + And new "DeleteSecurityFindingsAutomationSeverityModifierRule" request + And request contains "rule_id" parameter from "valid_severity_modifier_rule.data.id" + When the request is sent + Then the response status is 204 Rule successfully deleted. + @team:DataDog/cloud-security-posture-management Scenario: Delete a signal-based notification rule returns "Not Found" response Given new "DeleteSignalNotificationRule" request @@ -1866,6 +1907,25 @@ Feature: Security Monitoring And the response "data.attributes.exclusion_filters[0].name" is equal to "Exclude logs from staging" And the response "data.attributes.exclusion_filters[0].query" is equal to "source:staging" + @generated @skip @team:DataDog/k9-automation + Scenario: Get a severity modifier rule returns "Not Found" response + Given operation "GetSecurityFindingsAutomationSeverityModifierRule" enabled + And new "GetSecurityFindingsAutomationSeverityModifierRule" request + And request contains "rule_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/k9-automation + Scenario: Get a severity modifier rule returns "Successfully retrieved the severity modifier rule" response + Given operation "GetSecurityFindingsAutomationSeverityModifierRule" enabled + And there is a valid "valid_severity_modifier_rule" in the system + And new "GetSecurityFindingsAutomationSeverityModifierRule" request + And request contains "rule_id" parameter from "valid_severity_modifier_rule.data.id" + When the request is sent + Then the response status is 200 Successfully retrieved the severity modifier rule + And the response "data.id" is equal to "{{ valid_severity_modifier_rule.data.id }}" + And the response "data.type" is equal to "severity_modifier_rules" + @replay-only @team:DataDog/cloud-siem Scenario: Get a signal's details returns "Not Found" response Given new "GetSecurityMonitoringSignal" request diff --git a/src/test/resources/com/datadog/api/client/v2/api/undo.json b/src/test/resources/com/datadog/api/client/v2/api/undo.json index 133ab9ade47..07c60433304 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 @@ -7454,6 +7454,31 @@ "type": "idempotent" } }, + "CreateSecurityFindingsAutomationSeverityModifierRule": { + "tag": "Security Monitoring", + "undo": { + "operationId": "DeleteSecurityFindingsAutomationSeverityModifierRule", + "parameters": [ + { + "name": "rule_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "DeleteSecurityFindingsAutomationSeverityModifierRule": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, + "GetSecurityFindingsAutomationSeverityModifierRule": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, "ListSecurityFindingsAutomationTicketCreationRules": { "tag": "Security Monitoring", "undo": {