diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 5f48d382eb..0e46e870fd 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -100057,6 +100057,262 @@ 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 + SeverityModifierRuleReorderData: + description: The ordered list of severity modifier rules; every rule must be included. + items: + $ref: "#/components/schemas/SeverityModifierRuleReorderItem" + type: array + SeverityModifierRuleReorderItem: + description: A reference to a severity modifier rule used for reordering. + properties: + id: + description: The ID of the automation rule. + example: "00000000-0000-0000-0000-000000000000" + format: uuid + type: string + type: + $ref: "#/components/schemas/SeverityModifierRuleType" + required: + - type + - id + type: object + SeverityModifierRuleReorderRequest: + description: The body of a severity modifier rule reorder request. + properties: + data: + $ref: "#/components/schemas/SeverityModifierRuleReorderData" + required: + - data + 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 + SeverityModifierRuleUpdateRequest: + description: The body of a severity modifier rule update request. + properties: + data: + $ref: "#/components/schemas/SeverityModifierRuleDataCreate" + required: + - data + type: object + SeverityModifierRulesDataList: + description: A list of severity modifier rule data objects. + items: + $ref: "#/components/schemas/SeverityModifierRuleDataResponse" + type: array + SeverityModifierRulesResponse: + description: A list of severity modifier rules with pagination metadata. + properties: + data: + $ref: "#/components/schemas/SeverityModifierRulesDataList" + links: + $ref: "#/components/schemas/SecurityAutomationRulesLinks" + meta: + $ref: "#/components/schemas/SecurityAutomationRulesMeta" + required: + - data + - meta + - links + type: object + 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. @@ -185299,6 +185555,439 @@ 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: + get: + description: Get all severity modifier rules for the current organization. + operationId: ListSecurityFindingsAutomationSeverityModifierRules + parameters: + - description: The number of rules per page. Maximum is 1000. + in: query + name: page[size] + required: false + schema: + default: 1000 + example: 10 + format: int64 + maximum: 1000 + minimum: 1 + type: integer + - description: The page number to return. + in: query + name: page[number] + required: false + schema: + default: 0 + example: 0 + format: int64 + minimum: 0 + type: integer + 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 + links: + first: "/api/v2/security/findings/automation/severity_modifier_rules?page[size]=1000&page[number]=0" + last: "/api/v2/security/findings/automation/severity_modifier_rules?page[size]=1000&page[number]=0" + meta: + page: + total_filtered_count: 1 + schema: + $ref: "#/components/schemas/SeverityModifierRulesResponse" + description: Successfully retrieved the list of severity modifier rules + "403": + $ref: "#/components/responses/ForbiddenResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get all severity modifier rules + 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/). + 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/reorder: + post: + description: Reorder the list of severity modifier rules for the current organization. + operationId: ReorderSecurityFindingsAutomationSeverityModifierRules + requestBody: + content: + application/json: + examples: + default: + value: + data: + - id: "00000000-0000-0000-0000-000000000000" + type: severity_modifier_rules + - id: "11111111-1111-1111-1111-111111111111" + type: severity_modifier_rules + schema: + $ref: "#/components/schemas/SeverityModifierRuleReorderRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - id: "00000000-0000-0000-0000-000000000000" + type: severity_modifier_rules + - id: "11111111-1111-1111-1111-111111111111" + type: severity_modifier_rules + schema: + $ref: "#/components/schemas/SeverityModifierRuleReorderRequest" + description: Successfully reordered the severity modifier rules + "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: Reorder severity modifier rules + 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/). + put: + description: Update an existing severity modifier rule by ID. + operationId: UpdateSecurityFindingsAutomationSeverityModifierRule + 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 + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + action: + severity_delta: down_one + type: shift + enabled: false + name: "Downgrade misconfigurations in dev" + rule: + finding_types: + - misconfiguration + query: "env:dev" + type: severity_modifier_rules + schema: + $ref: "#/components/schemas/SeverityModifierRuleUpdateRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + action: + severity_delta: down_one + type: shift + created_at: 1722439510282 + created_by: + id: "00000000-0000-0000-0000-000000000000" + name: "Jane Doe" + type: user + enabled: false + modified_at: 1722439510999 + 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 updated the severity modifier rule + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unprocessable Entity + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Update 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/ticket_creation_rules: get: description: Get all ticket creation rules for the current organization. diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index fd5310ce20..c8acf3d9af 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -42711,6 +42711,132 @@ datadog\_api\_client.v2.model.session\_id\_data module :members: :show-inheritance: +datadog\_api\_client.v2.model.severity\_modifier\_rule\_action module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_action + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_attributes\_create module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_attributes_create + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_attributes\_response module +----------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_attributes_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_create\_request module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_create_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_data\_create module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_data_create + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_data\_response module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_data_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_reorder\_item module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_reorder_item + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_reorder\_request module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_reorder_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_response module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_set\_action module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_set_action + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_set\_action\_type module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_set_action_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_shift\_action module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_shift_action + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_shift\_action\_type module +---------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_shift_action_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_type module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rule\_update\_request module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rule_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_rules\_response module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.severity_modifier_rules_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_severity module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.severity_modifier_severity + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.severity\_modifier\_severity\_delta module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.severity_modifier_severity_delta + :members: + :show-inheritance: + datadog\_api\_client.v2.model.shared\_dashboard\_global\_time module -------------------------------------------------------------------- diff --git a/examples/v2/security-monitoring/CreateSecurityFindingsAutomationSeverityModifierRule.py b/examples/v2/security-monitoring/CreateSecurityFindingsAutomationSeverityModifierRule.py new file mode 100644 index 0000000000..0dd29f1925 --- /dev/null +++ b/examples/v2/security-monitoring/CreateSecurityFindingsAutomationSeverityModifierRule.py @@ -0,0 +1,44 @@ +""" +Create a severity modifier rule returns "Successfully created the severity modifier rule" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi +from datadog_api_client.v2.model.automation_rule_scope import AutomationRuleScope +from datadog_api_client.v2.model.security_finding_type import SecurityFindingType +from datadog_api_client.v2.model.severity_modifier_rule_attributes_create import SeverityModifierRuleAttributesCreate +from datadog_api_client.v2.model.severity_modifier_rule_create_request import SeverityModifierRuleCreateRequest +from datadog_api_client.v2.model.severity_modifier_rule_data_create import SeverityModifierRuleDataCreate +from datadog_api_client.v2.model.severity_modifier_rule_set_action import SeverityModifierRuleSetAction +from datadog_api_client.v2.model.severity_modifier_rule_set_action_type import SeverityModifierRuleSetActionType +from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType +from datadog_api_client.v2.model.severity_modifier_severity import SeverityModifierSeverity + +body = SeverityModifierRuleCreateRequest( + data=SeverityModifierRuleDataCreate( + attributes=SeverityModifierRuleAttributesCreate( + action=SeverityModifierRuleSetAction( + description="Lower severity for dev environment noise", + severity=SeverityModifierSeverity.LOW, + type=SeverityModifierRuleSetActionType.SET, + ), + enabled=True, + name="Downgrade misconfigurations in dev", + rule=AutomationRuleScope( + finding_types=[ + SecurityFindingType.MISCONFIGURATION, + ], + query="env:prod team:platform", + ), + ), + type=SeverityModifierRuleType.SEVERITY_MODIFIER_RULES, + ), +) + +configuration = Configuration() +configuration.unstable_operations["create_security_findings_automation_severity_modifier_rule"] = True +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.create_security_findings_automation_severity_modifier_rule(body=body) + + print(response) diff --git a/examples/v2/security-monitoring/DeleteSecurityFindingsAutomationSeverityModifierRule.py b/examples/v2/security-monitoring/DeleteSecurityFindingsAutomationSeverityModifierRule.py new file mode 100644 index 0000000000..6409deaf9e --- /dev/null +++ b/examples/v2/security-monitoring/DeleteSecurityFindingsAutomationSeverityModifierRule.py @@ -0,0 +1,18 @@ +""" +Delete a severity modifier rule returns "Rule successfully deleted." response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi + +# there is a valid "valid_severity_modifier_rule" in the system +VALID_SEVERITY_MODIFIER_RULE_DATA_ID = environ["VALID_SEVERITY_MODIFIER_RULE_DATA_ID"] + +configuration = Configuration() +configuration.unstable_operations["delete_security_findings_automation_severity_modifier_rule"] = True +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + api_instance.delete_security_findings_automation_severity_modifier_rule( + rule_id=VALID_SEVERITY_MODIFIER_RULE_DATA_ID, + ) diff --git a/examples/v2/security-monitoring/GetSecurityFindingsAutomationSeverityModifierRule.py b/examples/v2/security-monitoring/GetSecurityFindingsAutomationSeverityModifierRule.py new file mode 100644 index 0000000000..80900e39fe --- /dev/null +++ b/examples/v2/security-monitoring/GetSecurityFindingsAutomationSeverityModifierRule.py @@ -0,0 +1,20 @@ +""" +Get a severity modifier rule returns "Successfully retrieved the severity modifier rule" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi + +# there is a valid "valid_severity_modifier_rule" in the system +VALID_SEVERITY_MODIFIER_RULE_DATA_ID = environ["VALID_SEVERITY_MODIFIER_RULE_DATA_ID"] + +configuration = Configuration() +configuration.unstable_operations["get_security_findings_automation_severity_modifier_rule"] = True +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.get_security_findings_automation_severity_modifier_rule( + rule_id=VALID_SEVERITY_MODIFIER_RULE_DATA_ID, + ) + + print(response) diff --git a/examples/v2/security-monitoring/ListSecurityFindingsAutomationSeverityModifierRules.py b/examples/v2/security-monitoring/ListSecurityFindingsAutomationSeverityModifierRules.py new file mode 100644 index 0000000000..a185884037 --- /dev/null +++ b/examples/v2/security-monitoring/ListSecurityFindingsAutomationSeverityModifierRules.py @@ -0,0 +1,14 @@ +""" +Get all severity modifier rules returns "Successfully retrieved the list of severity modifier rules" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi + +configuration = Configuration() +configuration.unstable_operations["list_security_findings_automation_severity_modifier_rules"] = True +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.list_security_findings_automation_severity_modifier_rules() + + print(response) diff --git a/examples/v2/security-monitoring/ReorderSecurityFindingsAutomationSeverityModifierRules.py b/examples/v2/security-monitoring/ReorderSecurityFindingsAutomationSeverityModifierRules.py new file mode 100644 index 0000000000..d5962c2e76 --- /dev/null +++ b/examples/v2/security-monitoring/ReorderSecurityFindingsAutomationSeverityModifierRules.py @@ -0,0 +1,30 @@ +""" +Reorder severity modifier rules returns "Successfully reordered the severity modifier rules" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi +from datadog_api_client.v2.model.severity_modifier_rule_reorder_item import SeverityModifierRuleReorderItem +from datadog_api_client.v2.model.severity_modifier_rule_reorder_request import SeverityModifierRuleReorderRequest +from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType + +# there is a valid "valid_severity_modifier_rule" in the system +VALID_SEVERITY_MODIFIER_RULE_DATA_ID = environ["VALID_SEVERITY_MODIFIER_RULE_DATA_ID"] + +body = SeverityModifierRuleReorderRequest( + data=[ + SeverityModifierRuleReorderItem( + id=VALID_SEVERITY_MODIFIER_RULE_DATA_ID, + type=SeverityModifierRuleType.SEVERITY_MODIFIER_RULES, + ), + ], +) + +configuration = Configuration() +configuration.unstable_operations["reorder_security_findings_automation_severity_modifier_rules"] = True +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.reorder_security_findings_automation_severity_modifier_rules(body=body) + + print(response) diff --git a/examples/v2/security-monitoring/UpdateSecurityFindingsAutomationSeverityModifierRule.py b/examples/v2/security-monitoring/UpdateSecurityFindingsAutomationSeverityModifierRule.py new file mode 100644 index 0000000000..044a5960f4 --- /dev/null +++ b/examples/v2/security-monitoring/UpdateSecurityFindingsAutomationSeverityModifierRule.py @@ -0,0 +1,47 @@ +""" +Update a severity modifier rule returns "Successfully updated the severity modifier rule" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi +from datadog_api_client.v2.model.automation_rule_scope import AutomationRuleScope +from datadog_api_client.v2.model.security_finding_type import SecurityFindingType +from datadog_api_client.v2.model.severity_modifier_rule_attributes_create import SeverityModifierRuleAttributesCreate +from datadog_api_client.v2.model.severity_modifier_rule_data_create import SeverityModifierRuleDataCreate +from datadog_api_client.v2.model.severity_modifier_rule_set_action import SeverityModifierRuleSetAction +from datadog_api_client.v2.model.severity_modifier_rule_set_action_type import SeverityModifierRuleSetActionType +from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType +from datadog_api_client.v2.model.severity_modifier_rule_update_request import SeverityModifierRuleUpdateRequest +from datadog_api_client.v2.model.severity_modifier_severity import SeverityModifierSeverity +from uuid import UUID + +body = SeverityModifierRuleUpdateRequest( + data=SeverityModifierRuleDataCreate( + attributes=SeverityModifierRuleAttributesCreate( + action=SeverityModifierRuleSetAction( + description="Lower severity for dev environment noise", + severity=SeverityModifierSeverity.LOW, + type=SeverityModifierRuleSetActionType.SET, + ), + enabled=True, + name="Downgrade misconfigurations in dev", + rule=AutomationRuleScope( + finding_types=[ + SecurityFindingType.MISCONFIGURATION, + ], + query="env:prod team:platform", + ), + ), + type=SeverityModifierRuleType.SEVERITY_MODIFIER_RULES, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_security_findings_automation_severity_modifier_rule"] = True +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.update_security_findings_automation_severity_modifier_rule( + rule_id=UUID("00000000-0000-0000-0000-000000000000"), body=body + ) + + print(response) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index 1198b62cd7..7906162671 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -373,6 +373,7 @@ def __init__( "v2.create_sample_log_generation_subscription": False, "v2.create_security_findings_automation_due_date_rule": False, "v2.create_security_findings_automation_mute_rule": False, + "v2.create_security_findings_automation_severity_modifier_rule": False, "v2.create_security_findings_automation_ticket_creation_rule": False, "v2.create_security_monitoring_dataset": False, "v2.create_security_monitoring_integration_config": False, @@ -384,6 +385,7 @@ def __init__( "v2.delete_sample_log_generation_subscription": False, "v2.delete_security_findings_automation_due_date_rule": False, "v2.delete_security_findings_automation_mute_rule": False, + "v2.delete_security_findings_automation_severity_modifier_rule": False, "v2.delete_security_findings_automation_ticket_creation_rule": False, "v2.delete_security_monitoring_dataset": False, "v2.delete_security_monitoring_integration_config": False, @@ -398,6 +400,7 @@ def __init__( "v2.get_secrets_rules": False, "v2.get_security_findings_automation_due_date_rule": False, "v2.get_security_findings_automation_mute_rule": False, + "v2.get_security_findings_automation_severity_modifier_rule": False, "v2.get_security_findings_automation_ticket_creation_rule": False, "v2.get_security_monitoring_dataset": False, "v2.get_security_monitoring_dataset_by_version": False, @@ -420,6 +423,7 @@ def __init__( "v2.list_scanned_assets_metadata": False, "v2.list_security_findings_automation_due_date_rules": False, "v2.list_security_findings_automation_mute_rules": False, + "v2.list_security_findings_automation_severity_modifier_rules": False, "v2.list_security_findings_automation_ticket_creation_rules": False, "v2.list_security_monitoring_datasets": False, "v2.list_security_monitoring_histsignals": False, @@ -429,6 +433,7 @@ def __init__( "v2.list_vulnerable_assets": False, "v2.reorder_security_findings_automation_due_date_rules": False, "v2.reorder_security_findings_automation_mute_rules": False, + "v2.reorder_security_findings_automation_severity_modifier_rules": False, "v2.reorder_security_findings_automation_ticket_creation_rules": False, "v2.restore_security_monitoring_rule": False, "v2.run_historical_job": False, @@ -436,6 +441,7 @@ def __init__( "v2.update_findings_assignee": False, "v2.update_security_findings_automation_due_date_rule": False, "v2.update_security_findings_automation_mute_rule": False, + "v2.update_security_findings_automation_severity_modifier_rule": False, "v2.update_security_findings_automation_ticket_creation_rule": False, "v2.update_security_monitoring_dataset": False, "v2.update_security_monitoring_integration_config": False, diff --git a/src/datadog_api_client/v2/api/security_monitoring_api.py b/src/datadog_api_client/v2/api/security_monitoring_api.py index d2a4849c57..dd314cd6ea 100644 --- a/src/datadog_api_client/v2/api/security_monitoring_api.py +++ b/src/datadog_api_client/v2/api/security_monitoring_api.py @@ -52,6 +52,11 @@ from datadog_api_client.v2.model.mute_rule_create_request import MuteRuleCreateRequest from datadog_api_client.v2.model.mute_rule_reorder_request import MuteRuleReorderRequest from datadog_api_client.v2.model.mute_rule_update_request import MuteRuleUpdateRequest +from datadog_api_client.v2.model.severity_modifier_rules_response import SeverityModifierRulesResponse +from datadog_api_client.v2.model.severity_modifier_rule_response import SeverityModifierRuleResponse +from datadog_api_client.v2.model.severity_modifier_rule_create_request import SeverityModifierRuleCreateRequest +from datadog_api_client.v2.model.severity_modifier_rule_reorder_request import SeverityModifierRuleReorderRequest +from datadog_api_client.v2.model.severity_modifier_rule_update_request import SeverityModifierRuleUpdateRequest from datadog_api_client.v2.model.ticket_creation_rules_response import TicketCreationRulesResponse from datadog_api_client.v2.model.ticket_creation_rule_response import TicketCreationRuleResponse from datadog_api_client.v2.model.ticket_creation_rule_create_request import TicketCreationRuleCreateRequest @@ -912,6 +917,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._create_security_findings_automation_severity_modifier_rule_endpoint = _Endpoint( + settings={ + "response_type": (SeverityModifierRuleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/security/findings/automation/severity_modifier_rules", + "operation_id": "create_security_findings_automation_severity_modifier_rule", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (SeverityModifierRuleCreateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._create_security_findings_automation_ticket_creation_rule_endpoint = _Endpoint( settings={ "response_type": (TicketCreationRuleResponse,), @@ -1322,6 +1347,29 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._delete_security_findings_automation_severity_modifier_rule_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/security/findings/automation/severity_modifier_rules/{rule_id}", + "operation_id": "delete_security_findings_automation_severity_modifier_rule", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "rule_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "rule_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + self._delete_security_findings_automation_ticket_creation_rule_endpoint = _Endpoint( settings={ "response_type": None, @@ -2106,6 +2154,29 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._get_security_findings_automation_severity_modifier_rule_endpoint = _Endpoint( + settings={ + "response_type": (SeverityModifierRuleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/security/findings/automation/severity_modifier_rules/{rule_id}", + "operation_id": "get_security_findings_automation_severity_modifier_rule", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "rule_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "rule_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._get_security_findings_automation_ticket_creation_rule_endpoint = _Endpoint( settings={ "response_type": (TicketCreationRuleResponse,), @@ -3279,6 +3350,40 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._list_security_findings_automation_severity_modifier_rules_endpoint = _Endpoint( + settings={ + "response_type": (SeverityModifierRulesResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/security/findings/automation/severity_modifier_rules", + "operation_id": "list_security_findings_automation_severity_modifier_rules", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "page_size": { + "validation": { + "inclusive_maximum": 1000, + "inclusive_minimum": 1, + }, + "openapi_types": (int,), + "attribute": "page[size]", + "location": "query", + }, + "page_number": { + "validation": { + "inclusive_minimum": 0, + }, + "openapi_types": (int,), + "attribute": "page[number]", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_security_findings_automation_ticket_creation_rules_endpoint = _Endpoint( settings={ "response_type": (TicketCreationRulesResponse,), @@ -4042,6 +4147,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._reorder_security_findings_automation_severity_modifier_rules_endpoint = _Endpoint( + settings={ + "response_type": (SeverityModifierRuleReorderRequest,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/security/findings/automation/severity_modifier_rules/reorder", + "operation_id": "reorder_security_findings_automation_severity_modifier_rules", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (SeverityModifierRuleReorderRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._reorder_security_findings_automation_ticket_creation_rules_endpoint = _Endpoint( settings={ "response_type": (TicketCreationRuleReorderRequest,), @@ -4385,6 +4510,32 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._update_security_findings_automation_severity_modifier_rule_endpoint = _Endpoint( + settings={ + "response_type": (SeverityModifierRuleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/security/findings/automation/severity_modifier_rules/{rule_id}", + "operation_id": "update_security_findings_automation_severity_modifier_rule", + "http_method": "PUT", + "version": "v2", + }, + params_map={ + "rule_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "rule_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (SeverityModifierRuleUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._update_security_findings_automation_ticket_creation_rule_endpoint = _Endpoint( settings={ "response_type": (TicketCreationRuleResponse,), @@ -5186,6 +5337,22 @@ def create_security_findings_automation_mute_rule( return self._create_security_findings_automation_mute_rule_endpoint.call_with_http_info(**kwargs) + def create_security_findings_automation_severity_modifier_rule( + self, + body: SeverityModifierRuleCreateRequest, + ) -> SeverityModifierRuleResponse: + """Create a severity modifier rule. + + Create a new severity modifier rule for the current organization. + + :type body: SeverityModifierRuleCreateRequest + :rtype: SeverityModifierRuleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._create_security_findings_automation_severity_modifier_rule_endpoint.call_with_http_info(**kwargs) + def create_security_findings_automation_ticket_creation_rule( self, body: TicketCreationRuleCreateRequest, @@ -5525,6 +5692,23 @@ def delete_security_findings_automation_mute_rule( return self._delete_security_findings_automation_mute_rule_endpoint.call_with_http_info(**kwargs) + def delete_security_findings_automation_severity_modifier_rule( + self, + rule_id: UUID, + ) -> None: + """Delete a severity modifier rule. + + Delete an existing severity modifier rule by ID. + + :param rule_id: The ID of the severity modifier rule. + :type rule_id: UUID + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["rule_id"] = rule_id + + return self._delete_security_findings_automation_severity_modifier_rule_endpoint.call_with_http_info(**kwargs) + def delete_security_findings_automation_ticket_creation_rule( self, rule_id: UUID, @@ -6176,6 +6360,23 @@ def get_security_findings_automation_mute_rule( return self._get_security_findings_automation_mute_rule_endpoint.call_with_http_info(**kwargs) + def get_security_findings_automation_severity_modifier_rule( + self, + rule_id: UUID, + ) -> SeverityModifierRuleResponse: + """Get a severity modifier rule. + + Get the details of a severity modifier rule by ID. + + :param rule_id: The ID of the severity modifier rule. + :type rule_id: UUID + :rtype: SeverityModifierRuleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["rule_id"] = rule_id + + return self._get_security_findings_automation_severity_modifier_rule_endpoint.call_with_http_info(**kwargs) + def get_security_findings_automation_ticket_creation_rule( self, rule_id: UUID, @@ -7523,6 +7724,31 @@ def list_security_findings_automation_mute_rules( return self._list_security_findings_automation_mute_rules_endpoint.call_with_http_info(**kwargs) + def list_security_findings_automation_severity_modifier_rules( + self, + *, + page_size: Union[int, UnsetType] = unset, + page_number: Union[int, UnsetType] = unset, + ) -> SeverityModifierRulesResponse: + """Get all severity modifier rules. + + Get all severity modifier rules for the current organization. + + :param page_size: The number of rules per page. Maximum is 1000. + :type page_size: int, optional + :param page_number: The page number to return. + :type page_number: int, optional + :rtype: SeverityModifierRulesResponse + """ + kwargs: Dict[str, Any] = {} + if page_size is not unset: + kwargs["page_size"] = page_size + + if page_number is not unset: + kwargs["page_number"] = page_number + + return self._list_security_findings_automation_severity_modifier_rules_endpoint.call_with_http_info(**kwargs) + def list_security_findings_automation_ticket_creation_rules( self, *, @@ -8448,6 +8674,22 @@ def reorder_security_findings_automation_mute_rules( return self._reorder_security_findings_automation_mute_rules_endpoint.call_with_http_info(**kwargs) + def reorder_security_findings_automation_severity_modifier_rules( + self, + body: SeverityModifierRuleReorderRequest, + ) -> SeverityModifierRuleReorderRequest: + """Reorder severity modifier rules. + + Reorder the list of severity modifier rules for the current organization. + + :type body: SeverityModifierRuleReorderRequest + :rtype: SeverityModifierRuleReorderRequest + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._reorder_security_findings_automation_severity_modifier_rules_endpoint.call_with_http_info(**kwargs) + def reorder_security_findings_automation_ticket_creation_rules( self, body: TicketCreationRuleReorderRequest, @@ -8801,6 +9043,27 @@ def update_security_findings_automation_mute_rule( return self._update_security_findings_automation_mute_rule_endpoint.call_with_http_info(**kwargs) + def update_security_findings_automation_severity_modifier_rule( + self, + rule_id: UUID, + body: SeverityModifierRuleUpdateRequest, + ) -> SeverityModifierRuleResponse: + """Update a severity modifier rule. + + Update an existing severity modifier rule by ID. + + :param rule_id: The ID of the severity modifier rule. + :type rule_id: UUID + :type body: SeverityModifierRuleUpdateRequest + :rtype: SeverityModifierRuleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["rule_id"] = rule_id + + kwargs["body"] = body + + return self._update_security_findings_automation_severity_modifier_rule_endpoint.call_with_http_info(**kwargs) + def update_security_findings_automation_ticket_creation_rule( self, rule_id: UUID, diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_action.py b/src/datadog_api_client/v2/model/severity_modifier_rule_action.py new file mode 100644 index 0000000000..177d47a094 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_action.py @@ -0,0 +1,51 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class SeverityModifierRuleAction(ModelComposed): + def __init__(self, **kwargs): + """ + 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. + + :param description: An optional free-form explanation for the severity change. + :type description: str, optional + + :param severity: 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. + :type severity: SeverityModifierSeverity + + :param type: The type of a severity modifier rule action that sets a fixed severity. + :type type: SeverityModifierRuleSetActionType + + :param severity_delta: The direction in which to shift the severity of matched findings by one rank. + :type severity_delta: SeverityModifierSeverityDelta + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.severity_modifier_rule_set_action import SeverityModifierRuleSetAction + from datadog_api_client.v2.model.severity_modifier_rule_shift_action import SeverityModifierRuleShiftAction + + return { + "oneOf": [ + SeverityModifierRuleSetAction, + SeverityModifierRuleShiftAction, + ], + } diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_attributes_create.py b/src/datadog_api_client/v2/model/severity_modifier_rule_attributes_create.py new file mode 100644 index 0000000000..4968bd6c5e --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_attributes_create.py @@ -0,0 +1,81 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_action import SeverityModifierRuleAction + from datadog_api_client.v2.model.automation_rule_scope import AutomationRuleScope + from datadog_api_client.v2.model.severity_modifier_rule_set_action import SeverityModifierRuleSetAction + from datadog_api_client.v2.model.severity_modifier_rule_shift_action import SeverityModifierRuleShiftAction + + +class SeverityModifierRuleAttributesCreate(ModelNormal): + validations = { + "name": { + "max_length": 255, + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_action import SeverityModifierRuleAction + from datadog_api_client.v2.model.automation_rule_scope import AutomationRuleScope + + return { + "action": (SeverityModifierRuleAction,), + "enabled": (bool,), + "name": (str,), + "rule": (AutomationRuleScope,), + } + + attribute_map = { + "action": "action", + "enabled": "enabled", + "name": "name", + "rule": "rule", + } + + def __init__( + self_, + action: Union[SeverityModifierRuleAction, SeverityModifierRuleSetAction, SeverityModifierRuleShiftAction], + name: str, + rule: AutomationRuleScope, + enabled: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + Attributes for creating or updating a severity modifier rule. + + :param action: 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. + :type action: SeverityModifierRuleAction + + :param enabled: Whether the severity modifier rule is enabled. + :type enabled: bool, optional + + :param name: The name of the severity modifier rule. + :type name: str + + :param rule: Defines the scope of findings to which the automation rule applies. + :type rule: AutomationRuleScope + """ + if enabled is not unset: + kwargs["enabled"] = enabled + super().__init__(kwargs) + + self_.action = action + self_.name = name + self_.rule = rule diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_attributes_response.py b/src/datadog_api_client/v2/model/severity_modifier_rule_attributes_response.py new file mode 100644 index 0000000000..06683e256f --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_attributes_response.py @@ -0,0 +1,110 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_action import SeverityModifierRuleAction + from datadog_api_client.v2.model.automation_rule_created_by import AutomationRuleCreatedBy + from datadog_api_client.v2.model.automation_rule_modified_by import AutomationRuleModifiedBy + from datadog_api_client.v2.model.automation_rule_scope import AutomationRuleScope + from datadog_api_client.v2.model.severity_modifier_rule_set_action import SeverityModifierRuleSetAction + from datadog_api_client.v2.model.severity_modifier_rule_shift_action import SeverityModifierRuleShiftAction + + +class SeverityModifierRuleAttributesResponse(ModelNormal): + validations = { + "name": { + "max_length": 255, + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_action import SeverityModifierRuleAction + from datadog_api_client.v2.model.automation_rule_created_by import AutomationRuleCreatedBy + from datadog_api_client.v2.model.automation_rule_modified_by import AutomationRuleModifiedBy + from datadog_api_client.v2.model.automation_rule_scope import AutomationRuleScope + + return { + "action": (SeverityModifierRuleAction,), + "created_at": (int,), + "created_by": (AutomationRuleCreatedBy,), + "enabled": (bool,), + "modified_at": (int,), + "modified_by": (AutomationRuleModifiedBy,), + "name": (str,), + "rule": (AutomationRuleScope,), + } + + attribute_map = { + "action": "action", + "created_at": "created_at", + "created_by": "created_by", + "enabled": "enabled", + "modified_at": "modified_at", + "modified_by": "modified_by", + "name": "name", + "rule": "rule", + } + + def __init__( + self_, + action: Union[SeverityModifierRuleAction, SeverityModifierRuleSetAction, SeverityModifierRuleShiftAction], + created_at: int, + created_by: AutomationRuleCreatedBy, + enabled: bool, + modified_at: int, + modified_by: AutomationRuleModifiedBy, + name: str, + rule: AutomationRuleScope, + **kwargs, + ): + """ + Attributes of a severity modifier rule as returned by the API. + + :param action: 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. + :type action: SeverityModifierRuleAction + + :param created_at: The Unix timestamp in milliseconds when the rule was created. + :type created_at: int + + :param created_by: The user or Datadog system who created the rule. + :type created_by: AutomationRuleCreatedBy + + :param enabled: Whether the severity modifier rule is enabled. + :type enabled: bool + + :param modified_at: The Unix timestamp in milliseconds when the rule was last modified. + :type modified_at: int + + :param modified_by: The user or Datadog system who last modified the rule. + :type modified_by: AutomationRuleModifiedBy + + :param name: The name of the severity modifier rule. + :type name: str + + :param rule: Defines the scope of findings to which the automation rule applies. + :type rule: AutomationRuleScope + """ + super().__init__(kwargs) + + self_.action = action + self_.created_at = created_at + self_.created_by = created_by + self_.enabled = enabled + self_.modified_at = modified_at + self_.modified_by = modified_by + self_.name = name + self_.rule = rule diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_create_request.py b/src/datadog_api_client/v2/model/severity_modifier_rule_create_request.py new file mode 100644 index 0000000000..a9771c4a87 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_create_request.py @@ -0,0 +1,40 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_data_create import SeverityModifierRuleDataCreate + + +class SeverityModifierRuleCreateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_data_create import SeverityModifierRuleDataCreate + + return { + "data": (SeverityModifierRuleDataCreate,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: SeverityModifierRuleDataCreate, **kwargs): + """ + The body of a severity modifier rule create request. + + :param data: The data object for a severity modifier rule create or update request. + :type data: SeverityModifierRuleDataCreate + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_data_create.py b/src/datadog_api_client/v2/model/severity_modifier_rule_data_create.py new file mode 100644 index 0000000000..f5a315c5c9 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_data_create.py @@ -0,0 +1,52 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_attributes_create import ( + SeverityModifierRuleAttributesCreate, + ) + from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType + + +class SeverityModifierRuleDataCreate(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_attributes_create import ( + SeverityModifierRuleAttributesCreate, + ) + from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType + + return { + "attributes": (SeverityModifierRuleAttributesCreate,), + "type": (SeverityModifierRuleType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: SeverityModifierRuleAttributesCreate, type: SeverityModifierRuleType, **kwargs): + """ + The data object for a severity modifier rule create or update request. + + :param attributes: Attributes for creating or updating a severity modifier rule. + :type attributes: SeverityModifierRuleAttributesCreate + + :param type: The JSON:API type for severity modifier rules. + :type type: SeverityModifierRuleType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_data_response.py b/src/datadog_api_client/v2/model/severity_modifier_rule_data_response.py new file mode 100644 index 0000000000..e72cfd224d --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_data_response.py @@ -0,0 +1,61 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_attributes_response import ( + SeverityModifierRuleAttributesResponse, + ) + from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType + + +class SeverityModifierRuleDataResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_attributes_response import ( + SeverityModifierRuleAttributesResponse, + ) + from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType + + return { + "attributes": (SeverityModifierRuleAttributesResponse,), + "id": (UUID,), + "type": (SeverityModifierRuleType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: SeverityModifierRuleAttributesResponse, id: UUID, type: SeverityModifierRuleType, **kwargs + ): + """ + The data object for a severity modifier rule as returned by the API. + + :param attributes: Attributes of a severity modifier rule as returned by the API. + :type attributes: SeverityModifierRuleAttributesResponse + + :param id: The ID of the severity modifier rule. + :type id: UUID + + :param type: The JSON:API type for severity modifier rules. + :type type: SeverityModifierRuleType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_reorder_item.py b/src/datadog_api_client/v2/model/severity_modifier_rule_reorder_item.py new file mode 100644 index 0000000000..4d702372b5 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_reorder_item.py @@ -0,0 +1,47 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType + + +class SeverityModifierRuleReorderItem(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType + + return { + "id": (UUID,), + "type": (SeverityModifierRuleType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: UUID, type: SeverityModifierRuleType, **kwargs): + """ + A reference to a severity modifier rule used for reordering. + + :param id: The ID of the automation rule. + :type id: UUID + + :param type: The JSON:API type for severity modifier rules. + :type type: SeverityModifierRuleType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_reorder_request.py b/src/datadog_api_client/v2/model/severity_modifier_rule_reorder_request.py new file mode 100644 index 0000000000..4ec55c2141 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_reorder_request.py @@ -0,0 +1,40 @@ +# 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. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_reorder_item import SeverityModifierRuleReorderItem + + +class SeverityModifierRuleReorderRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_reorder_item import SeverityModifierRuleReorderItem + + return { + "data": ([SeverityModifierRuleReorderItem],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[SeverityModifierRuleReorderItem], **kwargs): + """ + The body of a severity modifier rule reorder request. + + :param data: The ordered list of severity modifier rules; every rule must be included. + :type data: [SeverityModifierRuleReorderItem] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_response.py b/src/datadog_api_client/v2/model/severity_modifier_rule_response.py new file mode 100644 index 0000000000..e20d314cb7 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_response.py @@ -0,0 +1,40 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_data_response import SeverityModifierRuleDataResponse + + +class SeverityModifierRuleResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_data_response import SeverityModifierRuleDataResponse + + return { + "data": (SeverityModifierRuleDataResponse,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: SeverityModifierRuleDataResponse, **kwargs): + """ + A single severity modifier rule response. + + :param data: The data object for a severity modifier rule as returned by the API. + :type data: SeverityModifierRuleDataResponse + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_set_action.py b/src/datadog_api_client/v2/model/severity_modifier_rule_set_action.py new file mode 100644 index 0000000000..9f8b95b4c5 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_set_action.py @@ -0,0 +1,69 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_severity import SeverityModifierSeverity + from datadog_api_client.v2.model.severity_modifier_rule_set_action_type import SeverityModifierRuleSetActionType + + +class SeverityModifierRuleSetAction(ModelNormal): + validations = { + "description": { + "max_length": 20000, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_severity import SeverityModifierSeverity + from datadog_api_client.v2.model.severity_modifier_rule_set_action_type import SeverityModifierRuleSetActionType + + return { + "description": (str,), + "severity": (SeverityModifierSeverity,), + "type": (SeverityModifierRuleSetActionType,), + } + + attribute_map = { + "description": "description", + "severity": "severity", + "type": "type", + } + + def __init__( + self_, + severity: SeverityModifierSeverity, + type: SeverityModifierRuleSetActionType, + description: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Sets matched findings to a fixed severity. + + :param description: An optional free-form explanation for the severity change. + :type description: str, optional + + :param severity: 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. + :type severity: SeverityModifierSeverity + + :param type: The type of a severity modifier rule action that sets a fixed severity. + :type type: SeverityModifierRuleSetActionType + """ + if description is not unset: + kwargs["description"] = description + super().__init__(kwargs) + + self_.severity = severity + self_.type = type diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_set_action_type.py b/src/datadog_api_client/v2/model/severity_modifier_rule_set_action_type.py new file mode 100644 index 0000000000..9586263b53 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_set_action_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SeverityModifierRuleSetActionType(ModelSimple): + """ + The type of a severity modifier rule action that sets a fixed severity. + + :param value: If omitted defaults to "set". Must be one of ["set"]. + :type value: str + """ + + allowed_values = { + "set", + } + SET: ClassVar["SeverityModifierRuleSetActionType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SeverityModifierRuleSetActionType.SET = SeverityModifierRuleSetActionType("set") diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_shift_action.py b/src/datadog_api_client/v2/model/severity_modifier_rule_shift_action.py new file mode 100644 index 0000000000..57a30f5493 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_shift_action.py @@ -0,0 +1,71 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_severity_delta import SeverityModifierSeverityDelta + from datadog_api_client.v2.model.severity_modifier_rule_shift_action_type import SeverityModifierRuleShiftActionType + + +class SeverityModifierRuleShiftAction(ModelNormal): + validations = { + "description": { + "max_length": 20000, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_severity_delta import SeverityModifierSeverityDelta + from datadog_api_client.v2.model.severity_modifier_rule_shift_action_type import ( + SeverityModifierRuleShiftActionType, + ) + + return { + "description": (str,), + "severity_delta": (SeverityModifierSeverityDelta,), + "type": (SeverityModifierRuleShiftActionType,), + } + + attribute_map = { + "description": "description", + "severity_delta": "severity_delta", + "type": "type", + } + + def __init__( + self_, + severity_delta: SeverityModifierSeverityDelta, + type: SeverityModifierRuleShiftActionType, + description: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Shifts matched findings up or down by one severity rank. + + :param description: An optional free-form explanation for the severity change. + :type description: str, optional + + :param severity_delta: The direction in which to shift the severity of matched findings by one rank. + :type severity_delta: SeverityModifierSeverityDelta + + :param type: The type of a severity modifier rule action that shifts the severity by one rank. + :type type: SeverityModifierRuleShiftActionType + """ + if description is not unset: + kwargs["description"] = description + super().__init__(kwargs) + + self_.severity_delta = severity_delta + self_.type = type diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_shift_action_type.py b/src/datadog_api_client/v2/model/severity_modifier_rule_shift_action_type.py new file mode 100644 index 0000000000..73890fb2ee --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_shift_action_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SeverityModifierRuleShiftActionType(ModelSimple): + """ + The type of a severity modifier rule action that shifts the severity by one rank. + + :param value: If omitted defaults to "shift". Must be one of ["shift"]. + :type value: str + """ + + allowed_values = { + "shift", + } + SHIFT: ClassVar["SeverityModifierRuleShiftActionType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SeverityModifierRuleShiftActionType.SHIFT = SeverityModifierRuleShiftActionType("shift") diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_type.py b/src/datadog_api_client/v2/model/severity_modifier_rule_type.py new file mode 100644 index 0000000000..0c41313e10 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SeverityModifierRuleType(ModelSimple): + """ + The JSON:API type for severity modifier rules. + + :param value: If omitted defaults to "severity_modifier_rules". Must be one of ["severity_modifier_rules"]. + :type value: str + """ + + allowed_values = { + "severity_modifier_rules", + } + SEVERITY_MODIFIER_RULES: ClassVar["SeverityModifierRuleType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SeverityModifierRuleType.SEVERITY_MODIFIER_RULES = SeverityModifierRuleType("severity_modifier_rules") diff --git a/src/datadog_api_client/v2/model/severity_modifier_rule_update_request.py b/src/datadog_api_client/v2/model/severity_modifier_rule_update_request.py new file mode 100644 index 0000000000..c3f339f498 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rule_update_request.py @@ -0,0 +1,40 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_data_create import SeverityModifierRuleDataCreate + + +class SeverityModifierRuleUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_data_create import SeverityModifierRuleDataCreate + + return { + "data": (SeverityModifierRuleDataCreate,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: SeverityModifierRuleDataCreate, **kwargs): + """ + The body of a severity modifier rule update request. + + :param data: The data object for a severity modifier rule create or update request. + :type data: SeverityModifierRuleDataCreate + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/severity_modifier_rules_response.py b/src/datadog_api_client/v2/model/severity_modifier_rules_response.py new file mode 100644 index 0000000000..0f344bed3c --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_rules_response.py @@ -0,0 +1,62 @@ +# 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. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.severity_modifier_rule_data_response import SeverityModifierRuleDataResponse + from datadog_api_client.v2.model.security_automation_rules_links import SecurityAutomationRulesLinks + from datadog_api_client.v2.model.security_automation_rules_meta import SecurityAutomationRulesMeta + + +class SeverityModifierRulesResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.severity_modifier_rule_data_response import SeverityModifierRuleDataResponse + from datadog_api_client.v2.model.security_automation_rules_links import SecurityAutomationRulesLinks + from datadog_api_client.v2.model.security_automation_rules_meta import SecurityAutomationRulesMeta + + return { + "data": ([SeverityModifierRuleDataResponse],), + "links": (SecurityAutomationRulesLinks,), + "meta": (SecurityAutomationRulesMeta,), + } + + attribute_map = { + "data": "data", + "links": "links", + "meta": "meta", + } + + def __init__( + self_, + data: List[SeverityModifierRuleDataResponse], + links: SecurityAutomationRulesLinks, + meta: SecurityAutomationRulesMeta, + **kwargs, + ): + """ + A list of severity modifier rules with pagination metadata. + + :param data: A list of severity modifier rule data objects. + :type data: [SeverityModifierRuleDataResponse] + + :param links: Pagination links for the list of automation rules. + :type links: SecurityAutomationRulesLinks + + :param meta: Metadata for the list of automation rules. + :type meta: SecurityAutomationRulesMeta + """ + super().__init__(kwargs) + + self_.data = data + self_.links = links + self_.meta = meta diff --git a/src/datadog_api_client/v2/model/severity_modifier_severity.py b/src/datadog_api_client/v2/model/severity_modifier_severity.py new file mode 100644 index 0000000000..9f9d4f2929 --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_severity.py @@ -0,0 +1,47 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SeverityModifierSeverity(ModelSimple): + """ + 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. + + :param value: Must be one of ["info_none", "low", "medium", "high", "critical"]. + :type value: str + """ + + allowed_values = { + "info_none", + "low", + "medium", + "high", + "critical", + } + INFO_NONE: ClassVar["SeverityModifierSeverity"] + LOW: ClassVar["SeverityModifierSeverity"] + MEDIUM: ClassVar["SeverityModifierSeverity"] + HIGH: ClassVar["SeverityModifierSeverity"] + CRITICAL: ClassVar["SeverityModifierSeverity"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SeverityModifierSeverity.INFO_NONE = SeverityModifierSeverity("info_none") +SeverityModifierSeverity.LOW = SeverityModifierSeverity("low") +SeverityModifierSeverity.MEDIUM = SeverityModifierSeverity("medium") +SeverityModifierSeverity.HIGH = SeverityModifierSeverity("high") +SeverityModifierSeverity.CRITICAL = SeverityModifierSeverity("critical") diff --git a/src/datadog_api_client/v2/model/severity_modifier_severity_delta.py b/src/datadog_api_client/v2/model/severity_modifier_severity_delta.py new file mode 100644 index 0000000000..c00f8952ff --- /dev/null +++ b/src/datadog_api_client/v2/model/severity_modifier_severity_delta.py @@ -0,0 +1,38 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SeverityModifierSeverityDelta(ModelSimple): + """ + The direction in which to shift the severity of matched findings by one rank. + + :param value: Must be one of ["up_one", "down_one"]. + :type value: str + """ + + allowed_values = { + "up_one", + "down_one", + } + UP_ONE: ClassVar["SeverityModifierSeverityDelta"] + DOWN_ONE: ClassVar["SeverityModifierSeverityDelta"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SeverityModifierSeverityDelta.UP_ONE = SeverityModifierSeverityDelta("up_one") +SeverityModifierSeverityDelta.DOWN_ONE = SeverityModifierSeverityDelta("down_one") diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 968eeb4892..071105f7b5 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -8771,6 +8771,26 @@ from datadog_api_client.v2.model.service_repository_info_status import ServiceRepositoryInfoStatus from datadog_api_client.v2.model.session_id_array import SessionIdArray from datadog_api_client.v2.model.session_id_data import SessionIdData +from datadog_api_client.v2.model.severity_modifier_rule_action import SeverityModifierRuleAction +from datadog_api_client.v2.model.severity_modifier_rule_attributes_create import SeverityModifierRuleAttributesCreate +from datadog_api_client.v2.model.severity_modifier_rule_attributes_response import ( + SeverityModifierRuleAttributesResponse, +) +from datadog_api_client.v2.model.severity_modifier_rule_create_request import SeverityModifierRuleCreateRequest +from datadog_api_client.v2.model.severity_modifier_rule_data_create import SeverityModifierRuleDataCreate +from datadog_api_client.v2.model.severity_modifier_rule_data_response import SeverityModifierRuleDataResponse +from datadog_api_client.v2.model.severity_modifier_rule_reorder_item import SeverityModifierRuleReorderItem +from datadog_api_client.v2.model.severity_modifier_rule_reorder_request import SeverityModifierRuleReorderRequest +from datadog_api_client.v2.model.severity_modifier_rule_response import SeverityModifierRuleResponse +from datadog_api_client.v2.model.severity_modifier_rule_set_action import SeverityModifierRuleSetAction +from datadog_api_client.v2.model.severity_modifier_rule_set_action_type import SeverityModifierRuleSetActionType +from datadog_api_client.v2.model.severity_modifier_rule_shift_action import SeverityModifierRuleShiftAction +from datadog_api_client.v2.model.severity_modifier_rule_shift_action_type import SeverityModifierRuleShiftActionType +from datadog_api_client.v2.model.severity_modifier_rule_type import SeverityModifierRuleType +from datadog_api_client.v2.model.severity_modifier_rule_update_request import SeverityModifierRuleUpdateRequest +from datadog_api_client.v2.model.severity_modifier_rules_response import SeverityModifierRulesResponse +from datadog_api_client.v2.model.severity_modifier_severity import SeverityModifierSeverity +from datadog_api_client.v2.model.severity_modifier_severity_delta import SeverityModifierSeverityDelta from datadog_api_client.v2.model.shared_dashboard_global_time import SharedDashboardGlobalTime from datadog_api_client.v2.model.shared_dashboard_included import SharedDashboardIncluded from datadog_api_client.v2.model.shared_dashboard_included_dashboard import SharedDashboardIncludedDashboard @@ -16417,6 +16437,24 @@ "ServiceRepositoryInfoStatus", "SessionIdArray", "SessionIdData", + "SeverityModifierRuleAction", + "SeverityModifierRuleAttributesCreate", + "SeverityModifierRuleAttributesResponse", + "SeverityModifierRuleCreateRequest", + "SeverityModifierRuleDataCreate", + "SeverityModifierRuleDataResponse", + "SeverityModifierRuleReorderItem", + "SeverityModifierRuleReorderRequest", + "SeverityModifierRuleResponse", + "SeverityModifierRuleSetAction", + "SeverityModifierRuleSetActionType", + "SeverityModifierRuleShiftAction", + "SeverityModifierRuleShiftActionType", + "SeverityModifierRuleType", + "SeverityModifierRuleUpdateRequest", + "SeverityModifierRulesResponse", + "SeverityModifierSeverity", + "SeverityModifierSeverityDelta", "SharedDashboardGlobalTime", "SharedDashboardIncluded", "SharedDashboardIncludedDashboard", diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_severity_modifier_rule_returns_rule_successfully_deleted_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_severity_modifier_rule_returns_rule_successfully_deleted_response.frozen new file mode 100644 index 0000000000..5812a38a04 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_severity_modifier_rule_returns_rule_successfully_deleted_response.frozen @@ -0,0 +1 @@ +2026-08-03T09:17:25.445Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_severity_modifier_rule_returns_rule_successfully_deleted_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_severity_modifier_rule_returns_rule_successfully_deleted_response.yaml new file mode 100644 index 0000000000..021ab6899d --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_severity_modifier_rule_returns_rule_successfully_deleted_response.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: '{"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: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules + response: + body: + string: '{"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 + status: + code: 201 + message: Created +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules/ec796c54-ec53-4b2f-bb14-36d4b224f92c + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules/ec796c54-ec53-4b2f-bb14-36d4b224f92c + response: + body: + string: '{"errors":[{"status":"404","title":"Not Found","detail":"rule does + not exist"}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_severity_modifier_rule_returns_successfully_retrieved_the_severity_modifier_rule_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_severity_modifier_rule_returns_successfully_retrieved_the_severity_modifier_rule_response.frozen new file mode 100644 index 0000000000..87000b7fb8 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_severity_modifier_rule_returns_successfully_retrieved_the_severity_modifier_rule_response.frozen @@ -0,0 +1 @@ +2026-08-03T09:17:28.616Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_severity_modifier_rule_returns_successfully_retrieved_the_severity_modifier_rule_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_severity_modifier_rule_returns_successfully_retrieved_the_severity_modifier_rule_response.yaml new file mode 100644 index 0000000000..c34c7bbfb6 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_severity_modifier_rule_returns_successfully_retrieved_the_severity_modifier_rule_response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: '{"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: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules + response: + body: + string: '{"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 + status: + code: 201 + message: Created +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules/fec045ba-40ba-42ef-a107-f7fba8717e11 + response: + body: + string: '{"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 + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules/fec045ba-40ba-42ef-a107-f7fba8717e11 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_severity_modifier_rules_returns_successfully_retrieved_the_list_of_severity_modifier_rules_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_all_severity_modifier_rules_returns_successfully_retrieved_the_list_of_severity_modifier_rules_response.frozen new file mode 100644 index 0000000000..8cba2e5db7 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_all_severity_modifier_rules_returns_successfully_retrieved_the_list_of_severity_modifier_rules_response.frozen @@ -0,0 +1 @@ +2026-08-03T09:17:29.711Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_severity_modifier_rules_returns_successfully_retrieved_the_list_of_severity_modifier_rules_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_all_severity_modifier_rules_returns_successfully_retrieved_the_list_of_severity_modifier_rules_response.yaml new file mode 100644 index 0000000000..95cfc12e68 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_all_severity_modifier_rules_returns_successfully_retrieved_the_list_of_severity_modifier_rules_response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: '{"data":{"attributes":{"action":{"severity":"low","type":"set"},"enabled":true,"name":"Test-Get_all_severity_modifier_rules_returns_Successfully_retrieved_the_list_of_severity_modifier_rules_r-1785748649","rule":{"finding_types":["misconfiguration"],"query":"env:staging"}},"type":"severity_modifier_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules + response: + body: + string: '{"data":{"id":"4c9856fe-1150-45de-813c-3d4d3375bea1","type":"severity_modifier_rules","attributes":{"action":{"type":"set","severity":"low"},"created_at":1785748649918,"created_by":{"type":"user","id":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"enabled":true,"modified_at":1785748649918,"modified_by":{"type":"user","id":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"name":"Test-Get_all_severity_modifier_rules_returns_Successfully_retrieved_the_list_of_severity_modifier_rules_r-1785748649","rule":{"finding_types":["misconfiguration"],"query":"env:staging"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 201 + message: Created +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules + response: + body: + string: '{"data":[{"id":"4c9856fe-1150-45de-813c-3d4d3375bea1","type":"severity_modifier_rules","attributes":{"action":{"type":"set","severity":"low"},"created_at":1785748649918,"created_by":{"type":"user","id":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"enabled":true,"modified_at":1785748649918,"modified_by":{"type":"user","id":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"name":"Test-Get_all_severity_modifier_rules_returns_Successfully_retrieved_the_list_of_severity_modifier_rules_r-1785748649","rule":{"finding_types":["misconfiguration"],"query":"env:staging"}}}],"meta":{"page":{"total_filtered_count":1}},"links":{"first":"/api/v2/security/findings/automation/severity_modifier_rules?page[size]=1000\u0026page[number]=0","last":"/api/v2/security/findings/automation/severity_modifier_rules?page[size]=1000\u0026page[number]=0"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules/4c9856fe-1150-45de-813c-3d4d3375bea1 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_reorder_severity_modifier_rules_returns_successfully_reordered_the_severity_modifier_rules_response.frozen b/tests/v2/cassettes/test_scenarios/test_reorder_severity_modifier_rules_returns_successfully_reordered_the_severity_modifier_rules_response.frozen new file mode 100644 index 0000000000..6a8d9d1122 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_reorder_severity_modifier_rules_returns_successfully_reordered_the_severity_modifier_rules_response.frozen @@ -0,0 +1 @@ +2026-08-03T09:17:30.831Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_reorder_severity_modifier_rules_returns_successfully_reordered_the_severity_modifier_rules_response.yaml b/tests/v2/cassettes/test_scenarios/test_reorder_severity_modifier_rules_returns_successfully_reordered_the_severity_modifier_rules_response.yaml new file mode 100644 index 0000000000..4270577e98 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_reorder_severity_modifier_rules_returns_successfully_reordered_the_severity_modifier_rules_response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: '{"data":{"attributes":{"action":{"severity":"low","type":"set"},"enabled":true,"name":"Test-Reorder_severity_modifier_rules_returns_Successfully_reordered_the_severity_modifier_rules_response-1785748650","rule":{"finding_types":["misconfiguration"],"query":"env:staging"}},"type":"severity_modifier_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules + response: + body: + string: '{"data":{"id":"91bb2eb7-36d4-4b89-af25-1f5a30af5e51","type":"severity_modifier_rules","attributes":{"action":{"type":"set","severity":"low"},"created_at":1785748651040,"created_by":{"type":"user","id":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"enabled":true,"modified_at":1785748651040,"modified_by":{"type":"user","id":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"name":"Test-Reorder_severity_modifier_rules_returns_Successfully_reordered_the_severity_modifier_rules_response-1785748650","rule":{"finding_types":["misconfiguration"],"query":"env:staging"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 201 + message: Created +- request: + body: '{"data":[{"id":"91bb2eb7-36d4-4b89-af25-1f5a30af5e51","type":"severity_modifier_rules"}]}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules/reorder + response: + body: + string: '{"data":[{"type":"severity_modifier_rules","id":"91bb2eb7-36d4-4b89-af25-1f5a30af5e51"}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/security/findings/automation/severity_modifier_rules/91bb2eb7-36d4-4b89-af25-1f5a30af5e51 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/features/given.json b/tests/v2/features/given.json index 6f57cbefde..f753ff8c34 100644 --- a/tests/v2/features/given.json +++ b/tests/v2/features/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/tests/v2/features/security_monitoring.feature b/tests/v2/features/security_monitoring.feature index 14f3d34a11..86e4ed5cf5 100644 --- a/tests/v2/features/security_monitoring.feature +++ b/tests/v2/features/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 @@ -1987,6 +2047,15 @@ Feature: Security Monitoring And the response "data" has item with field "attributes.filtered_data_type" with value "logs" And the response "data" has item with field "attributes.is_builtin" with value true + @team:DataDog/k9-automation + Scenario: Get all severity modifier rules returns "Successfully retrieved the list of severity modifier rules" response + Given operation "ListSecurityFindingsAutomationSeverityModifierRules" enabled + And there is a valid "valid_severity_modifier_rule" in the system + And new "ListSecurityFindingsAutomationSeverityModifierRules" request + When the request is sent + Then the response status is 200 Successfully retrieved the list of severity modifier rules + And the response "data" has item with field "id" with value "{{ valid_severity_modifier_rule.data.id }}" + @generated @skip @team:DataDog/cloud-siem Scenario: Get all suppression rules returns "OK" response Given new "ListSecurityMonitoringSuppressions" request @@ -2906,6 +2975,31 @@ Feature: Security Monitoring When the request is sent Then the response status is 422 Unprocessable Entity + @generated @skip @team:DataDog/k9-automation + Scenario: Reorder severity modifier rules returns "Bad Request" response + Given operation "ReorderSecurityFindingsAutomationSeverityModifierRules" enabled + And new "ReorderSecurityFindingsAutomationSeverityModifierRules" request + And body with value {"data": [{"id": "00000000-0000-0000-0000-000000000000", "type": "severity_modifier_rules"}]} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/k9-automation + Scenario: Reorder severity modifier rules returns "Successfully reordered the severity modifier rules" response + Given operation "ReorderSecurityFindingsAutomationSeverityModifierRules" enabled + And there is a valid "valid_severity_modifier_rule" in the system + And new "ReorderSecurityFindingsAutomationSeverityModifierRules" request + And body with value {"data": [{"id": "{{ valid_severity_modifier_rule.data.id }}", "type": "severity_modifier_rules"}]} + When the request is sent + Then the response status is 200 Successfully reordered the severity modifier rules + + @generated @skip @team:DataDog/k9-automation + Scenario: Reorder severity modifier rules returns "Unprocessable Entity" response + Given operation "ReorderSecurityFindingsAutomationSeverityModifierRules" enabled + And new "ReorderSecurityFindingsAutomationSeverityModifierRules" request + And body with value {"data": [{"id": "00000000-0000-0000-0000-000000000000", "type": "severity_modifier_rules"}]} + When the request is sent + Then the response status is 422 Unprocessable Entity + @generated @skip @team:DataDog/k9-automation Scenario: Reorder ticket creation rules returns "Bad Request" response Given operation "ReorderSecurityFindingsAutomationTicketCreationRules" enabled @@ -3390,6 +3484,42 @@ Feature: Security Monitoring And the response "data.attributes.filtered_data_type" is equal to "logs" And the response "data.attributes.name" is equal to "{{ unique }}" + @generated @skip @team:DataDog/k9-automation + Scenario: Update a severity modifier rule returns "Bad Request" response + Given operation "UpdateSecurityFindingsAutomationSeverityModifierRule" enabled + And new "UpdateSecurityFindingsAutomationSeverityModifierRule" request + And request contains "rule_id" parameter from "REPLACE.ME" + 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: Update a severity modifier rule returns "Not Found" response + Given operation "UpdateSecurityFindingsAutomationSeverityModifierRule" enabled + And new "UpdateSecurityFindingsAutomationSeverityModifierRule" request + And request contains "rule_id" parameter from "REPLACE.ME" + 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 404 Not Found + + @generated @skip @team:DataDog/k9-automation + Scenario: Update a severity modifier rule returns "Successfully updated the severity modifier rule" response + Given operation "UpdateSecurityFindingsAutomationSeverityModifierRule" enabled + And new "UpdateSecurityFindingsAutomationSeverityModifierRule" request + And request contains "rule_id" parameter from "REPLACE.ME" + 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 200 Successfully updated the severity modifier rule + + @generated @skip @team:DataDog/k9-automation + Scenario: Update a severity modifier rule returns "Unprocessable Entity" response + Given operation "UpdateSecurityFindingsAutomationSeverityModifierRule" enabled + And new "UpdateSecurityFindingsAutomationSeverityModifierRule" request + And request contains "rule_id" parameter from "REPLACE.ME" + 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: Update a suppression rule returns "Bad Request" response Given new "UpdateSecurityMonitoringSuppression" request diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 9c1ff8a4f2..e5b7bfb591 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -7454,6 +7454,49 @@ "type": "idempotent" } }, + "ListSecurityFindingsAutomationSeverityModifierRules": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, + "CreateSecurityFindingsAutomationSeverityModifierRule": { + "tag": "Security Monitoring", + "undo": { + "operationId": "DeleteSecurityFindingsAutomationSeverityModifierRule", + "parameters": [ + { + "name": "rule_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "ReorderSecurityFindingsAutomationSeverityModifierRules": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, + "DeleteSecurityFindingsAutomationSeverityModifierRule": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, + "GetSecurityFindingsAutomationSeverityModifierRule": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, + "UpdateSecurityFindingsAutomationSeverityModifierRule": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, "ListSecurityFindingsAutomationTicketCreationRules": { "tag": "Security Monitoring", "undo": {