diff --git a/.apigentools-info b/.apigentools-info index 328f72a3bf..db8858c6ea 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.2", - "regenerated": "2022-07-05 09:55:37.591663", - "spec_repo_commit": "2439bda0" + "regenerated": "2022-07-06 14:59:04.215846", + "spec_repo_commit": "45fef529" }, "v2": { "apigentools_version": "1.6.2", - "regenerated": "2022-07-05 09:55:37.605235", - "spec_repo_commit": "2439bda0" + "regenerated": "2022-07-06 14:59:04.227330", + "spec_repo_commit": "45fef529" } } } \ No newline at end of file diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 40dcb44ede..dc3950d3d8 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -3629,13 +3629,7 @@ components: - appsec_usage - browser_usage - container_usage - - cspm_containers_usage - - cspm_hosts_usage - custom_timeseries_usage - - cws_containers_usage - - cws_hosts_usage - - dbm_hosts_usage - - dbm_queries_usage - estimated_indexed_logs_usage - estimated_indexed_spans_usage - fargate_usage @@ -3654,13 +3648,7 @@ components: - APPSEC_USAGE - BROWSER_USAGE - CONTAINER_USAGE - - CSPM_CONTAINERS_USAGE - - CSPM_HOSTS_USAGE - CUSTOM_TIMESERIES_USAGE - - CWS_CONTAINERS_USAGE - - CWS_HOSTS_USAGE - - DBM_HOSTS_USAGE - - DBM_QUERIES_USAGE - ESTIMATED_INDEXED_LOGS_USAGE - ESTIMATED_INDEXED_SPANS_USAGE - FARGATE_USAGE @@ -6851,20 +6839,8 @@ components: - browser_percentage - container_usage - container_percentage - - cspm_containers_percentage - - cspm_containers_usage - - cspm_hosts_percentage - - cspm_hosts_usage - custom_timeseries_usage - custom_timeseries_percentage - - cws_containers_percentage - - cws_containers_usage - - cws_hosts_percentage - - cws_hosts_usage - - dbm_hosts_percentage - - dbm_hosts_usage - - dbm_queries_percentage - - dbm_queries_usage - estimated_indexed_logs_usage - estimated_indexed_logs_percentage - estimated_indexed_spans_usage @@ -6900,20 +6876,8 @@ components: - BROWSER_PERCENTAGE - CONTAINER_USAGE - CONTAINER_PERCENTAGE - - CSPM_CONTAINERS_PERCENTAGE - - CSPM_CONTAINERS_USAGE - - CSPM_HOSTS_PERCENTAGE - - CSPM_HOSTS_USAGE - CUSTOM_TIMESERIES_USAGE - CUSTOM_TIMESERIES_PERCENTAGE - - CWS_CONTAINERS_PERCENTAGE - - CWS_CONTAINERS_USAGE - - CWS_HOSTS_PERCENTAGE - - CWS_HOSTS_USAGE - - DBM_HOSTS_PERCENTAGE - - DBM_HOSTS_USAGE - - DBM_QUERIES_PERCENTAGE - - DBM_QUERIES_USAGE - ESTIMATED_INDEXED_LOGS_USAGE - ESTIMATED_INDEXED_LOGS_PERCENTAGE - ESTIMATED_INDEXED_SPANS_USAGE diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 7ca0fc6fa1..137f7a927e 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -290,6 +290,13 @@ components: schema: example: 00000000-0000-1234-0000-000000000000 type: string + SignalID: + description: The ID of the signal. + in: path + name: signal_id + required: true + schema: + type: string UserID: description: The ID of the user. in: path @@ -6806,6 +6813,52 @@ components: type: $ref: '#/components/schemas/SecurityMonitoringSignalType' type: object + SecurityMonitoringSignalArchiveComment: + description: Optional comment that will be displayed on archived signals. + maxLength: 2000 + type: string + SecurityMonitoringSignalArchiveReason: + description: Reason why a signal has been archived. + enum: + - none + - false_positive + - testing_or_maintenance + - other + type: string + x-enum-varnames: + - NONE + - FALSE_POSITIVE + - TESTING_OR_MAINTENANCE + - OTHER + SecurityMonitoringSignalAssigneeUpdateAttributes: + additionalProperties: false + description: Attributes describing an assignee update operation over a security + signal. + properties: + assignee: + $ref: '#/components/schemas/SecurityMonitoringTriageUser' + version: + $ref: '#/components/schemas/SecurityMonitoringSignalVersion' + required: + - assignee + type: object + SecurityMonitoringSignalAssigneeUpdateData: + description: Data containing the patch for changing the assignee of a signal. + properties: + attributes: + $ref: '#/components/schemas/SecurityMonitoringSignalAssigneeUpdateAttributes' + required: + - attributes + type: object + SecurityMonitoringSignalAssigneeUpdateRequest: + description: Request body for changing the assignee of a given security monitoring + signal. + properties: + data: + $ref: '#/components/schemas/SecurityMonitoringSignalAssigneeUpdateData' + required: + - data + type: object SecurityMonitoringSignalAttributes: description: 'The object containing all signal attributes and their @@ -6843,6 +6896,45 @@ components: format: date-time type: string type: object + SecurityMonitoringSignalIncidentIds: + description: Array of incidents that are associated with this signal. + items: + description: Public ID attribute of the incident to be associated with the + signal. + example: 2066 + format: int64 + type: integer + type: array + SecurityMonitoringSignalIncidentsUpdateAttributes: + additionalProperties: false + description: Attributes describing a triage state update operation over a security + signal. + properties: + incident_ids: + $ref: '#/components/schemas/SecurityMonitoringSignalIncidentIds' + version: + $ref: '#/components/schemas/SecurityMonitoringSignalVersion' + required: + - incident_ids + type: object + SecurityMonitoringSignalIncidentsUpdateData: + description: Data containing the patch for changing the related incidents of + a signal. + properties: + attributes: + $ref: '#/components/schemas/SecurityMonitoringSignalIncidentsUpdateAttributes' + required: + - attributes + type: object + SecurityMonitoringSignalIncidentsUpdateRequest: + description: Request body for changing the related incidents of a given security + monitoring signal. + properties: + data: + $ref: '#/components/schemas/SecurityMonitoringSignalIncidentsUpdateData' + required: + - data + type: object SecurityMonitoringSignalListRequest: description: The request for a security signal list. properties: @@ -6887,6 +6979,99 @@ components: maximum: 1000 type: integer type: object + SecurityMonitoringSignalState: + description: The new triage state of the signal. + enum: + - open + - archived + - under_review + type: string + x-enum-varnames: + - OPEN + - ARCHIVED + - UNDER_REVIEW + SecurityMonitoringSignalStateUpdateAttributes: + additionalProperties: false + description: Attributes describing a triage state update operation over a security + signal. + properties: + archive_comment: + $ref: '#/components/schemas/SecurityMonitoringSignalArchiveComment' + archive_reason: + $ref: '#/components/schemas/SecurityMonitoringSignalArchiveReason' + state: + $ref: '#/components/schemas/SecurityMonitoringSignalState' + version: + $ref: '#/components/schemas/SecurityMonitoringSignalVersion' + required: + - state + type: object + SecurityMonitoringSignalStateUpdateData: + description: Data containing the patch for changing the state of a signal. + properties: + attributes: + $ref: '#/components/schemas/SecurityMonitoringSignalStateUpdateAttributes' + required: + - attributes + type: object + SecurityMonitoringSignalStateUpdateRequest: + description: Request body for changing the state of a given security monitoring + signal. + properties: + data: + $ref: '#/components/schemas/SecurityMonitoringSignalStateUpdateData' + required: + - data + type: object + SecurityMonitoringSignalTriageAttributes: + additionalProperties: false + description: Attributes describing a triage state update operation over a security + signal. + properties: + archive_comment: + $ref: '#/components/schemas/SecurityMonitoringSignalArchiveComment' + archive_comment_timestamp: + description: Timestamp at which the last edit to the comment has been made. + format: int64 + minimum: 0 + type: integer + archive_comment_user: + $ref: '#/components/schemas/SecurityMonitoringTriageUser' + archive_reason: + $ref: '#/components/schemas/SecurityMonitoringSignalArchiveReason' + assignee: + $ref: '#/components/schemas/SecurityMonitoringTriageUser' + incident_ids: + $ref: '#/components/schemas/SecurityMonitoringSignalIncidentIds' + state: + $ref: '#/components/schemas/SecurityMonitoringSignalState' + state_update_timestamp: + description: Timestamp at which the last update to the signal state has + been made. + format: int64 + minimum: 0 + type: integer + state_update_user: + $ref: '#/components/schemas/SecurityMonitoringTriageUser' + required: + - state + - incident_ids + type: object + SecurityMonitoringSignalTriageUpdateData: + description: Data containing the updated triage attributes of the signal. + properties: + attributes: + $ref: '#/components/schemas/SecurityMonitoringSignalTriageAttributes' + type: object + SecurityMonitoringSignalTriageUpdateResponse: + description: The response returned after all triage operations, containing the + updated signal triage data. + properties: + data: + $ref: '#/components/schemas/SecurityMonitoringSignalTriageUpdateData' + required: + - data + type: object SecurityMonitoringSignalType: default: signal description: The type of event. @@ -6896,6 +7081,11 @@ components: type: string x-enum-varnames: - SIGNAL + SecurityMonitoringSignalVersion: + description: Version of the updated signal. If server side version is higher, + update will be rejected. + format: int64 + type: integer SecurityMonitoringSignalsListResponse: description: 'The response object with all security signals matching the request @@ -6948,6 +7138,27 @@ components: x-enum-varnames: - TIMESTAMP_ASCENDING - TIMESTAMP_DESCENDING + SecurityMonitoringTriageUser: + description: Object representing a given user entity. + properties: + handle: + description: The handle that has been set for this user account. + type: string + id: + description: Numerical ID assigned by Datadog to this user account. + format: int64 + minimum: 1 + type: integer + name: + description: The name that has been set for this user account. + type: string + uuid: + description: UUID assigned by Datadog to this user account. + example: 773b045d-ccf8-4808-bd3b-955ef6a8c940 + type: string + required: + - uuid + type: object ServiceAccountCreateAttributes: description: Attributes of the created user. properties: @@ -12085,6 +12296,159 @@ paths: resultsPath: data x-undo: type: safe + /api/v2/security_monitoring/signals/{signal_id}/assignee: + patch: + description: Modify the triage assignee of a security signal. + operationId: EditSecurityMonitoringSignalAssignee + parameters: + - $ref: '#/components/parameters/SignalID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringSignalAssigneeUpdateRequest' + description: Attributes describing the signal update. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringSignalTriageUpdateResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not Found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_signals_write + summary: Modify the triage assignee of a security signal + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-undo: + type: idempotent + /api/v2/security_monitoring/signals/{signal_id}/incidents: + patch: + description: Change the related incidents for a security signal. + operationId: EditSecurityMonitoringSignalIncidents + parameters: + - $ref: '#/components/parameters/SignalID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringSignalIncidentsUpdateRequest' + description: Attributes describing the signal update. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringSignalTriageUpdateResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not Found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_signals_write + summary: Change the related incidents of a security signal + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-undo: + type: idempotent + /api/v2/security_monitoring/signals/{signal_id}/state: + patch: + description: Change the triage state of a security signal. + operationId: EditSecurityMonitoringSignalState + parameters: + - $ref: '#/components/parameters/SignalID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringSignalStateUpdateRequest' + description: Attributes describing the signal update. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringSignalTriageUpdateResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not Found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_signals_write + summary: Change the triage state of a security signal + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-undo: + type: idempotent /api/v2/series: post: description: "The metrics end-point allows you to post time-series data that diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 0dc5df8903..01953068fe 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -3025,6 +3025,34 @@ security\_monitoring\_signal :members: :show-inheritance: +security\_monitoring\_signal\_archive\_reason +--------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_archive_reason + :members: + :show-inheritance: + +security\_monitoring\_signal\_assignee\_update\_attributes +---------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_assignee_update_attributes + :members: + :show-inheritance: + +security\_monitoring\_signal\_assignee\_update\_data +---------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_assignee_update_data + :members: + :show-inheritance: + +security\_monitoring\_signal\_assignee\_update\_request +------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_assignee_update_request + :members: + :show-inheritance: + security\_monitoring\_signal\_attributes ---------------------------------------- @@ -3032,6 +3060,34 @@ security\_monitoring\_signal\_attributes :members: :show-inheritance: +security\_monitoring\_signal\_incident\_ids +------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_incident_ids + :members: + :show-inheritance: + +security\_monitoring\_signal\_incidents\_update\_attributes +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_incidents_update_attributes + :members: + :show-inheritance: + +security\_monitoring\_signal\_incidents\_update\_data +----------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_incidents_update_data + :members: + :show-inheritance: + +security\_monitoring\_signal\_incidents\_update\_request +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_incidents_update_request + :members: + :show-inheritance: + security\_monitoring\_signal\_list\_request ------------------------------------------- @@ -3053,6 +3109,55 @@ security\_monitoring\_signal\_list\_request\_page :members: :show-inheritance: +security\_monitoring\_signal\_state +----------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_state + :members: + :show-inheritance: + +security\_monitoring\_signal\_state\_update\_attributes +------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_state_update_attributes + :members: + :show-inheritance: + +security\_monitoring\_signal\_state\_update\_data +------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_state_update_data + :members: + :show-inheritance: + +security\_monitoring\_signal\_state\_update\_request +---------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_state_update_request + :members: + :show-inheritance: + +security\_monitoring\_signal\_triage\_attributes +------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_triage_attributes + :members: + :show-inheritance: + +security\_monitoring\_signal\_triage\_update\_data +-------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_triage_update_data + :members: + :show-inheritance: + +security\_monitoring\_signal\_triage\_update\_response +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.security_monitoring_signal_triage_update_response + :members: + :show-inheritance: + security\_monitoring\_signal\_type ---------------------------------- @@ -3095,6 +3200,13 @@ security\_monitoring\_signals\_sort :members: :show-inheritance: +security\_monitoring\_triage\_user +---------------------------------- + +.. automodule:: datadog_api_client.v2.model.security_monitoring_triage_user + :members: + :show-inheritance: + service\_account\_create\_attributes ------------------------------------ diff --git a/examples/v2/security-monitoring/EditSecurityMonitoringSignalAssignee.py b/examples/v2/security-monitoring/EditSecurityMonitoringSignalAssignee.py new file mode 100644 index 0000000000..1deab6f2bc --- /dev/null +++ b/examples/v2/security-monitoring/EditSecurityMonitoringSignalAssignee.py @@ -0,0 +1,35 @@ +""" +Modify the triage assignee of a security signal 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_assignee_update_attributes import ( + SecurityMonitoringSignalAssigneeUpdateAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_data import ( + SecurityMonitoringSignalAssigneeUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_request import ( + SecurityMonitoringSignalAssigneeUpdateRequest, +) +from datadog_api_client.v2.model.security_monitoring_triage_user import SecurityMonitoringTriageUser + +body = SecurityMonitoringSignalAssigneeUpdateRequest( + data=SecurityMonitoringSignalAssigneeUpdateData( + attributes=SecurityMonitoringSignalAssigneeUpdateAttributes( + assignee=SecurityMonitoringTriageUser( + uuid="", + ), + ), + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.edit_security_monitoring_signal_assignee( + signal_id="AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE", body=body + ) + + print(response) diff --git a/examples/v2/security-monitoring/EditSecurityMonitoringSignalIncidents.py b/examples/v2/security-monitoring/EditSecurityMonitoringSignalIncidents.py new file mode 100644 index 0000000000..dd0f365a2a --- /dev/null +++ b/examples/v2/security-monitoring/EditSecurityMonitoringSignalIncidents.py @@ -0,0 +1,37 @@ +""" +Change the related incidents of a security signal 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_incident_ids import SecurityMonitoringSignalIncidentIds +from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_attributes import ( + SecurityMonitoringSignalIncidentsUpdateAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_data import ( + SecurityMonitoringSignalIncidentsUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_request import ( + SecurityMonitoringSignalIncidentsUpdateRequest, +) + +body = SecurityMonitoringSignalIncidentsUpdateRequest( + data=SecurityMonitoringSignalIncidentsUpdateData( + attributes=SecurityMonitoringSignalIncidentsUpdateAttributes( + incident_ids=SecurityMonitoringSignalIncidentIds( + [ + 2066, + ] + ), + ), + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.edit_security_monitoring_signal_incidents( + signal_id="AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE", body=body + ) + + print(response) diff --git a/examples/v2/security-monitoring/EditSecurityMonitoringSignalState.py b/examples/v2/security-monitoring/EditSecurityMonitoringSignalState.py new file mode 100644 index 0000000000..1ef2cfe3ee --- /dev/null +++ b/examples/v2/security-monitoring/EditSecurityMonitoringSignalState.py @@ -0,0 +1,35 @@ +""" +Change the triage state of a security signal 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_state_update_data import ( + SecurityMonitoringSignalStateUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signal_state_update_request import ( + SecurityMonitoringSignalStateUpdateRequest, +) + +body = SecurityMonitoringSignalStateUpdateRequest( + data=SecurityMonitoringSignalStateUpdateData( + attributes=SecurityMonitoringSignalStateUpdateAttributes( + archive_reason=SecurityMonitoringSignalArchiveReason("none"), + state=SecurityMonitoringSignalState("open"), + ), + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.edit_security_monitoring_signal_state( + signal_id="AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE", 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 0787be0a7d..5bbadb6879 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 @@ -19,13 +19,7 @@ class HourlyUsageAttributionUsageType(ModelSimple): "APPSEC_USAGE": "appsec_usage", "BROWSER_USAGE": "browser_usage", "CONTAINER_USAGE": "container_usage", - "CSPM_CONTAINERS_USAGE": "cspm_containers_usage", - "CSPM_HOSTS_USAGE": "cspm_hosts_usage", "CUSTOM_TIMESERIES_USAGE": "custom_timeseries_usage", - "CWS_CONTAINERS_USAGE": "cws_containers_usage", - "CWS_HOSTS_USAGE": "cws_hosts_usage", - "DBM_HOSTS_USAGE": "dbm_hosts_usage", - "DBM_QUERIES_USAGE": "dbm_queries_usage", "ESTIMATED_INDEXED_LOGS_USAGE": "estimated_indexed_logs_usage", "ESTIMATED_INDEXED_SPANS_USAGE": "estimated_indexed_spans_usage", "FARGATE_USAGE": "fargate_usage", @@ -52,7 +46,7 @@ def __init__(self, *args, **kwargs): Note that value can be passed either in args or in kwargs, but not in both. - :param value: Must be one of ["api_usage", "apm_host_usage", "appsec_usage", "browser_usage", "container_usage", "cspm_containers_usage", "cspm_hosts_usage", "custom_timeseries_usage", "cws_containers_usage", "cws_hosts_usage", "dbm_hosts_usage", "dbm_queries_usage", "estimated_indexed_logs_usage", "estimated_indexed_spans_usage", "fargate_usage", "functions_usage", "indexed_logs_usage", "infra_host_usage", "invocations_usage", "npm_host_usage", "profiled_container_usage", "profiled_host_usage", "snmp_usage"]. + :param value: Must be one of ["api_usage", "apm_host_usage", "appsec_usage", "browser_usage", "container_usage", "custom_timeseries_usage", "estimated_indexed_logs_usage", "estimated_indexed_spans_usage", "fargate_usage", "functions_usage", "indexed_logs_usage", "infra_host_usage", "invocations_usage", "npm_host_usage", "profiled_container_usage", "profiled_host_usage", "snmp_usage"]. :type value: str """ super().__init__(kwargs) 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 4542cd61ab..d776c2f6aa 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 @@ -24,20 +24,8 @@ class MonthlyUsageAttributionSupportedMetrics(ModelSimple): "BROWSER_PERCENTAGE": "browser_percentage", "CONTAINER_USAGE": "container_usage", "CONTAINER_PERCENTAGE": "container_percentage", - "CSPM_CONTAINERS_PERCENTAGE": "cspm_containers_percentage", - "CSPM_CONTAINERS_USAGE": "cspm_containers_usage", - "CSPM_HOSTS_PERCENTAGE": "cspm_hosts_percentage", - "CSPM_HOSTS_USAGE": "cspm_hosts_usage", "CUSTOM_TIMESERIES_USAGE": "custom_timeseries_usage", "CUSTOM_TIMESERIES_PERCENTAGE": "custom_timeseries_percentage", - "CWS_CONTAINERS_PERCENTAGE": "cws_containers_percentage", - "CWS_CONTAINERS_USAGE": "cws_containers_usage", - "CWS_HOSTS_PERCENTAGE": "cws_hosts_percentage", - "CWS_HOSTS_USAGE": "cws_hosts_usage", - "DBM_HOSTS_PERCENTAGE": "dbm_hosts_percentage", - "DBM_HOSTS_USAGE": "dbm_hosts_usage", - "DBM_QUERIES_PERCENTAGE": "dbm_queries_percentage", - "DBM_QUERIES_USAGE": "dbm_queries_usage", "ESTIMATED_INDEXED_LOGS_USAGE": "estimated_indexed_logs_usage", "ESTIMATED_INDEXED_LOGS_PERCENTAGE": "estimated_indexed_logs_percentage", "ESTIMATED_INDEXED_SPANS_USAGE": "estimated_indexed_spans_usage", @@ -76,7 +64,7 @@ def __init__(self, *args, **kwargs): Note that value can be passed either in args or in kwargs, but not in both. - :param value: Must be one of ["api_usage", "api_percentage", "apm_host_usage", "apm_host_percentage", "appsec_usage", "appsec_percentage", "browser_usage", "browser_percentage", "container_usage", "container_percentage", "cspm_containers_percentage", "cspm_containers_usage", "cspm_hosts_percentage", "cspm_hosts_usage", "custom_timeseries_usage", "custom_timeseries_percentage", "cws_containers_percentage", "cws_containers_usage", "cws_hosts_percentage", "cws_hosts_usage", "dbm_hosts_percentage", "dbm_hosts_usage", "dbm_queries_percentage", "dbm_queries_usage", "estimated_indexed_logs_usage", "estimated_indexed_logs_percentage", "estimated_indexed_spans_usage", "estimated_indexed_spans_percentage", "fargate_usage", "fargate_percentage", "functions_usage", "functions_percentage", "indexed_logs_usage", "indexed_logs_percentage", "infra_host_usage", "infra_host_percentage", "invocations_usage", "invocations_percentage", "npm_host_usage", "npm_host_percentage", "profiled_container_usage", "profiled_container_percentage", "profiled_host_usage", "profiled_host_percentage", "snmp_usage", "snmp_percentage", "*"]. + :param value: Must be one of ["api_usage", "api_percentage", "apm_host_usage", "apm_host_percentage", "appsec_usage", "appsec_percentage", "browser_usage", "browser_percentage", "container_usage", "container_percentage", "custom_timeseries_usage", "custom_timeseries_percentage", "estimated_indexed_logs_usage", "estimated_indexed_logs_percentage", "estimated_indexed_spans_usage", "estimated_indexed_spans_percentage", "fargate_usage", "fargate_percentage", "functions_usage", "functions_percentage", "indexed_logs_usage", "indexed_logs_percentage", "infra_host_usage", "infra_host_percentage", "invocations_usage", "invocations_percentage", "npm_host_usage", "npm_host_percentage", "profiled_container_usage", "profiled_container_percentage", "profiled_host_usage", "profiled_host_percentage", "snmp_usage", "snmp_percentage", "*"]. :type value: str """ super().__init__(kwargs) 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 9200396a06..7556a5577f 100644 --- a/src/datadog_api_client/v2/api/security_monitoring_api.py +++ b/src/datadog_api_client/v2/api/security_monitoring_api.py @@ -26,6 +26,18 @@ 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_signal_list_request import SecurityMonitoringSignalListRequest +from datadog_api_client.v2.model.security_monitoring_signal_triage_update_response import ( + SecurityMonitoringSignalTriageUpdateResponse, +) +from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_request import ( + SecurityMonitoringSignalAssigneeUpdateRequest, +) +from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_request import ( + SecurityMonitoringSignalIncidentsUpdateRequest, +) +from datadog_api_client.v2.model.security_monitoring_signal_state_update_request import ( + SecurityMonitoringSignalStateUpdateRequest, +) class SecurityMonitoringApi: @@ -131,6 +143,87 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._edit_security_monitoring_signal_assignee_endpoint = _Endpoint( + settings={ + "response_type": (SecurityMonitoringSignalTriageUpdateResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/assignee", + "operation_id": "edit_security_monitoring_signal_assignee", + "http_method": "PATCH", + "version": "v2", + "servers": None, + }, + params_map={ + "signal_id": { + "required": True, + "openapi_types": (str,), + "attribute": "signal_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (SecurityMonitoringSignalAssigneeUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._edit_security_monitoring_signal_incidents_endpoint = _Endpoint( + settings={ + "response_type": (SecurityMonitoringSignalTriageUpdateResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/incidents", + "operation_id": "edit_security_monitoring_signal_incidents", + "http_method": "PATCH", + "version": "v2", + "servers": None, + }, + params_map={ + "signal_id": { + "required": True, + "openapi_types": (str,), + "attribute": "signal_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (SecurityMonitoringSignalIncidentsUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._edit_security_monitoring_signal_state_endpoint = _Endpoint( + settings={ + "response_type": (SecurityMonitoringSignalTriageUpdateResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/state", + "operation_id": "edit_security_monitoring_signal_state", + "http_method": "PATCH", + "version": "v2", + "servers": None, + }, + params_map={ + "signal_id": { + "required": True, + "openapi_types": (str,), + "attribute": "signal_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (SecurityMonitoringSignalStateUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._get_security_filter_endpoint = _Endpoint( settings={ "response_type": (SecurityFilterResponse,), @@ -424,6 +517,72 @@ def delete_security_monitoring_rule( return self._delete_security_monitoring_rule_endpoint.call_with_http_info(**kwargs) + def edit_security_monitoring_signal_assignee( + self, + signal_id: str, + body: SecurityMonitoringSignalAssigneeUpdateRequest, + ) -> SecurityMonitoringSignalTriageUpdateResponse: + """Modify the triage assignee of a security signal. + + Modify the triage assignee of a security signal. + + :param signal_id: The ID of the signal. + :type signal_id: str + :param body: Attributes describing the signal update. + :type body: SecurityMonitoringSignalAssigneeUpdateRequest + :rtype: SecurityMonitoringSignalTriageUpdateResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["signal_id"] = signal_id + + kwargs["body"] = body + + return self._edit_security_monitoring_signal_assignee_endpoint.call_with_http_info(**kwargs) + + def edit_security_monitoring_signal_incidents( + self, + signal_id: str, + body: SecurityMonitoringSignalIncidentsUpdateRequest, + ) -> SecurityMonitoringSignalTriageUpdateResponse: + """Change the related incidents of a security signal. + + Change the related incidents for a security signal. + + :param signal_id: The ID of the signal. + :type signal_id: str + :param body: Attributes describing the signal update. + :type body: SecurityMonitoringSignalIncidentsUpdateRequest + :rtype: SecurityMonitoringSignalTriageUpdateResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["signal_id"] = signal_id + + kwargs["body"] = body + + return self._edit_security_monitoring_signal_incidents_endpoint.call_with_http_info(**kwargs) + + def edit_security_monitoring_signal_state( + self, + signal_id: str, + body: SecurityMonitoringSignalStateUpdateRequest, + ) -> SecurityMonitoringSignalTriageUpdateResponse: + """Change the triage state of a security signal. + + Change the triage state of a security signal. + + :param signal_id: The ID of the signal. + :type signal_id: str + :param body: Attributes describing the signal update. + :type body: SecurityMonitoringSignalStateUpdateRequest + :rtype: SecurityMonitoringSignalTriageUpdateResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["signal_id"] = signal_id + + kwargs["body"] = body + + return self._edit_security_monitoring_signal_state_endpoint.call_with_http_info(**kwargs) + def get_security_filter( self, security_filter_id: str, diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_archive_reason.py b/src/datadog_api_client/v2/model/security_monitoring_signal_archive_reason.py new file mode 100644 index 0000000000..c579d82868 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_archive_reason.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 datadog_api_client.model_utils import ( + ApiTypeError, + ModelSimple, + cached_property, +) + + +class SecurityMonitoringSignalArchiveReason(ModelSimple): + + allowed_values = { + "value": { + "NONE": "none", + "FALSE_POSITIVE": "false_positive", + "TESTING_OR_MAINTENANCE": "testing_or_maintenance", + "OTHER": "other", + }, + } + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + def __init__(self, *args, **kwargs): + """ + Reason why a signal has been archived. + + Note that value can be passed either in args or in kwargs, but not in both. + + :param value: Must be one of ["none", "false_positive", "testing_or_maintenance", "other"]. + :type value: str + """ + super().__init__(kwargs) + + if "value" in kwargs: + value = kwargs.pop("value") + elif args: + args = list(args) + value = args.pop(0) + else: + raise ApiTypeError( + "value is required, but not passed in args or kwargs and doesn't have default", + path_to_item=self._path_to_item, + valid_classes=(self.__class__,), + ) + + self._check_pos_args(args) + + self.value = value + + self._check_kw_args(kwargs) + + @classmethod + def _from_openapi_data(cls, *args, **kwargs): + """Helper creating a new instance from a response.""" + return cls(*args, **kwargs) diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_attributes.py b/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_attributes.py new file mode 100644 index 0000000000..8ab97b9e41 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_attributes.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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalAssigneeUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_triage_user import SecurityMonitoringTriageUser + + return { + "assignee": (SecurityMonitoringTriageUser,), + "version": (int,), + } + + attribute_map = { + "assignee": "assignee", + "version": "version", + } + + def __init__(self, assignee, *args, **kwargs): + """ + Attributes describing an assignee update operation over a security signal. + + :param assignee: Object representing a given user entity. + :type assignee: SecurityMonitoringTriageUser + + :param version: Version of the updated signal. If server side version is higher, update will be rejected. + :type version: int, optional + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.assignee = assignee + + @classmethod + def _from_openapi_data(cls, assignee, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalAssigneeUpdateAttributes, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.assignee = assignee + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_data.py b/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_data.py new file mode 100644 index 0000000000..d8f2d75852 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_data.py @@ -0,0 +1,49 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalAssigneeUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_attributes import ( + SecurityMonitoringSignalAssigneeUpdateAttributes, + ) + + return { + "attributes": (SecurityMonitoringSignalAssigneeUpdateAttributes,), + } + + attribute_map = { + "attributes": "attributes", + } + + def __init__(self, attributes, *args, **kwargs): + """ + Data containing the patch for changing the assignee of a signal. + + :param attributes: Attributes describing an assignee update operation over a security signal. + :type attributes: SecurityMonitoringSignalAssigneeUpdateAttributes + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.attributes = attributes + + @classmethod + def _from_openapi_data(cls, attributes, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalAssigneeUpdateData, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.attributes = attributes + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_request.py b/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_request.py new file mode 100644 index 0000000000..e544faa224 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_assignee_update_request.py @@ -0,0 +1,49 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalAssigneeUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_data import ( + SecurityMonitoringSignalAssigneeUpdateData, + ) + + return { + "data": (SecurityMonitoringSignalAssigneeUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self, data, *args, **kwargs): + """ + Request body for changing the assignee of a given security monitoring signal. + + :param data: Data containing the patch for changing the assignee of a signal. + :type data: SecurityMonitoringSignalAssigneeUpdateData + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.data = data + + @classmethod + def _from_openapi_data(cls, data, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalAssigneeUpdateRequest, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.data = data + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_incident_ids.py b/src/datadog_api_client/v2/model/security_monitoring_signal_incident_ids.py new file mode 100644 index 0000000000..31f5b97bc8 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_incident_ids.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 datadog_api_client.model_utils import ( + ApiTypeError, + ModelSimple, + cached_property, +) + + +class SecurityMonitoringSignalIncidentIds(ModelSimple): + @cached_property + def openapi_types(_): + return { + "value": ([int],), + } + + def __init__(self, *args, **kwargs): + """ + Array of incidents that are associated with this signal. + + Note that value can be passed either in args or in kwargs, but not in both. + + :type value: [int] + """ + super().__init__(kwargs) + + if "value" in kwargs: + value = kwargs.pop("value") + elif args: + args = list(args) + value = args.pop(0) + else: + raise ApiTypeError( + "value is required, but not passed in args or kwargs and doesn't have default", + path_to_item=self._path_to_item, + valid_classes=(self.__class__,), + ) + + self._check_pos_args(args) + + self.value = value + + self._check_kw_args(kwargs) + + @classmethod + def _from_openapi_data(cls, *args, **kwargs): + """Helper creating a new instance from a response.""" + return cls(*args, **kwargs) diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_attributes.py b/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_attributes.py new file mode 100644 index 0000000000..94fd5bb357 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_attributes.py @@ -0,0 +1,54 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalIncidentsUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_incident_ids import ( + SecurityMonitoringSignalIncidentIds, + ) + + return { + "incident_ids": (SecurityMonitoringSignalIncidentIds,), + "version": (int,), + } + + attribute_map = { + "incident_ids": "incident_ids", + "version": "version", + } + + def __init__(self, incident_ids, *args, **kwargs): + """ + Attributes describing a triage state update operation over a security signal. + + :param incident_ids: Array of incidents that are associated with this signal. + :type incident_ids: SecurityMonitoringSignalIncidentIds + + :param version: Version of the updated signal. If server side version is higher, update will be rejected. + :type version: int, optional + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.incident_ids = incident_ids + + @classmethod + def _from_openapi_data(cls, incident_ids, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalIncidentsUpdateAttributes, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.incident_ids = incident_ids + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_data.py b/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_data.py new file mode 100644 index 0000000000..578d5580f6 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_data.py @@ -0,0 +1,49 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalIncidentsUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_attributes import ( + SecurityMonitoringSignalIncidentsUpdateAttributes, + ) + + return { + "attributes": (SecurityMonitoringSignalIncidentsUpdateAttributes,), + } + + attribute_map = { + "attributes": "attributes", + } + + def __init__(self, attributes, *args, **kwargs): + """ + Data containing the patch for changing the related incidents of a signal. + + :param attributes: Attributes describing a triage state update operation over a security signal. + :type attributes: SecurityMonitoringSignalIncidentsUpdateAttributes + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.attributes = attributes + + @classmethod + def _from_openapi_data(cls, attributes, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalIncidentsUpdateData, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.attributes = attributes + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_request.py b/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_request.py new file mode 100644 index 0000000000..cbc8ce0a7d --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_incidents_update_request.py @@ -0,0 +1,49 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalIncidentsUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_data import ( + SecurityMonitoringSignalIncidentsUpdateData, + ) + + return { + "data": (SecurityMonitoringSignalIncidentsUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self, data, *args, **kwargs): + """ + Request body for changing the related incidents of a given security monitoring signal. + + :param data: Data containing the patch for changing the related incidents of a signal. + :type data: SecurityMonitoringSignalIncidentsUpdateData + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.data = data + + @classmethod + def _from_openapi_data(cls, data, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalIncidentsUpdateRequest, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.data = data + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_state.py b/src/datadog_api_client/v2/model/security_monitoring_signal_state.py new file mode 100644 index 0000000000..4756773e4a --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_state.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 datadog_api_client.model_utils import ( + ApiTypeError, + ModelSimple, + cached_property, +) + + +class SecurityMonitoringSignalState(ModelSimple): + + allowed_values = { + "value": { + "OPEN": "open", + "ARCHIVED": "archived", + "UNDER_REVIEW": "under_review", + }, + } + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + def __init__(self, *args, **kwargs): + """ + The new triage state of the signal. + + Note that value can be passed either in args or in kwargs, but not in both. + + :param value: Must be one of ["open", "archived", "under_review"]. + :type value: str + """ + super().__init__(kwargs) + + if "value" in kwargs: + value = kwargs.pop("value") + elif args: + args = list(args) + value = args.pop(0) + else: + raise ApiTypeError( + "value is required, but not passed in args or kwargs and doesn't have default", + path_to_item=self._path_to_item, + valid_classes=(self.__class__,), + ) + + self._check_pos_args(args) + + self.value = value + + self._check_kw_args(kwargs) + + @classmethod + def _from_openapi_data(cls, *args, **kwargs): + """Helper creating a new instance from a response.""" + return cls(*args, **kwargs) diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_attributes.py b/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_attributes.py new file mode 100644 index 0000000000..ba2b67deea --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_attributes.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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalStateUpdateAttributes(ModelNormal): + validations = { + "archive_comment": { + "max_length": 2000, + }, + } + + @cached_property + def openapi_types(_): + 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 + + return { + "archive_comment": (str,), + "archive_reason": (SecurityMonitoringSignalArchiveReason,), + "state": (SecurityMonitoringSignalState,), + "version": (int,), + } + + attribute_map = { + "archive_comment": "archive_comment", + "archive_reason": "archive_reason", + "state": "state", + "version": "version", + } + + def __init__(self, state, *args, **kwargs): + """ + Attributes describing a triage state update operation over a security signal. + + :param archive_comment: Optional comment that will be displayed on archived signals. + :type archive_comment: str, optional + + :param archive_reason: Reason why a signal has been archived. + :type archive_reason: SecurityMonitoringSignalArchiveReason, optional + + :param state: The new triage state of the signal. + :type state: SecurityMonitoringSignalState + + :param version: Version of the updated signal. If server side version is higher, update will be rejected. + :type version: int, optional + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.state = state + + @classmethod + def _from_openapi_data(cls, state, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalStateUpdateAttributes, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.state = state + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_data.py b/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_data.py new file mode 100644 index 0000000000..c5590188ae --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_data.py @@ -0,0 +1,49 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalStateUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_state_update_attributes import ( + SecurityMonitoringSignalStateUpdateAttributes, + ) + + return { + "attributes": (SecurityMonitoringSignalStateUpdateAttributes,), + } + + attribute_map = { + "attributes": "attributes", + } + + def __init__(self, attributes, *args, **kwargs): + """ + Data containing the patch for changing the state of a signal. + + :param attributes: Attributes describing a triage state update operation over a security signal. + :type attributes: SecurityMonitoringSignalStateUpdateAttributes + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.attributes = attributes + + @classmethod + def _from_openapi_data(cls, attributes, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalStateUpdateData, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.attributes = attributes + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_request.py b/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_request.py new file mode 100644 index 0000000000..81fddc7590 --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_state_update_request.py @@ -0,0 +1,49 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalStateUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_state_update_data import ( + SecurityMonitoringSignalStateUpdateData, + ) + + return { + "data": (SecurityMonitoringSignalStateUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self, data, *args, **kwargs): + """ + Request body for changing the state of a given security monitoring signal. + + :param data: Data containing the patch for changing the state of a signal. + :type data: SecurityMonitoringSignalStateUpdateData + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.data = data + + @classmethod + def _from_openapi_data(cls, data, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalStateUpdateRequest, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.data = data + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_triage_attributes.py b/src/datadog_api_client/v2/model/security_monitoring_signal_triage_attributes.py new file mode 100644 index 0000000000..f9b63dd46b --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_triage_attributes.py @@ -0,0 +1,108 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalTriageAttributes(ModelNormal): + validations = { + "archive_comment": { + "max_length": 2000, + }, + "archive_comment_timestamp": { + "inclusive_minimum": 0, + }, + "state_update_timestamp": { + "inclusive_minimum": 0, + }, + } + + @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,), + "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", + "incident_ids": "incident_ids", + "state": "state", + "state_update_timestamp": "state_update_timestamp", + "state_update_user": "state_update_user", + } + + def __init__(self, incident_ids, state, *args, **kwargs): + """ + Attributes describing a triage state update operation over a security signal. + + :param archive_comment: Optional comment that will be displayed on archived signals. + :type archive_comment: str, optional + + :param archive_comment_timestamp: Timestamp at which the last edit to the comment has been made. + :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 why a signal has been archived. + :type archive_reason: SecurityMonitoringSignalArchiveReason, optional + + :param assignee: Object representing a given user entity. + :type assignee: SecurityMonitoringTriageUser, optional + + :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 at which the last update to the signal state has been made. + :type state_update_timestamp: int, optional + + :param state_update_user: Object representing a given user entity. + :type state_update_user: SecurityMonitoringTriageUser, optional + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.incident_ids = incident_ids + self.state = state + + @classmethod + def _from_openapi_data(cls, incident_ids, state, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalTriageAttributes, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.incident_ids = incident_ids + self.state = state + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_triage_update_data.py b/src/datadog_api_client/v2/model/security_monitoring_signal_triage_update_data.py new file mode 100644 index 0000000000..2846ca086b --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_triage_update_data.py @@ -0,0 +1,46 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalTriageUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_triage_attributes import ( + SecurityMonitoringSignalTriageAttributes, + ) + + return { + "attributes": (SecurityMonitoringSignalTriageAttributes,), + } + + attribute_map = { + "attributes": "attributes", + } + + def __init__(self, *args, **kwargs): + """ + Data containing the updated triage attributes of the signal. + + :param attributes: Attributes describing a triage state update operation over a security signal. + :type attributes: SecurityMonitoringSignalTriageAttributes, optional + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + @classmethod + def _from_openapi_data(cls, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalTriageUpdateData, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_signal_triage_update_response.py b/src/datadog_api_client/v2/model/security_monitoring_signal_triage_update_response.py new file mode 100644 index 0000000000..0c672a403a --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_signal_triage_update_response.py @@ -0,0 +1,49 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringSignalTriageUpdateResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.security_monitoring_signal_triage_update_data import ( + SecurityMonitoringSignalTriageUpdateData, + ) + + return { + "data": (SecurityMonitoringSignalTriageUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self, data, *args, **kwargs): + """ + The response returned after all triage operations, containing the updated signal triage data. + + :param data: Data containing the updated triage attributes of the signal. + :type data: SecurityMonitoringSignalTriageUpdateData + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.data = data + + @classmethod + def _from_openapi_data(cls, data, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringSignalTriageUpdateResponse, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.data = data + return self diff --git a/src/datadog_api_client/v2/model/security_monitoring_triage_user.py b/src/datadog_api_client/v2/model/security_monitoring_triage_user.py new file mode 100644 index 0000000000..fe1bec633b --- /dev/null +++ b/src/datadog_api_client/v2/model/security_monitoring_triage_user.py @@ -0,0 +1,66 @@ +# 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 datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SecurityMonitoringTriageUser(ModelNormal): + validations = { + "id": { + "inclusive_minimum": 1, + }, + } + + @cached_property + def openapi_types(_): + return { + "handle": (str,), + "id": (int,), + "name": (str,), + "uuid": (str,), + } + + attribute_map = { + "handle": "handle", + "id": "id", + "name": "name", + "uuid": "uuid", + } + + def __init__(self, uuid, *args, **kwargs): + """ + Object representing a given user entity. + + :param handle: The handle that has been set for this user account. + :type handle: str, optional + + :param id: Numerical ID assigned by Datadog to this user account. + :type id: int, optional + + :param name: The name that has been set for this user account. + :type name: str, optional + + :param uuid: UUID assigned by Datadog to this user account. + :type uuid: str + """ + super().__init__(kwargs) + + self._check_pos_args(args) + + self.uuid = uuid + + @classmethod + def _from_openapi_data(cls, uuid, *args, **kwargs): + """Helper creating a new instance from a response.""" + + self = super(SecurityMonitoringTriageUser, cls)._from_openapi_data(kwargs) + + self._check_pos_args(args) + + self.uuid = uuid + return self diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index f99ff9c3ca..99380be902 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -496,7 +496,27 @@ from datadog_api_client.v2.model.security_monitoring_rule_type_read import SecurityMonitoringRuleTypeRead from datadog_api_client.v2.model.security_monitoring_rule_update_payload import SecurityMonitoringRuleUpdatePayload from datadog_api_client.v2.model.security_monitoring_signal import SecurityMonitoringSignal +from datadog_api_client.v2.model.security_monitoring_signal_archive_reason import SecurityMonitoringSignalArchiveReason +from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_attributes import ( + SecurityMonitoringSignalAssigneeUpdateAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_data import ( + SecurityMonitoringSignalAssigneeUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_request import ( + SecurityMonitoringSignalAssigneeUpdateRequest, +) from datadog_api_client.v2.model.security_monitoring_signal_attributes import SecurityMonitoringSignalAttributes +from datadog_api_client.v2.model.security_monitoring_signal_incident_ids import SecurityMonitoringSignalIncidentIds +from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_attributes import ( + SecurityMonitoringSignalIncidentsUpdateAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_data import ( + SecurityMonitoringSignalIncidentsUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_request import ( + SecurityMonitoringSignalIncidentsUpdateRequest, +) from datadog_api_client.v2.model.security_monitoring_signal_list_request import SecurityMonitoringSignalListRequest from datadog_api_client.v2.model.security_monitoring_signal_list_request_filter import ( SecurityMonitoringSignalListRequestFilter, @@ -504,6 +524,25 @@ from datadog_api_client.v2.model.security_monitoring_signal_list_request_page import ( SecurityMonitoringSignalListRequestPage, ) +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_state_update_data import ( + SecurityMonitoringSignalStateUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signal_state_update_request import ( + SecurityMonitoringSignalStateUpdateRequest, +) +from datadog_api_client.v2.model.security_monitoring_signal_triage_attributes import ( + SecurityMonitoringSignalTriageAttributes, +) +from datadog_api_client.v2.model.security_monitoring_signal_triage_update_data import ( + SecurityMonitoringSignalTriageUpdateData, +) +from datadog_api_client.v2.model.security_monitoring_signal_triage_update_response import ( + SecurityMonitoringSignalTriageUpdateResponse, +) from datadog_api_client.v2.model.security_monitoring_signal_type import SecurityMonitoringSignalType 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 ( @@ -516,6 +555,7 @@ SecurityMonitoringSignalsListResponseMetaPage, ) from datadog_api_client.v2.model.security_monitoring_signals_sort import SecurityMonitoringSignalsSort +from datadog_api_client.v2.model.security_monitoring_triage_user import SecurityMonitoringTriageUser from datadog_api_client.v2.model.service_account_create_attributes import ServiceAccountCreateAttributes from datadog_api_client.v2.model.service_account_create_data import ServiceAccountCreateData from datadog_api_client.v2.model.service_account_create_request import ServiceAccountCreateRequest diff --git a/tests/v2/cassettes/test_scenarios/test_change_the_related_incidents_of_a_security_signal_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_change_the_related_incidents_of_a_security_signal_returns_ok_response.frozen new file mode 100644 index 0000000000..a103706d3a --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_change_the_related_incidents_of_a_security_signal_returns_ok_response.frozen @@ -0,0 +1 @@ +2022-07-06T14:48:57.739Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_change_the_related_incidents_of_a_security_signal_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_change_the_related_incidents_of_a_security_signal_returns_ok_response.yaml new file mode 100644 index 0000000000..adb4dbf88c --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_change_the_related_incidents_of_a_security_signal_returns_ok_response.yaml @@ -0,0 +1,22 @@ +interactions: +- request: + body: '{"data":{"attributes":{"incident_ids":[2066]}}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PATCH + uri: https://api.datadoghq.com/api/v2/security_monitoring/signals/AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE/incidents + response: + body: + string: '{"data":{"attributes":{"incident_ids":[2066],"state_update_user":{"handle":"bernard.le+synthetics@datadoghq.com","uuid":"2514d32c-0719-11eb-b643-63faf7d5e1bd","name":null,"id":2115689,"icon":"https://secure.gravatar.com/avatar/ae546a62b5816be30cc23792a69bd9ee?s=48&d=retro"},"assignee":{"id":-1,"name":"Unassigned","uuid":""},"state":"open","archive_reason":"none","state_update_timestamp":1657118864546},"type":"signal_metadata","id":"AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE"}} + + ' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_change_the_triage_state_of_a_security_signal_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_change_the_triage_state_of_a_security_signal_returns_ok_response.frozen new file mode 100644 index 0000000000..0ea1d66d5f --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_change_the_triage_state_of_a_security_signal_returns_ok_response.frozen @@ -0,0 +1 @@ +2022-07-06T14:49:00.515Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_change_the_triage_state_of_a_security_signal_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_change_the_triage_state_of_a_security_signal_returns_ok_response.yaml new file mode 100644 index 0000000000..c46170e1e1 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_change_the_triage_state_of_a_security_signal_returns_ok_response.yaml @@ -0,0 +1,22 @@ +interactions: +- request: + body: '{"data":{"attributes":{"archive_reason":"none","state":"open"}}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PATCH + uri: https://api.datadoghq.com/api/v2/security_monitoring/signals/AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE/state + response: + body: + string: '{"data":{"attributes":{"incident_ids":[2066],"state_update_user":{"handle":"bernard.le+synthetics@datadoghq.com","uuid":"2514d32c-0719-11eb-b643-63faf7d5e1bd","name":null,"id":2115689,"icon":"https://secure.gravatar.com/avatar/ae546a62b5816be30cc23792a69bd9ee?s=48&d=retro"},"assignee":{"id":-1,"name":"Unassigned","uuid":""},"state":"open","archive_reason":"none","state_update_timestamp":1657118941005},"type":"signal_metadata","id":"AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE"}} + + ' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_modify_the_triage_assignee_of_a_security_signal_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_modify_the_triage_assignee_of_a_security_signal_returns_ok_response.frozen new file mode 100644 index 0000000000..05f061a8fd --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_modify_the_triage_assignee_of_a_security_signal_returns_ok_response.frozen @@ -0,0 +1 @@ +2022-07-06T14:49:11.566Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_modify_the_triage_assignee_of_a_security_signal_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_modify_the_triage_assignee_of_a_security_signal_returns_ok_response.yaml new file mode 100644 index 0000000000..e309dd8563 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_modify_the_triage_assignee_of_a_security_signal_returns_ok_response.yaml @@ -0,0 +1,22 @@ +interactions: +- request: + body: '{"data":{"attributes":{"assignee":{"uuid":""}}}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PATCH + uri: https://api.datadoghq.com/api/v2/security_monitoring/signals/AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE/assignee + response: + body: + string: '{"data":{"attributes":{"incident_ids":[2066],"state_update_user":{"handle":"bernard.le+synthetics@datadoghq.com","uuid":"2514d32c-0719-11eb-b643-63faf7d5e1bd","name":null,"id":2115689,"icon":"https://secure.gravatar.com/avatar/ae546a62b5816be30cc23792a69bd9ee?s=48&d=retro"},"assignee":{"id":-1,"name":"Unassigned","uuid":""},"state":"open","archive_reason":"none","state_update_timestamp":1657118941005},"type":"signal_metadata","id":"AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE"}} + + ' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/features/metrics.feature b/tests/v2/features/metrics.feature index 5dfa372dff..125c286188 100644 --- a/tests/v2/features/metrics.feature +++ b/tests/v2/features/metrics.feature @@ -13,7 +13,7 @@ Feature: Metrics Given a valid "apiKeyAuth" key in the system And an instance of "Metrics" API - @skip-typescript @team:DataDog/points-aggregation + @team:DataDog/points-aggregation Scenario: Configure tags for multiple metrics returns "Accepted" response Given a valid "appKeyAuth" key in the system And there is a valid "user" in the system diff --git a/tests/v2/features/security_monitoring.feature b/tests/v2/features/security_monitoring.feature index 4ce99814c5..cf7388bcb5 100644 --- a/tests/v2/features/security_monitoring.feature +++ b/tests/v2/features/security_monitoring.feature @@ -7,6 +7,54 @@ Feature: Security Monitoring And a valid "appKeyAuth" key in the system And an instance of "SecurityMonitoring" API + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Change the related incidents of a security signal returns "Bad Request" response + Given new "EditSecurityMonitoringSignalIncidents" request + And request contains "signal_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"incident_ids": [2066]}}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Change the related incidents of a security signal returns "Not Found" response + Given new "EditSecurityMonitoringSignalIncidents" request + And request contains "signal_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"incident_ids": [2066]}}} + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/k9-cloud-security-platform + Scenario: Change the related incidents of a security signal returns "OK" response + Given new "EditSecurityMonitoringSignalIncidents" request + And request contains "signal_id" parameter with value "AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE" + And body with value {"data": {"attributes": {"incident_ids": [2066]}}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Change the triage state of a security signal returns "Bad Request" response + Given new "EditSecurityMonitoringSignalState" request + And request contains "signal_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"archive_reason": "none", "state": "open"}}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Change the triage state of a security signal returns "Not Found" response + Given new "EditSecurityMonitoringSignalState" request + And request contains "signal_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"archive_reason": "none", "state": "open"}}} + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/k9-cloud-security-platform + Scenario: Change the triage state of a security signal returns "OK" response + Given new "EditSecurityMonitoringSignalState" request + And request contains "signal_id" parameter with value "AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE" + And body with value {"data": {"attributes": {"archive_reason": "none", "state": "open"}}} + When the request is sent + Then the response status is 200 OK + @team:DataDog/k9-cloud-security-platform Scenario: Create a detection rule returns "Bad Request" response Given new "CreateSecurityMonitoringRule" request @@ -189,6 +237,30 @@ Feature: Security Monitoring When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Modify the triage assignee of a security signal returns "Bad Request" response + Given new "EditSecurityMonitoringSignalAssignee" request + And request contains "signal_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"assignee": {"uuid": "773b045d-ccf8-4808-bd3b-955ef6a8c940"}}}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Modify the triage assignee of a security signal returns "Not Found" response + Given new "EditSecurityMonitoringSignalAssignee" request + And request contains "signal_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"assignee": {"uuid": "773b045d-ccf8-4808-bd3b-955ef6a8c940"}}}} + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/k9-cloud-security-platform + Scenario: Modify the triage assignee of a security signal returns "OK" response + Given new "EditSecurityMonitoringSignalAssignee" request + And request contains "signal_id" parameter with value "AQAAAYG1bl5K4HuUewAAAABBWUcxYmw1S0FBQmt2RmhRN0V4ZUVnQUE" + And body with value {"data": {"attributes": {"assignee": {"uuid": ""}}}} + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/k9-cloud-security-platform Scenario: Update a security filter returns "Bad Request" response Given new "UpdateSecurityFilter" request diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index d19e3df9f9..2e43ba5c80 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -697,6 +697,24 @@ "type": "safe" } }, + "EditSecurityMonitoringSignalAssignee": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, + "EditSecurityMonitoringSignalIncidents": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, + "EditSecurityMonitoringSignalState": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, "SubmitMetrics": { "tag": "Metrics", "undo": {