diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 2f39666f08..e473d161ae 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -68104,6 +68104,8 @@ components: additionalProperties: false description: Attributes of the monitor notification rule. properties: + bundle_config: + $ref: "#/components/schemas/MonitorNotificationRuleBundleConfig" conditional_recipients: $ref: "#/components/schemas/MonitorNotificationRuleConditionalRecipients" filter: @@ -68114,6 +68116,19 @@ components: $ref: "#/components/schemas/MonitorNotificationRuleRecipients" required: [name] type: object + MonitorNotificationRuleBundleConfig: + description: |- + Use bundle config to enable alert bundling to reduce monitor signal noises. **Note**: This feature is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + properties: + duration: + description: Duration of the bundling period. + example: 3600 + format: int32 + maximum: 2147483647 + type: integer + required: [duration] + type: object MonitorNotificationRuleCondition: description: |- A conditional recipient rule composed of a `scope` (the matching condition) and @@ -68296,6 +68311,8 @@ components: additionalProperties: {} description: Attributes of the monitor notification rule. properties: + bundle_config: + $ref: "#/components/schemas/MonitorNotificationRuleBundleConfig" conditional_recipients: $ref: "#/components/schemas/MonitorNotificationRuleConditionalRecipients" created: diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index ac488764e4..41043cafb7 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -28410,6 +28410,13 @@ datadog\_api\_client.v2.model.monitor\_notification\_rule\_attributes module :members: :show-inheritance: +datadog\_api\_client.v2.model.monitor\_notification\_rule\_bundle\_config module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.monitor_notification_rule_bundle_config + :members: + :show-inheritance: + datadog\_api\_client.v2.model.monitor\_notification\_rule\_condition module --------------------------------------------------------------------------- diff --git a/examples/v2/monitors/CreateMonitorNotificationRule_678042569.py b/examples/v2/monitors/CreateMonitorNotificationRule_678042569.py new file mode 100644 index 0000000000..6d556c71a1 --- /dev/null +++ b/examples/v2/monitors/CreateMonitorNotificationRule_678042569.py @@ -0,0 +1,41 @@ +""" +Create a monitor notification rule with bundle config returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.monitors_api import MonitorsApi +from datadog_api_client.v2.model.monitor_notification_rule_attributes import MonitorNotificationRuleAttributes +from datadog_api_client.v2.model.monitor_notification_rule_bundle_config import MonitorNotificationRuleBundleConfig +from datadog_api_client.v2.model.monitor_notification_rule_create_request import MonitorNotificationRuleCreateRequest +from datadog_api_client.v2.model.monitor_notification_rule_create_request_data import ( + MonitorNotificationRuleCreateRequestData, +) +from datadog_api_client.v2.model.monitor_notification_rule_filter_tags import MonitorNotificationRuleFilterTags +from datadog_api_client.v2.model.monitor_notification_rule_resource_type import MonitorNotificationRuleResourceType + +body = MonitorNotificationRuleCreateRequest( + data=MonitorNotificationRuleCreateRequestData( + attributes=MonitorNotificationRuleAttributes( + filter=MonitorNotificationRuleFilterTags( + tags=[ + "test:example-monitor", + ], + ), + name="test rule", + recipients=[ + "slack-test-channel", + ], + bundle_config=MonitorNotificationRuleBundleConfig( + duration=3600, + ), + ), + type=MonitorNotificationRuleResourceType.MONITOR_NOTIFICATION_RULE, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MonitorsApi(api_client) + response = api_instance.create_monitor_notification_rule(body=body) + + print(response) diff --git a/examples/v2/monitors/UpdateMonitorNotificationRule_752032728.py b/examples/v2/monitors/UpdateMonitorNotificationRule_752032728.py new file mode 100644 index 0000000000..b9856f2d08 --- /dev/null +++ b/examples/v2/monitors/UpdateMonitorNotificationRule_752032728.py @@ -0,0 +1,46 @@ +""" +Update a monitor notification rule with bundle config returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.monitors_api import MonitorsApi +from datadog_api_client.v2.model.monitor_notification_rule_attributes import MonitorNotificationRuleAttributes +from datadog_api_client.v2.model.monitor_notification_rule_bundle_config import MonitorNotificationRuleBundleConfig +from datadog_api_client.v2.model.monitor_notification_rule_filter_tags import MonitorNotificationRuleFilterTags +from datadog_api_client.v2.model.monitor_notification_rule_resource_type import MonitorNotificationRuleResourceType +from datadog_api_client.v2.model.monitor_notification_rule_update_request import MonitorNotificationRuleUpdateRequest +from datadog_api_client.v2.model.monitor_notification_rule_update_request_data import ( + MonitorNotificationRuleUpdateRequestData, +) + +# there is a valid "monitor_notification_rule" in the system +MONITOR_NOTIFICATION_RULE_DATA_ID = environ["MONITOR_NOTIFICATION_RULE_DATA_ID"] + +body = MonitorNotificationRuleUpdateRequest( + data=MonitorNotificationRuleUpdateRequestData( + attributes=MonitorNotificationRuleAttributes( + filter=MonitorNotificationRuleFilterTags( + tags=[ + "test:example-monitor", + ], + ), + name="updated rule", + recipients=[ + "slack-test-channel", + ], + bundle_config=MonitorNotificationRuleBundleConfig( + duration=3600, + ), + ), + id=MONITOR_NOTIFICATION_RULE_DATA_ID, + type=MonitorNotificationRuleResourceType.MONITOR_NOTIFICATION_RULE, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MonitorsApi(api_client) + response = api_instance.update_monitor_notification_rule(rule_id=MONITOR_NOTIFICATION_RULE_DATA_ID, body=body) + + print(response) diff --git a/src/datadog_api_client/v2/model/monitor_notification_rule_attributes.py b/src/datadog_api_client/v2/model/monitor_notification_rule_attributes.py index 6ce15dfe04..bb9cc48cf3 100644 --- a/src/datadog_api_client/v2/model/monitor_notification_rule_attributes.py +++ b/src/datadog_api_client/v2/model/monitor_notification_rule_attributes.py @@ -14,6 +14,7 @@ if TYPE_CHECKING: + from datadog_api_client.v2.model.monitor_notification_rule_bundle_config import MonitorNotificationRuleBundleConfig from datadog_api_client.v2.model.monitor_notification_rule_conditional_recipients import ( MonitorNotificationRuleConditionalRecipients, ) @@ -40,12 +41,16 @@ def additional_properties_type(_): @cached_property def openapi_types(_): + from datadog_api_client.v2.model.monitor_notification_rule_bundle_config import ( + MonitorNotificationRuleBundleConfig, + ) from datadog_api_client.v2.model.monitor_notification_rule_conditional_recipients import ( MonitorNotificationRuleConditionalRecipients, ) from datadog_api_client.v2.model.monitor_notification_rule_filter import MonitorNotificationRuleFilter return { + "bundle_config": (MonitorNotificationRuleBundleConfig,), "conditional_recipients": (MonitorNotificationRuleConditionalRecipients,), "filter": (MonitorNotificationRuleFilter,), "name": (str,), @@ -53,6 +58,7 @@ def openapi_types(_): } attribute_map = { + "bundle_config": "bundle_config", "conditional_recipients": "conditional_recipients", "filter": "filter", "name": "name", @@ -62,6 +68,7 @@ def openapi_types(_): def __init__( self_, name: str, + bundle_config: Union[MonitorNotificationRuleBundleConfig, UnsetType] = unset, conditional_recipients: Union[MonitorNotificationRuleConditionalRecipients, UnsetType] = unset, filter: Union[ MonitorNotificationRuleFilter, @@ -75,6 +82,10 @@ def __init__( """ Attributes of the monitor notification rule. + :param bundle_config: Use bundle config to enable alert bundling to reduce monitor signal noises. **Note** : This feature is in preview and is subject to change. + If you have any feedback, contact `Datadog support `_. + :type bundle_config: MonitorNotificationRuleBundleConfig, optional + :param conditional_recipients: Use conditional recipients to define different recipients for different situations. Cannot be used with ``recipients``. :type conditional_recipients: MonitorNotificationRuleConditionalRecipients, optional @@ -87,6 +98,8 @@ def __init__( :param recipients: A list of recipients to notify. Uses the same format as the monitor ``message`` field. Must not start with an '@'. Cannot be used with ``conditional_recipients``. :type recipients: [str], optional """ + if bundle_config is not unset: + kwargs["bundle_config"] = bundle_config if conditional_recipients is not unset: kwargs["conditional_recipients"] = conditional_recipients if filter is not unset: diff --git a/src/datadog_api_client/v2/model/monitor_notification_rule_bundle_config.py b/src/datadog_api_client/v2/model/monitor_notification_rule_bundle_config.py new file mode 100644 index 0000000000..820cbcf58d --- /dev/null +++ b/src/datadog_api_client/v2/model/monitor_notification_rule_bundle_config.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class MonitorNotificationRuleBundleConfig(ModelNormal): + validations = { + "duration": { + "inclusive_maximum": 2147483647, + }, + } + + @cached_property + def openapi_types(_): + return { + "duration": (int,), + } + + attribute_map = { + "duration": "duration", + } + + def __init__(self_, duration: int, **kwargs): + """ + Use bundle config to enable alert bundling to reduce monitor signal noises. **Note** : This feature is in preview and is subject to change. + If you have any feedback, contact `Datadog support `_. + + :param duration: Duration of the bundling period. + :type duration: int + """ + super().__init__(kwargs) + + self_.duration = duration diff --git a/src/datadog_api_client/v2/model/monitor_notification_rule_response_attributes.py b/src/datadog_api_client/v2/model/monitor_notification_rule_response_attributes.py index 67670eebae..a2004b1d28 100644 --- a/src/datadog_api_client/v2/model/monitor_notification_rule_response_attributes.py +++ b/src/datadog_api_client/v2/model/monitor_notification_rule_response_attributes.py @@ -15,6 +15,7 @@ if TYPE_CHECKING: + from datadog_api_client.v2.model.monitor_notification_rule_bundle_config import MonitorNotificationRuleBundleConfig from datadog_api_client.v2.model.monitor_notification_rule_conditional_recipients import ( MonitorNotificationRuleConditionalRecipients, ) @@ -37,12 +38,16 @@ class MonitorNotificationRuleResponseAttributes(ModelNormal): @cached_property def openapi_types(_): + from datadog_api_client.v2.model.monitor_notification_rule_bundle_config import ( + MonitorNotificationRuleBundleConfig, + ) from datadog_api_client.v2.model.monitor_notification_rule_conditional_recipients import ( MonitorNotificationRuleConditionalRecipients, ) from datadog_api_client.v2.model.monitor_notification_rule_filter import MonitorNotificationRuleFilter return { + "bundle_config": (MonitorNotificationRuleBundleConfig,), "conditional_recipients": (MonitorNotificationRuleConditionalRecipients,), "created": (datetime,), "filter": (MonitorNotificationRuleFilter,), @@ -52,6 +57,7 @@ def openapi_types(_): } attribute_map = { + "bundle_config": "bundle_config", "conditional_recipients": "conditional_recipients", "created": "created", "filter": "filter", @@ -62,6 +68,7 @@ def openapi_types(_): def __init__( self_, + bundle_config: Union[MonitorNotificationRuleBundleConfig, UnsetType] = unset, conditional_recipients: Union[MonitorNotificationRuleConditionalRecipients, UnsetType] = unset, created: Union[datetime, UnsetType] = unset, filter: Union[ @@ -78,6 +85,10 @@ def __init__( """ Attributes of the monitor notification rule. + :param bundle_config: Use bundle config to enable alert bundling to reduce monitor signal noises. **Note** : This feature is in preview and is subject to change. + If you have any feedback, contact `Datadog support `_. + :type bundle_config: MonitorNotificationRuleBundleConfig, optional + :param conditional_recipients: Use conditional recipients to define different recipients for different situations. Cannot be used with ``recipients``. :type conditional_recipients: MonitorNotificationRuleConditionalRecipients, optional @@ -96,6 +107,8 @@ def __init__( :param recipients: A list of recipients to notify. Uses the same format as the monitor ``message`` field. Must not start with an '@'. Cannot be used with ``conditional_recipients``. :type recipients: [str], optional """ + if bundle_config is not unset: + kwargs["bundle_config"] = bundle_config if conditional_recipients is not unset: kwargs["conditional_recipients"] = conditional_recipients if created is not unset: diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 127189e023..cf4ce145ea 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -5452,6 +5452,7 @@ ) from datadog_api_client.v2.model.monitor_downtime_match_response_data import MonitorDowntimeMatchResponseData from datadog_api_client.v2.model.monitor_notification_rule_attributes import MonitorNotificationRuleAttributes +from datadog_api_client.v2.model.monitor_notification_rule_bundle_config import MonitorNotificationRuleBundleConfig from datadog_api_client.v2.model.monitor_notification_rule_condition import MonitorNotificationRuleCondition from datadog_api_client.v2.model.monitor_notification_rule_conditional_recipients import ( MonitorNotificationRuleConditionalRecipients, @@ -14648,6 +14649,7 @@ "MonitorDowntimeMatchResponseAttributes", "MonitorDowntimeMatchResponseData", "MonitorNotificationRuleAttributes", + "MonitorNotificationRuleBundleConfig", "MonitorNotificationRuleCondition", "MonitorNotificationRuleConditionalRecipients", "MonitorNotificationRuleCreateRequest", diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_monitor_notification_rule_with_bundle_config_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_monitor_notification_rule_with_bundle_config_returns_ok_response.frozen new file mode 100644 index 0000000000..4c576d08d4 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_monitor_notification_rule_with_bundle_config_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-08-17T21:40:51.600Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_monitor_notification_rule_with_bundle_config_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_monitor_notification_rule_with_bundle_config_returns_ok_response.yaml new file mode 100644 index 0000000000..14102347bc --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_monitor_notification_rule_with_bundle_config_returns_ok_response.yaml @@ -0,0 +1,40 @@ +interactions: +- request: + body: '{"data":{"attributes":{"bundle_config":{"duration":3600},"filter":{"tags":["test:test-create_a_monitor_notification_rule_with_bundle_config_returns_ok_response-1787002851"]},"name":"test + rule","recipients":["slack-test-channel"]},"type":"monitor-notification-rule"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/monitor/notification_rule + response: + body: + string: '{"data":{"type":"monitor-notification-rule","id":"fc63c678-ecf4-4807-a3c9-317baea76bb1","attributes":{"name":"test + rule","created_at":"2026-08-17T21:40:51.789668+00:00","modified_at":"2026-08-17T21:40:51.806466+00:00","filter":{"tags":["test:test-create_a_monitor_notification_rule_with_bundle_config_returns_ok_response-1787002851"]},"recipients":["slack-test-channel"],"bundle_config":{"duration":3600}},"relationships":{"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}},"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"uuid":"3ad549bf-eba0-11e9-a77a-0705486660d0","name":"frog","handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2026-07-10T19:34:11.410571+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active","last_login_time":"2024-01-04T18:40:05+00:00"}}]} + + ' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/monitor/notification_rule/fc63c678-ecf4-4807-a3c9-317baea76bb1 + response: + body: + string: '' + headers: + content-type: + - text/html; charset=utf-8 + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_monitor_notification_rule_with_bundle_config_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_monitor_notification_rule_with_bundle_config_returns_ok_response.frozen new file mode 100644 index 0000000000..6ba9cc1d7c --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_monitor_notification_rule_with_bundle_config_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-08-17T21:41:19.954Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_monitor_notification_rule_with_bundle_config_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_monitor_notification_rule_with_bundle_config_returns_ok_response.yaml new file mode 100644 index 0000000000..5ba1e3a2cb --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_monitor_notification_rule_with_bundle_config_returns_ok_response.yaml @@ -0,0 +1,62 @@ +interactions: +- request: + body: '{"data":{"attributes":{"filter":{"tags":["app:test-update_a_monitor_notification_rule_with_bundle_config_returns_ok_response-1787002879"]},"name":"test + rule","recipients":["slack-monitor-app"]},"type":"monitor-notification-rule"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/monitor/notification_rule + response: + body: + string: '{"data":{"type":"monitor-notification-rule","id":"649f51a4-76f5-4b0d-8ec3-90929a6570bc","attributes":{"name":"test + rule","created_at":"2026-08-17T21:41:20.185857+00:00","modified_at":"2026-08-17T21:41:20.209762+00:00","filter":{"tags":["app:test-update_a_monitor_notification_rule_with_bundle_config_returns_ok_response-1787002879"]},"recipients":["slack-monitor-app"]},"relationships":{"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}},"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"uuid":"3ad549bf-eba0-11e9-a77a-0705486660d0","name":"frog","handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2026-07-10T19:34:11.410571+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active","last_login_time":"2024-01-04T18:40:05+00:00"}}]} + + ' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: '{"data":{"attributes":{"bundle_config":{"duration":3600},"filter":{"tags":["test:test-update_a_monitor_notification_rule_with_bundle_config_returns_ok_response-1787002879"]},"name":"updated + rule","recipients":["slack-test-channel"]},"id":"649f51a4-76f5-4b0d-8ec3-90929a6570bc","type":"monitor-notification-rule"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PATCH + uri: https://api.datadoghq.com/api/v2/monitor/notification_rule/649f51a4-76f5-4b0d-8ec3-90929a6570bc + response: + body: + string: '{"data":{"type":"monitor-notification-rule","id":"649f51a4-76f5-4b0d-8ec3-90929a6570bc","attributes":{"name":"updated + rule","created_at":"2026-08-17T21:41:20.185857+00:00","modified_at":"2026-08-17T21:41:22.287888+00:00","filter":{"tags":["test:test-update_a_monitor_notification_rule_with_bundle_config_returns_ok_response-1787002879"]},"recipients":["slack-test-channel"],"bundle_config":{"duration":3600}},"relationships":{"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}},"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"uuid":"3ad549bf-eba0-11e9-a77a-0705486660d0","name":"frog","handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2026-07-10T19:34:11.410571+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active","last_login_time":"2024-01-04T18:40:05+00:00"}}]} + + ' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/monitor/notification_rule/649f51a4-76f5-4b0d-8ec3-90929a6570bc + response: + body: + string: '' + headers: + content-type: + - text/html; charset=utf-8 + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/features/monitors.feature b/tests/v2/features/monitors.feature index b1bb50a8db..1e7e907c9f 100644 --- a/tests/v2/features/monitors.feature +++ b/tests/v2/features/monitors.feature @@ -44,6 +44,14 @@ Feature: Monitors Then the response status is 200 OK And the response "data.attributes.name" is equal to "test rule" + @team:DataDog/monitor-app + Scenario: Create a monitor notification rule with bundle config returns "OK" response + Given new "CreateMonitorNotificationRule" request + And body with value {"data": {"attributes": {"filter": {"tags": ["test:{{ unique_lower }}"]}, "name": "test rule", "recipients": ["slack-test-channel"], "bundle_config": {"duration": 3600}}, "type": "monitor-notification-rule"}} + When the request is sent + Then the response status is 200 OK + And the response "data.attributes.name" is equal to "test rule" + @team:DataDog/monitor-app Scenario: Create a monitor notification rule with conditional recipients returns "OK" response Given new "CreateMonitorNotificationRule" request @@ -273,6 +281,16 @@ Feature: Monitors Then the response status is 200 OK And the response "data.attributes.name" is equal to "updated rule" + @team:DataDog/monitor-app + Scenario: Update a monitor notification rule with bundle config returns "OK" response + Given there is a valid "monitor_notification_rule" in the system + And new "UpdateMonitorNotificationRule" request + And request contains "rule_id" parameter from "monitor_notification_rule.data.id" + And body with value {"data": {"attributes": {"filter": {"tags": ["test:{{ unique_lower }}"]}, "name": "updated rule", "recipients": ["slack-test-channel"], "bundle_config": {"duration": 3600}}, "id": "{{ monitor_notification_rule.data.id }}", "type": "monitor-notification-rule"}} + When the request is sent + Then the response status is 200 OK + And the response "data.attributes.name" is equal to "updated rule" + @team:DataDog/monitor-app Scenario: Update a monitor notification rule with conditional_recipients returns "OK" response Given there is a valid "monitor_notification_rule" in the system