From c022f117d041e4a60a084ac97d1df4079eba282f Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 31 Mar 2026 07:47:49 +0000 Subject: [PATCH] Regenerate client from commit a31b8f6 of spec repo --- .generator/schemas/v1/openapi.yaml | 14 -- .generator/schemas/v2/openapi.yaml | 231 ++++++++++++++++++ docs/datadog_api_client.v2.model.rst | 63 +++++ ...lkEditSecurityMonitoringSignalsAssignee.py | 35 +++ .../BulkEditSecurityMonitoringSignalsState.py | 38 +++ .../hourly_usage_attribution_usage_type.py | 5 +- ...hly_usage_attribution_supported_metrics.py | 12 +- .../model/monthly_usage_attribution_values.py | 16 -- .../v2/api/security_monitoring_api.py | 85 +++++++ ...signals_bulk_assignee_update_attributes.py | 43 ++++ ...oring_signals_bulk_assignee_update_data.py | 67 +++++ ...ng_signals_bulk_assignee_update_request.py | 50 ++++ ...nitoring_signals_bulk_state_update_data.py | 67 +++++ ...oring_signals_bulk_state_update_request.py | 50 ++++ ...ty_monitoring_signals_bulk_triage_event.py | 50 ++++ ...ng_signals_bulk_triage_event_attributes.py | 127 ++++++++++ ...ing_signals_bulk_triage_update_response.py | 56 +++++ ...oring_signals_bulk_triage_update_result.py | 50 ++++ src/datadog_api_client/v2/models/__init__.py | 36 +++ tests/v2/features/security_monitoring.feature | 30 +++ tests/v2/features/undo.json | 12 + 21 files changed, 1092 insertions(+), 45 deletions(-) create mode 100644 examples/v2/security-monitoring/BulkEditSecurityMonitoringSignalsAssignee.py create mode 100644 examples/v2/security-monitoring/BulkEditSecurityMonitoringSignalsState.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_attributes.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_data.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_request.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_state_update_data.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_state_update_request.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_event.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_event_attributes.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_update_response.py create mode 100644 src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_update_result.py diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index ad2439bee5..737ab6bffd 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -4579,7 +4579,6 @@ components: - sca_fargate_usage - sds_scanned_bytes_usage - serverless_apps_usage - - serverless_apps_apm_usage - siem_analyzed_logs_add_on_usage - siem_ingested_bytes_usage - snmp_usage @@ -4667,7 +4666,6 @@ components: - SCA_FARGATE_USAGE - SDS_SCANNED_BYTES_USAGE - SERVERLESS_APPS_USAGE - - SERVERLESS_APPS_APM_USAGE - SIEM_ANALYZED_LOGS_ADD_ON_USAGE - SIEM_INGESTED_BYTES_USAGE - SNMP_USAGE @@ -9158,8 +9156,6 @@ components: - published_app_percentage - serverless_apps_usage - serverless_apps_percentage - - serverless_apps_apm_usage - - serverless_apps_apm_percentage - snmp_usage - snmp_percentage - universal_service_monitoring_usage @@ -9325,8 +9321,6 @@ components: - PUBLISHED_APP_PERCENTAGE - SERVERLESS_APPS_USAGE - SERVERLESS_APPS_PERCENTAGE - - SERVERLESS_APPS_APM_USAGE - - SERVERLESS_APPS_APM_PERCENTAGE - SNMP_USAGE - SNMP_PERCENTAGE - UNIVERSAL_SERVICE_MONITORING_USAGE @@ -9984,14 +9978,6 @@ components: description: The total Sensitive Data Scanner usage by tag(s). format: double type: number - serverless_apps_apm_percentage: - description: The percentage of Serverless Apps APM usage by tag(s). - format: double - type: number - serverless_apps_apm_usage: - description: The total Serverless Apps APM usage by tag(s). - format: double - type: number serverless_apps_percentage: description: The percentage of Serverless Apps usage by tag(s). format: double diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 2c27fbce2b..94bfc15b99 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -58505,6 +58505,155 @@ components: description: Version of the updated signal. If server side version is higher, update will be rejected. format: int64 type: integer + SecurityMonitoringSignalsBulkAssigneeUpdateAttributes: + description: Attributes describing the new assignees for a bulk signal update. + properties: + assignee: + description: UUID of the user to assign to the signal. Use an empty string to unassign. + example: 773b045d-ccf8-4808-bd3b-955ef6a8c940 + type: string + version: + $ref: "#/components/schemas/SecurityMonitoringSignalVersion" + required: + - assignee + type: object + SecurityMonitoringSignalsBulkAssigneeUpdateData: + description: Data for updating the assignees for multiple security signals. + properties: + attributes: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkAssigneeUpdateAttributes" + id: + description: The unique ID of the security signal. + example: AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA + type: string + type: + $ref: "#/components/schemas/SecurityMonitoringSignalType" + required: + - id + - attributes + type: object + SecurityMonitoringSignalsBulkAssigneeUpdateRequest: + description: Request body for updating the assignee of multiple security signals. + properties: + data: + description: An array of signal assignee updates. + items: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkAssigneeUpdateData" + maxItems: 199 + type: array + required: + - data + type: object + SecurityMonitoringSignalsBulkStateUpdateData: + description: Data for updating the state for multiple security signals. + properties: + attributes: + $ref: "#/components/schemas/SecurityMonitoringSignalStateUpdateAttributes" + id: + description: The unique ID of the security signal. + example: AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA + type: string + type: + $ref: "#/components/schemas/SecurityMonitoringSignalType" + required: + - id + - attributes + type: object + SecurityMonitoringSignalsBulkStateUpdateRequest: + description: Request body for updating the triage states of multiple security signals. + properties: + data: + description: An array of signal state updates. + items: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkStateUpdateData" + maxItems: 199 + type: array + required: + - data + type: object + SecurityMonitoringSignalsBulkTriageEvent: + description: A single signal event entry in a bulk triage update response. + properties: + event: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkTriageEventAttributes" + id: + description: The unique ID of the security signal. + example: AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA + type: string + required: + - id + - event + type: object + SecurityMonitoringSignalsBulkTriageEventAttributes: + description: Triage attributes of a security signal returned in a bulk update response. + properties: + archive_comment: + $ref: "#/components/schemas/SecurityMonitoringSignalArchiveComment" + archive_comment_timestamp: + description: Timestamp of the last edit to the archive comment. + format: int64 + type: integer + archive_comment_user: + $ref: "#/components/schemas/SecurityMonitoringTriageUser" + archive_reason: + $ref: "#/components/schemas/SecurityMonitoringSignalArchiveReason" + assignee: + $ref: "#/components/schemas/SecurityMonitoringTriageUser" + id: + description: The unique ID of the security signal. + example: AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA + type: string + incident_ids: + $ref: "#/components/schemas/SecurityMonitoringSignalIncidentIds" + state: + $ref: "#/components/schemas/SecurityMonitoringSignalState" + state_update_timestamp: + description: Timestamp of the last state update. + format: int64 + type: integer + state_update_user: + $ref: "#/components/schemas/SecurityMonitoringTriageUser" + required: + - id + - state + - assignee + - incident_ids + type: object + SecurityMonitoringSignalsBulkTriageUpdateResponse: + description: Response for a bulk triage update of security signals. + properties: + result: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkTriageUpdateResult" + status: + description: The status of the bulk operation. + example: done + type: string + type: + description: The type of the response. + example: status + type: string + required: + - type + - status + - result + type: object + SecurityMonitoringSignalsBulkTriageUpdateResult: + description: The result payload of a bulk signal triage update. + properties: + count: + description: The number of signals updated. + example: 2 + format: int64 + type: integer + events: + description: The list of updated signals. + items: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkTriageEvent" + type: array + required: + - count + - events + type: object SecurityMonitoringSignalsListResponse: description: "The response object with all security signals matching the request\nand pagination information." properties: @@ -103394,6 +103543,88 @@ paths: operator: OR permissions: - security_monitoring_signals_read + /api/v2/security_monitoring/signals/bulk/assignee: + patch: + description: |- + Change the triage assignees of multiple security signals at once. + The maximum number of signals that can be updated in a single request is 199. + operationId: BulkEditSecurityMonitoringSignalsAssignee + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkAssigneeUpdateRequest" + description: Attributes describing the signal assignee updates. + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkTriageUpdateResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Bulk update triage assignee of security signals + tags: ["Security Monitoring"] + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - security_monitoring_signals_write + /api/v2/security_monitoring/signals/bulk/state: + patch: + description: |- + Change the triage states of multiple security signals at once. + The maximum number of signals that can be updated in a single request is 199. + operationId: BulkEditSecurityMonitoringSignalsState + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkStateUpdateRequest" + description: Attributes describing the signal state updates. + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SecurityMonitoringSignalsBulkTriageUpdateResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Bulk update triage state of security signals + tags: ["Security Monitoring"] + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - security_monitoring_signals_write /api/v2/security_monitoring/signals/search: post: description: |- diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 1e35118a14..8f5f1b949e 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -26527,6 +26527,69 @@ datadog\_api\_client.v2.model.security\_monitoring\_signal\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_assignee\_update\_attributes module +------------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_assignee\_update\_data module +------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_assignee\_update\_request module +--------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_state\_update\_data module +--------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_state\_update\_request module +------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_triage\_event module +--------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_event + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_triage\_event\_attributes module +--------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_event_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_triage\_update\_response module +-------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_update_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.security\_monitoring\_signals\_bulk\_triage\_update\_result module +------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_update_result + :members: + :show-inheritance: + datadog\_api\_client.v2.model.security\_monitoring\_signals\_list\_response module ---------------------------------------------------------------------------------- diff --git a/examples/v2/security-monitoring/BulkEditSecurityMonitoringSignalsAssignee.py b/examples/v2/security-monitoring/BulkEditSecurityMonitoringSignalsAssignee.py new file mode 100644 index 0000000000..5fddc05a9e --- /dev/null +++ b/examples/v2/security-monitoring/BulkEditSecurityMonitoringSignalsAssignee.py @@ -0,0 +1,35 @@ +""" +Bulk update triage assignee of security signals returns "OK" 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.security_monitoring_signal_type import SecurityMonitoringSignalType +from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_attributes import ( + SecurityMonitoringSignalsBulkAssigneeUpdateAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_data import ( + SecurityMonitoringSignalsBulkAssigneeUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_request import ( + SecurityMonitoringSignalsBulkAssigneeUpdateRequest, +) + +body = SecurityMonitoringSignalsBulkAssigneeUpdateRequest( + data=[ + SecurityMonitoringSignalsBulkAssigneeUpdateData( + attributes=SecurityMonitoringSignalsBulkAssigneeUpdateAttributes( + assignee="773b045d-ccf8-4808-bd3b-955ef6a8c940", + ), + id="AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", + type=SecurityMonitoringSignalType.SIGNAL, + ), + ], +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.bulk_edit_security_monitoring_signals_assignee(body=body) + + print(response) diff --git a/examples/v2/security-monitoring/BulkEditSecurityMonitoringSignalsState.py b/examples/v2/security-monitoring/BulkEditSecurityMonitoringSignalsState.py new file mode 100644 index 0000000000..637edc6401 --- /dev/null +++ b/examples/v2/security-monitoring/BulkEditSecurityMonitoringSignalsState.py @@ -0,0 +1,38 @@ +""" +Bulk update triage state of security signals returns "OK" 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.security_monitoring_signal_archive_reason import SecurityMonitoringSignalArchiveReason +from datadog_api_client.v2.model.security_monitoring_signal_state import SecurityMonitoringSignalState +from datadog_api_client.v2.model.security_monitoring_signal_state_update_attributes import ( + SecurityMonitoringSignalStateUpdateAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signal_type import SecurityMonitoringSignalType +from datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_data import ( + SecurityMonitoringSignalsBulkStateUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_request import ( + SecurityMonitoringSignalsBulkStateUpdateRequest, +) + +body = SecurityMonitoringSignalsBulkStateUpdateRequest( + data=[ + SecurityMonitoringSignalsBulkStateUpdateData( + attributes=SecurityMonitoringSignalStateUpdateAttributes( + archive_reason=SecurityMonitoringSignalArchiveReason.NONE, + state=SecurityMonitoringSignalState.OPEN, + ), + id="AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", + type=SecurityMonitoringSignalType.SIGNAL, + ), + ], +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.bulk_edit_security_monitoring_signals_state(body=body) + + print(response) diff --git a/src/datadog_api_client/v1/model/hourly_usage_attribution_usage_type.py b/src/datadog_api_client/v1/model/hourly_usage_attribution_usage_type.py index 16a7fe9d18..c5ffd43c02 100644 --- a/src/datadog_api_client/v1/model/hourly_usage_attribution_usage_type.py +++ b/src/datadog_api_client/v1/model/hourly_usage_attribution_usage_type.py @@ -17,7 +17,7 @@ class HourlyUsageAttributionUsageType(ModelSimple): Supported products for hourly usage attribution requests. Usage types are in the format `_usage`. To obtain the complete list of valid usage types, make a request to the [Get usage attribution types API](https://docs.datadoghq.com/api/latest/usage-metering/#get-usage-attribution-types). - :param value: Must be one of ["api_usage", "apm_fargate_usage", "apm_host_usage", "apm_usm_usage", "appsec_fargate_usage", "appsec_usage", "asm_serverless_traced_invocations_usage", "asm_serverless_traced_invocations_percentage", "bits_ai_investigations_usage", "browser_usage", "ci_code_coverage_committers_percentage", "ci_code_coverage_committers_usage", "ci_pipeline_indexed_spans_usage", "ci_test_indexed_spans_usage", "ci_visibility_itr_usage", "cloud_siem_usage", "code_security_host_usage", "container_excl_agent_usage", "container_usage", "cspm_containers_usage", "cspm_hosts_usage", "custom_event_usage", "custom_ingested_timeseries_usage", "custom_timeseries_usage", "cws_containers_usage", "cws_fargate_task_usage", "cws_hosts_usage", "data_jobs_monitoring_usage", "data_stream_monitoring_usage", "dbm_hosts_usage", "dbm_queries_usage", "error_tracking_usage", "error_tracking_percentage", "estimated_indexed_spans_usage", "estimated_ingested_spans_usage", "fargate_usage", "flex_logs_starter", "flex_stored_logs", "functions_usage", "incident_management_monthly_active_users_usage", "indexed_spans_usage", "infra_host_usage", "ingested_logs_bytes_usage", "ingested_spans_bytes_usage", "invocations_usage", "lambda_traced_invocations_usage", "llm_observability_usage", "llm_spans_usage", "logs_indexed_15day_usage", "logs_indexed_180day_usage", "logs_indexed_1day_usage", "logs_indexed_30day_usage", "logs_indexed_360day_usage", "logs_indexed_3day_usage", "logs_indexed_45day_usage", "logs_indexed_60day_usage", "logs_indexed_7day_usage", "logs_indexed_90day_usage", "logs_indexed_custom_retention_usage", "mobile_app_testing_usage", "ndm_netflow_usage", "npm_host_usage", "network_device_wireless_usage", "obs_pipeline_bytes_usage", "obs_pipelines_vcpu_usage", "online_archive_usage", "product_analytics_session_usage", "profiled_container_usage", "profiled_fargate_usage", "profiled_host_usage", "published_app", "rum_browser_mobile_sessions_usage", "rum_ingested_usage", "rum_investigate_usage", "rum_replay_sessions_usage", "rum_session_replay_add_on_usage", "sca_fargate_usage", "sds_scanned_bytes_usage", "serverless_apps_usage", "serverless_apps_apm_usage", "siem_analyzed_logs_add_on_usage", "siem_ingested_bytes_usage", "snmp_usage", "universal_service_monitoring_usage", "vuln_management_hosts_usage", "workflow_executions_usage"]. + :param value: Must be one of ["api_usage", "apm_fargate_usage", "apm_host_usage", "apm_usm_usage", "appsec_fargate_usage", "appsec_usage", "asm_serverless_traced_invocations_usage", "asm_serverless_traced_invocations_percentage", "bits_ai_investigations_usage", "browser_usage", "ci_code_coverage_committers_percentage", "ci_code_coverage_committers_usage", "ci_pipeline_indexed_spans_usage", "ci_test_indexed_spans_usage", "ci_visibility_itr_usage", "cloud_siem_usage", "code_security_host_usage", "container_excl_agent_usage", "container_usage", "cspm_containers_usage", "cspm_hosts_usage", "custom_event_usage", "custom_ingested_timeseries_usage", "custom_timeseries_usage", "cws_containers_usage", "cws_fargate_task_usage", "cws_hosts_usage", "data_jobs_monitoring_usage", "data_stream_monitoring_usage", "dbm_hosts_usage", "dbm_queries_usage", "error_tracking_usage", "error_tracking_percentage", "estimated_indexed_spans_usage", "estimated_ingested_spans_usage", "fargate_usage", "flex_logs_starter", "flex_stored_logs", "functions_usage", "incident_management_monthly_active_users_usage", "indexed_spans_usage", "infra_host_usage", "ingested_logs_bytes_usage", "ingested_spans_bytes_usage", "invocations_usage", "lambda_traced_invocations_usage", "llm_observability_usage", "llm_spans_usage", "logs_indexed_15day_usage", "logs_indexed_180day_usage", "logs_indexed_1day_usage", "logs_indexed_30day_usage", "logs_indexed_360day_usage", "logs_indexed_3day_usage", "logs_indexed_45day_usage", "logs_indexed_60day_usage", "logs_indexed_7day_usage", "logs_indexed_90day_usage", "logs_indexed_custom_retention_usage", "mobile_app_testing_usage", "ndm_netflow_usage", "npm_host_usage", "network_device_wireless_usage", "obs_pipeline_bytes_usage", "obs_pipelines_vcpu_usage", "online_archive_usage", "product_analytics_session_usage", "profiled_container_usage", "profiled_fargate_usage", "profiled_host_usage", "published_app", "rum_browser_mobile_sessions_usage", "rum_ingested_usage", "rum_investigate_usage", "rum_replay_sessions_usage", "rum_session_replay_add_on_usage", "sca_fargate_usage", "sds_scanned_bytes_usage", "serverless_apps_usage", "siem_analyzed_logs_add_on_usage", "siem_ingested_bytes_usage", "snmp_usage", "universal_service_monitoring_usage", "vuln_management_hosts_usage", "workflow_executions_usage"]. :type value: str """ @@ -101,7 +101,6 @@ class HourlyUsageAttributionUsageType(ModelSimple): "sca_fargate_usage", "sds_scanned_bytes_usage", "serverless_apps_usage", - "serverless_apps_apm_usage", "siem_analyzed_logs_add_on_usage", "siem_ingested_bytes_usage", "snmp_usage", @@ -188,7 +187,6 @@ class HourlyUsageAttributionUsageType(ModelSimple): SCA_FARGATE_USAGE: ClassVar["HourlyUsageAttributionUsageType"] SDS_SCANNED_BYTES_USAGE: ClassVar["HourlyUsageAttributionUsageType"] SERVERLESS_APPS_USAGE: ClassVar["HourlyUsageAttributionUsageType"] - SERVERLESS_APPS_APM_USAGE: ClassVar["HourlyUsageAttributionUsageType"] SIEM_ANALYZED_LOGS_ADD_ON_USAGE: ClassVar["HourlyUsageAttributionUsageType"] SIEM_INGESTED_BYTES_USAGE: ClassVar["HourlyUsageAttributionUsageType"] SNMP_USAGE: ClassVar["HourlyUsageAttributionUsageType"] @@ -322,7 +320,6 @@ def openapi_types(_): HourlyUsageAttributionUsageType.SCA_FARGATE_USAGE = HourlyUsageAttributionUsageType("sca_fargate_usage") HourlyUsageAttributionUsageType.SDS_SCANNED_BYTES_USAGE = HourlyUsageAttributionUsageType("sds_scanned_bytes_usage") HourlyUsageAttributionUsageType.SERVERLESS_APPS_USAGE = HourlyUsageAttributionUsageType("serverless_apps_usage") -HourlyUsageAttributionUsageType.SERVERLESS_APPS_APM_USAGE = HourlyUsageAttributionUsageType("serverless_apps_apm_usage") HourlyUsageAttributionUsageType.SIEM_ANALYZED_LOGS_ADD_ON_USAGE = HourlyUsageAttributionUsageType( "siem_analyzed_logs_add_on_usage" ) diff --git a/src/datadog_api_client/v1/model/monthly_usage_attribution_supported_metrics.py b/src/datadog_api_client/v1/model/monthly_usage_attribution_supported_metrics.py index adbc5712c0..413b578e8c 100644 --- a/src/datadog_api_client/v1/model/monthly_usage_attribution_supported_metrics.py +++ b/src/datadog_api_client/v1/model/monthly_usage_attribution_supported_metrics.py @@ -17,7 +17,7 @@ class MonthlyUsageAttributionSupportedMetrics(ModelSimple): Supported metrics for monthly usage attribution requests. Usage types are in the format `_usage`. To obtain the complete list of valid usage types, make a request to the [Get usage attribution types API](https://docs.datadoghq.com/api/latest/usage-metering/#get-usage-attribution-types). - :param value: Must be one of ["api_usage", "api_percentage", "apm_fargate_usage", "apm_fargate_percentage", "appsec_fargate_usage", "appsec_fargate_percentage", "apm_host_usage", "apm_host_percentage", "apm_usm_usage", "apm_usm_percentage", "appsec_usage", "appsec_percentage", "asm_serverless_traced_invocations_usage", "asm_serverless_traced_invocations_percentage", "bits_ai_investigations_usage", "bits_ai_investigations_percentage", "browser_usage", "browser_percentage", "ci_visibility_itr_usage", "ci_visibility_itr_percentage", "cloud_siem_usage", "cloud_siem_percentage", "code_security_host_usage", "code_security_host_percentage", "container_excl_agent_usage", "container_excl_agent_percentage", "container_usage", "container_percentage", "cspm_containers_percentage", "cspm_containers_usage", "cspm_hosts_percentage", "cspm_hosts_usage", "custom_timeseries_usage", "custom_timeseries_percentage", "custom_ingested_timeseries_usage", "custom_ingested_timeseries_percentage", "cws_containers_percentage", "cws_containers_usage", "cws_fargate_task_percentage", "cws_fargate_task_usage", "cws_hosts_percentage", "cws_hosts_usage", "data_jobs_monitoring_usage", "data_jobs_monitoring_percentage", "data_stream_monitoring_usage", "data_stream_monitoring_percentage", "dbm_hosts_percentage", "dbm_hosts_usage", "dbm_queries_percentage", "dbm_queries_usage", "error_tracking_usage", "error_tracking_percentage", "estimated_indexed_spans_usage", "estimated_indexed_spans_percentage", "estimated_ingested_spans_usage", "estimated_ingested_spans_percentage", "fargate_usage", "fargate_percentage", "flex_logs_starter_usage", "flex_logs_starter_percentage", "flex_stored_logs_usage", "flex_stored_logs_percentage", "functions_usage", "functions_percentage", "incident_management_monthly_active_users_usage", "incident_management_monthly_active_users_percentage", "infra_host_usage", "infra_host_percentage", "invocations_usage", "invocations_percentage", "lambda_traced_invocations_usage", "lambda_traced_invocations_percentage", "llm_observability_usage", "llm_observability_percentage", "llm_spans_usage", "llm_spans_percentage", "mobile_app_testing_percentage", "mobile_app_testing_usage", "ndm_netflow_usage", "ndm_netflow_percentage", "network_device_wireless_usage", "network_device_wireless_percentage", "npm_host_usage", "npm_host_percentage", "obs_pipeline_bytes_usage", "obs_pipeline_bytes_percentage", "obs_pipelines_vcpu_usage", "obs_pipelines_vcpu_percentage", "online_archive_usage", "online_archive_percentage", "product_analytics_session_usage", "product_analytics_session_percentage", "profiled_container_usage", "profiled_container_percentage", "profiled_fargate_usage", "profiled_fargate_percentage", "profiled_host_usage", "profiled_host_percentage", "published_app_usage", "published_app_percentage", "serverless_apps_usage", "serverless_apps_percentage", "serverless_apps_apm_usage", "serverless_apps_apm_percentage", "snmp_usage", "snmp_percentage", "universal_service_monitoring_usage", "universal_service_monitoring_percentage", "vuln_management_hosts_usage", "vuln_management_hosts_percentage", "sds_scanned_bytes_usage", "sds_scanned_bytes_percentage", "ci_test_indexed_spans_usage", "ci_test_indexed_spans_percentage", "ingested_logs_bytes_usage", "ingested_logs_bytes_percentage", "ci_pipeline_indexed_spans_usage", "ci_pipeline_indexed_spans_percentage", "indexed_spans_usage", "indexed_spans_percentage", "custom_event_usage", "custom_event_percentage", "logs_indexed_custom_retention_usage", "logs_indexed_custom_retention_percentage", "logs_indexed_360day_usage", "logs_indexed_360day_percentage", "logs_indexed_180day_usage", "logs_indexed_180day_percentage", "logs_indexed_90day_usage", "logs_indexed_90day_percentage", "logs_indexed_60day_usage", "logs_indexed_60day_percentage", "logs_indexed_45day_usage", "logs_indexed_45day_percentage", "logs_indexed_30day_usage", "logs_indexed_30day_percentage", "logs_indexed_15day_usage", "logs_indexed_15day_percentage", "logs_indexed_7day_usage", "logs_indexed_7day_percentage", "logs_indexed_3day_usage", "logs_indexed_3day_percentage", "logs_indexed_1day_usage", "logs_indexed_1day_percentage", "rum_ingested_usage", "rum_ingested_percentage", "rum_investigate_usage", "rum_investigate_percentage", "rum_replay_sessions_usage", "rum_replay_sessions_percentage", "rum_session_replay_add_on_usage", "rum_session_replay_add_on_percentage", "rum_browser_mobile_sessions_usage", "rum_browser_mobile_sessions_percentage", "ingested_spans_bytes_usage", "ingested_spans_bytes_percentage", "siem_analyzed_logs_add_on_usage", "siem_analyzed_logs_add_on_percentage", "siem_ingested_bytes_usage", "siem_ingested_bytes_percentage", "workflow_executions_usage", "workflow_executions_percentage", "sca_fargate_usage", "sca_fargate_percentage", "*"]. + :param value: Must be one of ["api_usage", "api_percentage", "apm_fargate_usage", "apm_fargate_percentage", "appsec_fargate_usage", "appsec_fargate_percentage", "apm_host_usage", "apm_host_percentage", "apm_usm_usage", "apm_usm_percentage", "appsec_usage", "appsec_percentage", "asm_serverless_traced_invocations_usage", "asm_serverless_traced_invocations_percentage", "bits_ai_investigations_usage", "bits_ai_investigations_percentage", "browser_usage", "browser_percentage", "ci_visibility_itr_usage", "ci_visibility_itr_percentage", "cloud_siem_usage", "cloud_siem_percentage", "code_security_host_usage", "code_security_host_percentage", "container_excl_agent_usage", "container_excl_agent_percentage", "container_usage", "container_percentage", "cspm_containers_percentage", "cspm_containers_usage", "cspm_hosts_percentage", "cspm_hosts_usage", "custom_timeseries_usage", "custom_timeseries_percentage", "custom_ingested_timeseries_usage", "custom_ingested_timeseries_percentage", "cws_containers_percentage", "cws_containers_usage", "cws_fargate_task_percentage", "cws_fargate_task_usage", "cws_hosts_percentage", "cws_hosts_usage", "data_jobs_monitoring_usage", "data_jobs_monitoring_percentage", "data_stream_monitoring_usage", "data_stream_monitoring_percentage", "dbm_hosts_percentage", "dbm_hosts_usage", "dbm_queries_percentage", "dbm_queries_usage", "error_tracking_usage", "error_tracking_percentage", "estimated_indexed_spans_usage", "estimated_indexed_spans_percentage", "estimated_ingested_spans_usage", "estimated_ingested_spans_percentage", "fargate_usage", "fargate_percentage", "flex_logs_starter_usage", "flex_logs_starter_percentage", "flex_stored_logs_usage", "flex_stored_logs_percentage", "functions_usage", "functions_percentage", "incident_management_monthly_active_users_usage", "incident_management_monthly_active_users_percentage", "infra_host_usage", "infra_host_percentage", "invocations_usage", "invocations_percentage", "lambda_traced_invocations_usage", "lambda_traced_invocations_percentage", "llm_observability_usage", "llm_observability_percentage", "llm_spans_usage", "llm_spans_percentage", "mobile_app_testing_percentage", "mobile_app_testing_usage", "ndm_netflow_usage", "ndm_netflow_percentage", "network_device_wireless_usage", "network_device_wireless_percentage", "npm_host_usage", "npm_host_percentage", "obs_pipeline_bytes_usage", "obs_pipeline_bytes_percentage", "obs_pipelines_vcpu_usage", "obs_pipelines_vcpu_percentage", "online_archive_usage", "online_archive_percentage", "product_analytics_session_usage", "product_analytics_session_percentage", "profiled_container_usage", "profiled_container_percentage", "profiled_fargate_usage", "profiled_fargate_percentage", "profiled_host_usage", "profiled_host_percentage", "published_app_usage", "published_app_percentage", "serverless_apps_usage", "serverless_apps_percentage", "snmp_usage", "snmp_percentage", "universal_service_monitoring_usage", "universal_service_monitoring_percentage", "vuln_management_hosts_usage", "vuln_management_hosts_percentage", "sds_scanned_bytes_usage", "sds_scanned_bytes_percentage", "ci_test_indexed_spans_usage", "ci_test_indexed_spans_percentage", "ingested_logs_bytes_usage", "ingested_logs_bytes_percentage", "ci_pipeline_indexed_spans_usage", "ci_pipeline_indexed_spans_percentage", "indexed_spans_usage", "indexed_spans_percentage", "custom_event_usage", "custom_event_percentage", "logs_indexed_custom_retention_usage", "logs_indexed_custom_retention_percentage", "logs_indexed_360day_usage", "logs_indexed_360day_percentage", "logs_indexed_180day_usage", "logs_indexed_180day_percentage", "logs_indexed_90day_usage", "logs_indexed_90day_percentage", "logs_indexed_60day_usage", "logs_indexed_60day_percentage", "logs_indexed_45day_usage", "logs_indexed_45day_percentage", "logs_indexed_30day_usage", "logs_indexed_30day_percentage", "logs_indexed_15day_usage", "logs_indexed_15day_percentage", "logs_indexed_7day_usage", "logs_indexed_7day_percentage", "logs_indexed_3day_usage", "logs_indexed_3day_percentage", "logs_indexed_1day_usage", "logs_indexed_1day_percentage", "rum_ingested_usage", "rum_ingested_percentage", "rum_investigate_usage", "rum_investigate_percentage", "rum_replay_sessions_usage", "rum_replay_sessions_percentage", "rum_session_replay_add_on_usage", "rum_session_replay_add_on_percentage", "rum_browser_mobile_sessions_usage", "rum_browser_mobile_sessions_percentage", "ingested_spans_bytes_usage", "ingested_spans_bytes_percentage", "siem_analyzed_logs_add_on_usage", "siem_analyzed_logs_add_on_percentage", "siem_ingested_bytes_usage", "siem_ingested_bytes_percentage", "workflow_executions_usage", "workflow_executions_percentage", "sca_fargate_usage", "sca_fargate_percentage", "*"]. :type value: str """ @@ -124,8 +124,6 @@ class MonthlyUsageAttributionSupportedMetrics(ModelSimple): "published_app_percentage", "serverless_apps_usage", "serverless_apps_percentage", - "serverless_apps_apm_usage", - "serverless_apps_apm_percentage", "snmp_usage", "snmp_percentage", "universal_service_monitoring_usage", @@ -290,8 +288,6 @@ class MonthlyUsageAttributionSupportedMetrics(ModelSimple): PUBLISHED_APP_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"] SERVERLESS_APPS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"] SERVERLESS_APPS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"] - SERVERLESS_APPS_APM_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"] - SERVERLESS_APPS_APM_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"] SNMP_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"] SNMP_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"] UNIVERSAL_SERVICE_MONITORING_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"] @@ -625,12 +621,6 @@ def openapi_types(_): MonthlyUsageAttributionSupportedMetrics.SERVERLESS_APPS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics( "serverless_apps_percentage" ) -MonthlyUsageAttributionSupportedMetrics.SERVERLESS_APPS_APM_USAGE = MonthlyUsageAttributionSupportedMetrics( - "serverless_apps_apm_usage" -) -MonthlyUsageAttributionSupportedMetrics.SERVERLESS_APPS_APM_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics( - "serverless_apps_apm_percentage" -) MonthlyUsageAttributionSupportedMetrics.SNMP_USAGE = MonthlyUsageAttributionSupportedMetrics("snmp_usage") MonthlyUsageAttributionSupportedMetrics.SNMP_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("snmp_percentage") MonthlyUsageAttributionSupportedMetrics.UNIVERSAL_SERVICE_MONITORING_USAGE = MonthlyUsageAttributionSupportedMetrics( diff --git a/src/datadog_api_client/v1/model/monthly_usage_attribution_values.py b/src/datadog_api_client/v1/model/monthly_usage_attribution_values.py index 98333e903e..5bb6acdab8 100644 --- a/src/datadog_api_client/v1/model/monthly_usage_attribution_values.py +++ b/src/datadog_api_client/v1/model/monthly_usage_attribution_values.py @@ -165,8 +165,6 @@ def openapi_types(_): "sca_fargate_usage": (float,), "sds_scanned_bytes_percentage": (float,), "sds_scanned_bytes_usage": (float,), - "serverless_apps_apm_percentage": (float,), - "serverless_apps_apm_usage": (float,), "serverless_apps_percentage": (float,), "serverless_apps_usage": (float,), "siem_analyzed_logs_add_on_percentage": (float,), @@ -332,8 +330,6 @@ def openapi_types(_): "sca_fargate_usage": "sca_fargate_usage", "sds_scanned_bytes_percentage": "sds_scanned_bytes_percentage", "sds_scanned_bytes_usage": "sds_scanned_bytes_usage", - "serverless_apps_apm_percentage": "serverless_apps_apm_percentage", - "serverless_apps_apm_usage": "serverless_apps_apm_usage", "serverless_apps_percentage": "serverless_apps_percentage", "serverless_apps_usage": "serverless_apps_usage", "siem_analyzed_logs_add_on_percentage": "siem_analyzed_logs_add_on_percentage", @@ -500,8 +496,6 @@ def __init__( sca_fargate_usage: Union[float, UnsetType] = unset, sds_scanned_bytes_percentage: Union[float, UnsetType] = unset, sds_scanned_bytes_usage: Union[float, UnsetType] = unset, - serverless_apps_apm_percentage: Union[float, UnsetType] = unset, - serverless_apps_apm_usage: Union[float, UnsetType] = unset, serverless_apps_percentage: Union[float, UnsetType] = unset, serverless_apps_usage: Union[float, UnsetType] = unset, siem_analyzed_logs_add_on_percentage: Union[float, UnsetType] = unset, @@ -965,12 +959,6 @@ def __init__( :param sds_scanned_bytes_usage: The total Sensitive Data Scanner usage by tag(s). :type sds_scanned_bytes_usage: float, optional - :param serverless_apps_apm_percentage: The percentage of Serverless Apps APM usage by tag(s). - :type serverless_apps_apm_percentage: float, optional - - :param serverless_apps_apm_usage: The total Serverless Apps APM usage by tag(s). - :type serverless_apps_apm_usage: float, optional - :param serverless_apps_percentage: The percentage of Serverless Apps usage by tag(s). :type serverless_apps_percentage: float, optional @@ -1311,10 +1299,6 @@ def __init__( kwargs["sds_scanned_bytes_percentage"] = sds_scanned_bytes_percentage if sds_scanned_bytes_usage is not unset: kwargs["sds_scanned_bytes_usage"] = sds_scanned_bytes_usage - if serverless_apps_apm_percentage is not unset: - kwargs["serverless_apps_apm_percentage"] = serverless_apps_apm_percentage - if serverless_apps_apm_usage is not unset: - kwargs["serverless_apps_apm_usage"] = serverless_apps_apm_usage if serverless_apps_percentage is not unset: kwargs["serverless_apps_percentage"] = serverless_apps_percentage if serverless_apps_usage is not unset: 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 ee7efa4541..72e6a42416 100644 --- a/src/datadog_api_client/v2/api/security_monitoring_api.py +++ b/src/datadog_api_client/v2/api/security_monitoring_api.py @@ -125,6 +125,15 @@ from datadog_api_client.v2.model.security_monitoring_signals_list_response import SecurityMonitoringSignalsListResponse from datadog_api_client.v2.model.security_monitoring_signals_sort import SecurityMonitoringSignalsSort from datadog_api_client.v2.model.security_monitoring_signal import SecurityMonitoringSignal +from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_update_response import ( + SecurityMonitoringSignalsBulkTriageUpdateResponse, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_request import ( + SecurityMonitoringSignalsBulkAssigneeUpdateRequest, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_request import ( + SecurityMonitoringSignalsBulkStateUpdateRequest, +) from datadog_api_client.v2.model.security_monitoring_signal_list_request import SecurityMonitoringSignalListRequest from datadog_api_client.v2.model.security_monitoring_signal_response import SecurityMonitoringSignalResponse from datadog_api_client.v2.model.security_monitoring_signal_triage_update_response import ( @@ -228,6 +237,46 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._bulk_edit_security_monitoring_signals_assignee_endpoint = _Endpoint( + settings={ + "response_type": (SecurityMonitoringSignalsBulkTriageUpdateResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/security_monitoring/signals/bulk/assignee", + "operation_id": "bulk_edit_security_monitoring_signals_assignee", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (SecurityMonitoringSignalsBulkAssigneeUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._bulk_edit_security_monitoring_signals_state_endpoint = _Endpoint( + settings={ + "response_type": (SecurityMonitoringSignalsBulkTriageUpdateResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/security_monitoring/signals/bulk/state", + "operation_id": "bulk_edit_security_monitoring_signals_state", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (SecurityMonitoringSignalsBulkStateUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._bulk_export_security_monitoring_rules_endpoint = _Endpoint( settings={ "response_type": (file_type,), @@ -2731,6 +2780,42 @@ def attach_jira_issue( return self._attach_jira_issue_endpoint.call_with_http_info(**kwargs) + def bulk_edit_security_monitoring_signals_assignee( + self, + body: SecurityMonitoringSignalsBulkAssigneeUpdateRequest, + ) -> SecurityMonitoringSignalsBulkTriageUpdateResponse: + """Bulk update triage assignee of security signals. + + Change the triage assignees of multiple security signals at once. + The maximum number of signals that can be updated in a single request is 199. + + :param body: Attributes describing the signal assignee updates. + :type body: SecurityMonitoringSignalsBulkAssigneeUpdateRequest + :rtype: SecurityMonitoringSignalsBulkTriageUpdateResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._bulk_edit_security_monitoring_signals_assignee_endpoint.call_with_http_info(**kwargs) + + def bulk_edit_security_monitoring_signals_state( + self, + body: SecurityMonitoringSignalsBulkStateUpdateRequest, + ) -> SecurityMonitoringSignalsBulkTriageUpdateResponse: + """Bulk update triage state of security signals. + + Change the triage states of multiple security signals at once. + The maximum number of signals that can be updated in a single request is 199. + + :param body: Attributes describing the signal state updates. + :type body: SecurityMonitoringSignalsBulkStateUpdateRequest + :rtype: SecurityMonitoringSignalsBulkTriageUpdateResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._bulk_edit_security_monitoring_signals_state_endpoint.call_with_http_info(**kwargs) + def bulk_export_security_monitoring_rules( self, body: SecurityMonitoringRuleBulkExportPayload, diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_attributes.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_attributes.py new file mode 100644 index 0000000000..ac6887ac66 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_attributes.py @@ -0,0 +1,43 @@ +# 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 + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class SecurityMonitoringSignalsBulkAssigneeUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "assignee": (str,), + "version": (int,), + } + + attribute_map = { + "assignee": "assignee", + "version": "version", + } + + def __init__(self_, assignee: str, version: Union[int, UnsetType] = unset, **kwargs): + """ + Attributes describing the new assignees for a bulk signal update. + + :param assignee: UUID of the user to assign to the signal. Use an empty string to unassign. + :type assignee: str + + :param version: Version of the updated signal. If server side version is higher, update will be rejected. + :type version: int, optional + """ + if version is not unset: + kwargs["version"] = version + super().__init__(kwargs) + + self_.assignee = assignee diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_data.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_data.py new file mode 100644 index 0000000000..9eb357198d --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_data.py @@ -0,0 +1,67 @@ +# 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.security_monitoring_signals_bulk_assignee_update_attributes import ( + SecurityMonitoringSignalsBulkAssigneeUpdateAttributes, + ) + from datadog_api_client.v2.model.security_monitoring_signal_type import SecurityMonitoringSignalType + + +class SecurityMonitoringSignalsBulkAssigneeUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_attributes import ( + SecurityMonitoringSignalsBulkAssigneeUpdateAttributes, + ) + from datadog_api_client.v2.model.security_monitoring_signal_type import SecurityMonitoringSignalType + + return { + "attributes": (SecurityMonitoringSignalsBulkAssigneeUpdateAttributes,), + "id": (str,), + "type": (SecurityMonitoringSignalType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: SecurityMonitoringSignalsBulkAssigneeUpdateAttributes, + id: str, + type: Union[SecurityMonitoringSignalType, UnsetType] = unset, + **kwargs, + ): + """ + Data for updating the assignees for multiple security signals. + + :param attributes: Attributes describing the new assignees for a bulk signal update. + :type attributes: SecurityMonitoringSignalsBulkAssigneeUpdateAttributes + + :param id: The unique ID of the security signal. + :type id: str + + :param type: The type of event. + :type type: SecurityMonitoringSignalType, optional + """ + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_request.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_request.py new file mode 100644 index 0000000000..3b6e23cfcd --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_assignee_update_request.py @@ -0,0 +1,50 @@ +# 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.security_monitoring_signals_bulk_assignee_update_data import ( + SecurityMonitoringSignalsBulkAssigneeUpdateData, + ) + + +class SecurityMonitoringSignalsBulkAssigneeUpdateRequest(ModelNormal): + validations = { + "data": { + "max_items": 199, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_data import ( + SecurityMonitoringSignalsBulkAssigneeUpdateData, + ) + + return { + "data": ([SecurityMonitoringSignalsBulkAssigneeUpdateData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[SecurityMonitoringSignalsBulkAssigneeUpdateData], **kwargs): + """ + Request body for updating the assignee of multiple security signals. + + :param data: An array of signal assignee updates. + :type data: [SecurityMonitoringSignalsBulkAssigneeUpdateData] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_state_update_data.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_state_update_data.py new file mode 100644 index 0000000000..e29f390125 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_state_update_data.py @@ -0,0 +1,67 @@ +# 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.security_monitoring_signal_state_update_attributes import ( + SecurityMonitoringSignalStateUpdateAttributes, + ) + from datadog_api_client.v2.model.security_monitoring_signal_type import SecurityMonitoringSignalType + + +class SecurityMonitoringSignalsBulkStateUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_state_update_attributes import ( + SecurityMonitoringSignalStateUpdateAttributes, + ) + from datadog_api_client.v2.model.security_monitoring_signal_type import SecurityMonitoringSignalType + + return { + "attributes": (SecurityMonitoringSignalStateUpdateAttributes,), + "id": (str,), + "type": (SecurityMonitoringSignalType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: SecurityMonitoringSignalStateUpdateAttributes, + id: str, + type: Union[SecurityMonitoringSignalType, UnsetType] = unset, + **kwargs, + ): + """ + Data for updating the state for multiple security signals. + + :param attributes: Attributes describing the change of state of a security signal. + :type attributes: SecurityMonitoringSignalStateUpdateAttributes + + :param id: The unique ID of the security signal. + :type id: str + + :param type: The type of event. + :type type: SecurityMonitoringSignalType, optional + """ + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_state_update_request.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_state_update_request.py new file mode 100644 index 0000000000..feb438f3c1 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_state_update_request.py @@ -0,0 +1,50 @@ +# 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.security_monitoring_signals_bulk_state_update_data import ( + SecurityMonitoringSignalsBulkStateUpdateData, + ) + + +class SecurityMonitoringSignalsBulkStateUpdateRequest(ModelNormal): + validations = { + "data": { + "max_items": 199, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_data import ( + SecurityMonitoringSignalsBulkStateUpdateData, + ) + + return { + "data": ([SecurityMonitoringSignalsBulkStateUpdateData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[SecurityMonitoringSignalsBulkStateUpdateData], **kwargs): + """ + Request body for updating the triage states of multiple security signals. + + :param data: An array of signal state updates. + :type data: [SecurityMonitoringSignalsBulkStateUpdateData] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_event.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_event.py new file mode 100644 index 0000000000..b0b5b03fcb --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_event.py @@ -0,0 +1,50 @@ +# 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.security_monitoring_signals_bulk_triage_event_attributes import ( + SecurityMonitoringSignalsBulkTriageEventAttributes, + ) + + +class SecurityMonitoringSignalsBulkTriageEvent(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_event_attributes import ( + SecurityMonitoringSignalsBulkTriageEventAttributes, + ) + + return { + "event": (SecurityMonitoringSignalsBulkTriageEventAttributes,), + "id": (str,), + } + + attribute_map = { + "event": "event", + "id": "id", + } + + def __init__(self_, event: SecurityMonitoringSignalsBulkTriageEventAttributes, id: str, **kwargs): + """ + A single signal event entry in a bulk triage update response. + + :param event: Triage attributes of a security signal returned in a bulk update response. + :type event: SecurityMonitoringSignalsBulkTriageEventAttributes + + :param id: The unique ID of the security signal. + :type id: str + """ + super().__init__(kwargs) + + self_.event = event + self_.id = id diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_event_attributes.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_event_attributes.py new file mode 100644 index 0000000000..51a90554a8 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_event_attributes.py @@ -0,0 +1,127 @@ +# 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.security_monitoring_triage_user import SecurityMonitoringTriageUser + from datadog_api_client.v2.model.security_monitoring_signal_archive_reason import ( + SecurityMonitoringSignalArchiveReason, + ) + from datadog_api_client.v2.model.security_monitoring_signal_incident_ids import SecurityMonitoringSignalIncidentIds + from datadog_api_client.v2.model.security_monitoring_signal_state import SecurityMonitoringSignalState + + +class SecurityMonitoringSignalsBulkTriageEventAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_triage_user import SecurityMonitoringTriageUser + from datadog_api_client.v2.model.security_monitoring_signal_archive_reason import ( + SecurityMonitoringSignalArchiveReason, + ) + from datadog_api_client.v2.model.security_monitoring_signal_incident_ids import ( + SecurityMonitoringSignalIncidentIds, + ) + from datadog_api_client.v2.model.security_monitoring_signal_state import SecurityMonitoringSignalState + + return { + "archive_comment": (str,), + "archive_comment_timestamp": (int,), + "archive_comment_user": (SecurityMonitoringTriageUser,), + "archive_reason": (SecurityMonitoringSignalArchiveReason,), + "assignee": (SecurityMonitoringTriageUser,), + "id": (str,), + "incident_ids": (SecurityMonitoringSignalIncidentIds,), + "state": (SecurityMonitoringSignalState,), + "state_update_timestamp": (int,), + "state_update_user": (SecurityMonitoringTriageUser,), + } + + attribute_map = { + "archive_comment": "archive_comment", + "archive_comment_timestamp": "archive_comment_timestamp", + "archive_comment_user": "archive_comment_user", + "archive_reason": "archive_reason", + "assignee": "assignee", + "id": "id", + "incident_ids": "incident_ids", + "state": "state", + "state_update_timestamp": "state_update_timestamp", + "state_update_user": "state_update_user", + } + + def __init__( + self_, + assignee: SecurityMonitoringTriageUser, + id: str, + incident_ids: SecurityMonitoringSignalIncidentIds, + state: SecurityMonitoringSignalState, + archive_comment: Union[str, UnsetType] = unset, + archive_comment_timestamp: Union[int, UnsetType] = unset, + archive_comment_user: Union[SecurityMonitoringTriageUser, UnsetType] = unset, + archive_reason: Union[SecurityMonitoringSignalArchiveReason, UnsetType] = unset, + state_update_timestamp: Union[int, UnsetType] = unset, + state_update_user: Union[SecurityMonitoringTriageUser, UnsetType] = unset, + **kwargs, + ): + """ + Triage attributes of a security signal returned in a bulk update response. + + :param archive_comment: Optional comment to display on archived signals. + :type archive_comment: str, optional + + :param archive_comment_timestamp: Timestamp of the last edit to the archive comment. + :type archive_comment_timestamp: int, optional + + :param archive_comment_user: Object representing a given user entity. + :type archive_comment_user: SecurityMonitoringTriageUser, optional + + :param archive_reason: Reason a signal is archived. + :type archive_reason: SecurityMonitoringSignalArchiveReason, optional + + :param assignee: Object representing a given user entity. + :type assignee: SecurityMonitoringTriageUser + + :param id: The unique ID of the security signal. + :type id: str + + :param incident_ids: Array of incidents that are associated with this signal. + :type incident_ids: SecurityMonitoringSignalIncidentIds + + :param state: The new triage state of the signal. + :type state: SecurityMonitoringSignalState + + :param state_update_timestamp: Timestamp of the last state update. + :type state_update_timestamp: int, optional + + :param state_update_user: Object representing a given user entity. + :type state_update_user: SecurityMonitoringTriageUser, optional + """ + if archive_comment is not unset: + kwargs["archive_comment"] = archive_comment + if archive_comment_timestamp is not unset: + kwargs["archive_comment_timestamp"] = archive_comment_timestamp + if archive_comment_user is not unset: + kwargs["archive_comment_user"] = archive_comment_user + if archive_reason is not unset: + kwargs["archive_reason"] = archive_reason + if state_update_timestamp is not unset: + kwargs["state_update_timestamp"] = state_update_timestamp + if state_update_user is not unset: + kwargs["state_update_user"] = state_update_user + super().__init__(kwargs) + + self_.assignee = assignee + self_.id = id + self_.incident_ids = incident_ids + self_.state = state diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_update_response.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_update_response.py new file mode 100644 index 0000000000..c311666c47 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_update_response.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +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.security_monitoring_signals_bulk_triage_update_result import ( + SecurityMonitoringSignalsBulkTriageUpdateResult, + ) + + +class SecurityMonitoringSignalsBulkTriageUpdateResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_update_result import ( + SecurityMonitoringSignalsBulkTriageUpdateResult, + ) + + return { + "result": (SecurityMonitoringSignalsBulkTriageUpdateResult,), + "status": (str,), + "type": (str,), + } + + attribute_map = { + "result": "result", + "status": "status", + "type": "type", + } + + def __init__(self_, result: SecurityMonitoringSignalsBulkTriageUpdateResult, status: str, type: str, **kwargs): + """ + Response for a bulk triage update of security signals. + + :param result: The result payload of a bulk signal triage update. + :type result: SecurityMonitoringSignalsBulkTriageUpdateResult + + :param status: The status of the bulk operation. + :type status: str + + :param type: The type of the response. + :type type: str + """ + super().__init__(kwargs) + + self_.result = result + self_.status = status + self_.type = type diff --git a/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_update_result.py b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_update_result.py new file mode 100644 index 0000000000..b4074fb7d5 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signals_bulk_triage_update_result.py @@ -0,0 +1,50 @@ +# 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.security_monitoring_signals_bulk_triage_event import ( + SecurityMonitoringSignalsBulkTriageEvent, + ) + + +class SecurityMonitoringSignalsBulkTriageUpdateResult(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_event import ( + SecurityMonitoringSignalsBulkTriageEvent, + ) + + return { + "count": (int,), + "events": ([SecurityMonitoringSignalsBulkTriageEvent],), + } + + attribute_map = { + "count": "count", + "events": "events", + } + + def __init__(self_, count: int, events: List[SecurityMonitoringSignalsBulkTriageEvent], **kwargs): + """ + The result payload of a bulk signal triage update. + + :param count: The number of signals updated. + :type count: int + + :param events: The list of updated signals. + :type events: [SecurityMonitoringSignalsBulkTriageEvent] + """ + super().__init__(kwargs) + + self_.count = count + self_.events = events diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 9aff4b4381..43a789f565 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -5425,6 +5425,33 @@ SecurityMonitoringSignalTriageUpdateResponse, ) from datadog_api_client.v2.model.security_monitoring_signal_type import SecurityMonitoringSignalType +from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_attributes import ( + SecurityMonitoringSignalsBulkAssigneeUpdateAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_data import ( + SecurityMonitoringSignalsBulkAssigneeUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_request import ( + SecurityMonitoringSignalsBulkAssigneeUpdateRequest, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_data import ( + SecurityMonitoringSignalsBulkStateUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_request import ( + SecurityMonitoringSignalsBulkStateUpdateRequest, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_event import ( + SecurityMonitoringSignalsBulkTriageEvent, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_event_attributes import ( + SecurityMonitoringSignalsBulkTriageEventAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_update_response import ( + SecurityMonitoringSignalsBulkTriageUpdateResponse, +) +from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_update_result import ( + SecurityMonitoringSignalsBulkTriageUpdateResult, +) from datadog_api_client.v2.model.security_monitoring_signals_list_response import SecurityMonitoringSignalsListResponse from datadog_api_client.v2.model.security_monitoring_signals_list_response_links import ( SecurityMonitoringSignalsListResponseLinks, @@ -10522,6 +10549,15 @@ "SecurityMonitoringSignalTriageUpdateData", "SecurityMonitoringSignalTriageUpdateResponse", "SecurityMonitoringSignalType", + "SecurityMonitoringSignalsBulkAssigneeUpdateAttributes", + "SecurityMonitoringSignalsBulkAssigneeUpdateData", + "SecurityMonitoringSignalsBulkAssigneeUpdateRequest", + "SecurityMonitoringSignalsBulkStateUpdateData", + "SecurityMonitoringSignalsBulkStateUpdateRequest", + "SecurityMonitoringSignalsBulkTriageEvent", + "SecurityMonitoringSignalsBulkTriageEventAttributes", + "SecurityMonitoringSignalsBulkTriageUpdateResponse", + "SecurityMonitoringSignalsBulkTriageUpdateResult", "SecurityMonitoringSignalsListResponse", "SecurityMonitoringSignalsListResponseLinks", "SecurityMonitoringSignalsListResponseMeta", diff --git a/tests/v2/features/security_monitoring.feature b/tests/v2/features/security_monitoring.feature index 5695a7ea4a..791d52de64 100644 --- a/tests/v2/features/security_monitoring.feature +++ b/tests/v2/features/security_monitoring.feature @@ -121,6 +121,36 @@ Feature: Security Monitoring When the request is sent Then the response status is 200 OK + @skip @team:DataDog/k9-cloud-security-platform + Scenario: Bulk update triage assignee of security signals returns "Bad Request" response + Given operation "BulkEditSecurityMonitoringSignalsAssignee" enabled + And new "BulkEditSecurityMonitoringSignalsAssignee" request + And body with value {"data": [{"attributes": {}, "id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", "type": "signal"}]} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Bulk update triage assignee of security signals returns "OK" response + Given new "BulkEditSecurityMonitoringSignalsAssignee" request + And body with value {"data": [{"attributes": {"assignee": "773b045d-ccf8-4808-bd3b-955ef6a8c940"}, "id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", "type": "signal"}]} + When the request is sent + Then the response status is 200 OK + + @skip @team:DataDog/k9-cloud-security-platform + Scenario: Bulk update triage state of security signals returns "Bad Request" response + Given operation "BulkEditSecurityMonitoringSignalsState" enabled + And new "BulkEditSecurityMonitoringSignalsState" request + And body with value {"data": [{"attributes": {}, "id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", "type": "signal"}]} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Bulk update triage state of security signals returns "OK" response + Given new "BulkEditSecurityMonitoringSignalsState" request + And body with value {"data": [{"attributes": {"archive_reason": "none", "state": "open"}, "id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", "type": "signal"}]} + When the request is sent + Then the response status is 200 OK + @team:DataDog/k9-cloud-security-platform Scenario: Cancel a historical job returns "Bad Request" response Given operation "CancelThreatHuntingJob" enabled diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 29b9dc1ab2..f18461244e 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -5229,6 +5229,18 @@ "type": "safe" } }, + "BulkEditSecurityMonitoringSignalsAssignee": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, + "BulkEditSecurityMonitoringSignalsState": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, "SearchSecurityMonitoringSignals": { "tag": "Security Monitoring", "undo": {