From 9d18c4e2761e7c8330e4f17f335a480a1f9557e8 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Thu, 6 Feb 2025 16:52:50 +0000 Subject: [PATCH] Regenerate client from commit 3e12345a of spec repo --- .apigentools-info | 8 +- .generator/schemas/v2/openapi.yaml | 117 ++++++++++++-- api/datadogV2/api_security_monitoring.go | 20 +-- api/datadogV2/model_job_definition.go | 37 ++++- api/datadogV2/model_rule_types_items.go | 2 +- .../model_security_monitoring_rule_case.go | 45 +++++- ...el_security_monitoring_rule_case_action.go | 150 ++++++++++++++++++ ...ity_monitoring_rule_case_action_options.go | 102 ++++++++++++ ...curity_monitoring_rule_case_action_type.go | 66 ++++++++ ...el_security_monitoring_rule_case_create.go | 45 +++++- ...security_monitoring_rule_update_payload.go | 37 ++++- ...monitoring_standard_rule_create_payload.go | 37 ++++- ...curity_monitoring_standard_rule_payload.go | 37 ++++- ...urity_monitoring_standard_rule_response.go | 37 ++++- ...y_monitoring_standard_rule_test_payload.go | 37 ++++- api/datadogV2/model_selectors.go | 2 +- ...CreateSecurityMonitoringRule_1965169892.go | 74 +++++++++ .../CreateSignalNotificationRule.go | 2 +- .../CreateVulnerabilityNotificationRule.go | 2 +- .../DeleteSignalNotificationRule.go | 2 +- .../DeleteVulnerabilityNotificationRule.go | 2 +- .../GetSignalNotificationRule.go | 2 +- .../GetSignalNotificationRules.go | 2 +- .../GetVulnerabilityNotificationRule.go | 2 +- .../GetVulnerabilityNotificationRules.go | 2 +- .../PatchSignalNotificationRule.go | 2 +- .../PatchVulnerabilityNotificationRule.go | 2 +- ...ted_the_notification_rule._response.freeze | 1 + ...ated_the_notification_rule._response.yaml} | 4 +- ...ted_the_notification_rule._response.freeze | 1 - ...eated_the_notification_rule._response.yaml | 40 ----- ...ated_the_notification_rule_response.freeze | 1 - ...ted_the_notification_rule._response.freeze | 1 + ...ated_the_notification_rule._response.yaml} | 4 +- ...ted_the_notification_rule._response.freeze | 1 - ...eated_the_notification_rule._response.yaml | 40 ----- ...ated_the_notification_rule_response.freeze | 1 - ...ion_rule_returns_Not_Found_response.freeze | 1 + ...tion_rule_returns_Not_Found_response.yaml} | 0 ...Rule_successfully_deleted._response.freeze | 1 + ..._Rule_successfully_deleted._response.yaml} | 10 +- ...sed_rule_returns_Not_Found_response.freeze | 1 - ...Rule_successfully_deleted._response.freeze | 1 - ...s_Rule_successfully_deleted._response.yaml | 56 ------- ..._Rule_successfully_deleted_response.freeze | 1 - ...ion_rule_returns_Not_Found_response.freeze | 1 + ...tion_rule_returns_Not_Found_response.yaml} | 0 ...Rule_successfully_deleted._response.freeze | 1 + ...s_Rule_successfully_deleted._response.yaml | 54 +++++++ ...sed_rule_returns_Not_Found_response.freeze | 1 - ...Rule_successfully_deleted._response.freeze | 1 - ...s_Rule_successfully_deleted._response.yaml | 56 ------- ..._Rule_successfully_deleted_response.freeze | 1 - ...ns_Rule_successfully_deleted_response.yaml | 54 ------- ...ion_rule_returns_Not_Found_response.freeze | 1 + ...tion_rule_returns_Not_Found_response.yaml} | 0 ...Notification_rule_details._response.freeze | 1 + ...s_Notification_rule_details._response.yaml | 54 +++++++ ...sed_rule_returns_Not_Found_response.freeze | 1 - ...Notification_rule_details._response.freeze | 1 - ...s_Notification_rule_details._response.yaml | 58 ------- ..._Notification_rule_details_response.freeze | 1 - ...ns_Notification_rule_details_response.yaml | 54 ------- ...sed_rule_returns_Not_Found_response.freeze | 1 - ...Notification_rule_details._response.freeze | 1 - ...s_Notification_rule_details._response.yaml | 58 ------- ..._Notification_rule_details_response.freeze | 1 - ...ns_Notification_rule_details_response.yaml | 54 ------- ...ion_rule_returns_Not_Found_response.freeze | 1 + ...tion_rule_returns_Not_Found_response.yaml} | 0 ...Notification_rule_details._response.freeze | 1 + ...s_Notification_rule_details._response.yaml | 54 +++++++ ...ist_of_notification_rules._response.freeze | 1 + ..._list_of_notification_rules._response.yaml | 54 +++++++ ...ist_of_notification_rules._response.freeze | 1 - ..._list_of_notification_rules._response.yaml | 67 -------- ...list_of_notification_rules_response.freeze | 1 - ...e_list_of_notification_rules_response.yaml | 63 -------- ...ist_of_notification_rules._response.freeze | 1 - ..._list_of_notification_rules._response.yaml | 58 ------- ...list_of_notification_rules_response.freeze | 1 - ...e_list_of_notification_rules_response.yaml | 54 ------- ...ist_of_notification_rules._response.freeze | 1 + ..._list_of_notification_rules._response.yaml | 54 +++++++ ...n_rule_returns_Bad_Request_response.freeze | 1 + ...on_rule_returns_Bad_Request_response.yaml} | 8 +- ...ion_rule_returns_Not_Found_response.freeze | 1 + ...tion_rule_returns_Not_Found_response.yaml} | 0 ...rule_successfully_patched._response.freeze | 1 + ..._rule_successfully_patched._response.yaml} | 10 +- ...d_rule_returns_Bad_Request_response.freeze | 1 - ...sed_rule_returns_Not_Found_response.freeze | 1 - ...rule_successfully_patched._response.freeze | 1 - ...n_rule_successfully_patched._response.yaml | 62 -------- ..._rule_successfully_patched_response.freeze | 1 - ...n_rule_returns_Bad_Request_response.freeze | 1 + ...on_rule_returns_Bad_Request_response.yaml} | 8 +- ...ion_rule_returns_Not_Found_response.freeze | 1 + ...tion_rule_returns_Not_Found_response.yaml} | 0 ...rule_successfully_patched._response.freeze | 1 + ..._rule_successfully_patched._response.yaml} | 10 +- ...d_rule_returns_Bad_Request_response.freeze | 1 - ...sed_rule_returns_Not_Found_response.freeze | 1 - ...rule_successfully_patched._response.freeze | 1 - ...n_rule_successfully_patched._response.yaml | 62 -------- ..._rule_successfully_patched_response.freeze | 1 - .../features/v2/security_monitoring.feature | 58 ++++--- 107 files changed, 1167 insertions(+), 970 deletions(-) create mode 100644 api/datadogV2/model_security_monitoring_rule_case_action.go create mode 100644 api/datadogV2/model_security_monitoring_rule_case_action_options.go create mode 100644 api/datadogV2/model_security_monitoring_rule_case_action_type.go create mode 100644 examples/v2/security-monitoring/CreateSecurityMonitoringRule_1965169892.go create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_notification_rule_returns_Successfully_created_the_notification_rule._response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule_response.yaml => Scenario_Create_a_new_signal-based_notification_rule_returns_Successfully_created_the_notification_rule._response.yaml} (80%) delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule_response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_notification_rule_returns_Successfully_created_the_notification_rule._response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule_response.yaml => Scenario_Create_a_new_vulnerability-based_notification_rule_returns_Successfully_created_the_notification_rule._response.yaml} (79%) delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule_response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Not_Found_response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Delete_a_signal-based_rule_returns_Not_Found_response.yaml => Scenario_Delete_a_signal-based_notification_rule_returns_Not_Found_response.yaml} (100%) create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Rule_successfully_deleted._response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted_response.yaml => Scenario_Delete_a_signal-based_notification_rule_returns_Rule_successfully_deleted._response.yaml} (51%) delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Not_Found_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted_response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Not_Found_response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Delete_a_vulnerability-based_rule_returns_Not_Found_response.yaml => Scenario_Delete_a_vulnerability-based_notification_rule_returns_Not_Found_response.yaml} (100%) create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Rule_successfully_deleted._response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Rule_successfully_deleted._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Not_Found_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted_response.yaml create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Not_Found_response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Get_details_of_a_signal-based_rule_returns_Not_Found_response.yaml => Scenario_Get_details_of_a_signal-based_notification_rule_returns_Not_Found_response.yaml} (100%) create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Notification_rule_details._response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Notification_rule_details._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Not_Found_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details_response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Not_Found_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details_response.yaml create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Not_Found_response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Get_details_of_a_vulnerability-based_rule_returns_Not_Found_response.yaml => Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Not_Found_response.yaml} (100%) create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details._response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details._response.yaml create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_notification_rules_returns_The_list_of_notification_rules._response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_notification_rules_returns_The_list_of_notification_rules._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules_response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules_response.yaml create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules._response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules._response.yaml create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Bad_Request_response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Patch_a_signal-based_rule_returns_Bad_Request_response.yaml => Scenario_Patch_a_signal-based_notification_rule_returns_Bad_Request_response.yaml} (65%) create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Not_Found_response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Patch_a_signal-based_rule_returns_Not_Found_response.yaml => Scenario_Patch_a_signal-based_notification_rule_returns_Not_Found_response.yaml} (100%) create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Notification_rule_successfully_patched._response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched_response.yaml => Scenario_Patch_a_signal-based_notification_rule_returns_Notification_rule_successfully_patched._response.yaml} (58%) delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Bad_Request_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Not_Found_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched_response.freeze create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Bad_Request_response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Patch_a_vulnerability-based_rule_returns_Bad_Request_response.yaml => Scenario_Patch_a_vulnerability-based_notification_rule_returns_Bad_Request_response.yaml} (63%) create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Not_Found_response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Patch_a_vulnerability-based_rule_returns_Not_Found_response.yaml => Scenario_Patch_a_vulnerability-based_notification_rule_returns_Not_Found_response.yaml} (100%) create mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Notification_rule_successfully_patched._response.freeze rename tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/{Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched_response.yaml => Scenario_Patch_a_vulnerability-based_notification_rule_returns_Notification_rule_successfully_patched._response.yaml} (57%) delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Bad_Request_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Not_Found_response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched._response.freeze delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched._response.yaml delete mode 100644 tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched_response.freeze diff --git a/.apigentools-info b/.apigentools-info index 93d1d4aa83d..f73bc95c6e6 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2025-02-04 14:10:02.073714", - "spec_repo_commit": "4fb9047a" + "regenerated": "2025-02-06 16:51:29.162841", + "spec_repo_commit": "3e12345a" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2025-02-04 14:10:02.090085", - "spec_repo_commit": "4fb9047a" + "regenerated": "2025-02-06 16:51:29.181155", + "spec_repo_commit": "3e12345a" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 831530e2584..f6bbead3177 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -15657,6 +15657,15 @@ components: example: 1729843470000 format: int64 type: integer + groupSignalsBy: + description: Additional grouping to perform on top of the existing groups + in the query section. Must be a subset of the existing groups + example: + - service + items: + description: Field to group by. + type: string + type: array index: description: Index used to load the data. example: cloud_siem @@ -23184,8 +23193,7 @@ components: x-enum-varnames: - RULE RuleTypes: - description: Security rule types used to filter signals and vulnerabilities - generating notifications. + description: Security rule types used as filters in security rules. example: - misconfiguration - attack_path @@ -23193,7 +23201,7 @@ components: $ref: '#/components/schemas/RuleTypesItems' type: array RuleTypesItems: - description: 'Security rule types which can be used in notification rules. + description: 'Security rule type which can be used in security rules. Signal-based notification rules can filter signals based on rule types application_security, log_detection, @@ -24243,6 +24251,11 @@ components: SecurityMonitoringRuleCase: description: Case when signal is generated. properties: + actions: + description: Action to perform for each rule case. + items: + $ref: '#/components/schemas/SecurityMonitoringRuleCaseAction' + type: array condition: description: 'A rule case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated @@ -24261,9 +24274,42 @@ components: status: $ref: '#/components/schemas/SecurityMonitoringRuleSeverity' type: object + SecurityMonitoringRuleCaseAction: + description: Action to perform when a signals trigger. Only available for Application + Security rule type + properties: + options: + $ref: '#/components/schemas/SecurityMonitoringRuleCaseActionOptions' + type: + $ref: '#/components/schemas/SecurityMonitoringRuleCaseActionType' + type: object + SecurityMonitoringRuleCaseActionOptions: + description: Options for the rule action + properties: + duration: + description: Duration of the action in seconds. 0 means no expiration + example: 0 + format: int64 + minimum: 0 + type: integer + type: object + SecurityMonitoringRuleCaseActionType: + description: Type of the action + enum: + - block_ip + - block_user + type: string + x-enum-varnames: + - BLOCK_IP + - BLOCK_USER SecurityMonitoringRuleCaseCreate: description: Case when signal is generated. properties: + actions: + description: Action to perform for each rule case. + items: + $ref: '#/components/schemas/SecurityMonitoringRuleCaseAction' + type: array condition: description: 'A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated @@ -24725,6 +24771,15 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringFilter' type: array + groupSignalsBy: + description: Additional grouping to perform on top of the existing groups + in the query section. Must be a subset of the existing groups + example: + - service + items: + description: Field to group by. + type: string + type: array hasExtendedTitle: description: Whether the notifications include the triggering group-by values in their title. @@ -25430,6 +25485,15 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringFilter' type: array + groupSignalsBy: + description: Additional grouping to perform on top of the existing groups + in the query section. Must be a subset of the existing groups + example: + - service + items: + description: Field to group by. + type: string + type: array hasExtendedTitle: description: Whether the notifications include the triggering group-by values in their title. @@ -25502,6 +25566,15 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringFilter' type: array + groupSignalsBy: + description: Additional grouping to perform on top of the existing groups + in the query section. Must be a subset of the existing groups + example: + - service + items: + description: Field to group by. + type: string + type: array hasExtendedTitle: description: Whether the notifications include the triggering group-by values in their title. @@ -25643,6 +25716,15 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringFilter' type: array + groupSignalsBy: + description: Additional grouping to perform on top of the existing groups + in the query section. Must be a subset of the existing groups + example: + - service + items: + description: Field to group by. + type: string + type: array hasExtendedTitle: description: Whether the notifications include the triggering group-by values in their title. @@ -25720,6 +25802,15 @@ components: items: $ref: '#/components/schemas/SecurityMonitoringFilter' type: array + groupSignalsBy: + description: Additional grouping to perform on top of the existing groups + in the query section. Must be a subset of the existing groups + example: + - service + items: + description: Field to group by. + type: string + type: array hasExtendedTitle: description: Whether the notifications include the triggering group-by values in their title. @@ -44078,7 +44169,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_read - summary: Get the list of signal-based rules + summary: Get the list of signal-based notification rules tags: - Security Monitoring x-permission: @@ -44120,7 +44211,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_write - summary: Create a new signal-based rule + summary: Create a new signal-based notification rule tags: - Security Monitoring x-codegen-request-body-name: body @@ -44153,7 +44244,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_write - summary: Delete a signal-based rule + summary: Delete a signal-based notification rule tags: - Security Monitoring x-permission: @@ -44190,7 +44281,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_read - summary: Get details of a signal-based rule + summary: Get details of a signal-based notification rule tags: - Security Monitoring x-permission: @@ -44236,7 +44327,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_write - summary: Patch a signal-based rule + summary: Patch a signal-based notification rule tags: - Security Monitoring x-codegen-request-body-name: body @@ -44636,7 +44727,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_read - summary: Get the list of vulnerability-based rules + summary: Get the list of vulnerability notification rules tags: - Security Monitoring x-permission: @@ -44678,7 +44769,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_write - summary: Create a new vulnerability-based rule + summary: Create a new vulnerability-based notification rule tags: - Security Monitoring x-codegen-request-body-name: body @@ -44711,7 +44802,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_write - summary: Delete a vulnerability-based rule + summary: Delete a vulnerability-based notification rule tags: - Security Monitoring x-permission: @@ -44748,7 +44839,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_read - summary: Get details of a vulnerability-based rule + summary: Get details of a vulnerability notification rule tags: - Security Monitoring x-permission: @@ -44794,7 +44885,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_notification_profiles_write - summary: Patch a vulnerability-based rule + summary: Patch a vulnerability-based notification rule tags: - Security Monitoring x-codegen-request-body-name: body diff --git a/api/datadogV2/api_security_monitoring.go b/api/datadogV2/api_security_monitoring.go index 9b1c9b77923..17a33dfa272 100644 --- a/api/datadogV2/api_security_monitoring.go +++ b/api/datadogV2/api_security_monitoring.go @@ -529,7 +529,7 @@ func (a *SecurityMonitoringApi) CreateSecurityMonitoringSuppression(ctx _context return localVarReturnValue, localVarHTTPResponse, nil } -// CreateSignalNotificationRule Create a new signal-based rule. +// CreateSignalNotificationRule Create a new signal-based notification rule. // Create a new notification rule for security signals and return the created rule. func (a *SecurityMonitoringApi) CreateSignalNotificationRule(ctx _context.Context, body CreateNotificationRuleParameters) (NotificationRuleResponse, *_nethttp.Response, error) { var ( @@ -602,7 +602,7 @@ func (a *SecurityMonitoringApi) CreateSignalNotificationRule(ctx _context.Contex return localVarReturnValue, localVarHTTPResponse, nil } -// CreateVulnerabilityNotificationRule Create a new vulnerability-based rule. +// CreateVulnerabilityNotificationRule Create a new vulnerability-based notification rule. // Create a new notification rule for security vulnerabilities and return the created rule. func (a *SecurityMonitoringApi) CreateVulnerabilityNotificationRule(ctx _context.Context, body CreateNotificationRuleParameters) (NotificationRuleResponse, *_nethttp.Response, error) { var ( @@ -928,7 +928,7 @@ func (a *SecurityMonitoringApi) DeleteSecurityMonitoringSuppression(ctx _context return localVarHTTPResponse, nil } -// DeleteSignalNotificationRule Delete a signal-based rule. +// DeleteSignalNotificationRule Delete a signal-based notification rule. // Delete a notification rule for security signals. func (a *SecurityMonitoringApi) DeleteSignalNotificationRule(ctx _context.Context, id string) (*_nethttp.Response, error) { var ( @@ -989,7 +989,7 @@ func (a *SecurityMonitoringApi) DeleteSignalNotificationRule(ctx _context.Contex return localVarHTTPResponse, nil } -// DeleteVulnerabilityNotificationRule Delete a vulnerability-based rule. +// DeleteVulnerabilityNotificationRule Delete a vulnerability-based notification rule. // Delete a notification rule for security vulnerabilities. func (a *SecurityMonitoringApi) DeleteVulnerabilityNotificationRule(ctx _context.Context, id string) (*_nethttp.Response, error) { var ( @@ -1856,7 +1856,7 @@ func (a *SecurityMonitoringApi) GetSecurityMonitoringSuppression(ctx _context.Co return localVarReturnValue, localVarHTTPResponse, nil } -// GetSignalNotificationRule Get details of a signal-based rule. +// GetSignalNotificationRule Get details of a signal-based notification rule. // Get the details of a notification rule for security signals. func (a *SecurityMonitoringApi) GetSignalNotificationRule(ctx _context.Context, id string) (NotificationRuleResponse, *_nethttp.Response, error) { var ( @@ -1927,7 +1927,7 @@ func (a *SecurityMonitoringApi) GetSignalNotificationRule(ctx _context.Context, return localVarReturnValue, localVarHTTPResponse, nil } -// GetSignalNotificationRules Get the list of signal-based rules. +// GetSignalNotificationRules Get the list of signal-based notification rules. // Returns the list of notification rules for security signals. func (a *SecurityMonitoringApi) GetSignalNotificationRules(ctx _context.Context) (interface{}, *_nethttp.Response, error) { var ( @@ -1997,7 +1997,7 @@ func (a *SecurityMonitoringApi) GetSignalNotificationRules(ctx _context.Context) return localVarReturnValue, localVarHTTPResponse, nil } -// GetVulnerabilityNotificationRule Get details of a vulnerability-based rule. +// GetVulnerabilityNotificationRule Get details of a vulnerability notification rule. // Get the details of a notification rule for security vulnerabilities. func (a *SecurityMonitoringApi) GetVulnerabilityNotificationRule(ctx _context.Context, id string) (NotificationRuleResponse, *_nethttp.Response, error) { var ( @@ -2068,7 +2068,7 @@ func (a *SecurityMonitoringApi) GetVulnerabilityNotificationRule(ctx _context.Co return localVarReturnValue, localVarHTTPResponse, nil } -// GetVulnerabilityNotificationRules Get the list of vulnerability-based rules. +// GetVulnerabilityNotificationRules Get the list of vulnerability notification rules. // Returns the list of notification rules for security vulnerabilities. func (a *SecurityMonitoringApi) GetVulnerabilityNotificationRules(ctx _context.Context) (interface{}, *_nethttp.Response, error) { var ( @@ -3985,7 +3985,7 @@ func (a *SecurityMonitoringApi) MuteFindings(ctx _context.Context, body BulkMute return localVarReturnValue, localVarHTTPResponse, nil } -// PatchSignalNotificationRule Patch a signal-based rule. +// PatchSignalNotificationRule Patch a signal-based notification rule. // Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated. func (a *SecurityMonitoringApi) PatchSignalNotificationRule(ctx _context.Context, id string, body PatchNotificationRuleParameters) (NotificationRuleResponse, *_nethttp.Response, error) { var ( @@ -4068,7 +4068,7 @@ func (a *SecurityMonitoringApi) PatchSignalNotificationRule(ctx _context.Context return localVarReturnValue, localVarHTTPResponse, nil } -// PatchVulnerabilityNotificationRule Patch a vulnerability-based rule. +// PatchVulnerabilityNotificationRule Patch a vulnerability-based notification rule. // Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated. func (a *SecurityMonitoringApi) PatchVulnerabilityNotificationRule(ctx _context.Context, id string, body PatchNotificationRuleParameters) (NotificationRuleResponse, *_nethttp.Response, error) { var ( diff --git a/api/datadogV2/model_job_definition.go b/api/datadogV2/model_job_definition.go index a4167132386..17ff729070b 100644 --- a/api/datadogV2/model_job_definition.go +++ b/api/datadogV2/model_job_definition.go @@ -18,6 +18,8 @@ type JobDefinition struct { Cases []SecurityMonitoringRuleCaseCreate `json:"cases"` // Starting time of data analyzed by the job. From int64 `json:"from"` + // Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` // Index used to load the data. Index string `json:"index"` // Message for generated results. @@ -141,6 +143,34 @@ func (o *JobDefinition) SetFrom(v int64) { o.From = v } +// GetGroupSignalsBy returns the GroupSignalsBy field value if set, zero value otherwise. +func (o *JobDefinition) GetGroupSignalsBy() []string { + if o == nil || o.GroupSignalsBy == nil { + var ret []string + return ret + } + return o.GroupSignalsBy +} + +// GetGroupSignalsByOk returns a tuple with the GroupSignalsBy field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *JobDefinition) GetGroupSignalsByOk() (*[]string, bool) { + if o == nil || o.GroupSignalsBy == nil { + return nil, false + } + return &o.GroupSignalsBy, true +} + +// HasGroupSignalsBy returns a boolean if a field has been set. +func (o *JobDefinition) HasGroupSignalsBy() bool { + return o != nil && o.GroupSignalsBy != nil +} + +// SetGroupSignalsBy gets a reference to the given []string and assigns it to the GroupSignalsBy field. +func (o *JobDefinition) SetGroupSignalsBy(v []string) { + o.GroupSignalsBy = v +} + // GetIndex returns the Index field value. func (o *JobDefinition) GetIndex() string { if o == nil { @@ -407,6 +437,9 @@ func (o JobDefinition) MarshalJSON() ([]byte, error) { } toSerialize["cases"] = o.Cases toSerialize["from"] = o.From + if o.GroupSignalsBy != nil { + toSerialize["groupSignalsBy"] = o.GroupSignalsBy + } toSerialize["index"] = o.Index toSerialize["message"] = o.Message toSerialize["name"] = o.Name @@ -440,6 +473,7 @@ func (o *JobDefinition) UnmarshalJSON(bytes []byte) (err error) { CalculatedFields []CalculatedField `json:"calculatedFields,omitempty"` Cases *[]SecurityMonitoringRuleCaseCreate `json:"cases"` From *int64 `json:"from"` + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` Index *string `json:"index"` Message *string `json:"message"` Name *string `json:"name"` @@ -477,7 +511,7 @@ func (o *JobDefinition) UnmarshalJSON(bytes []byte) (err error) { } additionalProperties := make(map[string]interface{}) if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { - datadog.DeleteKeys(additionalProperties, &[]string{"calculatedFields", "cases", "from", "index", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "to", "type"}) + datadog.DeleteKeys(additionalProperties, &[]string{"calculatedFields", "cases", "from", "groupSignalsBy", "index", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "to", "type"}) } else { return err } @@ -486,6 +520,7 @@ func (o *JobDefinition) UnmarshalJSON(bytes []byte) (err error) { o.CalculatedFields = all.CalculatedFields o.Cases = *all.Cases o.From = *all.From + o.GroupSignalsBy = all.GroupSignalsBy o.Index = *all.Index o.Message = *all.Message o.Name = *all.Name diff --git a/api/datadogV2/model_rule_types_items.go b/api/datadogV2/model_rule_types_items.go index f899df19047..4bdfcc68a35 100644 --- a/api/datadogV2/model_rule_types_items.go +++ b/api/datadogV2/model_rule_types_items.go @@ -10,7 +10,7 @@ import ( "github.com/DataDog/datadog-api-client-go/v2/api/datadog" ) -// RuleTypesItems Security rule types which can be used in notification rules. +// RuleTypesItems Security rule type which can be used in security rules. // Signal-based notification rules can filter signals based on rule types application_security, log_detection, // workload_security, signal_correlation, cloud_configuration and infrastructure_configuration. // Vulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability, diff --git a/api/datadogV2/model_security_monitoring_rule_case.go b/api/datadogV2/model_security_monitoring_rule_case.go index 31ee4a05f59..c50ec4cfa70 100644 --- a/api/datadogV2/model_security_monitoring_rule_case.go +++ b/api/datadogV2/model_security_monitoring_rule_case.go @@ -10,6 +10,8 @@ import ( // SecurityMonitoringRuleCase Case when signal is generated. type SecurityMonitoringRuleCase struct { + // Action to perform for each rule case. + Actions []SecurityMonitoringRuleCaseAction `json:"actions,omitempty"` // A rule case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated // based on the event counts in the previously defined queries. Condition *string `json:"condition,omitempty"` @@ -41,6 +43,34 @@ func NewSecurityMonitoringRuleCaseWithDefaults() *SecurityMonitoringRuleCase { return &this } +// GetActions returns the Actions field value if set, zero value otherwise. +func (o *SecurityMonitoringRuleCase) GetActions() []SecurityMonitoringRuleCaseAction { + if o == nil || o.Actions == nil { + var ret []SecurityMonitoringRuleCaseAction + return ret + } + return o.Actions +} + +// GetActionsOk returns a tuple with the Actions field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringRuleCase) GetActionsOk() (*[]SecurityMonitoringRuleCaseAction, bool) { + if o == nil || o.Actions == nil { + return nil, false + } + return &o.Actions, true +} + +// HasActions returns a boolean if a field has been set. +func (o *SecurityMonitoringRuleCase) HasActions() bool { + return o != nil && o.Actions != nil +} + +// SetActions gets a reference to the given []SecurityMonitoringRuleCaseAction and assigns it to the Actions field. +func (o *SecurityMonitoringRuleCase) SetActions(v []SecurityMonitoringRuleCaseAction) { + o.Actions = v +} + // GetCondition returns the Condition field value if set, zero value otherwise. func (o *SecurityMonitoringRuleCase) GetCondition() string { if o == nil || o.Condition == nil { @@ -159,6 +189,9 @@ func (o SecurityMonitoringRuleCase) MarshalJSON() ([]byte, error) { if o.UnparsedObject != nil { return datadog.Marshal(o.UnparsedObject) } + if o.Actions != nil { + toSerialize["actions"] = o.Actions + } if o.Condition != nil { toSerialize["condition"] = o.Condition } @@ -181,22 +214,24 @@ func (o SecurityMonitoringRuleCase) MarshalJSON() ([]byte, error) { // UnmarshalJSON deserializes the given payload. func (o *SecurityMonitoringRuleCase) UnmarshalJSON(bytes []byte) (err error) { all := struct { - Condition *string `json:"condition,omitempty"` - Name *string `json:"name,omitempty"` - Notifications []string `json:"notifications,omitempty"` - Status *SecurityMonitoringRuleSeverity `json:"status,omitempty"` + Actions []SecurityMonitoringRuleCaseAction `json:"actions,omitempty"` + Condition *string `json:"condition,omitempty"` + Name *string `json:"name,omitempty"` + Notifications []string `json:"notifications,omitempty"` + Status *SecurityMonitoringRuleSeverity `json:"status,omitempty"` }{} if err = datadog.Unmarshal(bytes, &all); err != nil { return datadog.Unmarshal(bytes, &o.UnparsedObject) } additionalProperties := make(map[string]interface{}) if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { - datadog.DeleteKeys(additionalProperties, &[]string{"condition", "name", "notifications", "status"}) + datadog.DeleteKeys(additionalProperties, &[]string{"actions", "condition", "name", "notifications", "status"}) } else { return err } hasInvalidField := false + o.Actions = all.Actions o.Condition = all.Condition o.Name = all.Name o.Notifications = all.Notifications diff --git a/api/datadogV2/model_security_monitoring_rule_case_action.go b/api/datadogV2/model_security_monitoring_rule_case_action.go new file mode 100644 index 00000000000..85413213eec --- /dev/null +++ b/api/datadogV2/model_security_monitoring_rule_case_action.go @@ -0,0 +1,150 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. + +package datadogV2 + +import ( + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" +) + +// SecurityMonitoringRuleCaseAction Action to perform when a signals trigger. Only available for Application Security rule type +type SecurityMonitoringRuleCaseAction struct { + // Options for the rule action + Options *SecurityMonitoringRuleCaseActionOptions `json:"options,omitempty"` + // Type of the action + Type *SecurityMonitoringRuleCaseActionType `json:"type,omitempty"` + // UnparsedObject contains the raw value of the object if there was an error when deserializing into the struct + UnparsedObject map[string]interface{} `json:"-"` + AdditionalProperties map[string]interface{} `json:"-"` +} + +// NewSecurityMonitoringRuleCaseAction instantiates a new SecurityMonitoringRuleCaseAction object. +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed. +func NewSecurityMonitoringRuleCaseAction() *SecurityMonitoringRuleCaseAction { + this := SecurityMonitoringRuleCaseAction{} + return &this +} + +// NewSecurityMonitoringRuleCaseActionWithDefaults instantiates a new SecurityMonitoringRuleCaseAction object. +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set. +func NewSecurityMonitoringRuleCaseActionWithDefaults() *SecurityMonitoringRuleCaseAction { + this := SecurityMonitoringRuleCaseAction{} + return &this +} + +// GetOptions returns the Options field value if set, zero value otherwise. +func (o *SecurityMonitoringRuleCaseAction) GetOptions() SecurityMonitoringRuleCaseActionOptions { + if o == nil || o.Options == nil { + var ret SecurityMonitoringRuleCaseActionOptions + return ret + } + return *o.Options +} + +// GetOptionsOk returns a tuple with the Options field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringRuleCaseAction) GetOptionsOk() (*SecurityMonitoringRuleCaseActionOptions, bool) { + if o == nil || o.Options == nil { + return nil, false + } + return o.Options, true +} + +// HasOptions returns a boolean if a field has been set. +func (o *SecurityMonitoringRuleCaseAction) HasOptions() bool { + return o != nil && o.Options != nil +} + +// SetOptions gets a reference to the given SecurityMonitoringRuleCaseActionOptions and assigns it to the Options field. +func (o *SecurityMonitoringRuleCaseAction) SetOptions(v SecurityMonitoringRuleCaseActionOptions) { + o.Options = &v +} + +// GetType returns the Type field value if set, zero value otherwise. +func (o *SecurityMonitoringRuleCaseAction) GetType() SecurityMonitoringRuleCaseActionType { + if o == nil || o.Type == nil { + var ret SecurityMonitoringRuleCaseActionType + return ret + } + return *o.Type +} + +// GetTypeOk returns a tuple with the Type field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringRuleCaseAction) GetTypeOk() (*SecurityMonitoringRuleCaseActionType, bool) { + if o == nil || o.Type == nil { + return nil, false + } + return o.Type, true +} + +// HasType returns a boolean if a field has been set. +func (o *SecurityMonitoringRuleCaseAction) HasType() bool { + return o != nil && o.Type != nil +} + +// SetType gets a reference to the given SecurityMonitoringRuleCaseActionType and assigns it to the Type field. +func (o *SecurityMonitoringRuleCaseAction) SetType(v SecurityMonitoringRuleCaseActionType) { + o.Type = &v +} + +// MarshalJSON serializes the struct using spec logic. +func (o SecurityMonitoringRuleCaseAction) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.UnparsedObject != nil { + return datadog.Marshal(o.UnparsedObject) + } + if o.Options != nil { + toSerialize["options"] = o.Options + } + if o.Type != nil { + toSerialize["type"] = o.Type + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return datadog.Marshal(toSerialize) +} + +// UnmarshalJSON deserializes the given payload. +func (o *SecurityMonitoringRuleCaseAction) UnmarshalJSON(bytes []byte) (err error) { + all := struct { + Options *SecurityMonitoringRuleCaseActionOptions `json:"options,omitempty"` + Type *SecurityMonitoringRuleCaseActionType `json:"type,omitempty"` + }{} + if err = datadog.Unmarshal(bytes, &all); err != nil { + return datadog.Unmarshal(bytes, &o.UnparsedObject) + } + additionalProperties := make(map[string]interface{}) + if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { + datadog.DeleteKeys(additionalProperties, &[]string{"options", "type"}) + } else { + return err + } + + hasInvalidField := false + if all.Options != nil && all.Options.UnparsedObject != nil && o.UnparsedObject == nil { + hasInvalidField = true + } + o.Options = all.Options + if all.Type != nil && !all.Type.IsValid() { + hasInvalidField = true + } else { + o.Type = all.Type + } + + if len(additionalProperties) > 0 { + o.AdditionalProperties = additionalProperties + } + + if hasInvalidField { + return datadog.Unmarshal(bytes, &o.UnparsedObject) + } + + return nil +} diff --git a/api/datadogV2/model_security_monitoring_rule_case_action_options.go b/api/datadogV2/model_security_monitoring_rule_case_action_options.go new file mode 100644 index 00000000000..e979269365e --- /dev/null +++ b/api/datadogV2/model_security_monitoring_rule_case_action_options.go @@ -0,0 +1,102 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. + +package datadogV2 + +import ( + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" +) + +// SecurityMonitoringRuleCaseActionOptions Options for the rule action +type SecurityMonitoringRuleCaseActionOptions struct { + // Duration of the action in seconds. 0 means no expiration + Duration *int64 `json:"duration,omitempty"` + // UnparsedObject contains the raw value of the object if there was an error when deserializing into the struct + UnparsedObject map[string]interface{} `json:"-"` + AdditionalProperties map[string]interface{} `json:"-"` +} + +// NewSecurityMonitoringRuleCaseActionOptions instantiates a new SecurityMonitoringRuleCaseActionOptions object. +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed. +func NewSecurityMonitoringRuleCaseActionOptions() *SecurityMonitoringRuleCaseActionOptions { + this := SecurityMonitoringRuleCaseActionOptions{} + return &this +} + +// NewSecurityMonitoringRuleCaseActionOptionsWithDefaults instantiates a new SecurityMonitoringRuleCaseActionOptions object. +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set. +func NewSecurityMonitoringRuleCaseActionOptionsWithDefaults() *SecurityMonitoringRuleCaseActionOptions { + this := SecurityMonitoringRuleCaseActionOptions{} + return &this +} + +// GetDuration returns the Duration field value if set, zero value otherwise. +func (o *SecurityMonitoringRuleCaseActionOptions) GetDuration() int64 { + if o == nil || o.Duration == nil { + var ret int64 + return ret + } + return *o.Duration +} + +// GetDurationOk returns a tuple with the Duration field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringRuleCaseActionOptions) GetDurationOk() (*int64, bool) { + if o == nil || o.Duration == nil { + return nil, false + } + return o.Duration, true +} + +// HasDuration returns a boolean if a field has been set. +func (o *SecurityMonitoringRuleCaseActionOptions) HasDuration() bool { + return o != nil && o.Duration != nil +} + +// SetDuration gets a reference to the given int64 and assigns it to the Duration field. +func (o *SecurityMonitoringRuleCaseActionOptions) SetDuration(v int64) { + o.Duration = &v +} + +// MarshalJSON serializes the struct using spec logic. +func (o SecurityMonitoringRuleCaseActionOptions) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.UnparsedObject != nil { + return datadog.Marshal(o.UnparsedObject) + } + if o.Duration != nil { + toSerialize["duration"] = o.Duration + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return datadog.Marshal(toSerialize) +} + +// UnmarshalJSON deserializes the given payload. +func (o *SecurityMonitoringRuleCaseActionOptions) UnmarshalJSON(bytes []byte) (err error) { + all := struct { + Duration *int64 `json:"duration,omitempty"` + }{} + if err = datadog.Unmarshal(bytes, &all); err != nil { + return datadog.Unmarshal(bytes, &o.UnparsedObject) + } + additionalProperties := make(map[string]interface{}) + if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { + datadog.DeleteKeys(additionalProperties, &[]string{"duration"}) + } else { + return err + } + o.Duration = all.Duration + + if len(additionalProperties) > 0 { + o.AdditionalProperties = additionalProperties + } + + return nil +} diff --git a/api/datadogV2/model_security_monitoring_rule_case_action_type.go b/api/datadogV2/model_security_monitoring_rule_case_action_type.go new file mode 100644 index 00000000000..4a01ba7a86a --- /dev/null +++ b/api/datadogV2/model_security_monitoring_rule_case_action_type.go @@ -0,0 +1,66 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. + +package datadogV2 + +import ( + "fmt" + + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" +) + +// SecurityMonitoringRuleCaseActionType Type of the action +type SecurityMonitoringRuleCaseActionType string + +// List of SecurityMonitoringRuleCaseActionType. +const ( + SECURITYMONITORINGRULECASEACTIONTYPE_BLOCK_IP SecurityMonitoringRuleCaseActionType = "block_ip" + SECURITYMONITORINGRULECASEACTIONTYPE_BLOCK_USER SecurityMonitoringRuleCaseActionType = "block_user" +) + +var allowedSecurityMonitoringRuleCaseActionTypeEnumValues = []SecurityMonitoringRuleCaseActionType{ + SECURITYMONITORINGRULECASEACTIONTYPE_BLOCK_IP, + SECURITYMONITORINGRULECASEACTIONTYPE_BLOCK_USER, +} + +// GetAllowedValues reeturns the list of possible values. +func (v *SecurityMonitoringRuleCaseActionType) GetAllowedValues() []SecurityMonitoringRuleCaseActionType { + return allowedSecurityMonitoringRuleCaseActionTypeEnumValues +} + +// UnmarshalJSON deserializes the given payload. +func (v *SecurityMonitoringRuleCaseActionType) UnmarshalJSON(src []byte) error { + var value string + err := datadog.Unmarshal(src, &value) + if err != nil { + return err + } + *v = SecurityMonitoringRuleCaseActionType(value) + return nil +} + +// NewSecurityMonitoringRuleCaseActionTypeFromValue returns a pointer to a valid SecurityMonitoringRuleCaseActionType +// for the value passed as argument, or an error if the value passed is not allowed by the enum. +func NewSecurityMonitoringRuleCaseActionTypeFromValue(v string) (*SecurityMonitoringRuleCaseActionType, error) { + ev := SecurityMonitoringRuleCaseActionType(v) + if ev.IsValid() { + return &ev, nil + } + return nil, fmt.Errorf("invalid value '%v' for SecurityMonitoringRuleCaseActionType: valid values are %v", v, allowedSecurityMonitoringRuleCaseActionTypeEnumValues) +} + +// IsValid return true if the value is valid for the enum, false otherwise. +func (v SecurityMonitoringRuleCaseActionType) IsValid() bool { + for _, existing := range allowedSecurityMonitoringRuleCaseActionTypeEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to SecurityMonitoringRuleCaseActionType value. +func (v SecurityMonitoringRuleCaseActionType) Ptr() *SecurityMonitoringRuleCaseActionType { + return &v +} diff --git a/api/datadogV2/model_security_monitoring_rule_case_create.go b/api/datadogV2/model_security_monitoring_rule_case_create.go index 01fcb094d11..73a422aa9e8 100644 --- a/api/datadogV2/model_security_monitoring_rule_case_create.go +++ b/api/datadogV2/model_security_monitoring_rule_case_create.go @@ -12,6 +12,8 @@ import ( // SecurityMonitoringRuleCaseCreate Case when signal is generated. type SecurityMonitoringRuleCaseCreate struct { + // Action to perform for each rule case. + Actions []SecurityMonitoringRuleCaseAction `json:"actions,omitempty"` // A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated // based on the event counts in the previously defined queries. Condition *string `json:"condition,omitempty"` @@ -44,6 +46,34 @@ func NewSecurityMonitoringRuleCaseCreateWithDefaults() *SecurityMonitoringRuleCa return &this } +// GetActions returns the Actions field value if set, zero value otherwise. +func (o *SecurityMonitoringRuleCaseCreate) GetActions() []SecurityMonitoringRuleCaseAction { + if o == nil || o.Actions == nil { + var ret []SecurityMonitoringRuleCaseAction + return ret + } + return o.Actions +} + +// GetActionsOk returns a tuple with the Actions field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringRuleCaseCreate) GetActionsOk() (*[]SecurityMonitoringRuleCaseAction, bool) { + if o == nil || o.Actions == nil { + return nil, false + } + return &o.Actions, true +} + +// HasActions returns a boolean if a field has been set. +func (o *SecurityMonitoringRuleCaseCreate) HasActions() bool { + return o != nil && o.Actions != nil +} + +// SetActions gets a reference to the given []SecurityMonitoringRuleCaseAction and assigns it to the Actions field. +func (o *SecurityMonitoringRuleCaseCreate) SetActions(v []SecurityMonitoringRuleCaseAction) { + o.Actions = v +} + // GetCondition returns the Condition field value if set, zero value otherwise. func (o *SecurityMonitoringRuleCaseCreate) GetCondition() string { if o == nil || o.Condition == nil { @@ -157,6 +187,9 @@ func (o SecurityMonitoringRuleCaseCreate) MarshalJSON() ([]byte, error) { if o.UnparsedObject != nil { return datadog.Marshal(o.UnparsedObject) } + if o.Actions != nil { + toSerialize["actions"] = o.Actions + } if o.Condition != nil { toSerialize["condition"] = o.Condition } @@ -177,10 +210,11 @@ func (o SecurityMonitoringRuleCaseCreate) MarshalJSON() ([]byte, error) { // UnmarshalJSON deserializes the given payload. func (o *SecurityMonitoringRuleCaseCreate) UnmarshalJSON(bytes []byte) (err error) { all := struct { - Condition *string `json:"condition,omitempty"` - Name *string `json:"name,omitempty"` - Notifications []string `json:"notifications,omitempty"` - Status *SecurityMonitoringRuleSeverity `json:"status"` + Actions []SecurityMonitoringRuleCaseAction `json:"actions,omitempty"` + Condition *string `json:"condition,omitempty"` + Name *string `json:"name,omitempty"` + Notifications []string `json:"notifications,omitempty"` + Status *SecurityMonitoringRuleSeverity `json:"status"` }{} if err = datadog.Unmarshal(bytes, &all); err != nil { return datadog.Unmarshal(bytes, &o.UnparsedObject) @@ -190,12 +224,13 @@ func (o *SecurityMonitoringRuleCaseCreate) UnmarshalJSON(bytes []byte) (err erro } additionalProperties := make(map[string]interface{}) if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { - datadog.DeleteKeys(additionalProperties, &[]string{"condition", "name", "notifications", "status"}) + datadog.DeleteKeys(additionalProperties, &[]string{"actions", "condition", "name", "notifications", "status"}) } else { return err } hasInvalidField := false + o.Actions = all.Actions o.Condition = all.Condition o.Name = all.Name o.Notifications = all.Notifications diff --git a/api/datadogV2/model_security_monitoring_rule_update_payload.go b/api/datadogV2/model_security_monitoring_rule_update_payload.go index 0be3bb62351..1f856f70133 100644 --- a/api/datadogV2/model_security_monitoring_rule_update_payload.go +++ b/api/datadogV2/model_security_monitoring_rule_update_payload.go @@ -16,6 +16,8 @@ type SecurityMonitoringRuleUpdatePayload struct { ComplianceSignalOptions *CloudConfigurationRuleComplianceSignalOptions `json:"complianceSignalOptions,omitempty"` // Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules. Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + // Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` // Whether the notifications include the triggering group-by values in their title. HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` // Whether the rule is enabled. @@ -142,6 +144,34 @@ func (o *SecurityMonitoringRuleUpdatePayload) SetFilters(v []SecurityMonitoringF o.Filters = v } +// GetGroupSignalsBy returns the GroupSignalsBy field value if set, zero value otherwise. +func (o *SecurityMonitoringRuleUpdatePayload) GetGroupSignalsBy() []string { + if o == nil || o.GroupSignalsBy == nil { + var ret []string + return ret + } + return o.GroupSignalsBy +} + +// GetGroupSignalsByOk returns a tuple with the GroupSignalsBy field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringRuleUpdatePayload) GetGroupSignalsByOk() (*[]string, bool) { + if o == nil || o.GroupSignalsBy == nil { + return nil, false + } + return &o.GroupSignalsBy, true +} + +// HasGroupSignalsBy returns a boolean if a field has been set. +func (o *SecurityMonitoringRuleUpdatePayload) HasGroupSignalsBy() bool { + return o != nil && o.GroupSignalsBy != nil +} + +// SetGroupSignalsBy gets a reference to the given []string and assigns it to the GroupSignalsBy field. +func (o *SecurityMonitoringRuleUpdatePayload) SetGroupSignalsBy(v []string) { + o.GroupSignalsBy = v +} + // GetHasExtendedTitle returns the HasExtendedTitle field value if set, zero value otherwise. func (o *SecurityMonitoringRuleUpdatePayload) GetHasExtendedTitle() bool { if o == nil || o.HasExtendedTitle == nil { @@ -437,6 +467,9 @@ func (o SecurityMonitoringRuleUpdatePayload) MarshalJSON() ([]byte, error) { if o.Filters != nil { toSerialize["filters"] = o.Filters } + if o.GroupSignalsBy != nil { + toSerialize["groupSignalsBy"] = o.GroupSignalsBy + } if o.HasExtendedTitle != nil { toSerialize["hasExtendedTitle"] = o.HasExtendedTitle } @@ -480,6 +513,7 @@ func (o *SecurityMonitoringRuleUpdatePayload) UnmarshalJSON(bytes []byte) (err e Cases []SecurityMonitoringRuleCase `json:"cases,omitempty"` ComplianceSignalOptions *CloudConfigurationRuleComplianceSignalOptions `json:"complianceSignalOptions,omitempty"` Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` IsEnabled *bool `json:"isEnabled,omitempty"` Message *string `json:"message,omitempty"` @@ -496,7 +530,7 @@ func (o *SecurityMonitoringRuleUpdatePayload) UnmarshalJSON(bytes []byte) (err e } additionalProperties := make(map[string]interface{}) if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { - datadog.DeleteKeys(additionalProperties, &[]string{"cases", "complianceSignalOptions", "filters", "hasExtendedTitle", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "version"}) + datadog.DeleteKeys(additionalProperties, &[]string{"cases", "complianceSignalOptions", "filters", "groupSignalsBy", "hasExtendedTitle", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "version"}) } else { return err } @@ -508,6 +542,7 @@ func (o *SecurityMonitoringRuleUpdatePayload) UnmarshalJSON(bytes []byte) (err e } o.ComplianceSignalOptions = all.ComplianceSignalOptions o.Filters = all.Filters + o.GroupSignalsBy = all.GroupSignalsBy o.HasExtendedTitle = all.HasExtendedTitle o.IsEnabled = all.IsEnabled o.Message = all.Message diff --git a/api/datadogV2/model_security_monitoring_standard_rule_create_payload.go b/api/datadogV2/model_security_monitoring_standard_rule_create_payload.go index 418065f0314..ec4692926c0 100644 --- a/api/datadogV2/model_security_monitoring_standard_rule_create_payload.go +++ b/api/datadogV2/model_security_monitoring_standard_rule_create_payload.go @@ -16,6 +16,8 @@ type SecurityMonitoringStandardRuleCreatePayload struct { Cases []SecurityMonitoringRuleCaseCreate `json:"cases"` // Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules. Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + // Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` // Whether the notifications include the triggering group-by values in their title. HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` // Whether the rule is enabled. @@ -115,6 +117,34 @@ func (o *SecurityMonitoringStandardRuleCreatePayload) SetFilters(v []SecurityMon o.Filters = v } +// GetGroupSignalsBy returns the GroupSignalsBy field value if set, zero value otherwise. +func (o *SecurityMonitoringStandardRuleCreatePayload) GetGroupSignalsBy() []string { + if o == nil || o.GroupSignalsBy == nil { + var ret []string + return ret + } + return o.GroupSignalsBy +} + +// GetGroupSignalsByOk returns a tuple with the GroupSignalsBy field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringStandardRuleCreatePayload) GetGroupSignalsByOk() (*[]string, bool) { + if o == nil || o.GroupSignalsBy == nil { + return nil, false + } + return &o.GroupSignalsBy, true +} + +// HasGroupSignalsBy returns a boolean if a field has been set. +func (o *SecurityMonitoringStandardRuleCreatePayload) HasGroupSignalsBy() bool { + return o != nil && o.GroupSignalsBy != nil +} + +// SetGroupSignalsBy gets a reference to the given []string and assigns it to the GroupSignalsBy field. +func (o *SecurityMonitoringStandardRuleCreatePayload) SetGroupSignalsBy(v []string) { + o.GroupSignalsBy = v +} + // GetHasExtendedTitle returns the HasExtendedTitle field value if set, zero value otherwise. func (o *SecurityMonitoringStandardRuleCreatePayload) GetHasExtendedTitle() bool { if o == nil || o.HasExtendedTitle == nil { @@ -380,6 +410,9 @@ func (o SecurityMonitoringStandardRuleCreatePayload) MarshalJSON() ([]byte, erro if o.Filters != nil { toSerialize["filters"] = o.Filters } + if o.GroupSignalsBy != nil { + toSerialize["groupSignalsBy"] = o.GroupSignalsBy + } if o.HasExtendedTitle != nil { toSerialize["hasExtendedTitle"] = o.HasExtendedTitle } @@ -412,6 +445,7 @@ func (o *SecurityMonitoringStandardRuleCreatePayload) UnmarshalJSON(bytes []byte all := struct { Cases *[]SecurityMonitoringRuleCaseCreate `json:"cases"` Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` IsEnabled *bool `json:"isEnabled"` Message *string `json:"message"` @@ -446,7 +480,7 @@ func (o *SecurityMonitoringStandardRuleCreatePayload) UnmarshalJSON(bytes []byte } additionalProperties := make(map[string]interface{}) if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { - datadog.DeleteKeys(additionalProperties, &[]string{"cases", "filters", "hasExtendedTitle", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "type"}) + datadog.DeleteKeys(additionalProperties, &[]string{"cases", "filters", "groupSignalsBy", "hasExtendedTitle", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "type"}) } else { return err } @@ -454,6 +488,7 @@ func (o *SecurityMonitoringStandardRuleCreatePayload) UnmarshalJSON(bytes []byte hasInvalidField := false o.Cases = *all.Cases o.Filters = all.Filters + o.GroupSignalsBy = all.GroupSignalsBy o.HasExtendedTitle = all.HasExtendedTitle o.IsEnabled = *all.IsEnabled o.Message = *all.Message diff --git a/api/datadogV2/model_security_monitoring_standard_rule_payload.go b/api/datadogV2/model_security_monitoring_standard_rule_payload.go index a7b7bd182d8..494f701b933 100644 --- a/api/datadogV2/model_security_monitoring_standard_rule_payload.go +++ b/api/datadogV2/model_security_monitoring_standard_rule_payload.go @@ -16,6 +16,8 @@ type SecurityMonitoringStandardRulePayload struct { Cases []SecurityMonitoringRuleCaseCreate `json:"cases"` // Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules. Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + // Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` // Whether the notifications include the triggering group-by values in their title. HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` // Whether the rule is enabled. @@ -115,6 +117,34 @@ func (o *SecurityMonitoringStandardRulePayload) SetFilters(v []SecurityMonitorin o.Filters = v } +// GetGroupSignalsBy returns the GroupSignalsBy field value if set, zero value otherwise. +func (o *SecurityMonitoringStandardRulePayload) GetGroupSignalsBy() []string { + if o == nil || o.GroupSignalsBy == nil { + var ret []string + return ret + } + return o.GroupSignalsBy +} + +// GetGroupSignalsByOk returns a tuple with the GroupSignalsBy field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringStandardRulePayload) GetGroupSignalsByOk() (*[]string, bool) { + if o == nil || o.GroupSignalsBy == nil { + return nil, false + } + return &o.GroupSignalsBy, true +} + +// HasGroupSignalsBy returns a boolean if a field has been set. +func (o *SecurityMonitoringStandardRulePayload) HasGroupSignalsBy() bool { + return o != nil && o.GroupSignalsBy != nil +} + +// SetGroupSignalsBy gets a reference to the given []string and assigns it to the GroupSignalsBy field. +func (o *SecurityMonitoringStandardRulePayload) SetGroupSignalsBy(v []string) { + o.GroupSignalsBy = v +} + // GetHasExtendedTitle returns the HasExtendedTitle field value if set, zero value otherwise. func (o *SecurityMonitoringStandardRulePayload) GetHasExtendedTitle() bool { if o == nil || o.HasExtendedTitle == nil { @@ -380,6 +410,9 @@ func (o SecurityMonitoringStandardRulePayload) MarshalJSON() ([]byte, error) { if o.Filters != nil { toSerialize["filters"] = o.Filters } + if o.GroupSignalsBy != nil { + toSerialize["groupSignalsBy"] = o.GroupSignalsBy + } if o.HasExtendedTitle != nil { toSerialize["hasExtendedTitle"] = o.HasExtendedTitle } @@ -412,6 +445,7 @@ func (o *SecurityMonitoringStandardRulePayload) UnmarshalJSON(bytes []byte) (err all := struct { Cases *[]SecurityMonitoringRuleCaseCreate `json:"cases"` Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` IsEnabled *bool `json:"isEnabled"` Message *string `json:"message"` @@ -446,7 +480,7 @@ func (o *SecurityMonitoringStandardRulePayload) UnmarshalJSON(bytes []byte) (err } additionalProperties := make(map[string]interface{}) if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { - datadog.DeleteKeys(additionalProperties, &[]string{"cases", "filters", "hasExtendedTitle", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "type"}) + datadog.DeleteKeys(additionalProperties, &[]string{"cases", "filters", "groupSignalsBy", "hasExtendedTitle", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "type"}) } else { return err } @@ -454,6 +488,7 @@ func (o *SecurityMonitoringStandardRulePayload) UnmarshalJSON(bytes []byte) (err hasInvalidField := false o.Cases = *all.Cases o.Filters = all.Filters + o.GroupSignalsBy = all.GroupSignalsBy o.HasExtendedTitle = all.HasExtendedTitle o.IsEnabled = *all.IsEnabled o.Message = *all.Message diff --git a/api/datadogV2/model_security_monitoring_standard_rule_response.go b/api/datadogV2/model_security_monitoring_standard_rule_response.go index e94d61f586f..b6f11222587 100644 --- a/api/datadogV2/model_security_monitoring_standard_rule_response.go +++ b/api/datadogV2/model_security_monitoring_standard_rule_response.go @@ -24,6 +24,8 @@ type SecurityMonitoringStandardRuleResponse struct { DeprecationDate *int64 `json:"deprecationDate,omitempty"` // Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules. Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + // Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` // Whether the notifications include the triggering group-by values in their title. HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` // The ID of the rule. @@ -274,6 +276,34 @@ func (o *SecurityMonitoringStandardRuleResponse) SetFilters(v []SecurityMonitori o.Filters = v } +// GetGroupSignalsBy returns the GroupSignalsBy field value if set, zero value otherwise. +func (o *SecurityMonitoringStandardRuleResponse) GetGroupSignalsBy() []string { + if o == nil || o.GroupSignalsBy == nil { + var ret []string + return ret + } + return o.GroupSignalsBy +} + +// GetGroupSignalsByOk returns a tuple with the GroupSignalsBy field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringStandardRuleResponse) GetGroupSignalsByOk() (*[]string, bool) { + if o == nil || o.GroupSignalsBy == nil { + return nil, false + } + return &o.GroupSignalsBy, true +} + +// HasGroupSignalsBy returns a boolean if a field has been set. +func (o *SecurityMonitoringStandardRuleResponse) HasGroupSignalsBy() bool { + return o != nil && o.GroupSignalsBy != nil +} + +// SetGroupSignalsBy gets a reference to the given []string and assigns it to the GroupSignalsBy field. +func (o *SecurityMonitoringStandardRuleResponse) SetGroupSignalsBy(v []string) { + o.GroupSignalsBy = v +} + // GetHasExtendedTitle returns the HasExtendedTitle field value if set, zero value otherwise. func (o *SecurityMonitoringStandardRuleResponse) GetHasExtendedTitle() bool { if o == nil || o.HasExtendedTitle == nil { @@ -749,6 +779,9 @@ func (o SecurityMonitoringStandardRuleResponse) MarshalJSON() ([]byte, error) { if o.Filters != nil { toSerialize["filters"] = o.Filters } + if o.GroupSignalsBy != nil { + toSerialize["groupSignalsBy"] = o.GroupSignalsBy + } if o.HasExtendedTitle != nil { toSerialize["hasExtendedTitle"] = o.HasExtendedTitle } @@ -814,6 +847,7 @@ func (o *SecurityMonitoringStandardRuleResponse) UnmarshalJSON(bytes []byte) (er DefaultTags []string `json:"defaultTags,omitempty"` DeprecationDate *int64 `json:"deprecationDate,omitempty"` Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` Id *string `json:"id,omitempty"` IsDefault *bool `json:"isDefault,omitempty"` @@ -836,7 +870,7 @@ func (o *SecurityMonitoringStandardRuleResponse) UnmarshalJSON(bytes []byte) (er } additionalProperties := make(map[string]interface{}) if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { - datadog.DeleteKeys(additionalProperties, &[]string{"cases", "complianceSignalOptions", "createdAt", "creationAuthorId", "defaultTags", "deprecationDate", "filters", "hasExtendedTitle", "id", "isDefault", "isDeleted", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "type", "updateAuthorId", "updatedAt", "version"}) + datadog.DeleteKeys(additionalProperties, &[]string{"cases", "complianceSignalOptions", "createdAt", "creationAuthorId", "defaultTags", "deprecationDate", "filters", "groupSignalsBy", "hasExtendedTitle", "id", "isDefault", "isDeleted", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "type", "updateAuthorId", "updatedAt", "version"}) } else { return err } @@ -852,6 +886,7 @@ func (o *SecurityMonitoringStandardRuleResponse) UnmarshalJSON(bytes []byte) (er o.DefaultTags = all.DefaultTags o.DeprecationDate = all.DeprecationDate o.Filters = all.Filters + o.GroupSignalsBy = all.GroupSignalsBy o.HasExtendedTitle = all.HasExtendedTitle o.Id = all.Id o.IsDefault = all.IsDefault diff --git a/api/datadogV2/model_security_monitoring_standard_rule_test_payload.go b/api/datadogV2/model_security_monitoring_standard_rule_test_payload.go index 7f6b59e87cb..d7f2668d0ad 100644 --- a/api/datadogV2/model_security_monitoring_standard_rule_test_payload.go +++ b/api/datadogV2/model_security_monitoring_standard_rule_test_payload.go @@ -16,6 +16,8 @@ type SecurityMonitoringStandardRuleTestPayload struct { Cases []SecurityMonitoringRuleCaseCreate `json:"cases"` // Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules. Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + // Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` // Whether the notifications include the triggering group-by values in their title. HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` // Whether the rule is enabled. @@ -115,6 +117,34 @@ func (o *SecurityMonitoringStandardRuleTestPayload) SetFilters(v []SecurityMonit o.Filters = v } +// GetGroupSignalsBy returns the GroupSignalsBy field value if set, zero value otherwise. +func (o *SecurityMonitoringStandardRuleTestPayload) GetGroupSignalsBy() []string { + if o == nil || o.GroupSignalsBy == nil { + var ret []string + return ret + } + return o.GroupSignalsBy +} + +// GetGroupSignalsByOk returns a tuple with the GroupSignalsBy field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SecurityMonitoringStandardRuleTestPayload) GetGroupSignalsByOk() (*[]string, bool) { + if o == nil || o.GroupSignalsBy == nil { + return nil, false + } + return &o.GroupSignalsBy, true +} + +// HasGroupSignalsBy returns a boolean if a field has been set. +func (o *SecurityMonitoringStandardRuleTestPayload) HasGroupSignalsBy() bool { + return o != nil && o.GroupSignalsBy != nil +} + +// SetGroupSignalsBy gets a reference to the given []string and assigns it to the GroupSignalsBy field. +func (o *SecurityMonitoringStandardRuleTestPayload) SetGroupSignalsBy(v []string) { + o.GroupSignalsBy = v +} + // GetHasExtendedTitle returns the HasExtendedTitle field value if set, zero value otherwise. func (o *SecurityMonitoringStandardRuleTestPayload) GetHasExtendedTitle() bool { if o == nil || o.HasExtendedTitle == nil { @@ -380,6 +410,9 @@ func (o SecurityMonitoringStandardRuleTestPayload) MarshalJSON() ([]byte, error) if o.Filters != nil { toSerialize["filters"] = o.Filters } + if o.GroupSignalsBy != nil { + toSerialize["groupSignalsBy"] = o.GroupSignalsBy + } if o.HasExtendedTitle != nil { toSerialize["hasExtendedTitle"] = o.HasExtendedTitle } @@ -412,6 +445,7 @@ func (o *SecurityMonitoringStandardRuleTestPayload) UnmarshalJSON(bytes []byte) all := struct { Cases *[]SecurityMonitoringRuleCaseCreate `json:"cases"` Filters []SecurityMonitoringFilter `json:"filters,omitempty"` + GroupSignalsBy []string `json:"groupSignalsBy,omitempty"` HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty"` IsEnabled *bool `json:"isEnabled"` Message *string `json:"message"` @@ -446,7 +480,7 @@ func (o *SecurityMonitoringStandardRuleTestPayload) UnmarshalJSON(bytes []byte) } additionalProperties := make(map[string]interface{}) if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil { - datadog.DeleteKeys(additionalProperties, &[]string{"cases", "filters", "hasExtendedTitle", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "type"}) + datadog.DeleteKeys(additionalProperties, &[]string{"cases", "filters", "groupSignalsBy", "hasExtendedTitle", "isEnabled", "message", "name", "options", "queries", "referenceTables", "tags", "thirdPartyCases", "type"}) } else { return err } @@ -454,6 +488,7 @@ func (o *SecurityMonitoringStandardRuleTestPayload) UnmarshalJSON(bytes []byte) hasInvalidField := false o.Cases = *all.Cases o.Filters = all.Filters + o.GroupSignalsBy = all.GroupSignalsBy o.HasExtendedTitle = all.HasExtendedTitle o.IsEnabled = *all.IsEnabled o.Message = *all.Message diff --git a/api/datadogV2/model_selectors.go b/api/datadogV2/model_selectors.go index 82368f64e89..c3e1f847f9b 100644 --- a/api/datadogV2/model_selectors.go +++ b/api/datadogV2/model_selectors.go @@ -16,7 +16,7 @@ import ( type Selectors struct { // The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes. Query *string `json:"query,omitempty"` - // Security rule types used to filter signals and vulnerabilities generating notifications. + // Security rule types used as filters in security rules. RuleTypes []RuleTypesItems `json:"rule_types,omitempty"` // The security rules severities to consider. Severities []RuleSeverity `json:"severities,omitempty"` diff --git a/examples/v2/security-monitoring/CreateSecurityMonitoringRule_1965169892.go b/examples/v2/security-monitoring/CreateSecurityMonitoringRule_1965169892.go new file mode 100644 index 00000000000..cbfbb09054c --- /dev/null +++ b/examples/v2/security-monitoring/CreateSecurityMonitoringRule_1965169892.go @@ -0,0 +1,74 @@ +// Create a detection rule with type 'application_security 'returns "OK" response + +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2" +) + +func main() { + body := datadogV2.SecurityMonitoringRuleCreatePayload{ + SecurityMonitoringStandardRuleCreatePayload: &datadogV2.SecurityMonitoringStandardRuleCreatePayload{ + Type: datadogV2.SECURITYMONITORINGRULETYPECREATE_APPLICATION_SECURITY.Ptr(), + Name: "Example-Security-Monitoring_appsec_rule", + Queries: []datadogV2.SecurityMonitoringStandardRuleQuery{ + { + Query: datadog.PtrString("@appsec.security_activity:business_logic.users.login.failure"), + Aggregation: datadogV2.SECURITYMONITORINGRULEQUERYAGGREGATION_COUNT.Ptr(), + GroupByFields: []string{ + "service", + "@http.client_ip", + }, + DistinctFields: []string{}, + }, + }, + Filters: []datadogV2.SecurityMonitoringFilter{}, + Cases: []datadogV2.SecurityMonitoringRuleCaseCreate{ + { + Name: datadog.PtrString(""), + Status: datadogV2.SECURITYMONITORINGRULESEVERITY_INFO, + Notifications: []string{}, + Condition: datadog.PtrString("a > 100000"), + Actions: []datadogV2.SecurityMonitoringRuleCaseAction{ + { + Type: datadogV2.SECURITYMONITORINGRULECASEACTIONTYPE_BLOCK_IP.Ptr(), + Options: &datadogV2.SecurityMonitoringRuleCaseActionOptions{ + Duration: datadog.PtrInt64(900), + }, + }, + }, + }, + }, + Options: datadogV2.SecurityMonitoringRuleOptions{ + KeepAlive: datadogV2.SECURITYMONITORINGRULEKEEPALIVE_ONE_HOUR.Ptr(), + MaxSignalDuration: datadogV2.SECURITYMONITORINGRULEMAXSIGNALDURATION_ONE_DAY.Ptr(), + EvaluationWindow: datadogV2.SECURITYMONITORINGRULEEVALUATIONWINDOW_FIFTEEN_MINUTES.Ptr(), + DetectionMethod: datadogV2.SECURITYMONITORINGRULEDETECTIONMETHOD_THRESHOLD.Ptr(), + }, + IsEnabled: true, + Message: "Test rule", + Tags: []string{}, + GroupSignalsBy: []string{ + "service", + }, + }} + ctx := datadog.NewDefaultContext(context.Background()) + configuration := datadog.NewConfiguration() + apiClient := datadog.NewAPIClient(configuration) + api := datadogV2.NewSecurityMonitoringApi(apiClient) + resp, r, err := api.CreateSecurityMonitoringRule(ctx, body) + + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `SecurityMonitoringApi.CreateSecurityMonitoringRule`: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } + + responseContent, _ := json.MarshalIndent(resp, "", " ") + fmt.Fprintf(os.Stdout, "Response from `SecurityMonitoringApi.CreateSecurityMonitoringRule`:\n%s\n", responseContent) +} diff --git a/examples/v2/security-monitoring/CreateSignalNotificationRule.go b/examples/v2/security-monitoring/CreateSignalNotificationRule.go index eb70218e1f2..b4f11dcff22 100644 --- a/examples/v2/security-monitoring/CreateSignalNotificationRule.go +++ b/examples/v2/security-monitoring/CreateSignalNotificationRule.go @@ -1,4 +1,4 @@ -// Create a new signal-based rule returns "Successfully created the notification rule." response +// Create a new signal-based notification rule returns "Successfully created the notification rule." response package main diff --git a/examples/v2/security-monitoring/CreateVulnerabilityNotificationRule.go b/examples/v2/security-monitoring/CreateVulnerabilityNotificationRule.go index fdef354ade4..60f763dacdd 100644 --- a/examples/v2/security-monitoring/CreateVulnerabilityNotificationRule.go +++ b/examples/v2/security-monitoring/CreateVulnerabilityNotificationRule.go @@ -1,4 +1,4 @@ -// Create a new vulnerability-based rule returns "Successfully created the notification rule." response +// Create a new vulnerability-based notification rule returns "Successfully created the notification rule." response package main diff --git a/examples/v2/security-monitoring/DeleteSignalNotificationRule.go b/examples/v2/security-monitoring/DeleteSignalNotificationRule.go index 347048c637a..97c1a742a75 100644 --- a/examples/v2/security-monitoring/DeleteSignalNotificationRule.go +++ b/examples/v2/security-monitoring/DeleteSignalNotificationRule.go @@ -1,4 +1,4 @@ -// Delete a signal-based rule returns "Rule successfully deleted." response +// Delete a signal-based notification rule returns "Rule successfully deleted." response package main diff --git a/examples/v2/security-monitoring/DeleteVulnerabilityNotificationRule.go b/examples/v2/security-monitoring/DeleteVulnerabilityNotificationRule.go index 35f56892ec6..2012c888056 100644 --- a/examples/v2/security-monitoring/DeleteVulnerabilityNotificationRule.go +++ b/examples/v2/security-monitoring/DeleteVulnerabilityNotificationRule.go @@ -1,4 +1,4 @@ -// Delete a vulnerability-based rule returns "Rule successfully deleted." response +// Delete a vulnerability-based notification rule returns "Rule successfully deleted." response package main diff --git a/examples/v2/security-monitoring/GetSignalNotificationRule.go b/examples/v2/security-monitoring/GetSignalNotificationRule.go index 5ecf006b3b6..baa6ec3ff3a 100644 --- a/examples/v2/security-monitoring/GetSignalNotificationRule.go +++ b/examples/v2/security-monitoring/GetSignalNotificationRule.go @@ -1,4 +1,4 @@ -// Get details of a signal-based rule returns "Notification rule details." response +// Get details of a signal-based notification rule returns "Notification rule details." response package main diff --git a/examples/v2/security-monitoring/GetSignalNotificationRules.go b/examples/v2/security-monitoring/GetSignalNotificationRules.go index 0514fe5dc92..0196b171de2 100644 --- a/examples/v2/security-monitoring/GetSignalNotificationRules.go +++ b/examples/v2/security-monitoring/GetSignalNotificationRules.go @@ -1,4 +1,4 @@ -// Get the list of signal-based rules returns "The list of notification rules." response +// Get the list of signal-based notification rules returns "The list of notification rules." response package main diff --git a/examples/v2/security-monitoring/GetVulnerabilityNotificationRule.go b/examples/v2/security-monitoring/GetVulnerabilityNotificationRule.go index e5f667ac27d..5c5616f51cd 100644 --- a/examples/v2/security-monitoring/GetVulnerabilityNotificationRule.go +++ b/examples/v2/security-monitoring/GetVulnerabilityNotificationRule.go @@ -1,4 +1,4 @@ -// Get details of a vulnerability-based rule returns "Notification rule details." response +// Get details of a vulnerability notification rule returns "Notification rule details." response package main diff --git a/examples/v2/security-monitoring/GetVulnerabilityNotificationRules.go b/examples/v2/security-monitoring/GetVulnerabilityNotificationRules.go index 5c235e457b8..7dbd4c3f309 100644 --- a/examples/v2/security-monitoring/GetVulnerabilityNotificationRules.go +++ b/examples/v2/security-monitoring/GetVulnerabilityNotificationRules.go @@ -1,4 +1,4 @@ -// Get the list of vulnerability-based rules returns "The list of notification rules." response +// Get the list of vulnerability notification rules returns "The list of notification rules." response package main diff --git a/examples/v2/security-monitoring/PatchSignalNotificationRule.go b/examples/v2/security-monitoring/PatchSignalNotificationRule.go index 25e22929e08..4c10e38dafc 100644 --- a/examples/v2/security-monitoring/PatchSignalNotificationRule.go +++ b/examples/v2/security-monitoring/PatchSignalNotificationRule.go @@ -1,4 +1,4 @@ -// Patch a signal-based rule returns "Notification rule successfully patched." response +// Patch a signal-based notification rule returns "Notification rule successfully patched." response package main diff --git a/examples/v2/security-monitoring/PatchVulnerabilityNotificationRule.go b/examples/v2/security-monitoring/PatchVulnerabilityNotificationRule.go index 80f32890609..f14fab60396 100644 --- a/examples/v2/security-monitoring/PatchVulnerabilityNotificationRule.go +++ b/examples/v2/security-monitoring/PatchVulnerabilityNotificationRule.go @@ -1,4 +1,4 @@ -// Patch a vulnerability-based rule returns "Notification rule successfully patched." response +// Patch a vulnerability-based notification rule returns "Notification rule successfully patched." response package main diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_notification_rule_returns_Successfully_created_the_notification_rule._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_notification_rule_returns_Successfully_created_the_notification_rule._response.freeze new file mode 100644 index 00000000000..594e432cb69 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_notification_rule_returns_Successfully_created_the_notification_rule._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:45:37.454Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_notification_rule_returns_Successfully_created_the_notification_rule._response.yaml similarity index 80% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_notification_rule_returns_Successfully_created_the_notification_rule._response.yaml index 5274c8dae83..601cf6ef904 100644 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule_response.yaml +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_notification_rule_returns_Successfully_created_the_notification_rule._response.yaml @@ -12,7 +12,7 @@ interactions: method: POST url: https://api.datadoghq.com/api/v2/security/signals/notification_rules response: - body: '{"data":{"id":"rko-c7a-mx9","type":"notification_rules","attributes":{"created_at":1737539398227,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539398227,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Rule + body: '{"data":{"id":"hvb-for-lpm","type":"notification_rules","attributes":{"created_at":1738763137979,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763137979,"modified_by":{"name":"","handle":""},"name":"Rule 1","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"(source:production_service OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":1}}}' code: 201 @@ -29,7 +29,7 @@ interactions: - '*/*' id: 1 method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/rko-c7a-mx9 + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/hvb-for-lpm response: body: '' code: 204 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule._response.freeze deleted file mode 100644 index b0503404843..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:35:59.157Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule._response.yaml deleted file mode 100644 index eee67c2c7cd..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule._response.yaml +++ /dev/null @@ -1,40 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Rule 1","selectors":{"query":"(source:production_service OR env:prod)","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":{"id":"xen-2ux-w4q","type":"notification_rules","attributes":{"created_at":1737628559636,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628559636,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Rule 1","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"(source:production_service - OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 1 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/xen-2ux-w4q - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule_response.freeze deleted file mode 100644 index d013b137455..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_signal-based_rule_returns_Successfully_created_the_notification_rule_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:49:57.801Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_notification_rule_returns_Successfully_created_the_notification_rule._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_notification_rule_returns_Successfully_created_the_notification_rule._response.freeze new file mode 100644 index 00000000000..e3138e7d626 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_notification_rule_returns_Successfully_created_the_notification_rule._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:45:38.493Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_notification_rule_returns_Successfully_created_the_notification_rule._response.yaml similarity index 79% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_notification_rule_returns_Successfully_created_the_notification_rule._response.yaml index c0aa13b71ec..95333eee64b 100644 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule_response.yaml +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_notification_rule_returns_Successfully_created_the_notification_rule._response.yaml @@ -12,7 +12,7 @@ interactions: method: POST url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules response: - body: '{"data":{"id":"1hi-lla-3nx","type":"notification_rules","attributes":{"created_at":1737539399145,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539399145,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Rule + body: '{"data":{"id":"iwz-k3b-tpk","type":"notification_rules","attributes":{"created_at":1738763138982,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763138982,"modified_by":{"name":"","handle":""},"name":"Rule 1","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"(source:production_service OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":1}}}' code: 201 @@ -29,7 +29,7 @@ interactions: - '*/*' id: 1 method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/1hi-lla-3nx + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/iwz-k3b-tpk response: body: '' code: 204 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule._response.freeze deleted file mode 100644 index 4df775f8484..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:35:59.776Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule._response.yaml deleted file mode 100644 index 98f0052824e..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule._response.yaml +++ /dev/null @@ -1,40 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Rule 1","selectors":{"query":"(source:production_service OR env:prod)","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":{"id":"757-rvr-pnu","type":"notification_rules","attributes":{"created_at":1737628559864,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628559864,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Rule 1","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"(source:production_service - OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 1 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/757-rvr-pnu - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule_response.freeze deleted file mode 100644 index 4a1ded127d1..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Create_a_new_vulnerability-based_rule_returns_Successfully_created_the_notification_rule_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:49:58.794Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..f0d2ec7144b --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2025-02-05T13:45:43.873Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Not_Found_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Not_Found_response.yaml similarity index 100% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Not_Found_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Not_Found_response.yaml diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Rule_successfully_deleted._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Rule_successfully_deleted._response.freeze new file mode 100644 index 00000000000..f51e67baf31 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Rule_successfully_deleted._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:45:44.348Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Rule_successfully_deleted._response.yaml similarity index 51% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Rule_successfully_deleted._response.yaml index be9ae903d06..1434b55846b 100644 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted_response.yaml +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_notification_rule_returns_Rule_successfully_deleted._response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Delete_a_signal_based_rule_returns_Rule_successfully_deleted_response-1737539405","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} + {"data":{"attributes":{"enabled":true,"name":"Test-Delete_a_signal_based_notification_rule_returns_Rule_successfully_deleted_response-1738763144","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} form: {} headers: Accept: @@ -12,7 +12,7 @@ interactions: method: POST url: https://api.datadoghq.com/api/v2/security/signals/notification_rules response: - body: '{"data":{"id":"ukc-0jn-maf","type":"notification_rules","attributes":{"created_at":1737539405540,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539405540,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Delete_a_signal_based_rule_returns_Rule_successfully_deleted_response-1737539405","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' + body: '{"data":{"id":"x4n-qps-p3w","type":"notification_rules","attributes":{"created_at":1738763144838,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763144838,"modified_by":{"name":"","handle":""},"name":"Test-Delete_a_signal_based_notification_rule_returns_Rule_successfully_deleted_response-1738763144","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' code: 201 duration: 0ms headers: @@ -27,7 +27,7 @@ interactions: - '*/*' id: 1 method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/ukc-0jn-maf + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/x4n-qps-p3w response: body: '' code: 204 @@ -42,9 +42,9 @@ interactions: - '*/*' id: 2 method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/ukc-0jn-maf + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/x4n-qps-p3w response: - body: '{"errors":["not_found(Notification rule with id ''ukc-0jn-maf'' not found)"]}' + body: '{"errors":["not_found(Notification rule with id ''x4n-qps-p3w'' not found)"]}' code: 404 duration: 0ms headers: diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Not_Found_response.freeze deleted file mode 100644 index 5ed3da99691..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Not_Found_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:04.605Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted._response.freeze deleted file mode 100644 index c75b28e4575..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:36:00.001Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted._response.yaml deleted file mode 100644 index 708ccd8253d..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted._response.yaml +++ /dev/null @@ -1,56 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Delete_a_signal_based_rule_returns_Rule_successfully_deleted_response-1737628560","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":{"id":"trc-uxv-vc0","type":"notification_rules","attributes":{"created_at":1737628560083,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628560083,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Delete_a_signal_based_rule_returns_Rule_successfully_deleted_response-1737628560","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 1 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/trc-uxv-vc0 - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/trc-uxv-vc0 - response: - body: '{"errors":["not_found(Notification rule with id ''trc-uxv-vc0'' not found)"]}' - code: 404 - duration: 0ms - headers: - Content-Type: - - application/json - status: 404 Not Found -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted_response.freeze deleted file mode 100644 index 5b9cab2f5f9..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_signal-based_rule_returns_Rule_successfully_deleted_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:05.107Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..5d7f042ad36 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2025-02-05T13:45:46.942Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Not_Found_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Not_Found_response.yaml similarity index 100% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Not_Found_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Not_Found_response.yaml diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Rule_successfully_deleted._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Rule_successfully_deleted._response.freeze new file mode 100644 index 00000000000..c5f1ae22125 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Rule_successfully_deleted._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:45:47.393Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Rule_successfully_deleted._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Rule_successfully_deleted._response.yaml new file mode 100644 index 00000000000..9c373948375 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_notification_rule_returns_Rule_successfully_deleted._response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: | + {"data":{"attributes":{"enabled":true,"name":"Test-Delete_a_vulnerability_based_notification_rule_returns_Rule_successfully_deleted_response-1738763147","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} + form: {} + headers: + Accept: + - application/json + Content-Type: + - application/json + id: 0 + method: POST + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules + response: + body: '{"data":{"id":"p3z-nij-ygf","type":"notification_rules","attributes":{"created_at":1738763147765,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763147765,"modified_by":{"name":"","handle":""},"name":"Test-Delete_a_vulnerability_based_notification_rule_returns_Rule_successfully_deleted_response-1738763147","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' + code: 201 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 201 Created +- request: + body: '' + form: {} + headers: + Accept: + - '*/*' + id: 1 + method: DELETE + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/p3z-nij-ygf + response: + body: '' + code: 204 + duration: 0ms + headers: {} + status: 204 No Content +- request: + body: '' + form: {} + headers: + Accept: + - '*/*' + id: 2 + method: DELETE + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/p3z-nij-ygf + response: + body: '{"errors":["not_found(Notification rule with id ''p3z-nij-ygf'' not found)"]}' + code: 404 + duration: 0ms + headers: + Content-Type: + - application/json + status: 404 Not Found +version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Not_Found_response.freeze deleted file mode 100644 index 31d1497fde4..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Not_Found_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:08.134Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted._response.freeze deleted file mode 100644 index a338c2e32c4..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:36:00.286Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted._response.yaml deleted file mode 100644 index 03e44c5341d..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted._response.yaml +++ /dev/null @@ -1,56 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Delete_a_vulnerability_based_rule_returns_Rule_successfully_deleted_response-1737628560","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":{"id":"gcs-6rv-fjw","type":"notification_rules","attributes":{"created_at":1737628560356,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628560356,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Delete_a_vulnerability_based_rule_returns_Rule_successfully_deleted_response-1737628560","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 1 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/gcs-6rv-fjw - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/gcs-6rv-fjw - response: - body: '{"errors":["not_found(Notification rule with id ''gcs-6rv-fjw'' not found)"]}' - code: 404 - duration: 0ms - headers: - Content-Type: - - application/json - status: 404 Not Found -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted_response.freeze deleted file mode 100644 index f80fa530897..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:08.640Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted_response.yaml deleted file mode 100644 index 93f6a47ff0c..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Delete_a_vulnerability-based_rule_returns_Rule_successfully_deleted_response.yaml +++ /dev/null @@ -1,54 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Delete_a_vulnerability_based_rule_returns_Rule_successfully_deleted_response-1737539408","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":{"id":"qip-ygy-7ke","type":"notification_rules","attributes":{"created_at":1737539409090,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539409090,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Delete_a_vulnerability_based_rule_returns_Rule_successfully_deleted_response-1737539408","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 1 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/qip-ygy-7ke - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/qip-ygy-7ke - response: - body: '{"errors":["not_found(Notification rule with id ''qip-ygy-7ke'' not found)"]}' - code: 404 - duration: 0ms - headers: - Content-Type: - - application/json - status: 404 Not Found -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..7a9e3b4bdfb --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:01.149Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Not_Found_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Not_Found_response.yaml similarity index 100% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Not_Found_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Not_Found_response.yaml diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Notification_rule_details._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Notification_rule_details._response.freeze new file mode 100644 index 00000000000..51dd6f91753 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Notification_rule_details._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:01.602Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Notification_rule_details._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Notification_rule_details._response.yaml new file mode 100644 index 00000000000..2966f7f317b --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_notification_rule_returns_Notification_rule_details._response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: | + {"data":{"attributes":{"enabled":true,"name":"Test-Get_details_of_a_signal_based_notification_rule_returns_Notification_rule_details_response-1738763161","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} + form: {} + headers: + Accept: + - application/json + Content-Type: + - application/json + id: 0 + method: POST + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules + response: + body: '{"data":{"id":"tcf-juk-5tr","type":"notification_rules","attributes":{"created_at":1738763162076,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763162076,"modified_by":{"name":"","handle":""},"name":"Test-Get_details_of_a_signal_based_notification_rule_returns_Notification_rule_details_response-1738763161","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' + code: 201 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 201 Created +- request: + body: '' + form: {} + headers: + Accept: + - application/json + id: 1 + method: GET + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/tcf-juk-5tr + response: + body: '{"data":{"id":"tcf-juk-5tr","type":"notification_rules","attributes":{"created_at":1738763162076,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763162076,"modified_by":{"name":"","handle":""},"name":"Test-Get_details_of_a_signal_based_notification_rule_returns_Notification_rule_details_response-1738763161","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' + code: 200 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 200 OK +- request: + body: '' + form: {} + headers: + Accept: + - '*/*' + id: 2 + method: DELETE + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/tcf-juk-5tr + response: + body: '' + code: 204 + duration: 0ms + headers: {} + status: 204 No Content +version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Not_Found_response.freeze deleted file mode 100644 index 6d4de62a52a..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Not_Found_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:23.414Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details._response.freeze deleted file mode 100644 index 1e9763b3e42..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:36:00.694Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details._response.yaml deleted file mode 100644 index ecfd52214fd..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details._response.yaml +++ /dev/null @@ -1,58 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Get_details_of_a_signal_based_rule_returns_Notification_rule_details_response-1737628560","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":{"id":"fjl-dbj-4lx","type":"notification_rules","attributes":{"created_at":1737628560844,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628560844,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Get_details_of_a_signal_based_rule_returns_Notification_rule_details_response-1737628560","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 1 - method: GET - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/fjl-dbj-4lx - response: - body: '{"data":{"id":"fjl-dbj-4lx","type":"notification_rules","attributes":{"created_at":1737628560844,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628560844,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Get_details_of_a_signal_based_rule_returns_Notification_rule_details_response-1737628560","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/fjl-dbj-4lx - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details_response.freeze deleted file mode 100644 index fe7b63784cc..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:23.939Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details_response.yaml deleted file mode 100644 index 84110d8c156..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_signal-based_rule_returns_Notification_rule_details_response.yaml +++ /dev/null @@ -1,54 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Get_details_of_a_signal_based_rule_returns_Notification_rule_details_response-1737539423","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":{"id":"t8x-amt-d52","type":"notification_rules","attributes":{"created_at":1737539424372,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539424372,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_details_of_a_signal_based_rule_returns_Notification_rule_details_response-1737539423","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 1 - method: GET - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/t8x-amt-d52 - response: - body: '{"data":{"id":"t8x-amt-d52","type":"notification_rules","attributes":{"created_at":1737539424372,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539424372,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_details_of_a_signal_based_rule_returns_Notification_rule_details_response-1737539423","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/t8x-amt-d52 - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Not_Found_response.freeze deleted file mode 100644 index d1e8767198e..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Not_Found_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:25.480Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details._response.freeze deleted file mode 100644 index 9f8c0c6866c..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:36:01.133Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details._response.yaml deleted file mode 100644 index 4bc0e3651be..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details._response.yaml +++ /dev/null @@ -1,58 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Get_details_of_a_vulnerability_based_rule_returns_Notification_rule_details_response-1737628561","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":{"id":"sr4-jjh-rjy","type":"notification_rules","attributes":{"created_at":1737628561210,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628561210,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Get_details_of_a_vulnerability_based_rule_returns_Notification_rule_details_response-1737628561","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 1 - method: GET - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/sr4-jjh-rjy - response: - body: '{"data":{"id":"sr4-jjh-rjy","type":"notification_rules","attributes":{"created_at":1737628561210,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628561210,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Get_details_of_a_vulnerability_based_rule_returns_Notification_rule_details_response-1737628561","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/sr4-jjh-rjy - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details_response.freeze deleted file mode 100644 index 1aed5057f55..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:25.988Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details_response.yaml deleted file mode 100644 index 3bd9690375f..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Notification_rule_details_response.yaml +++ /dev/null @@ -1,54 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Get_details_of_a_vulnerability_based_rule_returns_Notification_rule_details_response-1737539425","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":{"id":"aqq-x71-k2h","type":"notification_rules","attributes":{"created_at":1737539426417,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539426417,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_details_of_a_vulnerability_based_rule_returns_Notification_rule_details_response-1737539425","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 1 - method: GET - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/aqq-x71-k2h - response: - body: '{"data":{"id":"aqq-x71-k2h","type":"notification_rules","attributes":{"created_at":1737539426417,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539426417,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_details_of_a_vulnerability_based_rule_returns_Notification_rule_details_response-1737539425","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/aqq-x71-k2h - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..df4c4888e2f --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:02.886Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Not_Found_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Not_Found_response.yaml similarity index 100% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability-based_rule_returns_Not_Found_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Not_Found_response.yaml diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details._response.freeze new file mode 100644 index 00000000000..5c0ebad9720 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:03.335Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details._response.yaml new file mode 100644 index 00000000000..6138721e357 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details._response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: | + {"data":{"attributes":{"enabled":true,"name":"Test-Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details_response-1738763163","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} + form: {} + headers: + Accept: + - application/json + Content-Type: + - application/json + id: 0 + method: POST + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules + response: + body: '{"data":{"id":"ryn-rs2-tef","type":"notification_rules","attributes":{"created_at":1738763163705,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763163705,"modified_by":{"name":"","handle":""},"name":"Test-Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details_response-1738763163","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' + code: 201 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 201 Created +- request: + body: '' + form: {} + headers: + Accept: + - application/json + id: 1 + method: GET + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/ryn-rs2-tef + response: + body: '{"data":{"id":"ryn-rs2-tef","type":"notification_rules","attributes":{"created_at":1738763163705,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763163705,"modified_by":{"name":"","handle":""},"name":"Test-Get_details_of_a_vulnerability_notification_rule_returns_Notification_rule_details_response-1738763163","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' + code: 200 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 200 OK +- request: + body: '' + form: {} + headers: + Accept: + - '*/*' + id: 2 + method: DELETE + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/ryn-rs2-tef + response: + body: '' + code: 204 + duration: 0ms + headers: {} + status: 204 No Content +version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_notification_rules_returns_The_list_of_notification_rules._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_notification_rules_returns_The_list_of_notification_rules._response.freeze new file mode 100644 index 00000000000..2c353113bd4 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_notification_rules_returns_The_list_of_notification_rules._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:04.585Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_notification_rules_returns_The_list_of_notification_rules._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_notification_rules_returns_The_list_of_notification_rules._response.yaml new file mode 100644 index 00000000000..9b7c6f06d6b --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_notification_rules_returns_The_list_of_notification_rules._response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: | + {"data":{"attributes":{"enabled":true,"name":"Test-Get_the_list_of_signal_based_notification_rules_returns_The_list_of_notification_rules_response-1738763164","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} + form: {} + headers: + Accept: + - application/json + Content-Type: + - application/json + id: 0 + method: POST + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules + response: + body: '{"data":{"id":"btd-udo-vn7","type":"notification_rules","attributes":{"created_at":1738763164939,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763164939,"modified_by":{"name":"","handle":""},"name":"Test-Get_the_list_of_signal_based_notification_rules_returns_The_list_of_notification_rules_response-1738763164","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' + code: 201 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 201 Created +- request: + body: '' + form: {} + headers: + Accept: + - application/json + id: 1 + method: GET + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules + response: + body: '{"data":[{"id":"btd-udo-vn7","type":"notification_rules","attributes":{"created_at":1738763164939,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763164939,"modified_by":{"name":"","handle":""},"name":"Test-Get_the_list_of_signal_based_notification_rules_returns_The_list_of_notification_rules_response-1738763164","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}]}' + code: 200 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 200 OK +- request: + body: '' + form: {} + headers: + Accept: + - '*/*' + id: 2 + method: DELETE + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/btd-udo-vn7 + response: + body: '' + code: 204 + duration: 0ms + headers: {} + status: 204 No Content +version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules._response.freeze deleted file mode 100644 index 3f0d8fa0766..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:36:01.381Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules._response.yaml deleted file mode 100644 index 6a1544d6146..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules._response.yaml +++ /dev/null @@ -1,67 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Get_the_list_of_signal_based_rules_returns_The_list_of_notification_rules_response-1737628561","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":{"id":"wt5-y8s-3fa","type":"notification_rules","attributes":{"created_at":1737628561456,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628561456,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Get_the_list_of_signal_based_rules_returns_The_list_of_notification_rules_response-1737628561","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 1 - method: GET - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":[{"id":"hwk-zqh-vg4","type":"notification_rules","attributes":{"created_at":1699905830776,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699905830","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"fsm-4am-ozw","type":"notification_rules","attributes":{"created_at":1699905832107,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699905832","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"px4-xrb-b9v","type":"notification_rules","attributes":{"created_at":1699905992485,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699905992","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"ukt-yim-ouw","type":"notification_rules","attributes":{"created_at":1699905996937,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699905996","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"tpj-yqn-fcw","type":"notification_rules","attributes":{"created_at":1699905997240,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699905997","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"tv9-9dw-fbd","type":"notification_rules","attributes":{"created_at":1699905998529,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699905998","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"pdt-i8z-vcs","type":"notification_rules","attributes":{"created_at":1699906082093,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699906081","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"tlb-cvk-wup","type":"notification_rules","attributes":{"created_at":1699906087769,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699906087","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"sqp-oih-tp8","type":"notification_rules","attributes":{"created_at":1699906088050,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699906087","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"zll-nff-pbx","type":"notification_rules","attributes":{"created_at":1699906089134,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699906089","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"4u9-ooz-fwf","type":"notification_rules","attributes":{"created_at":1699906572841,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699906572","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"lny-xec-2r7","type":"notification_rules","attributes":{"created_at":1699906577427,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699906577","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"qfa-6nt-wn2","type":"notification_rules","attributes":{"created_at":1699906577706,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699906577","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"zcr-tja-rut","type":"notification_rules","attributes":{"created_at":1699906578815,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699906578","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":3}},{"id":"rca-ogs-ckx","type":"notification_rules","attributes":{"created_at":1699906789206,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699906789","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"dis-abp-grp","type":"notification_rules","attributes":{"created_at":1699906793874,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699906793","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"n5i-avj-8br","type":"notification_rules","attributes":{"created_at":1699906794201,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699906794","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"wct-cix-3ay","type":"notification_rules","attributes":{"created_at":1699906795311,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":false,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699906795","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test2"],"time_aggregation":0,"version":3}},{"id":"pyf-t6u-dxp","type":"notification_rules","attributes":{"created_at":1699907487559,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699907487","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"vwj-uew-mas","type":"notification_rules","attributes":{"created_at":1699907492243,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699907492","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"a1y-ysu-rvw","type":"notification_rules","attributes":{"created_at":1699907492600,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699907492","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"kq1-edx-tkt","type":"notification_rules","attributes":{"created_at":1699907493778,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":false,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699907493","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test2"],"time_aggregation":0,"version":3}},{"id":"4i4-raj-t0a","type":"notification_rules","attributes":{"created_at":1699908569876,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699908569","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"ncy-2zl-jge","type":"notification_rules","attributes":{"created_at":1699908575238,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699908575","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"(fim:\"true\" - OR @fim:\"true\")","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"tiq-glx-quq","type":"notification_rules","attributes":{"created_at":1699908575600,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699908575","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"(fim:\"true\" - OR @fim:\"true\")","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"ue7-0sv-du1","type":"notification_rules","attributes":{"created_at":1699908576920,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":false,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699908576","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"(fim:\"true\" - OR @fim:\"true\")","trigger_source":"security_signals"},"targets":["test2"],"time_aggregation":0,"version":3}},{"id":"wt5-y8s-3fa","type":"notification_rules","attributes":{"created_at":1737628561456,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628561456,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Get_the_list_of_signal_based_rules_returns_The_list_of_notification_rules_response-1737628561","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}]}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/wt5-y8s-3fa - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules_response.freeze deleted file mode 100644 index 0ba2a36a140..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:27.496Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules_response.yaml deleted file mode 100644 index 58d1193e728..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_signal-based_rules_returns_The_list_of_notification_rules_response.yaml +++ /dev/null @@ -1,63 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Get_the_list_of_signal_based_rules_returns_The_list_of_notification_rules_response-1737539427","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":{"id":"dr3-owt-amk","type":"notification_rules","attributes":{"created_at":1737539427926,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539427926,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_the_list_of_signal_based_rules_returns_The_list_of_notification_rules_response-1737539427","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 1 - method: GET - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":[{"id":"hwk-zqh-vg4","type":"notification_rules","attributes":{"created_at":1699905830776,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699905830","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"fsm-4am-ozw","type":"notification_rules","attributes":{"created_at":1699905832107,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699905832","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"px4-xrb-b9v","type":"notification_rules","attributes":{"created_at":1699905992485,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699905992","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"ukt-yim-ouw","type":"notification_rules","attributes":{"created_at":1699905996937,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699905996","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"tpj-yqn-fcw","type":"notification_rules","attributes":{"created_at":1699905997240,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699905997","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"tv9-9dw-fbd","type":"notification_rules","attributes":{"created_at":1699905998529,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699905998","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"pdt-i8z-vcs","type":"notification_rules","attributes":{"created_at":1699906082093,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699906081","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"tlb-cvk-wup","type":"notification_rules","attributes":{"created_at":1699906087769,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699906087","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"sqp-oih-tp8","type":"notification_rules","attributes":{"created_at":1699906088050,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699906087","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"zll-nff-pbx","type":"notification_rules","attributes":{"created_at":1699906089134,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699906089","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"4u9-ooz-fwf","type":"notification_rules","attributes":{"created_at":1699906572841,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699906572","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"lny-xec-2r7","type":"notification_rules","attributes":{"created_at":1699906577427,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699906577","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"qfa-6nt-wn2","type":"notification_rules","attributes":{"created_at":1699906577706,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699906577","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"zcr-tja-rut","type":"notification_rules","attributes":{"created_at":1699906578815,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699906578","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":3}},{"id":"rca-ogs-ckx","type":"notification_rules","attributes":{"created_at":1699906789206,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699906789","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"dis-abp-grp","type":"notification_rules","attributes":{"created_at":1699906793874,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699906793","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"n5i-avj-8br","type":"notification_rules","attributes":{"created_at":1699906794201,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699906794","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"wct-cix-3ay","type":"notification_rules","attributes":{"created_at":1699906795311,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":false,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699906795","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test2"],"time_aggregation":0,"version":3}},{"id":"pyf-t6u-dxp","type":"notification_rules","attributes":{"created_at":1699907487559,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699907487","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"vwj-uew-mas","type":"notification_rules","attributes":{"created_at":1699907492243,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699907492","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"a1y-ysu-rvw","type":"notification_rules","attributes":{"created_at":1699907492600,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699907492","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"kq1-edx-tkt","type":"notification_rules","attributes":{"created_at":1699907493778,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":false,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699907493","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"","trigger_source":"security_signals"},"targets":["test2"],"time_aggregation":0,"version":3}},{"id":"4i4-raj-t0a","type":"notification_rules","attributes":{"created_at":1699908569876,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Create_a_notification_profile_returns_OK_response-1699908569","selectors":{"severities":["high"],"rule_types":["application_security","log_detection"],"query":"(env:\"prod\" - OR @env:\"prod\") AND (test:\"123\" OR @test:\"123\")","trigger_source":"security_signals"},"targets":["@slack-test"],"time_aggregation":0,"version":2}},{"id":"ncy-2zl-jge","type":"notification_rules","attributes":{"created_at":1699908575238,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_notification_profile_by_ID_returns_OK_response-1699908575","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"(fim:\"true\" - OR @fim:\"true\")","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"tiq-glx-quq","type":"notification_rules","attributes":{"created_at":1699908575600,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-List_notification_profiles_returns_OK_response-1699908575","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"(fim:\"true\" - OR @fim:\"true\")","trigger_source":"security_signals"},"targets":["test"],"time_aggregation":0,"version":2}},{"id":"ue7-0sv-du1","type":"notification_rules","attributes":{"created_at":1699908576920,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":false,"modified_at":1725452072048,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Update_a_notification_profile_returns_OK_response-1699908576","selectors":{"severities":["high"],"rule_types":["log_detection","cloud_configuration"],"query":"(fim:\"true\" - OR @fim:\"true\")","trigger_source":"security_signals"},"targets":["test2"],"time_aggregation":0,"version":3}},{"id":"dr3-owt-amk","type":"notification_rules","attributes":{"created_at":1737539427926,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539427926,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_the_list_of_signal_based_rules_returns_The_list_of_notification_rules_response-1737539427","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}]}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/dr3-owt-amk - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules._response.freeze deleted file mode 100644 index 1c559ecb18a..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:36:01.893Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules._response.yaml deleted file mode 100644 index d75c5a4a6e2..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules._response.yaml +++ /dev/null @@ -1,58 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Get_the_list_of_vulnerability_based_rules_returns_The_list_of_notification_rules_response-1737628561","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":{"id":"hrp-9cl-j7q","type":"notification_rules","attributes":{"created_at":1737628561955,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628561955,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Get_the_list_of_vulnerability_based_rules_returns_The_list_of_notification_rules_response-1737628561","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 1 - method: GET - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":[{"id":"hrp-9cl-j7q","type":"notification_rules","attributes":{"created_at":1737628561955,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628561955,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Get_the_list_of_vulnerability_based_rules_returns_The_list_of_notification_rules_response-1737628561","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}]}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/hrp-9cl-j7q - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules_response.freeze deleted file mode 100644 index e2d0798f523..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:28.875Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules_response.yaml deleted file mode 100644 index 4655e051ff4..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability-based_rules_returns_The_list_of_notification_rules_response.yaml +++ /dev/null @@ -1,54 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Get_the_list_of_vulnerability_based_rules_returns_The_list_of_notification_rules_response-1737539428","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":{"id":"ua9-ppq-acw","type":"notification_rules","attributes":{"created_at":1737539429310,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539429310,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_the_list_of_vulnerability_based_rules_returns_The_list_of_notification_rules_response-1737539428","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 1 - method: GET - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":[{"id":"ua9-ppq-acw","type":"notification_rules","attributes":{"created_at":1737539429310,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539429310,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Get_the_list_of_vulnerability_based_rules_returns_The_list_of_notification_rules_response-1737539428","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}]}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/ua9-ppq-acw - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules._response.freeze new file mode 100644 index 00000000000..a29f84ee456 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:05.871Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules._response.yaml new file mode 100644 index 00000000000..af2a634c6f2 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules._response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: | + {"data":{"attributes":{"enabled":true,"name":"Test-Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules_response-1738763165","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} + form: {} + headers: + Accept: + - application/json + Content-Type: + - application/json + id: 0 + method: POST + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules + response: + body: '{"data":{"id":"jl2-gq4-vr0","type":"notification_rules","attributes":{"created_at":1738763166229,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763166229,"modified_by":{"name":"","handle":""},"name":"Test-Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules_response-1738763165","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' + code: 201 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 201 Created +- request: + body: '' + form: {} + headers: + Accept: + - application/json + id: 1 + method: GET + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules + response: + body: '{"data":[{"id":"jl2-gq4-vr0","type":"notification_rules","attributes":{"created_at":1738763166229,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763166229,"modified_by":{"name":"","handle":""},"name":"Test-Get_the_list_of_vulnerability_notification_rules_returns_The_list_of_notification_rules_response-1738763165","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}]}' + code: 200 + duration: 0ms + headers: + Content-Type: + - application/vnd.api+json + status: 200 OK +- request: + body: '' + form: {} + headers: + Accept: + - '*/*' + id: 2 + method: DELETE + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/jl2-gq4-vr0 + response: + body: '' + code: 204 + duration: 0ms + headers: {} + status: 204 No Content +version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Bad_Request_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Bad_Request_response.freeze new file mode 100644 index 00000000000..3ba9d1b93aa --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Bad_Request_response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:11.165Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Bad_Request_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Bad_Request_response.yaml similarity index 65% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Bad_Request_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Bad_Request_response.yaml index 6d151d87817..da22d91c80a 100644 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Bad_Request_response.yaml +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Bad_Request_response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_signal_based_rule_returns_Bad_Request_response-1737539435","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} + {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_signal_based_notification_rule_returns_Bad_Request_response-1738763171","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} form: {} headers: Accept: @@ -12,7 +12,7 @@ interactions: method: POST url: https://api.datadoghq.com/api/v2/security/signals/notification_rules response: - body: '{"data":{"id":"urx-vcd-58d","type":"notification_rules","attributes":{"created_at":1737539435658,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539435658,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Patch_a_signal_based_rule_returns_Bad_Request_response-1737539435","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' + body: '{"data":{"id":"uwx-6n1-x2z","type":"notification_rules","attributes":{"created_at":1738763171531,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763171531,"modified_by":{"name":"","handle":""},"name":"Test-Patch_a_signal_based_notification_rule_returns_Bad_Request_response-1738763171","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' code: 201 duration: 0ms headers: @@ -30,7 +30,7 @@ interactions: - application/json id: 1 method: PATCH - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/urx-vcd-58d + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/uwx-6n1-x2z response: body: '{"errors":["input_validation_error(Field ''data.attributes.version'' is invalid: Specify the notification rule version to update, it cannot be 0.)"]}' @@ -48,7 +48,7 @@ interactions: - '*/*' id: 2 method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/urx-vcd-58d + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/uwx-6n1-x2z response: body: '' code: 204 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..ab16b00a3e4 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:12.411Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Not_Found_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Not_Found_response.yaml similarity index 100% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Not_Found_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Not_Found_response.yaml diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Notification_rule_successfully_patched._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Notification_rule_successfully_patched._response.freeze new file mode 100644 index 00000000000..4a319955473 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Notification_rule_successfully_patched._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:12.789Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Notification_rule_successfully_patched._response.yaml similarity index 58% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Notification_rule_successfully_patched._response.yaml index 463feb4266d..94c780fd134 100644 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched_response.yaml +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_notification_rule_returns_Notification_rule_successfully_patched._response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_signal_based_rule_returns_Notification_rule_successfully_patched_response-1737539437","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} + {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_signal_based_notification_rule_returns_Notification_rule_successfully_patched_response-1738763172","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} form: {} headers: Accept: @@ -12,7 +12,7 @@ interactions: method: POST url: https://api.datadoghq.com/api/v2/security/signals/notification_rules response: - body: '{"data":{"id":"h6x-nyx-fkm","type":"notification_rules","attributes":{"created_at":1737539437401,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539437401,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Patch_a_signal_based_rule_returns_Notification_rule_successfully_patched_response-1737539437","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' + body: '{"data":{"id":"ob0-6ru-hc6","type":"notification_rules","attributes":{"created_at":1738763173259,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763173259,"modified_by":{"name":"","handle":""},"name":"Test-Patch_a_signal_based_notification_rule_returns_Notification_rule_successfully_patched_response-1738763172","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' code: 201 duration: 0ms headers: @@ -30,9 +30,9 @@ interactions: - application/json id: 1 method: PATCH - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/h6x-nyx-fkm + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/ob0-6ru-hc6 response: - body: '{"data":{"id":"h6x-nyx-fkm","type":"notification_rules","attributes":{"created_at":1737539437401,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539437810,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Rule + body: '{"data":{"id":"ob0-6ru-hc6","type":"notification_rules","attributes":{"created_at":1738763173259,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763173722,"modified_by":{"name":"","handle":""},"name":"Rule 1","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"(source:production_service OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":2}}}' code: 200 @@ -49,7 +49,7 @@ interactions: - '*/*' id: 2 method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/h6x-nyx-fkm + url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/ob0-6ru-hc6 response: body: '' code: 204 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Bad_Request_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Bad_Request_response.freeze deleted file mode 100644 index 50ebef7d381..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Bad_Request_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:35.238Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Not_Found_response.freeze deleted file mode 100644 index cbf78aceabd..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Not_Found_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:36.599Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched._response.freeze deleted file mode 100644 index 97e974ae6bd..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:36:02.171Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched._response.yaml deleted file mode 100644 index 9bfd68a100a..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched._response.yaml +++ /dev/null @@ -1,62 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_signal_based_rule_returns_Notification_rule_successfully_patched_response-1737628562","selectors":{"query":"env:test","rule_types":["signal_correlation"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@email@email.com"]},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules - response: - body: '{"data":{"id":"oip-w1n-zpc","type":"notification_rules","attributes":{"created_at":1737628562246,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628562246,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Patch_a_signal_based_rule_returns_Notification_rule_successfully_patched_response-1737628562","selectors":{"severities":["critical"],"rule_types":["signal_correlation"],"query":"env:test","trigger_source":"security_signals"},"targets":["@email@email.com"],"time_aggregation":0,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Rule 1","selectors":{"query":"(source:production_service OR env:prod)","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":1},"id":"aaa-bbb-ccc","type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 1 - method: PATCH - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/oip-w1n-zpc - response: - body: '{"data":{"id":"oip-w1n-zpc","type":"notification_rules","attributes":{"created_at":1737628562246,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628562326,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Rule 1","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"(source:production_service - OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":2}}}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/signals/notification_rules/oip-w1n-zpc - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched_response.freeze deleted file mode 100644 index dbfecb7971f..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_signal-based_rule_returns_Notification_rule_successfully_patched_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:37.086Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Bad_Request_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Bad_Request_response.freeze new file mode 100644 index 00000000000..9c16ba59f02 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Bad_Request_response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:14.056Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Bad_Request_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Bad_Request_response.yaml similarity index 63% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Bad_Request_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Bad_Request_response.yaml index 368bcc2df13..20f1f3afaf7 100644 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Bad_Request_response.yaml +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Bad_Request_response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_vulnerability_based_rule_returns_Bad_Request_response-1737539438","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} + {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_vulnerability_based_notification_rule_returns_Bad_Request_response-1738763174","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} form: {} headers: Accept: @@ -12,7 +12,7 @@ interactions: method: POST url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules response: - body: '{"data":{"id":"ks5-ywq-grp","type":"notification_rules","attributes":{"created_at":1737539438831,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539438831,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Patch_a_vulnerability_based_rule_returns_Bad_Request_response-1737539438","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' + body: '{"data":{"id":"flc-8up-dya","type":"notification_rules","attributes":{"created_at":1738763174531,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763174531,"modified_by":{"name":"","handle":""},"name":"Test-Patch_a_vulnerability_based_notification_rule_returns_Bad_Request_response-1738763174","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' code: 201 duration: 0ms headers: @@ -30,7 +30,7 @@ interactions: - application/json id: 1 method: PATCH - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/ks5-ywq-grp + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/flc-8up-dya response: body: '{"errors":["input_validation_error(Field ''data.attributes.version'' is invalid: Specify the notification rule version to update, it cannot be 0.)"]}' @@ -48,7 +48,7 @@ interactions: - '*/*' id: 2 method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/ks5-ywq-grp + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/flc-8up-dya response: body: '' code: 204 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..07ce0c96406 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:15.338Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Not_Found_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Not_Found_response.yaml similarity index 100% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Not_Found_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Not_Found_response.yaml diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Notification_rule_successfully_patched._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Notification_rule_successfully_patched._response.freeze new file mode 100644 index 00000000000..f3adcb384c9 --- /dev/null +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Notification_rule_successfully_patched._response.freeze @@ -0,0 +1 @@ +2025-02-05T13:46:15.824Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Notification_rule_successfully_patched._response.yaml similarity index 57% rename from tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched_response.yaml rename to tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Notification_rule_successfully_patched._response.yaml index 732840c0f3d..7db86af4ad1 100644 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched_response.yaml +++ b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_notification_rule_returns_Notification_rule_successfully_patched._response.yaml @@ -1,7 +1,7 @@ interactions: - request: body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_vulnerability_based_rule_returns_Notification_rule_successfully_patched_response-1737539440","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} + {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_vulnerability_based_notification_rule_returns_Notification_rule_successfully_patched_respons-1738763175","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} form: {} headers: Accept: @@ -12,7 +12,7 @@ interactions: method: POST url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules response: - body: '{"data":{"id":"a40-xl3-95h","type":"notification_rules","attributes":{"created_at":1737539440872,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539440872,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Test-Patch_a_vulnerability_based_rule_returns_Notification_rule_successfully_patched_response-1737539440","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' + body: '{"data":{"id":"tnd-jgq-yl5","type":"notification_rules","attributes":{"created_at":1738763176297,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763176297,"modified_by":{"name":"","handle":""},"name":"Test-Patch_a_vulnerability_based_notification_rule_returns_Notification_rule_successfully_patched_respons-1738763175","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' code: 201 duration: 0ms headers: @@ -30,9 +30,9 @@ interactions: - application/json id: 1 method: PATCH - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/a40-xl3-95h + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/tnd-jgq-yl5 response: - body: '{"data":{"id":"a40-xl3-95h","type":"notification_rules","attributes":{"created_at":1737539440872,"created_by":{"name":"frog","handle":"frog@datadoghq.com"},"enabled":true,"modified_at":1737539441254,"modified_by":{"name":"frog","handle":"frog@datadoghq.com"},"name":"Rule + body: '{"data":{"id":"tnd-jgq-yl5","type":"notification_rules","attributes":{"created_at":1738763176297,"created_by":{"name":"","handle":""},"enabled":true,"modified_at":1738763176649,"modified_by":{"name":"","handle":""},"name":"Rule 1","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"(source:production_service OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":2}}}' code: 200 @@ -49,7 +49,7 @@ interactions: - '*/*' id: 2 method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/a40-xl3-95h + url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/tnd-jgq-yl5 response: body: '' code: 204 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Bad_Request_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Bad_Request_response.freeze deleted file mode 100644 index fcdc31ed0f0..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Bad_Request_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:38.399Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Not_Found_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Not_Found_response.freeze deleted file mode 100644 index f24abb9c921..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Not_Found_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:39.942Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched._response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched._response.freeze deleted file mode 100644 index cfd5bff93e3..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched._response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-23T10:36:02.436Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched._response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched._response.yaml deleted file mode 100644 index e0615575246..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched._response.yaml +++ /dev/null @@ -1,62 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Test-Patch_a_vulnerability_based_rule_returns_Notification_rule_successfully_patched_response-1737628562","selectors":{"query":"env:test","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400},"type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules - response: - body: '{"data":{"id":"sou-9gl-xxm","type":"notification_rules","attributes":{"created_at":1737628562491,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628562491,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Test-Patch_a_vulnerability_based_rule_returns_Notification_rule_successfully_patched_response-1737628562","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"env:test","trigger_source":"security_findings"},"targets":["@email@email.com"],"time_aggregation":86400,"version":1}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: | - {"data":{"attributes":{"enabled":true,"name":"Rule 1","selectors":{"query":"(source:production_service OR env:prod)","rule_types":["misconfiguration","attack_path"],"severities":["critical"],"trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":1},"id":"aaa-bbb-ccc","type":"notification_rules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 1 - method: PATCH - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/sou-9gl-xxm - response: - body: '{"data":{"id":"sou-9gl-xxm","type":"notification_rules","attributes":{"created_at":1737628562491,"created_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"enabled":true,"modified_at":1737628562590,"modified_by":{"name":"CI - Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"name":"Rule 1","selectors":{"severities":["critical"],"rule_types":["misconfiguration","attack_path"],"query":"(source:production_service - OR env:prod)","trigger_source":"security_findings"},"targets":["@john.doe@email.com"],"time_aggregation":86400,"version":2}}}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 2 - method: DELETE - url: https://api.datadoghq.com/api/v2/security/vulnerabilities/notification_rules/sou-9gl-xxm - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched_response.freeze deleted file mode 100644 index e2e97276a9e..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_Security_Monitoring/Scenario_Patch_a_vulnerability-based_rule_returns_Notification_rule_successfully_patched_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-01-22T09:50:40.442Z \ No newline at end of file diff --git a/tests/scenarios/features/v2/security_monitoring.feature b/tests/scenarios/features/v2/security_monitoring.feature index d7e7f9af72a..ec4c3d3f39d 100644 --- a/tests/scenarios/features/v2/security_monitoring.feature +++ b/tests/scenarios/features/v2/security_monitoring.feature @@ -200,6 +200,16 @@ Feature: Security Monitoring And the response "options.detectionMethod" is equal to "third_party" And the response "thirdPartyCases[0].query" is equal to "status:error" + @skip-validation @team:DataDog/k9-cloud-security-platform + Scenario: Create a detection rule with type 'application_security 'returns "OK" response + Given new "CreateSecurityMonitoringRule" request + And body with value {"type":"application_security","name":"{{unique}}_appsec_rule","queries":[{"query":"@appsec.security_activity:business_logic.users.login.failure","aggregation":"count","groupByFields":["service","@http.client_ip"],"distinctFields":[]}],"filters":[],"cases":[{"name":"","status":"info","notifications":[],"condition":"a > 100000","actions":[{"type":"block_ip","options":{"duration":900}}]}],"options":{"keepAlive":3600,"maxSignalDuration":86400,"evaluationWindow":900,"detectionMethod":"threshold"},"isEnabled":true,"message":"Test rule","tags":[],"groupSignalsBy":["service"]} + When the request is sent + Then the response status is 200 OK + And the response "name" is equal to "{{ unique }}_appsec_rule" + And the response "type" is equal to "application_security" + And the response "message" is equal to "Test rule" + @skip-validation @team:DataDog/k9-cloud-security-platform Scenario: Create a detection rule with type 'impossible_travel' returns "OK" response Given new "CreateSecurityMonitoringRule" request @@ -236,28 +246,28 @@ Feature: Security Monitoring And the response "isEnabled" is equal to true @generated @skip @team:DataDog/cloud-security-posture-management - Scenario: Create a new signal-based rule returns "Bad Request" response + Scenario: Create a new signal-based notification rule returns "Bad Request" response Given new "CreateSignalNotificationRule" request And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} When the request is sent Then the response status is 400 Bad Request @team:DataDog/cloud-security-posture-management - Scenario: Create a new signal-based rule returns "Successfully created the notification rule." response + Scenario: Create a new signal-based notification rule returns "Successfully created the notification rule." response Given new "CreateSignalNotificationRule" request And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} When the request is sent Then the response status is 201 Successfully created the notification rule. @generated @skip @team:DataDog/cloud-security-posture-management - Scenario: Create a new vulnerability-based rule returns "Bad Request" response + Scenario: Create a new vulnerability-based notification rule returns "Bad Request" response Given new "CreateVulnerabilityNotificationRule" request And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} When the request is sent Then the response status is 400 Bad Request @team:DataDog/cloud-security-posture-management - Scenario: Create a new vulnerability-based rule returns "Successfully created the notification rule." response + Scenario: Create a new vulnerability-based notification rule returns "Successfully created the notification rule." response Given new "CreateVulnerabilityNotificationRule" request And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} When the request is sent @@ -354,14 +364,14 @@ Feature: Security Monitoring Then the response status is 204 OK @team:DataDog/cloud-security-posture-management - Scenario: Delete a signal-based rule returns "Not Found" response + Scenario: Delete a signal-based notification rule returns "Not Found" response Given new "DeleteSignalNotificationRule" request And request contains "id" parameter with value "000-000-000" When the request is sent Then the response status is 404 Not Found @team:DataDog/cloud-security-posture-management - Scenario: Delete a signal-based rule returns "Rule successfully deleted." response + Scenario: Delete a signal-based notification rule returns "Rule successfully deleted." response Given there is a valid "valid_signal_notification_rule" in the system And new "DeleteSignalNotificationRule" request And request contains "id" parameter from "valid_signal_notification_rule.data.id" @@ -384,14 +394,14 @@ Feature: Security Monitoring Then the response status is 204 OK @team:DataDog/cloud-security-posture-management - Scenario: Delete a vulnerability-based rule returns "Not Found" response + Scenario: Delete a vulnerability-based notification rule returns "Not Found" response Given new "DeleteVulnerabilityNotificationRule" request And request contains "id" parameter with value "000-000-000" When the request is sent Then the response status is 404 Not Found @team:DataDog/cloud-security-posture-management - Scenario: Delete a vulnerability-based rule returns "Rule successfully deleted." response + Scenario: Delete a vulnerability-based notification rule returns "Rule successfully deleted." response Given there is a valid "valid_vulnerability_notification_rule" in the system And new "DeleteVulnerabilityNotificationRule" request And request contains "id" parameter from "valid_vulnerability_notification_rule.data.id" @@ -655,21 +665,21 @@ Feature: Security Monitoring Then the response status is 200 OK @generated @skip @team:DataDog/cloud-security-posture-management - Scenario: Get details of a signal-based rule returns "Bad Request" response + Scenario: Get details of a signal-based notification rule returns "Bad Request" response Given new "GetSignalNotificationRule" request And request contains "id" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request @team:DataDog/cloud-security-posture-management - Scenario: Get details of a signal-based rule returns "Not Found" response + Scenario: Get details of a signal-based notification rule returns "Not Found" response Given new "GetSignalNotificationRule" request And request contains "id" parameter with value "000-000-000" When the request is sent Then the response status is 404 Not Found @team:DataDog/cloud-security-posture-management - Scenario: Get details of a signal-based rule returns "Notification rule details." response + Scenario: Get details of a signal-based notification rule returns "Notification rule details." response Given there is a valid "valid_signal_notification_rule" in the system And new "GetSignalNotificationRule" request And request contains "id" parameter from "valid_signal_notification_rule.data.id" @@ -677,21 +687,21 @@ Feature: Security Monitoring Then the response status is 200 Notification rule details. @generated @skip @team:DataDog/cloud-security-posture-management - Scenario: Get details of a vulnerability-based rule returns "Bad Request" response + Scenario: Get details of a vulnerability notification rule returns "Bad Request" response Given new "GetVulnerabilityNotificationRule" request And request contains "id" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request @team:DataDog/cloud-security-posture-management - Scenario: Get details of a vulnerability-based rule returns "Not Found" response + Scenario: Get details of a vulnerability notification rule returns "Not Found" response Given new "GetVulnerabilityNotificationRule" request And request contains "id" parameter with value "000-000-000" When the request is sent Then the response status is 404 Not Found @team:DataDog/cloud-security-posture-management - Scenario: Get details of a vulnerability-based rule returns "Notification rule details." response + Scenario: Get details of a vulnerability notification rule returns "Notification rule details." response Given there is a valid "valid_vulnerability_notification_rule" in the system And new "GetVulnerabilityNotificationRule" request And request contains "id" parameter from "valid_vulnerability_notification_rule.data.id" @@ -699,14 +709,14 @@ Feature: Security Monitoring Then the response status is 200 Notification rule details. @team:DataDog/cloud-security-posture-management - Scenario: Get the list of signal-based rules returns "The list of notification rules." response + Scenario: Get the list of signal-based notification rules returns "The list of notification rules." response Given there is a valid "valid_signal_notification_rule" in the system And new "GetSignalNotificationRules" request When the request is sent Then the response status is 200 The list of notification rules. @team:DataDog/cloud-security-posture-management - Scenario: Get the list of vulnerability-based rules returns "The list of notification rules." response + Scenario: Get the list of vulnerability notification rules returns "The list of notification rules." response Given there is a valid "valid_vulnerability_notification_rule" in the system And new "GetVulnerabilityNotificationRules" request When the request is sent @@ -881,7 +891,7 @@ Feature: Security Monitoring Then the response status is 200 OK @team:DataDog/cloud-security-posture-management - Scenario: Patch a signal-based rule returns "Bad Request" response + Scenario: Patch a signal-based notification rule returns "Bad Request" response Given new "PatchSignalNotificationRule" request And there is a valid "valid_signal_notification_rule" in the system And request contains "id" parameter from "valid_signal_notification_rule.data.id" @@ -890,7 +900,7 @@ Feature: Security Monitoring Then the response status is 400 Bad Request @team:DataDog/cloud-security-posture-management - Scenario: Patch a signal-based rule returns "Not Found" response + Scenario: Patch a signal-based notification rule returns "Not Found" response Given new "PatchSignalNotificationRule" request And request contains "id" parameter with value "000-000-000" And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400, "version": 1}, "id": "aaa-bbb-ccc", "type": "notification_rules"}} @@ -898,7 +908,7 @@ Feature: Security Monitoring Then the response status is 404 Not Found @team:DataDog/cloud-security-posture-management - Scenario: Patch a signal-based rule returns "Notification rule successfully patched." response + Scenario: Patch a signal-based notification rule returns "Notification rule successfully patched." response Given new "PatchSignalNotificationRule" request And there is a valid "valid_signal_notification_rule" in the system And request contains "id" parameter from "valid_signal_notification_rule.data.id" @@ -907,7 +917,7 @@ Feature: Security Monitoring Then the response status is 200 Notification rule successfully patched. @generated @skip @team:DataDog/cloud-security-posture-management - Scenario: Patch a signal-based rule returns "The server cannot process the request because it contains invalid data." response + Scenario: Patch a signal-based notification rule returns "The server cannot process the request because it contains invalid data." response Given new "PatchSignalNotificationRule" request And request contains "id" parameter from "REPLACE.ME" And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400, "version": 1}, "id": "aaa-bbb-ccc", "type": "notification_rules"}} @@ -915,7 +925,7 @@ Feature: Security Monitoring Then the response status is 422 The server cannot process the request because it contains invalid data. @team:DataDog/cloud-security-posture-management - Scenario: Patch a vulnerability-based rule returns "Bad Request" response + Scenario: Patch a vulnerability-based notification rule returns "Bad Request" response Given new "PatchVulnerabilityNotificationRule" request And there is a valid "valid_vulnerability_notification_rule" in the system And request contains "id" parameter from "valid_vulnerability_notification_rule.data.id" @@ -924,7 +934,7 @@ Feature: Security Monitoring Then the response status is 400 Bad Request @team:DataDog/cloud-security-posture-management - Scenario: Patch a vulnerability-based rule returns "Not Found" response + Scenario: Patch a vulnerability-based notification rule returns "Not Found" response Given new "PatchVulnerabilityNotificationRule" request And request contains "id" parameter with value "000-000-000" And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400, "version": 1}, "id": "aaa-bbb-ccc", "type": "notification_rules"}} @@ -932,7 +942,7 @@ Feature: Security Monitoring Then the response status is 404 Not Found @team:DataDog/cloud-security-posture-management - Scenario: Patch a vulnerability-based rule returns "Notification rule successfully patched." response + Scenario: Patch a vulnerability-based notification rule returns "Notification rule successfully patched." response Given new "PatchVulnerabilityNotificationRule" request And there is a valid "valid_vulnerability_notification_rule" in the system And request contains "id" parameter from "valid_vulnerability_notification_rule.data.id" @@ -941,7 +951,7 @@ Feature: Security Monitoring Then the response status is 200 Notification rule successfully patched. @generated @skip @team:DataDog/cloud-security-posture-management - Scenario: Patch a vulnerability-based rule returns "The server cannot process the request because it contains invalid data." response + Scenario: Patch a vulnerability-based notification rule returns "The server cannot process the request because it contains invalid data." response Given new "PatchVulnerabilityNotificationRule" request And request contains "id" parameter from "REPLACE.ME" And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400, "version": 1}, "id": "aaa-bbb-ccc", "type": "notification_rules"}}