Update control notification settings

Note: This endpoint is in preview and is subject to change. If you have any feedback, contact Datadog support.

PUT https://api.ap1.datadoghq.com/api/v2/governance/control/{detection_type}/notification_settingshttps://api.ap2.datadoghq.com/api/v2/governance/control/{detection_type}/notification_settingshttps://api.datadoghq.eu/api/v2/governance/control/{detection_type}/notification_settingshttps://api.ddog-gov.com/api/v2/governance/control/{detection_type}/notification_settingshttps://api.us2.ddog-gov.com/api/v2/governance/control/{detection_type}/notification_settingshttps://api.uk1.datadoghq.com/api/v2/governance/control/{detection_type}/notification_settingshttps://api.datadoghq.com/api/v2/governance/control/{detection_type}/notification_settingshttps://api.us3.datadoghq.com/api/v2/governance/control/{detection_type}/notification_settingshttps://api.us5.datadoghq.com/api/v2/governance/control/{detection_type}/notification_settings

Overview

Replace the notification settings for the governance control with the given detection type, setting, for each supported event type, whether notifications are enabled and which destinations receive them. This endpoint requires all of the following permissions:

  • governance_console_read
  • governance_console_write

  • Arguments

    Path Parameters

    Name

    Type

    Description

    detection_type [required]

    string

    The detection type that identifies the control; for example, unused_api_keys.

    Request

    Body Data (required)

    Expand All

    Field

    Type

    Description

    data [required]

    object

    The data of a control notification settings update request.

    attributes

    object

    The attributes of a governance control's notification settings that can be updated.

    event_settings

    [object]

    The notification settings for each supported event type on the control.

    enabled [required]

    boolean

    Whether notifications are enabled for this event type.

    event_type [required]

    string

    The event type the notification settings apply to, such as new_detection.

    targets [required]

    [object]

    The destinations that receive notifications for an event type.

    handle [required]

    string

    The destination handle, such as an email address, Slack channel, or user handle.

    type [required]

    enum

    The type of notification destination. Allowed enum values: email,slack,at_mention,case

    type [required]

    enum

    Control notification settings resource type. Allowed enum values: control_notification_settings

    {
      "data": {
        "attributes": {
          "event_settings": [
            {
              "enabled": true,
              "event_type": "new_detection",
              "targets": [
                {
                  "handle": "#governance-alerts",
                  "type": "slack"
                }
              ]
            }
          ]
        },
        "type": "control_notification_settings"
      }
    }

    Response

    OK

    The notification settings for a governance control.

    Expand All

    Field

    Type

    Description

    data [required]

    object

    A control notification settings resource.

    attributes [required]

    object

    The attributes of a governance control's notification settings.

    event_settings [required]

    [object]

    The notification settings for each supported event type on the control.

    enabled [required]

    boolean

    Whether notifications are enabled for this event type.

    event_type [required]

    string

    The event type the notification settings apply to, such as new_detection.

    targets [required]

    [object]

    The destinations that receive notifications for an event type.

    handle [required]

    string

    The destination handle, such as an email address, Slack channel, or user handle.

    type [required]

    enum

    The type of notification destination. Allowed enum values: email,slack,at_mention,case

    id [required]

    string

    The detection type the notification settings apply to.

    type [required]

    enum

    Control notification settings resource type. Allowed enum values: control_notification_settings

    {
      "data": {
        "attributes": {
          "event_settings": [
            {
              "enabled": true,
              "event_type": "new_detection",
              "targets": [
                {
                  "handle": "#governance-alerts",
                  "type": "slack"
                }
              ]
            }
          ]
        },
        "id": "unused_api_keys",
        "type": "control_notification_settings"
      }
    }

    Bad Request

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Unauthorized

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Forbidden

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Too many requests

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Code Example

                      ## default
    # 
    
    # Path parameters
    export detection_type="unused_api_keys"
    # Curl command
    curl -X PUT "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.uk1.datadoghq.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/governance/control/${detection_type}/notification_settings" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ -d @- << EOF { "data": { "attributes": { "event_settings": [ { "enabled": true, "event_type": "new_detection", "targets": [ { "handle": "#governance-alerts", "type": "slack" } ] } ] }, "type": "control_notification_settings" } } EOF
    """
    Update control notification settings returns "OK" response
    """
    
    from datadog_api_client import ApiClient, Configuration
    from datadog_api_client.v2.api.governance_console_api import GovernanceConsoleApi
    from datadog_api_client.v2.model.control_notification_event_setting import ControlNotificationEventSetting
    from datadog_api_client.v2.model.control_notification_settings_resource_type import (
        ControlNotificationSettingsResourceType,
    )
    from datadog_api_client.v2.model.control_notification_settings_update_attributes import (
        ControlNotificationSettingsUpdateAttributes,
    )
    from datadog_api_client.v2.model.control_notification_settings_update_data import ControlNotificationSettingsUpdateData
    from datadog_api_client.v2.model.control_notification_settings_update_request import (
        ControlNotificationSettingsUpdateRequest,
    )
    from datadog_api_client.v2.model.control_notification_target import ControlNotificationTarget
    from datadog_api_client.v2.model.control_notification_target_type import ControlNotificationTargetType
    
    body = ControlNotificationSettingsUpdateRequest(
        data=ControlNotificationSettingsUpdateData(
            attributes=ControlNotificationSettingsUpdateAttributes(
                event_settings=[
                    ControlNotificationEventSetting(
                        enabled=True,
                        event_type="new_detection",
                        targets=[
                            ControlNotificationTarget(
                                handle="#governance-alerts",
                                type=ControlNotificationTargetType.SLACK,
                            ),
                        ],
                    ),
                ],
            ),
            type=ControlNotificationSettingsResourceType.CONTROL_NOTIFICATION_SETTINGS,
        ),
    )
    
    configuration = Configuration()
    configuration.unstable_operations["update_governance_control_notification_settings"] = True
    with ApiClient(configuration) as api_client:
        api_instance = GovernanceConsoleApi(api_client)
        response = api_instance.update_governance_control_notification_settings(detection_type="detection_type", body=body)
    
        print(response)
    

    Instructions

    First install the library and its dependencies and then save the example to example.py and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
    # Update control notification settings returns "OK" response
    
    require "datadog_api_client"
    DatadogAPIClient.configure do |config|
      config.unstable_operations["v2.update_governance_control_notification_settings".to_sym] = true
    end
    api_instance = DatadogAPIClient::V2::GovernanceConsoleAPI.new
    
    body = DatadogAPIClient::V2::ControlNotificationSettingsUpdateRequest.new({
      data: DatadogAPIClient::V2::ControlNotificationSettingsUpdateData.new({
        attributes: DatadogAPIClient::V2::ControlNotificationSettingsUpdateAttributes.new({
          event_settings: [
            DatadogAPIClient::V2::ControlNotificationEventSetting.new({
              enabled: true,
              event_type: "new_detection",
              targets: [
                DatadogAPIClient::V2::ControlNotificationTarget.new({
                  handle: "#governance-alerts",
                  type: DatadogAPIClient::V2::ControlNotificationTargetType::SLACK,
                }),
              ],
            }),
          ],
        }),
        type: DatadogAPIClient::V2::ControlNotificationSettingsResourceType::CONTROL_NOTIFICATION_SETTINGS,
      }),
    })
    p api_instance.update_governance_control_notification_settings("detection_type", body)
    

    Instructions

    First install the library and its dependencies and then save the example to example.rb and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
    // Update control notification settings 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.ControlNotificationSettingsUpdateRequest{
    		Data: datadogV2.ControlNotificationSettingsUpdateData{
    			Attributes: &datadogV2.ControlNotificationSettingsUpdateAttributes{
    				EventSettings: []datadogV2.ControlNotificationEventSetting{
    					{
    						Enabled:   true,
    						EventType: "new_detection",
    						Targets: []datadogV2.ControlNotificationTarget{
    							{
    								Handle: "#governance-alerts",
    								Type:   datadogV2.CONTROLNOTIFICATIONTARGETTYPE_SLACK,
    							},
    						},
    					},
    				},
    			},
    			Type: datadogV2.CONTROLNOTIFICATIONSETTINGSRESOURCETYPE_CONTROL_NOTIFICATION_SETTINGS,
    		},
    	}
    	ctx := datadog.NewDefaultContext(context.Background())
    	configuration := datadog.NewConfiguration()
    	configuration.SetUnstableOperationEnabled("v2.UpdateGovernanceControlNotificationSettings", true)
    	apiClient := datadog.NewAPIClient(configuration)
    	api := datadogV2.NewGovernanceConsoleApi(apiClient)
    	resp, r, err := api.UpdateGovernanceControlNotificationSettings(ctx, "detection_type", body)
    
    	if err != nil {
    		fmt.Fprintf(os.Stderr, "Error when calling `GovernanceConsoleApi.UpdateGovernanceControlNotificationSettings`: %v\n", err)
    		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    	}
    
    	responseContent, _ := json.MarshalIndent(resp, "", "  ")
    	fmt.Fprintf(os.Stdout, "Response from `GovernanceConsoleApi.UpdateGovernanceControlNotificationSettings`:\n%s\n", responseContent)
    }
    

    Instructions

    First install the library and its dependencies and then save the example to main.go and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
    // Update control notification settings returns "OK" response
    
    import com.datadog.api.client.ApiClient;
    import com.datadog.api.client.ApiException;
    import com.datadog.api.client.v2.api.GovernanceConsoleApi;
    import com.datadog.api.client.v2.model.ControlNotificationEventSetting;
    import com.datadog.api.client.v2.model.ControlNotificationSettingsResourceType;
    import com.datadog.api.client.v2.model.ControlNotificationSettingsResponse;
    import com.datadog.api.client.v2.model.ControlNotificationSettingsUpdateAttributes;
    import com.datadog.api.client.v2.model.ControlNotificationSettingsUpdateData;
    import com.datadog.api.client.v2.model.ControlNotificationSettingsUpdateRequest;
    import com.datadog.api.client.v2.model.ControlNotificationTarget;
    import com.datadog.api.client.v2.model.ControlNotificationTargetType;
    import java.util.Collections;
    
    public class Example {
      public static void main(String[] args) {
        ApiClient defaultClient = ApiClient.getDefaultApiClient();
        defaultClient.setUnstableOperationEnabled(
            "v2.updateGovernanceControlNotificationSettings", true);
        GovernanceConsoleApi apiInstance = new GovernanceConsoleApi(defaultClient);
    
        ControlNotificationSettingsUpdateRequest body =
            new ControlNotificationSettingsUpdateRequest()
                .data(
                    new ControlNotificationSettingsUpdateData()
                        .attributes(
                            new ControlNotificationSettingsUpdateAttributes()
                                .eventSettings(
                                    Collections.singletonList(
                                        new ControlNotificationEventSetting()
                                            .enabled(true)
                                            .eventType("new_detection")
                                            .targets(
                                                Collections.singletonList(
                                                    new ControlNotificationTarget()
                                                        .handle("#governance-alerts")
                                                        .type(ControlNotificationTargetType.SLACK))))))
                        .type(ControlNotificationSettingsResourceType.CONTROL_NOTIFICATION_SETTINGS));
    
        try {
          ControlNotificationSettingsResponse result =
              apiInstance.updateGovernanceControlNotificationSettings("unused_api_keys", body);
          System.out.println(result);
        } catch (ApiException e) {
          System.err.println(
              "Exception when calling"
                  + " GovernanceConsoleApi#updateGovernanceControlNotificationSettings");
          System.err.println("Status code: " + e.getCode());
          System.err.println("Reason: " + e.getResponseBody());
          System.err.println("Response headers: " + e.getResponseHeaders());
          e.printStackTrace();
        }
      }
    }
    

    Instructions

    First install the library and its dependencies and then save the example to Example.java and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
    // Update control notification settings returns "OK" response
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_governance_console::GovernanceConsoleAPI;
    use datadog_api_client::datadogV2::model::ControlNotificationEventSetting;
    use datadog_api_client::datadogV2::model::ControlNotificationSettingsResourceType;
    use datadog_api_client::datadogV2::model::ControlNotificationSettingsUpdateAttributes;
    use datadog_api_client::datadogV2::model::ControlNotificationSettingsUpdateData;
    use datadog_api_client::datadogV2::model::ControlNotificationSettingsUpdateRequest;
    use datadog_api_client::datadogV2::model::ControlNotificationTarget;
    use datadog_api_client::datadogV2::model::ControlNotificationTargetType;
    
    #[tokio::main]
    async fn main() {
        let body = ControlNotificationSettingsUpdateRequest::new(
            ControlNotificationSettingsUpdateData::new(
                ControlNotificationSettingsResourceType::CONTROL_NOTIFICATION_SETTINGS,
            )
            .attributes(
                ControlNotificationSettingsUpdateAttributes::new().event_settings(vec![
                    ControlNotificationEventSetting::new(
                        true,
                        "new_detection".to_string(),
                        vec![ControlNotificationTarget::new(
                            "#governance-alerts".to_string(),
                            ControlNotificationTargetType::SLACK,
                        )],
                    ),
                ]),
            ),
        );
        let mut configuration = datadog::Configuration::new();
        configuration
            .set_unstable_operation_enabled("v2.UpdateGovernanceControlNotificationSettings", true);
        let api = GovernanceConsoleAPI::with_config(configuration);
        let resp = api
            .update_governance_control_notification_settings("detection_type".to_string(), body)
            .await;
        if let Ok(value) = resp {
            println!("{:#?}", value);
        } else {
            println!("{:#?}", resp.unwrap_err());
        }
    }
    

    Instructions

    First install the library and its dependencies and then save the example to src/main.rs and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
    /**
     * Update control notification settings returns "OK" response
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration();
    configuration.unstableOperations[
      "v2.updateGovernanceControlNotificationSettings"
    ] = true;
    const apiInstance = new v2.GovernanceConsoleApi(configuration);
    
    const params: v2.GovernanceConsoleApiUpdateGovernanceControlNotificationSettingsRequest =
      {
        body: {
          data: {
            attributes: {
              eventSettings: [
                {
                  enabled: true,
                  eventType: "new_detection",
                  targets: [
                    {
                      handle: "#governance-alerts",
                      type: "slack",
                    },
                  ],
                },
              ],
            },
            type: "control_notification_settings",
          },
        },
        detectionType: "detection_type",
      };
    
    apiInstance
      .updateGovernanceControlNotificationSettings(params)
      .then((data: v2.ControlNotificationSettingsResponse) => {
        console.log(
          "API called successfully. Returned data: " + JSON.stringify(data)
        );
      })
      .catch((error: any) => console.error(error));
    

    Instructions

    First install the library and its dependencies and then save the example to example.ts and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"