diff --git a/.apigentools-info b/.apigentools-info index 0112f58508..19d6e8c0db 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2025-05-14 15:44:27.314895", - "spec_repo_commit": "64f5e7ee" + "regenerated": "2025-05-15 15:01:30.417238", + "spec_repo_commit": "07801a80" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2025-05-14 15:44:27.373827", - "spec_repo_commit": "64f5e7ee" + "regenerated": "2025-05-15 15:01:30.432083", + "spec_repo_commit": "07801a80" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 094dc6eb79..631fc6d1bb 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -52943,7 +52943,11 @@ paths: x-terraform-resource: appsec_waf_exclusion_filter /api/v2/remote_config/products/cws/agent_rules: get: - description: Get the list of Cloud Security Management Threats Agent rules + description: 'Get the list of Workload Protection agent rules. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: ListCSMThreatsAgentRules parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityQueryAgentPolicyID' @@ -52958,19 +52962,22 @@ paths: $ref: '#/components/responses/NotAuthorizedResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Get all CSM Threats Agent rules + summary: Get all Workload Protection agent rules tags: - CSM Threats post: - description: Create a new Cloud Security Management Threats Agent rule with - the given parameters + description: 'Create a new Workload Protection agent rule with the given parameters. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: CreateCSMThreatsAgentRule requestBody: content: application/json: schema: $ref: '#/components/schemas/CloudWorkloadSecurityAgentRuleCreateRequest' - description: The definition of the new Agent rule + description: The definition of the new agent rule required: true responses: '200': @@ -52987,13 +52994,17 @@ paths: $ref: '#/components/responses/ConflictResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Create a CSM Threats Agent rule + summary: Create a Workload Protection agent rule tags: - CSM Threats x-codegen-request-body-name: body /api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}: delete: - description: Delete a specific Cloud Security Management Threats Agent rule + description: 'Delete a specific Workload Protection agent rule. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: DeleteCSMThreatsAgentRule parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityAgentRuleID' @@ -53007,12 +53018,15 @@ paths: $ref: '#/components/responses/NotFoundResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Delete a CSM Threats Agent rule + summary: Delete a Workload Protection agent rule tags: - CSM Threats get: - description: Get the details of a specific Cloud Security Management Threats - Agent rule + description: 'Get the details of a specific Workload Protection agent rule. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: GetCSMThreatsAgentRule parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityAgentRuleID' @@ -53030,13 +53044,17 @@ paths: $ref: '#/components/responses/NotFoundResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Get a CSM Threats Agent rule + summary: Get a Workload Protection agent rule tags: - CSM Threats patch: - description: 'Update a specific Cloud Security Management Threats Agent rule. + description: 'Update a specific Workload Protection Agent rule. + + Returns the agent rule object when the request is successful. + - Returns the Agent rule object when the request is successful.' + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: UpdateCSMThreatsAgentRule parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityAgentRuleID' @@ -53046,7 +53064,7 @@ paths: application/json: schema: $ref: '#/components/schemas/CloudWorkloadSecurityAgentRuleUpdateRequest' - description: New definition of the Agent rule + description: New definition of the agent rule required: true responses: '200': @@ -53065,13 +53083,17 @@ paths: $ref: '#/components/responses/ConcurrentModificationResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Update a CSM Threats Agent rule + summary: Update a Workload Protection agent rule tags: - CSM Threats x-codegen-request-body-name: body /api/v2/remote_config/products/cws/policy: get: - description: Get the list of Cloud Security Management Threats Agent policies + description: 'Get the list of Workload Protection policies. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: ListCSMThreatsAgentPolicies responses: '200': @@ -53084,12 +53106,15 @@ paths: $ref: '#/components/responses/NotAuthorizedResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Get all CSM Threats Agent policies + summary: Get all Workload Protection policies tags: - CSM Threats post: - description: Create a new Cloud Security Management Threats Agent policy with - the given parameters + description: 'Create a new Workload Protection policy with the given parameters. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: CreateCSMThreatsAgentPolicy requestBody: content: @@ -53113,19 +53138,23 @@ paths: $ref: '#/components/responses/ConflictResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Create a CSM Threats Agent policy + summary: Create a Workload Protection policy tags: - CSM Threats x-codegen-request-body-name: body /api/v2/remote_config/products/cws/policy/download: get: - description: 'The download endpoint generates a CSM Threats policy file from - your currently active + description: 'The download endpoint generates a Workload Protection policy file + from your currently active - CSM Threats rules, and downloads them as a `.policy` file. This file can then - be deployed to + Workload Protection agent rules, and downloads them as a `.policy` file. This + file can then be deployed to - your Agents to update the policy running in your environment.' + your agents to update the policy running in your environment. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: DownloadCSMThreatsPolicy responses: '200': @@ -53139,12 +53168,16 @@ paths: $ref: '#/components/responses/NotAuthorizedResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Get the latest CSM Threats policy + summary: Download the Workload Protection policy tags: - CSM Threats /api/v2/remote_config/products/cws/policy/{policy_id}: delete: - description: Delete a specific Cloud Security Management Threats Agent policy + description: 'Delete a specific Workload Protection policy. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: DeleteCSMThreatsAgentPolicy parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityPathAgentPolicyID' @@ -53159,12 +53192,15 @@ paths: $ref: '#/components/responses/NotFoundResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Delete a CSM Threats Agent policy + summary: Delete a Workload Protection policy tags: - CSM Threats get: - description: Get the details of a specific Cloud Security Management Threats - Agent policy + description: 'Get the details of a specific Workload Protection policy. + + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: GetCSMThreatsAgentPolicy parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityPathAgentPolicyID' @@ -53181,13 +53217,17 @@ paths: $ref: '#/components/responses/NotFoundResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Get a CSM Threats Agent policy + summary: Get a Workload Protection policy tags: - CSM Threats patch: - description: 'Update a specific Cloud Security Management Threats Agent policy. + description: 'Update a specific Workload Protection policy. + + Returns the policy object when the request is successful. - Returns the Agent policy object when the request is successful.' + + **Note**: This endpoint is not available for the Government (US1-FED) site. + Please reference the (US1-FED) specific resource below.' operationId: UpdateCSMThreatsAgentPolicy parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityPathAgentPolicyID' @@ -53215,7 +53255,7 @@ paths: $ref: '#/components/responses/ConcurrentModificationResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Update a CSM Threats Agent policy + summary: Update a Workload Protection policy tags: - CSM Threats x-codegen-request-body-name: body @@ -55333,13 +55373,16 @@ paths: If you are interested in accessing this API, [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9).' /api/v2/security/cloud_workload/policy/download: get: - description: 'The download endpoint generates a Cloud Workload Security policy - file from your currently active + description: 'The download endpoint generates a Workload Protection policy file + from your currently active - Cloud Workload Security rules, and downloads them as a .policy file. This + Workload Protection agent rules, and downloads them as a `.policy` file. This file can then be deployed to - your Agents to update the policy running in your environment.' + your agents to update the policy running in your environment. + + + **Note**: This endpoint should only be used for the Government (US1-FED) site.' operationId: DownloadCloudWorkloadPolicyFile responses: '200': @@ -55353,7 +55396,7 @@ paths: $ref: '#/components/responses/NotAuthorizedResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Get the latest Cloud Workload Security policy + summary: Download the Workload Protection policy (US1-FED) tags: - CSM Threats x-permission: @@ -56175,7 +56218,10 @@ paths: - security_monitoring_notification_profiles_write /api/v2/security_monitoring/cloud_workload_security/agent_rules: get: - description: Get the list of Agent rules + description: 'Get the list of agent rules. + + + **Note**: This endpoint should only be used for the Government (US1-FED) site.' operationId: ListCloudWorkloadSecurityAgentRules responses: '200': @@ -56188,7 +56234,7 @@ paths: $ref: '#/components/responses/NotAuthorizedResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Get all Cloud Workload Security Agent rules + summary: Get all Workload Protection agent rules (US1-FED) tags: - CSM Threats x-permission: @@ -56196,14 +56242,17 @@ paths: permissions: - security_monitoring_cws_agent_rules_read post: - description: Create a new Agent rule with the given parameters. + description: 'Create a new agent rule with the given parameters. + + + **Note**: This endpoint should only be used for the Government (US1-FED) site.' operationId: CreateCloudWorkloadSecurityAgentRule requestBody: content: application/json: schema: $ref: '#/components/schemas/CloudWorkloadSecurityAgentRuleCreateRequest' - description: The definition of the new Agent rule + description: The definition of the new agent rule required: true responses: '200': @@ -56220,7 +56269,7 @@ paths: $ref: '#/components/responses/ConflictResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Create a Cloud Workload Security Agent rule + summary: Create a Workload Protection agent rule (US1-FED) tags: - CSM Threats x-codegen-request-body-name: body @@ -56230,7 +56279,10 @@ paths: - security_monitoring_cws_agent_rules_write /api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}: delete: - description: Delete a specific Agent rule + description: 'Delete a specific agent rule. + + + **Note**: This endpoint should only be used for the Government (US1-FED) site.' operationId: DeleteCloudWorkloadSecurityAgentRule parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityAgentRuleID' @@ -56243,7 +56295,7 @@ paths: $ref: '#/components/responses/NotFoundResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Delete a Cloud Workload Security Agent rule + summary: Delete a Workload Protection agent rule (US1-FED) tags: - CSM Threats x-permission: @@ -56251,7 +56303,10 @@ paths: permissions: - security_monitoring_cws_agent_rules_write get: - description: Get the details of a specific Agent rule + description: 'Get the details of a specific agent rule. + + + **Note**: This endpoint should only be used for the Government (US1-FED) site.' operationId: GetCloudWorkloadSecurityAgentRule parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityAgentRuleID' @@ -56268,7 +56323,7 @@ paths: $ref: '#/components/responses/NotFoundResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Get a Cloud Workload Security Agent rule + summary: Get a Workload Protection agent rule (US1-FED) tags: - CSM Threats x-permission: @@ -56276,9 +56331,12 @@ paths: permissions: - security_monitoring_cws_agent_rules_read patch: - description: 'Update a specific Agent rule. + description: 'Update a specific agent rule. - Returns the Agent rule object when the request is successful.' + Returns the agent rule object when the request is successful. + + + **Note**: This endpoint should only be used for the Government (US1-FED) site.' operationId: UpdateCloudWorkloadSecurityAgentRule parameters: - $ref: '#/components/parameters/CloudWorkloadSecurityAgentRuleID' @@ -56287,7 +56345,7 @@ paths: application/json: schema: $ref: '#/components/schemas/CloudWorkloadSecurityAgentRuleUpdateRequest' - description: New definition of the Agent rule + description: New definition of the agent rule required: true responses: '200': @@ -56306,7 +56364,7 @@ paths: $ref: '#/components/responses/ConcurrentModificationResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' - summary: Update a Cloud Workload Security Agent rule + summary: Update a Workload Protection agent rule (US1-FED) tags: - CSM Threats x-codegen-request-body-name: body @@ -61577,10 +61635,14 @@ tags: Go to https://docs.datadoghq.com/security/cloud_security_management to learn more.' name: CSM Coverage Analysis -- description: Cloud Security Management Threats (CSM Threats) monitors file, network, - and process activity across your environment to detect real-time threats to your - infrastructure. See [Cloud Security Management Threats](https://docs.datadoghq.com/security/threats/) - for more information on setting up CSM Threats. +- description: 'Workload Protection monitors file, network, and process activity across + your environment to detect real-time threats to your infrastructure. See [Workload + Protection](https://docs.datadoghq.com/security/workload_protection/) for more + information on setting up Workload Protection. + + + **Note**: These endpoints are split based on whether you are using the US1-FED + site or not. Please reference the specific resource for the site you are using.' name: CSM Threats - description: View and manage cases and projects within Case Management. See the [Case Management page](https://docs.datadoghq.com/service_management/case_management/) diff --git a/examples/v2/csm-threats/CreateCSMThreatsAgentPolicy.py b/examples/v2/csm-threats/CreateCSMThreatsAgentPolicy.py index 3e0089b028..8c50a1ced3 100644 --- a/examples/v2/csm-threats/CreateCSMThreatsAgentPolicy.py +++ b/examples/v2/csm-threats/CreateCSMThreatsAgentPolicy.py @@ -1,5 +1,5 @@ """ -Create a CSM Threats Agent policy returns "OK" response +Create a Workload Protection policy returns "OK" response """ from datadog_api_client import ApiClient, Configuration diff --git a/examples/v2/csm-threats/CreateCSMThreatsAgentRule.py b/examples/v2/csm-threats/CreateCSMThreatsAgentRule.py index 57e97a338e..7d3119f735 100644 --- a/examples/v2/csm-threats/CreateCSMThreatsAgentRule.py +++ b/examples/v2/csm-threats/CreateCSMThreatsAgentRule.py @@ -1,5 +1,5 @@ """ -Create a CSM Threats Agent rule returns "OK" response +Create a Workload Protection agent rule returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/CreateCloudWorkloadSecurityAgentRule.py b/examples/v2/csm-threats/CreateCloudWorkloadSecurityAgentRule.py index 6f8256a45f..807206093f 100644 --- a/examples/v2/csm-threats/CreateCloudWorkloadSecurityAgentRule.py +++ b/examples/v2/csm-threats/CreateCloudWorkloadSecurityAgentRule.py @@ -1,5 +1,5 @@ """ -Create a Cloud Workload Security Agent rule returns "OK" response +Create a Workload Protection agent rule (US1-FED) returns "OK" response """ from datadog_api_client import ApiClient, Configuration diff --git a/examples/v2/csm-threats/DeleteCSMThreatsAgentPolicy.py b/examples/v2/csm-threats/DeleteCSMThreatsAgentPolicy.py index d1e5de817d..7c7af5adcc 100644 --- a/examples/v2/csm-threats/DeleteCSMThreatsAgentPolicy.py +++ b/examples/v2/csm-threats/DeleteCSMThreatsAgentPolicy.py @@ -1,5 +1,5 @@ """ -Delete a CSM Threats Agent policy returns "OK" response +Delete a Workload Protection policy returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/DeleteCSMThreatsAgentRule.py b/examples/v2/csm-threats/DeleteCSMThreatsAgentRule.py index bb71c986c6..7e16efde7b 100644 --- a/examples/v2/csm-threats/DeleteCSMThreatsAgentRule.py +++ b/examples/v2/csm-threats/DeleteCSMThreatsAgentRule.py @@ -1,5 +1,5 @@ """ -Delete a CSM Threats Agent rule returns "OK" response +Delete a Workload Protection agent rule returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/DeleteCloudWorkloadSecurityAgentRule.py b/examples/v2/csm-threats/DeleteCloudWorkloadSecurityAgentRule.py index 88215dc7e7..e0805d2f62 100644 --- a/examples/v2/csm-threats/DeleteCloudWorkloadSecurityAgentRule.py +++ b/examples/v2/csm-threats/DeleteCloudWorkloadSecurityAgentRule.py @@ -1,5 +1,5 @@ """ -Delete a Cloud Workload Security Agent rule returns "OK" response +Delete a Workload Protection agent rule (US1-FED) returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/DownloadCSMThreatsPolicy.py b/examples/v2/csm-threats/DownloadCSMThreatsPolicy.py index c7934423e1..f1ee0f8c1e 100644 --- a/examples/v2/csm-threats/DownloadCSMThreatsPolicy.py +++ b/examples/v2/csm-threats/DownloadCSMThreatsPolicy.py @@ -1,5 +1,5 @@ """ -Get the latest CSM Threats policy returns "OK" response +Download the Workload Protection policy returns "OK" response """ from datadog_api_client import ApiClient, Configuration diff --git a/examples/v2/csm-threats/DownloadCloudWorkloadPolicyFile.py b/examples/v2/csm-threats/DownloadCloudWorkloadPolicyFile.py index ee17716492..2812a91474 100644 --- a/examples/v2/csm-threats/DownloadCloudWorkloadPolicyFile.py +++ b/examples/v2/csm-threats/DownloadCloudWorkloadPolicyFile.py @@ -1,5 +1,5 @@ """ -Get the latest Cloud Workload Security policy returns "OK" response +Download the Workload Protection policy (US1-FED) returns "OK" response """ from datadog_api_client import ApiClient, Configuration diff --git a/examples/v2/csm-threats/GetCSMThreatsAgentPolicy.py b/examples/v2/csm-threats/GetCSMThreatsAgentPolicy.py index c3997548cf..b66f102902 100644 --- a/examples/v2/csm-threats/GetCSMThreatsAgentPolicy.py +++ b/examples/v2/csm-threats/GetCSMThreatsAgentPolicy.py @@ -1,5 +1,5 @@ """ -Get a CSM Threats Agent policy returns "OK" response +Get a Workload Protection policy returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/GetCSMThreatsAgentRule.py b/examples/v2/csm-threats/GetCSMThreatsAgentRule.py index 2e6157715e..0401dabef5 100644 --- a/examples/v2/csm-threats/GetCSMThreatsAgentRule.py +++ b/examples/v2/csm-threats/GetCSMThreatsAgentRule.py @@ -1,5 +1,5 @@ """ -Get a CSM Threats Agent rule returns "OK" response +Get a Workload Protection agent rule returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/GetCloudWorkloadSecurityAgentRule.py b/examples/v2/csm-threats/GetCloudWorkloadSecurityAgentRule.py index 7eb6473282..9df6413bee 100644 --- a/examples/v2/csm-threats/GetCloudWorkloadSecurityAgentRule.py +++ b/examples/v2/csm-threats/GetCloudWorkloadSecurityAgentRule.py @@ -1,5 +1,5 @@ """ -Get a Cloud Workload Security Agent rule returns "OK" response +Get a Workload Protection agent rule (US1-FED) returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/ListCSMThreatsAgentPolicies.py b/examples/v2/csm-threats/ListCSMThreatsAgentPolicies.py index 22b9e4a49b..73d7c097ac 100644 --- a/examples/v2/csm-threats/ListCSMThreatsAgentPolicies.py +++ b/examples/v2/csm-threats/ListCSMThreatsAgentPolicies.py @@ -1,5 +1,5 @@ """ -Get all CSM Threats Agent policies returns "OK" response +Get all Workload Protection policies returns "OK" response """ from datadog_api_client import ApiClient, Configuration diff --git a/examples/v2/csm-threats/ListCSMThreatsAgentRules.py b/examples/v2/csm-threats/ListCSMThreatsAgentRules.py index 102156301d..f8b670ea4c 100644 --- a/examples/v2/csm-threats/ListCSMThreatsAgentRules.py +++ b/examples/v2/csm-threats/ListCSMThreatsAgentRules.py @@ -1,5 +1,5 @@ """ -Get all CSM Threats Agent rules returns "OK" response +Get all Workload Protection agent rules returns "OK" response """ from datadog_api_client import ApiClient, Configuration diff --git a/examples/v2/csm-threats/ListCloudWorkloadSecurityAgentRules.py b/examples/v2/csm-threats/ListCloudWorkloadSecurityAgentRules.py index 28d5c72c6d..6600f1ed96 100644 --- a/examples/v2/csm-threats/ListCloudWorkloadSecurityAgentRules.py +++ b/examples/v2/csm-threats/ListCloudWorkloadSecurityAgentRules.py @@ -1,5 +1,5 @@ """ -Get all Cloud Workload Security Agent rules returns "OK" response +Get all Workload Protection agent rules (US1-FED) returns "OK" response """ from datadog_api_client import ApiClient, Configuration diff --git a/examples/v2/csm-threats/UpdateCSMThreatsAgentPolicy.py b/examples/v2/csm-threats/UpdateCSMThreatsAgentPolicy.py index 9eda2afff3..873f3b252e 100644 --- a/examples/v2/csm-threats/UpdateCSMThreatsAgentPolicy.py +++ b/examples/v2/csm-threats/UpdateCSMThreatsAgentPolicy.py @@ -1,5 +1,5 @@ """ -Update a CSM Threats Agent policy returns "OK" response +Update a Workload Protection policy returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/UpdateCSMThreatsAgentRule.py b/examples/v2/csm-threats/UpdateCSMThreatsAgentRule.py index 586c16121c..b4f65e993d 100644 --- a/examples/v2/csm-threats/UpdateCSMThreatsAgentRule.py +++ b/examples/v2/csm-threats/UpdateCSMThreatsAgentRule.py @@ -1,5 +1,5 @@ """ -Update a CSM Threats Agent rule returns "OK" response +Update a Workload Protection agent rule returns "OK" response """ from os import environ diff --git a/examples/v2/csm-threats/UpdateCloudWorkloadSecurityAgentRule.py b/examples/v2/csm-threats/UpdateCloudWorkloadSecurityAgentRule.py index 1cd780c010..147c6d605a 100644 --- a/examples/v2/csm-threats/UpdateCloudWorkloadSecurityAgentRule.py +++ b/examples/v2/csm-threats/UpdateCloudWorkloadSecurityAgentRule.py @@ -1,5 +1,5 @@ """ -Update a Cloud Workload Security Agent rule returns "OK" response +Update a Workload Protection agent rule (US1-FED) returns "OK" response """ from os import environ diff --git a/src/datadog_api_client/v2/api/csm_threats_api.py b/src/datadog_api_client/v2/api/csm_threats_api.py index d32299f674..ba1c334ef8 100644 --- a/src/datadog_api_client/v2/api/csm_threats_api.py +++ b/src/datadog_api_client/v2/api/csm_threats_api.py @@ -40,7 +40,9 @@ class CSMThreatsApi: """ - Cloud Security Management Threats (CSM Threats) monitors file, network, and process activity across your environment to detect real-time threats to your infrastructure. See `Cloud Security Management Threats `_ for more information on setting up CSM Threats. + Workload Protection monitors file, network, and process activity across your environment to detect real-time threats to your infrastructure. See `Workload Protection `_ for more information on setting up Workload Protection. + + **Note** : These endpoints are split based on whether you are using the US1-FED site or not. Please reference the specific resource for the site you are using. """ def __init__(self, api_client=None): @@ -429,11 +431,13 @@ def create_cloud_workload_security_agent_rule( self, body: CloudWorkloadSecurityAgentRuleCreateRequest, ) -> CloudWorkloadSecurityAgentRuleResponse: - """Create a Cloud Workload Security Agent rule. + """Create a Workload Protection agent rule (US1-FED). + + Create a new agent rule with the given parameters. - Create a new Agent rule with the given parameters. + **Note** : This endpoint should only be used for the Government (US1-FED) site. - :param body: The definition of the new Agent rule + :param body: The definition of the new agent rule :type body: CloudWorkloadSecurityAgentRuleCreateRequest :rtype: CloudWorkloadSecurityAgentRuleResponse """ @@ -446,9 +450,11 @@ def create_csm_threats_agent_policy( self, body: CloudWorkloadSecurityAgentPolicyCreateRequest, ) -> CloudWorkloadSecurityAgentPolicyResponse: - """Create a CSM Threats Agent policy. + """Create a Workload Protection policy. + + Create a new Workload Protection policy with the given parameters. - Create a new Cloud Security Management Threats Agent policy with the given parameters + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :param body: The definition of the new Agent policy :type body: CloudWorkloadSecurityAgentPolicyCreateRequest @@ -463,11 +469,13 @@ def create_csm_threats_agent_rule( self, body: CloudWorkloadSecurityAgentRuleCreateRequest, ) -> CloudWorkloadSecurityAgentRuleResponse: - """Create a CSM Threats Agent rule. + """Create a Workload Protection agent rule. - Create a new Cloud Security Management Threats Agent rule with the given parameters + Create a new Workload Protection agent rule with the given parameters. - :param body: The definition of the new Agent rule + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. + + :param body: The definition of the new agent rule :type body: CloudWorkloadSecurityAgentRuleCreateRequest :rtype: CloudWorkloadSecurityAgentRuleResponse """ @@ -480,9 +488,11 @@ def delete_cloud_workload_security_agent_rule( self, agent_rule_id: str, ) -> None: - """Delete a Cloud Workload Security Agent rule. + """Delete a Workload Protection agent rule (US1-FED). + + Delete a specific agent rule. - Delete a specific Agent rule + **Note** : This endpoint should only be used for the Government (US1-FED) site. :param agent_rule_id: The ID of the Agent rule :type agent_rule_id: str @@ -497,9 +507,11 @@ def delete_csm_threats_agent_policy( self, policy_id: str, ) -> None: - """Delete a CSM Threats Agent policy. + """Delete a Workload Protection policy. - Delete a specific Cloud Security Management Threats Agent policy + Delete a specific Workload Protection policy. + + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :param policy_id: The ID of the Agent policy :type policy_id: str @@ -516,9 +528,11 @@ def delete_csm_threats_agent_rule( *, policy_id: Union[str, UnsetType] = unset, ) -> None: - """Delete a CSM Threats Agent rule. + """Delete a Workload Protection agent rule. + + Delete a specific Workload Protection agent rule. - Delete a specific Cloud Security Management Threats Agent rule + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :param agent_rule_id: The ID of the Agent rule :type agent_rule_id: str @@ -537,11 +551,13 @@ def delete_csm_threats_agent_rule( def download_cloud_workload_policy_file( self, ) -> file_type: - """Get the latest Cloud Workload Security policy. + """Download the Workload Protection policy (US1-FED). - The download endpoint generates a Cloud Workload Security policy file from your currently active - Cloud Workload Security rules, and downloads them as a .policy file. This file can then be deployed to - your Agents to update the policy running in your environment. + The download endpoint generates a Workload Protection policy file from your currently active + Workload Protection agent rules, and downloads them as a ``.policy`` file. This file can then be deployed to + your agents to update the policy running in your environment. + + **Note** : This endpoint should only be used for the Government (US1-FED) site. :rtype: file_type """ @@ -551,11 +567,13 @@ def download_cloud_workload_policy_file( def download_csm_threats_policy( self, ) -> file_type: - """Get the latest CSM Threats policy. + """Download the Workload Protection policy. + + The download endpoint generates a Workload Protection policy file from your currently active + Workload Protection agent rules, and downloads them as a ``.policy`` file. This file can then be deployed to + your agents to update the policy running in your environment. - The download endpoint generates a CSM Threats policy file from your currently active - CSM Threats rules, and downloads them as a ``.policy`` file. This file can then be deployed to - your Agents to update the policy running in your environment. + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :rtype: file_type """ @@ -566,9 +584,11 @@ def get_cloud_workload_security_agent_rule( self, agent_rule_id: str, ) -> CloudWorkloadSecurityAgentRuleResponse: - """Get a Cloud Workload Security Agent rule. + """Get a Workload Protection agent rule (US1-FED). - Get the details of a specific Agent rule + Get the details of a specific agent rule. + + **Note** : This endpoint should only be used for the Government (US1-FED) site. :param agent_rule_id: The ID of the Agent rule :type agent_rule_id: str @@ -583,9 +603,11 @@ def get_csm_threats_agent_policy( self, policy_id: str, ) -> CloudWorkloadSecurityAgentPolicyResponse: - """Get a CSM Threats Agent policy. + """Get a Workload Protection policy. + + Get the details of a specific Workload Protection policy. - Get the details of a specific Cloud Security Management Threats Agent policy + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :param policy_id: The ID of the Agent policy :type policy_id: str @@ -602,9 +624,11 @@ def get_csm_threats_agent_rule( *, policy_id: Union[str, UnsetType] = unset, ) -> CloudWorkloadSecurityAgentRuleResponse: - """Get a CSM Threats Agent rule. + """Get a Workload Protection agent rule. + + Get the details of a specific Workload Protection agent rule. - Get the details of a specific Cloud Security Management Threats Agent rule + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :param agent_rule_id: The ID of the Agent rule :type agent_rule_id: str @@ -623,9 +647,11 @@ def get_csm_threats_agent_rule( def list_cloud_workload_security_agent_rules( self, ) -> CloudWorkloadSecurityAgentRulesListResponse: - """Get all Cloud Workload Security Agent rules. + """Get all Workload Protection agent rules (US1-FED). - Get the list of Agent rules + Get the list of agent rules. + + **Note** : This endpoint should only be used for the Government (US1-FED) site. :rtype: CloudWorkloadSecurityAgentRulesListResponse """ @@ -635,9 +661,11 @@ def list_cloud_workload_security_agent_rules( def list_csm_threats_agent_policies( self, ) -> CloudWorkloadSecurityAgentPoliciesListResponse: - """Get all CSM Threats Agent policies. + """Get all Workload Protection policies. + + Get the list of Workload Protection policies. - Get the list of Cloud Security Management Threats Agent policies + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :rtype: CloudWorkloadSecurityAgentPoliciesListResponse """ @@ -649,9 +677,11 @@ def list_csm_threats_agent_rules( *, policy_id: Union[str, UnsetType] = unset, ) -> CloudWorkloadSecurityAgentRulesListResponse: - """Get all CSM Threats Agent rules. + """Get all Workload Protection agent rules. - Get the list of Cloud Security Management Threats Agent rules + Get the list of Workload Protection agent rules. + + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :param policy_id: The ID of the Agent policy :type policy_id: str, optional @@ -668,14 +698,16 @@ def update_cloud_workload_security_agent_rule( agent_rule_id: str, body: CloudWorkloadSecurityAgentRuleUpdateRequest, ) -> CloudWorkloadSecurityAgentRuleResponse: - """Update a Cloud Workload Security Agent rule. + """Update a Workload Protection agent rule (US1-FED). + + Update a specific agent rule. + Returns the agent rule object when the request is successful. - Update a specific Agent rule. - Returns the Agent rule object when the request is successful. + **Note** : This endpoint should only be used for the Government (US1-FED) site. :param agent_rule_id: The ID of the Agent rule :type agent_rule_id: str - :param body: New definition of the Agent rule + :param body: New definition of the agent rule :type body: CloudWorkloadSecurityAgentRuleUpdateRequest :rtype: CloudWorkloadSecurityAgentRuleResponse """ @@ -691,10 +723,12 @@ def update_csm_threats_agent_policy( policy_id: str, body: CloudWorkloadSecurityAgentPolicyUpdateRequest, ) -> CloudWorkloadSecurityAgentPolicyResponse: - """Update a CSM Threats Agent policy. + """Update a Workload Protection policy. - Update a specific Cloud Security Management Threats Agent policy. - Returns the Agent policy object when the request is successful. + Update a specific Workload Protection policy. + Returns the policy object when the request is successful. + + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :param policy_id: The ID of the Agent policy :type policy_id: str @@ -716,14 +750,16 @@ def update_csm_threats_agent_rule( *, policy_id: Union[str, UnsetType] = unset, ) -> CloudWorkloadSecurityAgentRuleResponse: - """Update a CSM Threats Agent rule. + """Update a Workload Protection agent rule. + + Update a specific Workload Protection Agent rule. + Returns the agent rule object when the request is successful. - Update a specific Cloud Security Management Threats Agent rule. - Returns the Agent rule object when the request is successful. + **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below. :param agent_rule_id: The ID of the Agent rule :type agent_rule_id: str - :param body: New definition of the Agent rule + :param body: New definition of the agent rule :type body: CloudWorkloadSecurityAgentRuleUpdateRequest :param policy_id: The ID of the Agent policy :type policy_id: str, optional diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_bad_request_response.frozen deleted file mode 100644 index 569f1f1897..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_bad_request_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-18T09:10:11.610Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_ok_response.frozen deleted file mode 100644 index 8ad981fd20..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:49.909Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_bad_request_response.frozen deleted file mode 100644 index c290cdbad6..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_bad_request_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-15T09:10:06.353Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_ok_response.frozen deleted file mode 100644 index 3eef66a9c7..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-15T09:10:06.769Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_bad_request_response.frozen deleted file mode 100644 index f989accc05..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_bad_request_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:45.280Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_ok_response.frozen deleted file mode 100644 index d00c1e7e92..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:46.809Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_bad_request_response.frozen new file mode 100644 index 0000000000..62c7b3ab99 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:16.685Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_bad_request_response.yaml similarity index 66% rename from tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_bad_request_response.yaml rename to tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_bad_request_response.yaml index 2f59d9aef3..6d829b613e 100644 --- a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_bad_request_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_bad_request_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testcreateacsmthreatsagentrulereturnsbadrequestresponse1743517845"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testcreateaworkloadprotectionagentrulereturnsbadrequestresponse1747319656"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"mrs-qdn-jq8","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testcreateacsmthreatsagentrulereturnsbadrequestresponse1743517845","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517845323,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"osv-oeh-is6","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testcreateaworkloadprotectionagentrulereturnsbadrequestresponse1747319656","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319656764,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -20,7 +19,7 @@ interactions: code: 200 message: OK - request: - body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name","filters":[],"name":"my_agent_rule","policy_id":"mrs-qdn-jq8","product_tags":[]},"type":"agent_rule"}}' + body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name","filters":[],"name":"my_agent_rule","policy_id":"osv-oeh-is6","product_tags":[]},"type":"agent_rule"}}' headers: accept: - application/json @@ -30,8 +29,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules response: body: - string: '{"errors":["input_validation_error(Field ''name'' is invalid: rule - `my_agent_rule` error: multiple definition with the same ID)"]}' + string: '{"errors":["input_validation_error(Field ''expression'' is invalid: + rule `my_agent_rule` error: rule syntax error: bool expected: 1:1: exec.file.name\n^)"]}' headers: content-type: - application/json @@ -44,7 +43,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/mrs-qdn-jq8 + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/osv-oeh-is6 response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_ok_response.frozen new file mode 100644 index 0000000000..a314ca8b04 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:18.040Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_ok_response.yaml similarity index 62% rename from tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_ok_response.yaml index 77000c7039..cdfbcff2c7 100644 --- a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_rule_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_returns_ok_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testcreateacsmthreatsagentrulereturnsokresponse1743517846"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testcreateaworkloadprotectionagentrulereturnsokresponse1747319658"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"eeq-02h-jhh","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testcreateacsmthreatsagentrulereturnsokresponse1743517846","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517846856,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"7rg-8sh-bnx","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testcreateaworkloadprotectionagentrulereturnsokresponse1747319658","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319658110,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -21,7 +20,7 @@ interactions: message: OK - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","filters":[],"name":"testcreateacsmthreatsagentrulereturnsokresponse1743517846","policy_id":"eeq-02h-jhh","product_tags":[]},"type":"agent_rule"}}' + == \"sh\"","filters":[],"name":"testcreateaworkloadprotectionagentrulereturnsokresponse1747319658","policy_id":"7rg-8sh-bnx","product_tags":[]},"type":"agent_rule"}}' headers: accept: - application/json @@ -31,11 +30,10 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules response: body: - string: '{"data":{"id":"ree-4gw-dk6","type":"agent_rule","attributes":{"category":"Process - Activity","creationDate":1743517847344,"creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"defaultRule":false,"description":"My + string: '{"data":{"id":"kkx-har-lqe","type":"agent_rule","attributes":{"category":"Process + Activity","creationDate":1747319658762,"creator":{"name":"frog","handle":"frog@datadoghq.com"},"defaultRule":false,"description":"My Agent rule","enabled":true,"expression":"exec.file.name == \"sh\"","filters":["os - == \"linux\""],"name":"testcreateacsmthreatsagentrulereturnsokresponse1743517846","updateDate":1743517847344,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + == \"linux\""],"monitoring":["7rg-8sh-bnx"],"name":"testcreateaworkloadprotectionagentrulereturnsokresponse1747319658","product_tags":[],"updateDate":1747319658762,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -48,7 +46,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/ree-4gw-dk6 + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/kkx-har-lqe response: body: string: '' @@ -64,7 +62,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/eeq-02h-jhh + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/7rg-8sh-bnx response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.frozen new file mode 100644 index 0000000000..b9cc1be267 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:13.434Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.yaml similarity index 77% rename from tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_bad_request_response.yaml rename to tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.yaml index dc081978ae..e4d7d40e93 100644 --- a/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_bad_request_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testcreateacloudworkloadsecurityagentrulereturnsbadrequestresponse1744967411"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testcreateaworkloadprotectionagentruleus1fedreturnsbadrequestresponse1747319653"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"byc-7rh-p5l","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testcreateacloudworkloadsecurityagentrulereturnsbadrequestresponse1744967411","policyVersion":"1","priority":1000000002,"ruleCount":226,"updateDate":1744967411964,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"g5s-mcw-glz","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testcreateaworkloadprotectionagentruleus1fedreturnsbadrequestresponse1747319653","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319653551,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -46,7 +45,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/byc-7rh-p5l + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/g5s-mcw-glz response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen new file mode 100644 index 0000000000..250382047a --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:15.063Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml similarity index 59% rename from tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml index 49b049d4fb..3e4358bdd1 100644 --- a/tests/v2/cassettes/test_scenarios/test_create_a_cloud_workload_security_agent_rule_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testcreateacloudworkloadsecurityagentrulereturnsokresponse1743517849"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testcreateaworkloadprotectionagentruleus1fedreturnsokresponse1747319655"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"4o4-2ha-t4b","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testcreateacloudworkloadsecurityagentrulereturnsokresponse1743517849","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517849954,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"b9a-gus-q1b","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testcreateaworkloadprotectionagentruleus1fedreturnsokresponse1747319655","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319655148,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -21,7 +20,7 @@ interactions: message: OK - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","filters":[],"name":"testcreateacloudworkloadsecurityagentrulereturnsokresponse1743517849"},"type":"agent_rule"}}' + == \"sh\"","filters":[],"name":"testcreateaworkloadprotectionagentruleus1fedreturnsokresponse1747319655"},"type":"agent_rule"}}' headers: accept: - application/json @@ -31,10 +30,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules response: body: - string: '{"data":{"id":"amk-lsa-s1q","attributes":{"version":1,"name":"testcreateacloudworkloadsecurityagentrulereturnsokresponse1743517849","description":"My - Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","creationDate":1743517850483,"updateAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","updateDate":1743517850483,"filters":[],"actions":[],"agentConstraint":"","creator":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}},"type":"agent_rule"}} + string: '{"data":{"id":"wjj-lvq-owq","attributes":{"version":1,"name":"testcreateaworkloadprotectionagentruleus1fedreturnsokresponse1747319655","description":"My + Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","creationDate":1747319655964,"updateAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","updateDate":1747319655964,"filters":[],"actions":[],"agentConstraint":"","creator":{"name":"frog","handle":"frog@datadoghq.com"},"updater":{"name":"frog","handle":"frog@datadoghq.com"}},"type":"agent_rule"}} ' headers: @@ -49,7 +46,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/amk-lsa-s1q + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/wjj-lvq-owq response: body: string: '' @@ -63,7 +60,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/4o4-2ha-t4b + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/b9a-gus-q1b response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_bad_request_response.frozen new file mode 100644 index 0000000000..a49e820164 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:21.087Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_bad_request_response.yaml similarity index 77% rename from tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_bad_request_response.yaml rename to tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_bad_request_response.yaml index 834439eb27..0c6bd7a45d 100644 --- a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_bad_request_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_bad_request_response.yaml @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"errors":[{"title":"failed to create policy"}]} - - ' + string: '{"errors":["input_validation_error(Field ''tags'' is invalid: cannot + have both the new and the legacy field populated)"]}' headers: content-type: - application/json diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_ok_response.frozen new file mode 100644 index 0000000000..cc767179ee --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:21.256Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_ok_response.yaml similarity index 78% rename from tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_ok_response.yaml index fe193f74fe..72816b4660 100644 --- a/tests/v2/cassettes/test_scenarios/test_create_a_csm_threats_agent_policy_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_create_a_workload_protection_policy_returns_ok_response.yaml @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"4op-0bb-yom","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTagsLists":[["env:test"]],"monitoringRulesCount":225,"name":"my_agent_policy","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1744708206895,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"krx-hib-ibo","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTagsLists":[["env:test"]],"monitoringRulesCount":225,"name":"my_agent_policy","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319661338,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -25,7 +24,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/4op-0bb-yom + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/krx-hib-ibo response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen deleted file mode 100644 index c943cdfcd9..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:54.389Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_ok_response.frozen deleted file mode 100644 index 5d92123426..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-18T09:10:13.237Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_not_found_response.frozen deleted file mode 100644 index 2907715a1f..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:50.953Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_ok_response.frozen deleted file mode 100644 index b90ca64b48..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:51.116Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_not_found_response.frozen deleted file mode 100644 index 9c683d57fe..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:52.038Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_ok_response.frozen deleted file mode 100644 index 369e24ad10..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:52.133Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_not_found_response.frozen new file mode 100644 index 0000000000..7a9c4ab30c --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:22.985Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_not_found_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_not_found_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_ok_response.frozen new file mode 100644 index 0000000000..3933aefa33 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:23.358Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_ok_response.yaml similarity index 64% rename from tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_ok_response.yaml index e3d49c1bb2..f90a815f4d 100644 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_rule_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_returns_ok_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testdeleteacsmthreatsagentrulereturnsokresponse1743517852"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testdeleteaworkloadprotectionagentrulereturnsokresponse1747319663"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"kqm-fhb-eay","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testdeleteacsmthreatsagentrulereturnsokresponse1743517852","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517852178,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"hea-hly-nmh","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testdeleteaworkloadprotectionagentrulereturnsokresponse1747319663","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319663455,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -21,7 +20,7 @@ interactions: message: OK - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","name":"testdeleteacsmthreatsagentrulereturnsokresponse1743517852","policy_id":"kqm-fhb-eay","product_tags":["security:attack","technique:T1059"]},"type":"agent_rule"}}' + == \"sh\"","name":"testdeleteaworkloadprotectionagentrulereturnsokresponse1747319663","policy_id":"hea-hly-nmh","product_tags":["security:attack","technique:T1059"]},"type":"agent_rule"}}' headers: accept: - application/json @@ -31,11 +30,10 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules response: body: - string: '{"data":{"id":"pjy-nkm-0wb","type":"agent_rule","attributes":{"category":"Process - Activity","creationDate":1743517852458,"creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"defaultRule":false,"description":"My + string: '{"data":{"id":"e3n-gsi-qxc","type":"agent_rule","attributes":{"category":"Process + Activity","creationDate":1747319663941,"creator":{"name":"frog","handle":"frog@datadoghq.com"},"defaultRule":false,"description":"My Agent rule","enabled":true,"expression":"exec.file.name == \"sh\"","filters":["os - == \"linux\""],"name":"testdeleteacsmthreatsagentrulereturnsokresponse1743517852","updateDate":1743517852458,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + == \"linux\""],"monitoring":["hea-hly-nmh"],"name":"testdeleteaworkloadprotectionagentrulereturnsokresponse1747319663","product_tags":["security:attack","technique:T1059"],"updateDate":1747319663941,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -48,7 +46,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/pjy-nkm-0wb?policy_id=kqm-fhb-eay + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/e3n-gsi-qxc?policy_id=hea-hly-nmh response: body: string: '' @@ -64,7 +62,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/pjy-nkm-0wb + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/e3n-gsi-qxc response: body: string: '{"errors":[{"title":"failed to delete rule"}]} @@ -82,7 +80,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/kqm-fhb-eay + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/hea-hly-nmh response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen new file mode 100644 index 0000000000..f13edf5114 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:22.259Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_not_found_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_not_found_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen new file mode 100644 index 0000000000..bf9b8f24ca --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:22.399Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml similarity index 62% rename from tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml index cfd6ea666e..a65486cbab 100644 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_cloud_workload_security_agent_rule_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","name":"testdeleteacloudworkloadsecurityagentrulereturnsokresponse1744967413"},"type":"agent_rule"}}' + == \"sh\"","name":"testdeleteaworkloadprotectionagentruleus1fedreturnsokresponse1747319662"},"type":"agent_rule"}}' headers: accept: - application/json @@ -11,10 +11,9 @@ interactions: uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules response: body: - string: '{"data":{"id":"ghk-tsf-neq","attributes":{"version":1,"name":"testdeleteacloudworkloadsecurityagentrulereturnsokresponse1744967413","description":"My - Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","creationDate":1744967413434,"updateAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","updateDate":1744967413434,"filters":["os - == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}},"type":"agent_rule"}} + string: '{"data":{"id":"car-hil-x1c","attributes":{"version":1,"name":"testdeleteaworkloadprotectionagentruleus1fedreturnsokresponse1747319662","description":"My + Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","creationDate":1747319662646,"updateAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","updateDate":1747319662646,"filters":["os + == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"frog","handle":"frog@datadoghq.com"},"updater":{"name":"frog","handle":"frog@datadoghq.com"}},"type":"agent_rule"}} ' headers: @@ -29,7 +28,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/ghk-tsf-neq + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/car-hil-x1c response: body: string: '' @@ -43,10 +42,10 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/ghk-tsf-neq + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/car-hil-x1c response: body: - string: '{"errors":["not_found(Agent rule not found: agentRuleId=ghk-tsf-neq)"]} + string: '{"errors":["not_found(Agent rule not found: agentRuleId=car-hil-x1c)"]} ' headers: diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_not_found_response.frozen new file mode 100644 index 0000000000..43f54834f3 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:26.783Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_not_found_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_not_found_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_ok_response.frozen new file mode 100644 index 0000000000..cc5ff23fd0 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:27.017Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_ok_response.yaml similarity index 72% rename from tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_ok_response.yaml index 4205c0f83c..b220a6fceb 100644 --- a/tests/v2/cassettes/test_scenarios/test_delete_a_csm_threats_agent_policy_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_workload_protection_policy_returns_ok_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testdeleteacsmthreatsagentpolicyreturnsokresponse1743517851"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testdeleteaworkloadprotectionpolicyreturnsokresponse1747319667"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"794-4tf-osj","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testdeleteacsmthreatsagentpolicyreturnsokresponse1743517851","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517851168,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"koo-gxa-p0y","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testdeleteaworkloadprotectionpolicyreturnsokresponse1747319667","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319667081,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -25,7 +24,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/794-4tf-osj + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/koo-gxa-p0y response: body: string: '' @@ -41,7 +40,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/794-4tf-osj + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/koo-gxa-p0y response: body: string: '{"errors":[{"title":"failed to delete policy"}]} diff --git a/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_returns_ok_response.frozen new file mode 100644 index 0000000000..7b0be83930 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:28.720Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_returns_ok_response.yaml new file mode 100644 index 0000000000..21300285cf --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_returns_ok_response.yaml @@ -0,0 +1,18 @@ +interactions: +- request: + body: null + headers: + accept: + - application/zip, application/json + method: GET + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/download + response: + body: + string: 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 + headers: + content-type: + - application/zip + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_us1fed_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_us1fed_returns_ok_response.frozen new file mode 100644 index 0000000000..e026afc4ac --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_us1fed_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:28.255Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_the_latest_cloud_workload_security_policy_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_us1fed_returns_ok_response.yaml similarity index 99% rename from tests/v2/cassettes/test_scenarios/test_get_the_latest_cloud_workload_security_policy_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_us1fed_returns_ok_response.yaml index d4ef693d9c..8cf8abc6c2 100644 --- a/tests/v2/cassettes/test_scenarios/test_get_the_latest_cloud_workload_security_policy_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_download_the_workload_protection_policy_us1fed_returns_ok_response.yaml @@ -10,7 +10,7 @@ interactions: body: string: "# IMPORTANT: Edits to this file will not be reflected in the Datadog\ \ App and will be overwritten with new policy file downloads. Please modify\ - \ rules in the Datadog App for full functionality.\nversion: '1743517859524'\n\ + \ rules in the Datadog App for full functionality.\nversion: '1747319668469'\n\ rules:\n- id: apparmor_modified_tty\n version: a7f3b5c2\n description: An\ \ AppArmor profile was modified in an interactive session\n expression: exec.file.name\ \ in [\"aa-disable\", \"aa-complain\", \"aa-audit\"] && exec.tty_name\n \ diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen deleted file mode 100644 index 881abb7569..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:58.452Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_ok_response.frozen deleted file mode 100644 index 72cbb497c8..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-18T09:10:13.933Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_not_found_response.frozen deleted file mode 100644 index 24a790d0a6..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:54.462Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_ok_response.frozen deleted file mode 100644 index 76a8312837..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:54.711Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_not_found_response.frozen deleted file mode 100644 index a632857145..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:55.749Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_ok_response.frozen deleted file mode 100644 index 5c69286972..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:56.067Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_not_found_response.frozen new file mode 100644 index 0000000000..6e36c7f173 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:30.237Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_not_found_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_not_found_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_ok_response.frozen new file mode 100644 index 0000000000..737ef57156 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:30.450Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_ok_response.yaml similarity index 57% rename from tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_ok_response.yaml index 4ac7dd1dd6..7efe30037a 100644 --- a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_rule_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_returns_ok_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testgetacsmthreatsagentrulereturnsokresponse1743517856"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testgetaworkloadprotectionagentrulereturnsokresponse1747319670"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"lxh-tyq-n9u","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testgetacsmthreatsagentrulereturnsokresponse1743517856","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517856115,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"1it-bne-ftb","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testgetaworkloadprotectionagentrulereturnsokresponse1747319670","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319670515,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -21,7 +20,7 @@ interactions: message: OK - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","name":"testgetacsmthreatsagentrulereturnsokresponse1743517856","policy_id":"lxh-tyq-n9u","product_tags":["security:attack","technique:T1059"]},"type":"agent_rule"}}' + == \"sh\"","name":"testgetaworkloadprotectionagentrulereturnsokresponse1747319670","policy_id":"1it-bne-ftb","product_tags":["security:attack","technique:T1059"]},"type":"agent_rule"}}' headers: accept: - application/json @@ -31,11 +30,10 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules response: body: - string: '{"data":{"id":"k1m-gqh-zqm","type":"agent_rule","attributes":{"category":"Process - Activity","creationDate":1743517856488,"creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"defaultRule":false,"description":"My + string: '{"data":{"id":"23k-ekw-ia2","type":"agent_rule","attributes":{"category":"Process + Activity","creationDate":1747319671106,"creator":{"name":"frog","handle":"frog@datadoghq.com"},"defaultRule":false,"description":"My Agent rule","enabled":true,"expression":"exec.file.name == \"sh\"","filters":["os - == \"linux\""],"name":"testgetacsmthreatsagentrulereturnsokresponse1743517856","updateDate":1743517856488,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + == \"linux\""],"monitoring":["1it-bne-ftb"],"name":"testgetaworkloadprotectionagentrulereturnsokresponse1747319670","product_tags":["security:attack","technique:T1059"],"updateDate":1747319671106,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -48,14 +46,13 @@ interactions: accept: - application/json method: GET - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/k1m-gqh-zqm?policy_id=lxh-tyq-n9u + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/23k-ekw-ia2?policy_id=1it-bne-ftb response: body: - string: '{"data":{"id":"k1m-gqh-zqm","type":"agent_rule","attributes":{"category":"Process - Activity","creationDate":1743517856000,"creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"defaultRule":false,"description":"My + string: '{"data":{"id":"23k-ekw-ia2","type":"agent_rule","attributes":{"category":"Process + Activity","creationDate":1747319671106,"creator":{"name":"frog","handle":"frog@datadoghq.com"},"defaultRule":false,"description":"My Agent rule","enabled":true,"expression":"exec.file.name == \"sh\"","filters":["os - == \"linux\""],"name":"testgetacsmthreatsagentrulereturnsokresponse1743517856","updateDate":1743517856000,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + == \"linux\""],"monitoring":["1it-bne-ftb"],"name":"testgetaworkloadprotectionagentrulereturnsokresponse1747319670","product_tags":["security:attack","technique:T1059"],"updateDate":1747319671106,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -68,7 +65,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/k1m-gqh-zqm + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/23k-ekw-ia2 response: body: string: '' @@ -84,7 +81,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/lxh-tyq-n9u + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/1it-bne-ftb response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen new file mode 100644 index 0000000000..55b4f08607 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:29.126Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_not_found_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_not_found_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen new file mode 100644 index 0000000000..be1db65e68 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:29.280Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml similarity index 52% rename from tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml index 54caaf65e1..6c892eee2b 100644 --- a/tests/v2/cassettes/test_scenarios/test_get_a_cloud_workload_security_agent_rule_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","name":"testgetacloudworkloadsecurityagentrulereturnsokresponse1744967413"},"type":"agent_rule"}}' + == \"sh\"","name":"testgetaworkloadprotectionagentruleus1fedreturnsokresponse1747319669"},"type":"agent_rule"}}' headers: accept: - application/json @@ -11,10 +11,9 @@ interactions: uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules response: body: - string: '{"data":{"id":"ajb-znb-t3g","attributes":{"version":1,"name":"testgetacloudworkloadsecurityagentrulereturnsokresponse1744967413","description":"My - Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","creationDate":1744967414208,"updateAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","updateDate":1744967414208,"filters":["os - == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}},"type":"agent_rule"}} + string: '{"data":{"id":"edf-58c-lqp","attributes":{"version":1,"name":"testgetaworkloadprotectionagentruleus1fedreturnsokresponse1747319669","description":"My + Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","creationDate":1747319669780,"updateAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","updateDate":1747319669780,"filters":["os + == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"frog","handle":"frog@datadoghq.com"},"updater":{"name":"frog","handle":"frog@datadoghq.com"}},"type":"agent_rule"}} ' headers: @@ -29,13 +28,12 @@ interactions: accept: - application/json method: GET - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/ajb-znb-t3g + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/edf-58c-lqp response: body: - string: '{"data":{"id":"ajb-znb-t3g","attributes":{"version":1,"name":"testgetacloudworkloadsecurityagentrulereturnsokresponse1744967413","description":"My - Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","creationDate":1744967414208,"updateAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","updateDate":1744967414208,"filters":["os - == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}},"type":"agent_rule"}} + string: '{"data":{"id":"edf-58c-lqp","attributes":{"version":1,"name":"testgetaworkloadprotectionagentruleus1fedreturnsokresponse1747319669","description":"My + Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","creationDate":1747319669780,"updateAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","updateDate":1747319669780,"filters":["os + == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"frog","handle":"frog@datadoghq.com"},"updater":{"name":"frog","handle":"frog@datadoghq.com"}},"type":"agent_rule"}} ' headers: @@ -50,7 +48,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/ajb-znb-t3g + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/edf-58c-lqp response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_not_found_response.frozen new file mode 100644 index 0000000000..10324acfbc --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:33.565Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_not_found_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_not_found_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_ok_response.frozen new file mode 100644 index 0000000000..41f5045761 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:33.775Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_ok_response.yaml similarity index 64% rename from tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_ok_response.yaml index 34f06733d3..1096819227 100644 --- a/tests/v2/cassettes/test_scenarios/test_get_a_csm_threats_agent_policy_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_get_a_workload_protection_policy_returns_ok_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testgetacsmthreatsagentpolicyreturnsokresponse1743517854"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testgetaworkloadprotectionpolicyreturnsokresponse1747319673"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"egv-qkr-ihb","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testgetacsmthreatsagentpolicyreturnsokresponse1743517854","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517854753,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"6zj-1yv-myk","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testgetaworkloadprotectionpolicyreturnsokresponse1747319673","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319673849,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -25,12 +24,11 @@ interactions: accept: - application/json method: GET - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/egv-qkr-ihb + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/6zj-1yv-myk response: body: - string: '{"data":{"id":"egv-qkr-ihb","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testgetacsmthreatsagentpolicyreturnsokresponse1743517854","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517854753,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"6zj-1yv-myk","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testgetaworkloadprotectionpolicyreturnsokresponse1747319673","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319673849,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -43,7 +41,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/egv-qkr-ihb + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/6zj-1yv-myk response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_cloud_workload_security_agent_rules_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_all_cloud_workload_security_agent_rules_returns_ok_response.frozen deleted file mode 100644 index a1b59dc82f..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_all_cloud_workload_security_agent_rules_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:58.973Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_policies_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_policies_returns_ok_response.frozen deleted file mode 100644 index 8fe4f3f193..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_policies_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:58.530Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_policies_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_policies_returns_ok_response.yaml deleted file mode 100644 index 63dc55766e..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_policies_returns_ok_response.yaml +++ /dev/null @@ -1,20 +0,0 @@ -interactions: -- request: - body: null - headers: - accept: - - application/json - method: GET - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy - response: - body: - string: '{"data":[{"id":"CWS_CUSTOM-canary","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"disabledRulesCount":1,"enabled":false,"hostTags":[],"monitoringRulesCount":418,"name":"Datadog - Managed Policy","policyVersion":"53221","priority":1000000000,"ruleCount":419,"updateDate":1742473183000,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"CWS_DD","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":true,"disabledRulesCount":1,"enabled":true,"monitoringRulesCount":225,"name":"Datadog - Managed Policy","policyVersion":"1.40.0-rc76","priority":0,"ruleCount":226,"updateDate":1737661272000,"updater":{"name":"Datadog","handle":""}}}]}' - headers: - content-type: - - application/json - status: - code: 200 - message: OK -version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_rules_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_returns_ok_response.frozen similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_rules_returns_ok_response.frozen rename to tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_returns_ok_response.frozen diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_rules_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_returns_ok_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_get_all_csm_threats_agent_rules_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_returns_ok_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_us1fed_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_us1fed_returns_ok_response.frozen new file mode 100644 index 0000000000..fc418fa6e9 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_us1fed_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:34.919Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_cloud_workload_security_agent_rules_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_us1fed_returns_ok_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_get_all_cloud_workload_security_agent_rules_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_agent_rules_us1fed_returns_ok_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_policies_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_policies_returns_ok_response.frozen new file mode 100644 index 0000000000..258a7be802 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_policies_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:50.303Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_policies_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_policies_returns_ok_response.yaml new file mode 100644 index 0000000000..efb5562a32 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_all_workload_protection_policies_returns_ok_response.yaml @@ -0,0 +1,48 @@ +interactions: +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy + response: + body: + string: '{"data":[{"id":"gxu-c6v-pka","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplegetacsmthreatsagentrulereturnsokresponse1747260251","policyVersion":"2","priority":1000000069,"ruleCount":227,"updateDate":1747260252444,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"1os-ptz-he9","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplegetacsmthreatsagentrulereturnsokresponse1747217050","policyVersion":"2","priority":1000000066,"ruleCount":227,"updateDate":1747217052175,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"ddu-dat-9cx","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplegetacsmthreatsagentrulereturnsokresponse1747188251","policyVersion":"2","priority":1000000061,"ruleCount":227,"updateDate":1747188252541,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"oiv-iar-6uj","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplecreateacsmthreatsagentrulereturnsokresponse1747188247","policyVersion":"3","priority":1000000058,"ruleCount":226,"updateDate":1747188247541,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"n6v-uoj-6jv","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"exampledeleteacsmthreatsagentrulereturnsokresponse1747173848","policyVersion":"3","priority":1000000056,"ruleCount":226,"updateDate":1747173848994,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"zay-klh-gzk","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplecreateacloudworkloadsecurityagentrulereturnsokresponse1747145048","policyVersion":"1","priority":1000000053,"ruleCount":226,"updateDate":1747145052780,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"t0c-318-ksc","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplecreateacloudworkloadsecurityagentrulereturnsokresponse1747130648","policyVersion":"1","priority":1000000048,"ruleCount":226,"updateDate":1747130648466,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"mnq-jea-ord","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplegetacsmthreatsagentrulereturnsokresponse1747116251","policyVersion":"3","priority":1000000045,"ruleCount":226,"updateDate":1747116251418,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"hjq-1ou-gxj","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplecreateacloudworkloadsecurityagentrulereturnsokresponse1747116248","policyVersion":"1","priority":1000000044,"ruleCount":226,"updateDate":1747116249173,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"zt3-q2u-xka","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplegetacsmthreatsagentrulereturnsokresponse1747058651","policyVersion":"2","priority":1000000041,"ruleCount":227,"updateDate":1747058653022,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"n52-kmk-gy5","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplecreateacsmthreatsagentrulereturnsokresponse1747058647","policyVersion":"2","priority":1000000039,"ruleCount":227,"updateDate":1747058651011,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"lwi-ota-cdp","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplecreateacsmthreatsagentrulereturnsokresponse1747029847","policyVersion":"2","priority":1000000037,"ruleCount":227,"updateDate":1747029850531,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"eme-xsc-20m","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplegetacsmthreatsagentrulereturnsokresponse1747001050","policyVersion":"2","priority":1000000035,"ruleCount":227,"updateDate":1747001052678,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"acr-3t9-p0d","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplecreateacloudworkloadsecurityagentrulereturnsokresponse1747001048","policyVersion":"1","priority":1000000033,"ruleCount":226,"updateDate":1747001048728,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"hw2-pev-bdl","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplegetacsmthreatsagentrulereturnsokresponse1746986651","policyVersion":"3","priority":1000000030,"ruleCount":226,"updateDate":1746986651360,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"mm8-gf5-1mh","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"exampledeleteacsmthreatsagentrulereturnsokresponse1746986648","policyVersion":"3","priority":1000000029,"ruleCount":226,"updateDate":1746986649139,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"wfe-tga-w8i","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplecreateacloudworkloadsecurityagentrulereturnsokresponse1746943448","policyVersion":"1","priority":1000000025,"ruleCount":226,"updateDate":1746943448597,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"kz9-gsr-aet","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"exampledeleteacsmthreatsagentrulereturnsokresponse1746929048","policyVersion":"3","priority":1000000022,"ruleCount":226,"updateDate":1746929049088,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"u2n-mby-zu5","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplegetacsmthreatsagentpolicyreturnsokresponse1746914646","policyVersion":"1","priority":1000000018,"ruleCount":226,"updateDate":1746914646907,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"ygu-bj5-cnb","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplegetacsmthreatsagentrulereturnsokresponse1746900250","policyVersion":"2","priority":1000000017,"ruleCount":227,"updateDate":1746900252089,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"8h9-6l9-ofq","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"exampledeleteacsmthreatsagentrulereturnsokresponse1746885848","policyVersion":"3","priority":1000000012,"ruleCount":226,"updateDate":1746885849173,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"x6i-kv0-iby","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplecreateacloudworkloadsecurityagentrulereturnsokresponse1746871448","policyVersion":"1","priority":1000000009,"ruleCount":226,"updateDate":1746871448758,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"wry-lqz-m1l","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplegetacsmthreatsagentpolicyreturnsokresponse1746842646","policyVersion":"1","priority":1000000006,"ruleCount":226,"updateDate":1746842646921,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"ljy-djc-pxw","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":226,"name":"examplecreateacsmthreatsagentrulereturnsokresponse1746828247","policyVersion":"2","priority":1000000005,"ruleCount":227,"updateDate":1746828252931,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"kmt-lzi-f6r","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"examplegetacsmthreatsagentpolicyreturnsokresponse1746813847","policyVersion":"1","priority":1000000003,"ruleCount":226,"updateDate":1746813847517,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}},{"id":"CWS_CUSTOM-canary","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"disabledRulesCount":2,"enabled":false,"monitoringRulesCount":491,"name":"Datadog + Managed Policy","policyVersion":"58197","priority":1000000002,"ruleCount":493,"updateDate":1746789273109,"updater":{"name":"CI + Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}},{"id":"hdo-seh-iaa","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateacsmthreatsagentrulereturnsokresponse1744718519","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1744718520126,"updater":{"name":"CI + Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}},{"id":"CWS_DD","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":true,"disabledRulesCount":1,"enabled":true,"monitoringRulesCount":225,"name":"Datadog + Managed Policy","policyVersion":"1.43.0-rc80","priority":0,"ruleCount":226,"updateDate":1742407951000,"updater":{"name":"Datadog","handle":""}}}]}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_the_latest_cloud_workload_security_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_the_latest_cloud_workload_security_policy_returns_ok_response.frozen deleted file mode 100644 index f0de7ad598..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_the_latest_cloud_workload_security_policy_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:59.438Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_the_latest_csm_threats_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_the_latest_csm_threats_policy_returns_ok_response.frozen deleted file mode 100644 index 9c2278bbc1..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_the_latest_csm_threats_policy_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:30:59.240Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_the_latest_csm_threats_policy_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_the_latest_csm_threats_policy_returns_ok_response.yaml deleted file mode 100644 index 08ee4a7ce1..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_the_latest_csm_threats_policy_returns_ok_response.yaml +++ /dev/null @@ -1,18 +0,0 @@ -interactions: -- request: - body: null - headers: - accept: - - application/zip, application/json - method: GET - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/download - response: - body: - string: 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 - headers: - content-type: - - application/zip - status: - code: 200 - message: OK -version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_bad_request_response.frozen deleted file mode 100644 index 36ea0d2609..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_bad_request_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-18T09:10:14.669Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen deleted file mode 100644 index 30a73c79d2..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-18T09:45:20.422Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_ok_response.frozen deleted file mode 100644 index 0ad336788e..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-18T09:10:15.690Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_bad_request_response.frozen deleted file mode 100644 index 27be8fe236..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_bad_request_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-15T09:10:08.098Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_not_found_response.frozen deleted file mode 100644 index 435b652a26..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:31:00.854Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_ok_response.frozen deleted file mode 100644 index 562f84a677..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-15T09:10:09.401Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_bad_request_response.frozen deleted file mode 100644 index 12d907c5d0..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_bad_request_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-15T09:10:11.192Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_not_found_response.frozen deleted file mode 100644 index 1a52f175ee..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_not_found_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:31:02.941Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_ok_response.frozen deleted file mode 100644 index 4dd297f02f..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-04-01T14:31:03.998Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_ok_response.yaml deleted file mode 100644 index 0b916c1503..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_ok_response.yaml +++ /dev/null @@ -1,100 +0,0 @@ -interactions: -- request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateacsmthreatsagentrulereturnsokresponse1743517863"},"type":"policy"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: POST - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy - response: - body: - string: '{"data":{"id":"evg-ugc-rb3","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateacsmthreatsagentrulereturnsokresponse1743517863","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517864028,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' - headers: - content-type: - - application/json - status: - code: 200 - message: OK -- request: - body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","name":"testupdateacsmthreatsagentrulereturnsokresponse1743517863","policy_id":"evg-ugc-rb3","product_tags":["security:attack","technique:T1059"]},"type":"agent_rule"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: POST - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules - response: - body: - string: '{"data":{"id":"pqr-gh6-gj4","type":"agent_rule","attributes":{"category":"Process - Activity","creationDate":1743517864391,"creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"defaultRule":false,"description":"My - Agent rule","enabled":true,"expression":"exec.file.name == \"sh\"","filters":["os - == \"linux\""],"name":"testupdateacsmthreatsagentrulereturnsokresponse1743517863","updateDate":1743517864391,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' - headers: - content-type: - - application/json - status: - code: 200 - message: OK -- request: - body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","policy_id":"evg-ugc-rb3","product_tags":[]},"id":"pqr-gh6-gj4","type":"agent_rule"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: PATCH - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/pqr-gh6-gj4?policy_id=evg-ugc-rb3 - response: - body: - string: '{"data":{"id":"pqr-gh6-gj4","type":"agent_rule","attributes":{"category":"Process - Activity","creationDate":1743517864000,"creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"defaultRule":false,"description":"My - Agent rule","enabled":true,"expression":"exec.file.name == \"sh\"","filters":["os - == \"linux\""],"name":"testupdateacsmthreatsagentrulereturnsokresponse1743517863","updateDate":1743517865118,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' - headers: - content-type: - - application/json - status: - code: 200 - message: OK -- request: - body: null - headers: - accept: - - '*/*' - method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/pqr-gh6-gj4 - response: - body: - string: '' - headers: - content-type: - - application/json - status: - code: 204 - message: No Content -- request: - body: null - headers: - accept: - - '*/*' - method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/evg-ugc-rb3 - response: - body: - string: '' - headers: - content-type: - - application/json - status: - code: 204 - message: No Content -version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_bad_request_response.frozen new file mode 100644 index 0000000000..12d86b4a88 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:52.248Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_bad_request_response.yaml similarity index 65% rename from tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_bad_request_response.yaml rename to tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_bad_request_response.yaml index b8ce03a46f..6e1b460cf9 100644 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_bad_request_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_bad_request_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateacsmthreatsagentrulereturnsbadrequestresponse1744708211"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateaworkloadprotectionagentrulereturnsbadrequestresponse1747319692"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"1i5-k3r-2dg","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateacsmthreatsagentrulereturnsbadrequestresponse1744708211","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1744708211304,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"cas-zuo-dud","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateaworkloadprotectionagentrulereturnsbadrequestresponse1747319692","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319692308,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -21,7 +20,7 @@ interactions: message: OK - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","name":"testupdateacsmthreatsagentrulereturnsbadrequestresponse1744708211","policy_id":"1i5-k3r-2dg","product_tags":["security:attack","technique:T1059"]},"type":"agent_rule"}}' + == \"sh\"","name":"testupdateaworkloadprotectionagentrulereturnsbadrequestresponse1747319692","policy_id":"cas-zuo-dud","product_tags":["security:attack","technique:T1059"]},"type":"agent_rule"}}' headers: accept: - application/json @@ -31,11 +30,10 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules response: body: - string: '{"data":{"id":"qtl-8mk-8gy","type":"agent_rule","attributes":{"category":"Process - Activity","creationDate":1744708211716,"creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"defaultRule":false,"description":"My + string: '{"data":{"id":"sa6-p9i-qqx","type":"agent_rule","attributes":{"category":"Process + Activity","creationDate":1747319692771,"creator":{"name":"frog","handle":"frog@datadoghq.com"},"defaultRule":false,"description":"My Agent rule","enabled":true,"expression":"exec.file.name == \"sh\"","filters":["os - == \"linux\""],"name":"testupdateacsmthreatsagentrulereturnsbadrequestresponse1744708211","updateDate":1744708211716,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + == \"linux\""],"monitoring":["cas-zuo-dud"],"name":"testupdateaworkloadprotectionagentrulereturnsbadrequestresponse1747319692","product_tags":["security:attack","technique:T1059"],"updateDate":1747319692771,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -44,14 +42,14 @@ interactions: message: OK - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","policy_id":"1i5-k3r-2dg","product_tags":[]},"id":"invalid-agent-rule-id","type":"agent_rule"}}' + == \"sh\"","policy_id":"cas-zuo-dud","product_tags":[]},"id":"invalid-agent-rule-id","type":"agent_rule"}}' headers: accept: - application/json content-type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/qtl-8mk-8gy + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/sa6-p9i-qqx response: body: string: '{"errors":[{"title":"failed to update rule"}]} @@ -69,7 +67,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/qtl-8mk-8gy + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/agent_rules/sa6-p9i-qqx response: body: string: '' @@ -85,7 +83,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/1i5-k3r-2dg + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/cas-zuo-dud response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_not_found_response.frozen new file mode 100644 index 0000000000..61d6ca096e --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:55.281Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_not_found_response.yaml similarity index 74% rename from tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_not_found_response.yaml index 126a4a8b0d..241309b57d 100644 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_rule_returns_not_found_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_returns_not_found_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateacsmthreatsagentrulereturnsnotfoundresponse1743517862"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateaworkloadprotectionagentrulereturnsnotfoundresponse1747319695"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"jnw-szj-ssb","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateacsmthreatsagentrulereturnsnotfoundresponse1743517862","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1743517862965,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"ybs-zrz-2xw","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateaworkloadprotectionagentrulereturnsnotfoundresponse1747319695","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319695364,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -21,7 +20,7 @@ interactions: message: OK - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","policy_id":"jnw-szj-ssb","product_tags":[]},"id":"non-existent-rule-id","type":"agent_rule"}}' + == \"sh\"","policy_id":"ybs-zrz-2xw","product_tags":[]},"id":"non-existent-rule-id","type":"agent_rule"}}' headers: accept: - application/json @@ -46,7 +45,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/jnw-szj-ssb + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/ybs-zrz-2xw response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.frozen new file mode 100644 index 0000000000..28a0e1a88b --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:50.645Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.yaml similarity index 62% rename from tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_bad_request_response.yaml rename to tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.yaml index bb9caf6e82..27be2bdd14 100644 --- a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_bad_request_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_bad_request_response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","name":"testupdateacloudworkloadsecurityagentrulereturnsbadrequestresponse1744967414"},"type":"agent_rule"}}' + == \"sh\"","name":"testupdateaworkloadprotectionagentruleus1fedreturnsbadrequestresponse1747319690"},"type":"agent_rule"}}' headers: accept: - application/json @@ -11,10 +11,9 @@ interactions: uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules response: body: - string: '{"data":{"id":"03s-ro8-kgi","attributes":{"version":1,"name":"testupdateacloudworkloadsecurityagentrulereturnsbadrequestresponse1744967414","description":"My - Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","creationDate":1744967414924,"updateAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","updateDate":1744967414924,"filters":["os - == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}},"type":"agent_rule"}} + string: '{"data":{"id":"qny-a5d-mul","attributes":{"version":1,"name":"testupdateaworkloadprotectionagentruleus1fedreturnsbadrequestresponse1747319690","description":"My + Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","creationDate":1747319690855,"updateAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","updateDate":1747319690855,"filters":["os + == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"frog","handle":"frog@datadoghq.com"},"updater":{"name":"frog","handle":"frog@datadoghq.com"}},"type":"agent_rule"}} ' headers: @@ -24,18 +23,18 @@ interactions: code: 200 message: OK - request: - body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name"},"id":"03s-ro8-kgi","type":"agent_rule"}}' + body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name"},"id":"qny-a5d-mul","type":"agent_rule"}}' headers: accept: - application/json content-type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/03s-ro8-kgi + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/qny-a5d-mul response: body: string: '{"errors":["input_validation_error(Field ''expression'' is invalid: - rule `testupdateacloudworkloadsecurityagentrulereturnsbadrequestresponse1744967414` + rule `testupdateaworkloadprotectionagentruleus1fedreturnsbadrequestresponse1747319690` error: rule syntax error: bool expected: 1:1: exec.file.name\n^)"]} ' @@ -51,7 +50,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/03s-ro8-kgi + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/qny-a5d-mul response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen new file mode 100644 index 0000000000..0976bce00c --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:51.338Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_not_found_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_not_found_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen new file mode 100644 index 0000000000..a3784746d8 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:51.443Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml similarity index 53% rename from tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml index c5e27ed0c9..efa952baf7 100644 --- a/tests/v2/cassettes/test_scenarios/test_update_a_cloud_workload_security_agent_rule_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_agent_rule_us1fed_returns_ok_response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: '{"data":{"attributes":{"description":"My Agent rule","enabled":true,"expression":"exec.file.name - == \"sh\"","name":"testupdateacloudworkloadsecurityagentrulereturnsokresponse1744967415"},"type":"agent_rule"}}' + == \"sh\"","name":"testupdateaworkloadprotectionagentruleus1fedreturnsokresponse1747319691"},"type":"agent_rule"}}' headers: accept: - application/json @@ -11,10 +11,9 @@ interactions: uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules response: body: - string: '{"data":{"id":"szj-quo-wak","attributes":{"version":1,"name":"testupdateacloudworkloadsecurityagentrulereturnsokresponse1744967415","description":"My - Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","creationDate":1744967416010,"updateAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","updateDate":1744967416010,"filters":["os - == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}},"type":"agent_rule"}} + string: '{"data":{"id":"fbb-jub-hb7","attributes":{"version":1,"name":"testupdateaworkloadprotectionagentruleus1fedreturnsokresponse1747319691","description":"My + Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","creationDate":1747319691636,"updateAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","updateDate":1747319691636,"filters":["os + == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"frog","handle":"frog@datadoghq.com"},"updater":{"name":"frog","handle":"frog@datadoghq.com"}},"type":"agent_rule"}} ' headers: @@ -25,20 +24,19 @@ interactions: message: OK - request: body: '{"data":{"attributes":{"description":"Updated Agent rule","expression":"exec.file.name - == \"sh\""},"id":"szj-quo-wak","type":"agent_rule"}}' + == \"sh\""},"id":"fbb-jub-hb7","type":"agent_rule"}}' headers: accept: - application/json content-type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/szj-quo-wak + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/fbb-jub-hb7 response: body: - string: '{"data":{"id":"szj-quo-wak","attributes":{"version":2,"name":"testupdateacloudworkloadsecurityagentrulereturnsokresponse1744967415","description":"Updated - Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","creationDate":1744967416010,"updateAuthorUuId":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","updateDate":1744967416272,"filters":["os - == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}},"type":"agent_rule"}} + string: '{"data":{"id":"fbb-jub-hb7","attributes":{"version":2,"name":"testupdateaworkloadprotectionagentruleus1fedreturnsokresponse1747319691","description":"Updated + Agent rule","expression":"exec.file.name == \"sh\"","category":"Process Activity","defaultRule":false,"enabled":true,"creationAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","creationDate":1747319691636,"updateAuthorUuId":"3ad549bf-eba0-11e9-a77a-0705486660d0","updateDate":1747319692038,"filters":["os + == \"linux\""],"actions":[],"agentConstraint":"","creator":{"name":"frog","handle":"frog@datadoghq.com"},"updater":{"name":"frog","handle":"frog@datadoghq.com"}},"type":"agent_rule"}} ' headers: @@ -53,7 +51,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/szj-quo-wak + uri: https://api.datadoghq.com/api/v2/security_monitoring/cloud_workload_security/agent_rules/fbb-jub-hb7 response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_bad_request_response.frozen new file mode 100644 index 0000000000..c91e88a821 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:56.405Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_bad_request_response.yaml similarity index 67% rename from tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_bad_request_response.yaml rename to tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_bad_request_response.yaml index 86339c3850..0ae972db6a 100644 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_bad_request_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_bad_request_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateacsmthreatsagentpolicyreturnsbadrequestresponse1744708208"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateaworkloadprotectionpolicyreturnsbadrequestresponse1747319696"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"pp8-iw5-agt","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateacsmthreatsagentpolicyreturnsbadrequestresponse1744708208","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1744708208235,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"kfz-e8v-7v0","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateaworkloadprotectionpolicyreturnsbadrequestresponse1747319696","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319696483,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -20,19 +19,18 @@ interactions: code: 200 message: OK - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:test"],"hostTagsLists":[["env:test"]],"name":""},"id":"pp8-iw5-agt","type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:test"],"hostTagsLists":[["env:test"]],"name":""},"id":"kfz-e8v-7v0","type":"policy"}}' headers: accept: - application/json content-type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/pp8-iw5-agt + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/kfz-e8v-7v0 response: body: - string: '{"errors":[{"title":"failed to update policy"}]} - - ' + string: '{"errors":["input_validation_error(Field ''tags'' is invalid: cannot + have both the new and the legacy field populated)"]}' headers: content-type: - application/json @@ -45,7 +43,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/pp8-iw5-agt + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/kfz-e8v-7v0 response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_not_found_response.frozen new file mode 100644 index 0000000000..99dffd5245 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_not_found_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:57.482Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_not_found_response.yaml similarity index 100% rename from tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_not_found_response.yaml rename to tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_not_found_response.yaml diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_ok_response.frozen new file mode 100644 index 0000000000..777ee4fc3e --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_ok_response.frozen @@ -0,0 +1 @@ +2025-05-15T14:34:57.719Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_ok_response.yaml similarity index 66% rename from tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_ok_response.yaml rename to tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_ok_response.yaml index 98296b1ee0..4ffd702254 100644 --- a/tests/v2/cassettes/test_scenarios/test_update_a_csm_threats_agent_policy_returns_ok_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_update_a_workload_protection_policy_returns_ok_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateacsmthreatsagentpolicyreturnsokresponse1744708209"},"type":"policy"}}' + body: '{"data":{"attributes":{"description":"My agent policy","enabled":true,"hostTags":["env:staging"],"name":"testupdateaworkloadprotectionpolicyreturnsokresponse1747319697"},"type":"policy"}}' headers: accept: - application/json @@ -10,9 +10,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy response: body: - string: '{"data":{"id":"99n-cjh-wuo","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My - agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateacsmthreatsagentpolicyreturnsokresponse1744708209","policyVersion":"1","priority":1000000001,"ruleCount":226,"updateDate":1744708209551,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"qsc-b2c-cxf","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"My + agent policy","disabledRulesCount":1,"enabled":true,"hostTags":["env:staging"],"monitoringRulesCount":225,"name":"testupdateaworkloadprotectionpolicyreturnsokresponse1747319697","policyVersion":"1","priority":1000000070,"ruleCount":226,"updateDate":1747319697796,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -20,19 +19,18 @@ interactions: code: 200 message: OK - request: - body: '{"data":{"attributes":{"description":"Updated agent policy","enabled":true,"hostTagsLists":[["env:test"]],"name":"updated_agent_policy"},"id":"99n-cjh-wuo","type":"policy"}}' + body: '{"data":{"attributes":{"description":"Updated agent policy","enabled":true,"hostTagsLists":[["env:test"]],"name":"updated_agent_policy"},"id":"qsc-b2c-cxf","type":"policy"}}' headers: accept: - application/json content-type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/99n-cjh-wuo + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/qsc-b2c-cxf response: body: - string: '{"data":{"id":"99n-cjh-wuo","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"Updated - agent policy","disabledRulesCount":1,"enabled":true,"hostTagsLists":[["env:test"]],"monitoringRulesCount":225,"name":"updated_agent_policy","policyVersion":"2","priority":1000000001,"ruleCount":226,"updateDate":1744708210164,"updater":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + string: '{"data":{"id":"qsc-b2c-cxf","type":"policy","attributes":{"blockingRulesCount":0,"datadogManaged":false,"description":"Updated + agent policy","disabledRulesCount":1,"enabled":true,"hostTagsLists":[["env:test"]],"monitoringRulesCount":225,"name":"updated_agent_policy","policyVersion":"2","priority":1000000070,"ruleCount":226,"updateDate":1747319698400,"updater":{"name":"frog","handle":"frog@datadoghq.com"}}}}' headers: content-type: - application/json @@ -45,7 +43,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/99n-cjh-wuo + uri: https://api.datadoghq.com/api/v2/remote_config/products/cws/policy/qsc-b2c-cxf response: body: string: '' diff --git a/tests/v2/features/csm_threats.feature b/tests/v2/features/csm_threats.feature index b6479f1cf8..42c6f472e9 100644 --- a/tests/v2/features/csm_threats.feature +++ b/tests/v2/features/csm_threats.feature @@ -1,10 +1,12 @@ @endpoint(csm-threats) @endpoint(csm-threats-v2) Feature: CSM Threats - Cloud Security Management Threats (CSM Threats) monitors file, network, - and process activity across your environment to detect real-time threats - to your infrastructure. See [Cloud Security Management - Threats](https://docs.datadoghq.com/security/threats/) for more - information on setting up CSM Threats. + Workload Protection monitors file, network, and process activity across + your environment to detect real-time threats to your infrastructure. See + [Workload + Protection](https://docs.datadoghq.com/security/workload_protection/) for + more information on setting up Workload Protection. **Note**: These + endpoints are split based on whether you are using the US1-FED site or + not. Please reference the specific resource for the site you are using. Background: Given a valid "apiKeyAuth" key in the system @@ -12,28 +14,31 @@ Feature: CSM Threats And an instance of "CSMThreats" API @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a CSM Threats Agent policy returns "Bad Request" response - Given new "CreateCSMThreatsAgentPolicy" request - And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": [], "hostTagsLists": [], "name": "test"}, "type": "policy"}} + Scenario: Create a Workload Protection agent rule (US1-FED) returns "Bad Request" response + Given there is a valid "policy_rc" in the system + And new "CreateCloudWorkloadSecurityAgentRule" request + And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name", "filters": [], "name": "my_agent_rule"}, "type": "agent_rule"}} When the request is sent Then the response status is 400 Bad Request @skip @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a CSM Threats Agent policy returns "Conflict" response - Given new "CreateCSMThreatsAgentPolicy" request - And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": [], "name": "my_agent_policy"}, "type": "policy"}} + Scenario: Create a Workload Protection agent rule (US1-FED) returns "Conflict" response + Given there is a valid "policy_rc" in the system + And new "CreateCloudWorkloadSecurityAgentRule" request + And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\"", "filters": [], "name": "my_agent_rule"}, "type": "agent_rule"}} When the request is sent Then the response status is 409 Conflict @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a CSM Threats Agent policy returns "OK" response - Given new "CreateCSMThreatsAgentPolicy" request - And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTagsLists": [["env:test"]], "name": "my_agent_policy"}, "type": "policy"}} + Scenario: Create a Workload Protection agent rule (US1-FED) returns "OK" response + Given there is a valid "policy_rc" in the system + And new "CreateCloudWorkloadSecurityAgentRule" request + And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\"", "filters": [], "name": "{{ unique_lower_alnum }}"}, "type": "agent_rule"}} When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a CSM Threats Agent rule returns "Bad Request" response + Scenario: Create a Workload Protection agent rule returns "Bad Request" response Given there is a valid "policy_rc" in the system And new "CreateCSMThreatsAgentRule" request And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name", "filters": [], "name": "my_agent_rule", "policy_id": "{{ policy.data.id }}", "product_tags": []}, "type": "agent_rule"}} @@ -41,7 +46,7 @@ Feature: CSM Threats Then the response status is 400 Bad Request @skip @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a CSM Threats Agent rule returns "Conflict" response + Scenario: Create a Workload Protection agent rule returns "Conflict" response Given there is a valid "policy_rc" in the system And new "CreateCSMThreatsAgentRule" request And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\"", "filters": [], "name": "my_agent_rule", "policy_id": "{{ policy.data.id }}", "product_tags": []}, "type": "agent_rule"}} @@ -49,7 +54,7 @@ Feature: CSM Threats Then the response status is 409 Conflict @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a CSM Threats Agent rule returns "OK" response + Scenario: Create a Workload Protection agent rule returns "OK" response Given there is a valid "policy_rc" in the system And new "CreateCSMThreatsAgentRule" request And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\"", "filters": [], "name": "{{ unique_lower_alnum }}", "policy_id": "{{ policy.data.id }}", "product_tags": []}, "type": "agent_rule"}} @@ -57,53 +62,50 @@ Feature: CSM Threats Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a Cloud Workload Security Agent rule returns "Bad Request" response - Given there is a valid "policy_rc" in the system - And new "CreateCloudWorkloadSecurityAgentRule" request - And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name", "filters": [], "name": "my_agent_rule"}, "type": "agent_rule"}} + Scenario: Create a Workload Protection policy returns "Bad Request" response + Given new "CreateCSMThreatsAgentPolicy" request + And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": [], "hostTagsLists": [], "name": "test"}, "type": "policy"}} When the request is sent Then the response status is 400 Bad Request @skip @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a Cloud Workload Security Agent rule returns "Conflict" response - Given there is a valid "policy_rc" in the system - And new "CreateCloudWorkloadSecurityAgentRule" request - And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\"", "filters": [], "name": "my_agent_rule"}, "type": "agent_rule"}} + Scenario: Create a Workload Protection policy returns "Conflict" response + Given new "CreateCSMThreatsAgentPolicy" request + And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": [], "name": "my_agent_policy"}, "type": "policy"}} When the request is sent Then the response status is 409 Conflict @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Create a Cloud Workload Security Agent rule returns "OK" response - Given there is a valid "policy_rc" in the system - And new "CreateCloudWorkloadSecurityAgentRule" request - And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\"", "filters": [], "name": "{{ unique_lower_alnum }}"}, "type": "agent_rule"}} + Scenario: Create a Workload Protection policy returns "OK" response + Given new "CreateCSMThreatsAgentPolicy" request + And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTagsLists": [["env:test"]], "name": "my_agent_policy"}, "type": "policy"}} When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Delete a CSM Threats Agent policy returns "Not Found" response - Given new "DeleteCSMThreatsAgentPolicy" request - And request contains "policy_id" parameter with value "non-existent-policy-id" + Scenario: Delete a Workload Protection agent rule (US1-FED) returns "Not Found" response + Given new "DeleteCloudWorkloadSecurityAgentRule" request + And request contains "agent_rule_id" parameter with value "non-existent-rule-id" When the request is sent Then the response status is 404 Not Found @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Delete a CSM Threats Agent policy returns "OK" response - Given there is a valid "policy_rc" in the system - And new "DeleteCSMThreatsAgentPolicy" request - And request contains "policy_id" parameter from "policy.data.id" + Scenario: Delete a Workload Protection agent rule (US1-FED) returns "OK" response + Given there is a valid "agent_rule" in the system + And new "DeleteCloudWorkloadSecurityAgentRule" request + And request contains "agent_rule_id" parameter from "agent_rule.data.id" When the request is sent Then the response status is 204 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Delete a CSM Threats Agent rule returns "Not Found" response + Scenario: Delete a Workload Protection agent rule returns "Not Found" response Given new "DeleteCSMThreatsAgentRule" request And request contains "agent_rule_id" parameter with value "non-existent-rule-id" When the request is sent Then the response status is 404 Not Found @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Delete a CSM Threats Agent rule returns "OK" response + Scenario: Delete a Workload Protection agent rule returns "OK" response Given there is a valid "policy_rc" in the system And there is a valid "agent_rule_rc" in the system And new "DeleteCSMThreatsAgentRule" request @@ -113,134 +115,134 @@ Feature: CSM Threats Then the response status is 204 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Delete a Cloud Workload Security Agent rule returns "Not Found" response - Given new "DeleteCloudWorkloadSecurityAgentRule" request - And request contains "agent_rule_id" parameter with value "non-existent-rule-id" + Scenario: Delete a Workload Protection policy returns "Not Found" response + Given new "DeleteCSMThreatsAgentPolicy" request + And request contains "policy_id" parameter with value "non-existent-policy-id" When the request is sent Then the response status is 404 Not Found @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Delete a Cloud Workload Security Agent rule returns "OK" response - Given there is a valid "agent_rule" in the system - And new "DeleteCloudWorkloadSecurityAgentRule" request - And request contains "agent_rule_id" parameter from "agent_rule.data.id" + Scenario: Delete a Workload Protection policy returns "OK" response + Given there is a valid "policy_rc" in the system + And new "DeleteCSMThreatsAgentPolicy" request + And request contains "policy_id" parameter from "policy.data.id" When the request is sent Then the response status is 204 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get a CSM Threats Agent policy returns "Not Found" response - Given new "GetCSMThreatsAgentPolicy" request - And request contains "policy_id" parameter with value "non-existent-policy-id" + Scenario: Download the Workload Protection policy (US1-FED) returns "OK" response + Given new "DownloadCloudWorkloadPolicyFile" request When the request is sent - Then the response status is 404 Not Found + Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get a CSM Threats Agent policy returns "OK" response - Given there is a valid "policy_rc" in the system - And new "GetCSMThreatsAgentPolicy" request - And request contains "policy_id" parameter from "policy.data.id" + Scenario: Download the Workload Protection policy returns "OK" response + Given new "DownloadCSMThreatsPolicy" request When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get a CSM Threats Agent rule returns "Not Found" response - Given new "GetCSMThreatsAgentRule" request + Scenario: Get a Workload Protection agent rule (US1-FED) returns "Not Found" response + Given new "GetCloudWorkloadSecurityAgentRule" request And request contains "agent_rule_id" parameter with value "non-existent-rule-id" When the request is sent Then the response status is 404 Not Found @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get a CSM Threats Agent rule returns "OK" response - Given there is a valid "policy_rc" in the system - And there is a valid "agent_rule_rc" in the system - And new "GetCSMThreatsAgentRule" request + Scenario: Get a Workload Protection agent rule (US1-FED) returns "OK" response + Given there is a valid "agent_rule" in the system + And new "GetCloudWorkloadSecurityAgentRule" request And request contains "agent_rule_id" parameter from "agent_rule.data.id" - And request contains "policy_id" parameter from "policy.data.id" When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get a Cloud Workload Security Agent rule returns "Not Found" response - Given new "GetCloudWorkloadSecurityAgentRule" request + Scenario: Get a Workload Protection agent rule returns "Not Found" response + Given new "GetCSMThreatsAgentRule" request And request contains "agent_rule_id" parameter with value "non-existent-rule-id" When the request is sent Then the response status is 404 Not Found @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get a Cloud Workload Security Agent rule returns "OK" response - Given there is a valid "agent_rule" in the system - And new "GetCloudWorkloadSecurityAgentRule" request + Scenario: Get a Workload Protection agent rule returns "OK" response + Given there is a valid "policy_rc" in the system + And there is a valid "agent_rule_rc" in the system + And new "GetCSMThreatsAgentRule" request And request contains "agent_rule_id" parameter from "agent_rule.data.id" + And request contains "policy_id" parameter from "policy.data.id" When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get all CSM Threats Agent policies returns "OK" response - Given new "ListCSMThreatsAgentPolicies" request + Scenario: Get a Workload Protection policy returns "Not Found" response + Given new "GetCSMThreatsAgentPolicy" request + And request contains "policy_id" parameter with value "non-existent-policy-id" When the request is sent - Then the response status is 200 OK + Then the response status is 404 Not Found @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get all CSM Threats Agent rules returns "OK" response - Given new "ListCSMThreatsAgentRules" request + Scenario: Get a Workload Protection policy returns "OK" response + Given there is a valid "policy_rc" in the system + And new "GetCSMThreatsAgentPolicy" request + And request contains "policy_id" parameter from "policy.data.id" When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get all Cloud Workload Security Agent rules returns "OK" response + Scenario: Get all Workload Protection agent rules (US1-FED) returns "OK" response Given new "ListCloudWorkloadSecurityAgentRules" request When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get the latest CSM Threats policy returns "OK" response - Given new "DownloadCSMThreatsPolicy" request + Scenario: Get all Workload Protection agent rules returns "OK" response + Given new "ListCSMThreatsAgentRules" request When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Get the latest Cloud Workload Security policy returns "OK" response - Given new "DownloadCloudWorkloadPolicyFile" request + Scenario: Get all Workload Protection policies returns "OK" response + Given new "ListCSMThreatsAgentPolicies" request When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a CSM Threats Agent policy returns "Bad Request" response - Given there is a valid "policy_rc" in the system - And new "UpdateCSMThreatsAgentPolicy" request - And request contains "policy_id" parameter from "policy.data.id" - And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": ["env:test"], "hostTagsLists": [["env:test"]], "name": ""}, "id": "{{ policy.data.id }}", "type": "policy"}} + Scenario: Update a Workload Protection agent rule (US1-FED) returns "Bad Request" response + Given there is a valid "agent_rule" in the system + And new "UpdateCloudWorkloadSecurityAgentRule" request + And request contains "agent_rule_id" parameter from "agent_rule.data.id" + And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name"}, "id": "{{ agent_rule.data.id }}", "type": "agent_rule"}} When the request is sent Then the response status is 400 Bad Request @skip @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a CSM Threats Agent policy returns "Concurrent Modification" response - Given there is a valid "policy_rc" in the system - And new "UpdateCSMThreatsAgentPolicy" request - And request contains "policy_id" parameter from "policy.data.id" - And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": [], "name": "my_agent_policy"}, "id": "{{ policy.data.id }}", "type": "policy"}} + Scenario: Update a Workload Protection agent rule (US1-FED) returns "Concurrent Modification" response + Given there is a valid "agent_rule" in the system + And new "UpdateCloudWorkloadSecurityAgentRule" request + And request contains "agent_rule_id" parameter from "agent_rule.data.id" + And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\""}, "id": "{{ agent_rule.data.id }}", "type": "agent_rule"}} When the request is sent Then the response status is 409 Concurrent Modification @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a CSM Threats Agent policy returns "Not Found" response - Given new "UpdateCSMThreatsAgentPolicy" request - And request contains "policy_id" parameter with value "non-existent-policy-id" - And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": [], "name": "my_agent_policy"}, "id": "non-existent-policy-id", "type": "policy"}} + Scenario: Update a Workload Protection agent rule (US1-FED) returns "Not Found" response + Given new "UpdateCloudWorkloadSecurityAgentRule" request + And request contains "agent_rule_id" parameter with value "non-existent-rule-id" + And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\""}, "id": "invalid-agent-rule-id", "type": "agent_rule"}} When the request is sent - Then the response status is 400 Bad Request + Then the response status is 404 Not Found @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a CSM Threats Agent policy returns "OK" response - Given there is a valid "policy_rc" in the system - And new "UpdateCSMThreatsAgentPolicy" request - And request contains "policy_id" parameter from "policy.data.id" - And body with value {"data": {"attributes": {"description": "Updated agent policy", "enabled": true, "hostTagsLists": [["env:test"]], "name": "updated_agent_policy"}, "id": "{{ policy.data.id }}", "type": "policy"}} + Scenario: Update a Workload Protection agent rule (US1-FED) returns "OK" response + Given there is a valid "agent_rule" in the system + And new "UpdateCloudWorkloadSecurityAgentRule" request + And request contains "agent_rule_id" parameter from "agent_rule.data.id" + And body with value {"data": {"attributes": {"description": "Updated Agent rule", "expression": "exec.file.name == \"sh\""}, "id": "{{ agent_rule.data.id }}", "type": "agent_rule"}} When the request is sent Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a CSM Threats Agent rule returns "Bad Request" response + Scenario: Update a Workload Protection agent rule returns "Bad Request" response Given there is a valid "policy_rc" in the system And there is a valid "agent_rule_rc" in the system And new "UpdateCSMThreatsAgentRule" request @@ -250,7 +252,7 @@ Feature: CSM Threats Then the response status is 400 Bad Request @skip @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a CSM Threats Agent rule returns "Concurrent Modification" response + Scenario: Update a Workload Protection agent rule returns "Concurrent Modification" response Given there is a valid "agent_rule_rc" in the system And there is a valid "policy_rc" in the system And new "UpdateCSMThreatsAgentRule" request @@ -260,7 +262,7 @@ Feature: CSM Threats Then the response status is 409 Concurrent Modification @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a CSM Threats Agent rule returns "Not Found" response + Scenario: Update a Workload Protection agent rule returns "Not Found" response Given there is a valid "policy_rc" in the system And new "UpdateCSMThreatsAgentRule" request And request contains "agent_rule_id" parameter with value "non-existent-rule-id" @@ -269,7 +271,7 @@ Feature: CSM Threats Then the response status is 404 Not Found @skip @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a CSM Threats Agent rule returns "OK" response + Scenario: Update a Workload Protection agent rule returns "OK" response Given there is a valid "policy_rc" in the system And there is a valid "agent_rule_rc" in the system And new "UpdateCSMThreatsAgentRule" request @@ -280,36 +282,36 @@ Feature: CSM Threats Then the response status is 200 OK @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a Cloud Workload Security Agent rule returns "Bad Request" response - Given there is a valid "agent_rule" in the system - And new "UpdateCloudWorkloadSecurityAgentRule" request - And request contains "agent_rule_id" parameter from "agent_rule.data.id" - And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name"}, "id": "{{ agent_rule.data.id }}", "type": "agent_rule"}} + Scenario: Update a Workload Protection policy returns "Bad Request" response + Given there is a valid "policy_rc" in the system + And new "UpdateCSMThreatsAgentPolicy" request + And request contains "policy_id" parameter from "policy.data.id" + And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": ["env:test"], "hostTagsLists": [["env:test"]], "name": ""}, "id": "{{ policy.data.id }}", "type": "policy"}} When the request is sent Then the response status is 400 Bad Request @skip @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a Cloud Workload Security Agent rule returns "Concurrent Modification" response - Given there is a valid "agent_rule" in the system - And new "UpdateCloudWorkloadSecurityAgentRule" request - And request contains "agent_rule_id" parameter from "agent_rule.data.id" - And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\""}, "id": "{{ agent_rule.data.id }}", "type": "agent_rule"}} + Scenario: Update a Workload Protection policy returns "Concurrent Modification" response + Given there is a valid "policy_rc" in the system + And new "UpdateCSMThreatsAgentPolicy" request + And request contains "policy_id" parameter from "policy.data.id" + And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": [], "name": "my_agent_policy"}, "id": "{{ policy.data.id }}", "type": "policy"}} When the request is sent Then the response status is 409 Concurrent Modification @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a Cloud Workload Security Agent rule returns "Not Found" response - Given new "UpdateCloudWorkloadSecurityAgentRule" request - And request contains "agent_rule_id" parameter with value "non-existent-rule-id" - And body with value {"data": {"attributes": {"description": "My Agent rule", "enabled": true, "expression": "exec.file.name == \"sh\""}, "id": "invalid-agent-rule-id", "type": "agent_rule"}} + Scenario: Update a Workload Protection policy returns "Not Found" response + Given new "UpdateCSMThreatsAgentPolicy" request + And request contains "policy_id" parameter with value "non-existent-policy-id" + And body with value {"data": {"attributes": {"description": "My agent policy", "enabled": true, "hostTags": [], "name": "my_agent_policy"}, "id": "non-existent-policy-id", "type": "policy"}} When the request is sent - Then the response status is 404 Not Found + Then the response status is 400 Bad Request @team:DataDog/k9-cloud-security-platform @team:DataDog/k9-cws-backend - Scenario: Update a Cloud Workload Security Agent rule returns "OK" response - Given there is a valid "agent_rule" in the system - And new "UpdateCloudWorkloadSecurityAgentRule" request - And request contains "agent_rule_id" parameter from "agent_rule.data.id" - And body with value {"data": {"attributes": {"description": "Updated Agent rule", "expression": "exec.file.name == \"sh\""}, "id": "{{ agent_rule.data.id }}", "type": "agent_rule"}} + Scenario: Update a Workload Protection policy returns "OK" response + Given there is a valid "policy_rc" in the system + And new "UpdateCSMThreatsAgentPolicy" request + And request contains "policy_id" parameter from "policy.data.id" + And body with value {"data": {"attributes": {"description": "Updated agent policy", "enabled": true, "hostTagsLists": [["env:test"]], "name": "updated_agent_policy"}, "id": "{{ policy.data.id }}", "type": "policy"}} When the request is sent Then the response status is 200 OK