Create a new notification rule for security signals and return the created rule.
This endpoint requires the security_monitoring_notification_profiles_write permission.
Request
Body Data (required)
The body of the create notification rule request is composed of the rule type and the rule attributes:
the rule name, the selectors, the notification targets, and the rule enabled status.
Data of the notification rule create request: the rule type, and the rule attributes. All fields are required.
attributes [required]
object
Attributes of the notification rule create request.
enabled
boolean
Field used to enable or disable the rule.
name [required]
string
Name of the notification rule.
selectors [required]
object
Selectors are used to filter security issues for which notifications should be generated.
Users can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.
Only the trigger_source field is required.
query
string
The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.
rule_types
[string]
Security rule types used as filters in security rules.
severities
[string]
The security rules severities to consider.
trigger_source [required]
enum
The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",
while notification rules based on security vulnerabilities need to use the trigger source "security_findings".
Allowed enum values: security_findings,security_signals
targets [required]
[string]
List of recipients to notify when a notification rule is triggered. Many different target types are supported,
such as email addresses, Slack channels, and PagerDuty services.
The appropriate integrations need to be properly configured to send notifications to the specified targets.
time_aggregation
int64
Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.
Results are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.
Notifications are only sent for new issues discovered during the window.
Time aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation
is done.
type [required]
enum
The rule type associated to notification rules.
Allowed enum values: notification_rules
{"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"}}
Response object which includes a notification rule.
Expand All
Field
Type
Description
data
object
Notification rules allow full control over notifications generated by the various Datadog security products.
They allow users to define the conditions under which a notification should be generated (based on rule severities,
rule types, rule tags, and so on), and the targets to notify.
A notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.
attributes [required]
object
Attributes of the notification rule.
created_at [required]
int64
Date as Unix timestamp in milliseconds.
created_by [required]
object
User creating or modifying a rule.
handle
string
The user handle.
name
string
The user name.
enabled [required]
boolean
Field used to enable or disable the rule.
modified_at [required]
int64
Date as Unix timestamp in milliseconds.
modified_by [required]
object
User creating or modifying a rule.
handle
string
The user handle.
name
string
The user name.
name [required]
string
Name of the notification rule.
selectors [required]
object
Selectors are used to filter security issues for which notifications should be generated.
Users can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.
Only the trigger_source field is required.
query
string
The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.
rule_types
[string]
Security rule types used as filters in security rules.
severities
[string]
The security rules severities to consider.
trigger_source [required]
enum
The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",
while notification rules based on security vulnerabilities need to use the trigger source "security_findings".
Allowed enum values: security_findings,security_signals
targets [required]
[string]
List of recipients to notify when a notification rule is triggered. Many different target types are supported,
such as email addresses, Slack channels, and PagerDuty services.
The appropriate integrations need to be properly configured to send notifications to the specified targets.
time_aggregation
int64
Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.
Results are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.
Notifications are only sent for new issues discovered during the window.
Time aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation
is done.
version [required]
int64
Version of the notification rule. It is updated when the rule is modified.
id [required]
string
The ID of a notification rule.
type [required]
enum
The rule type associated to notification rules.
Allowed enum values: notification_rules
{"data":{"attributes":{"created_at":1722439510282,"created_by":{"handle":"john.doe@domain.com","name":"John Doe"},"enabled":true,"modified_at":1722439510282,"modified_by":{"handle":"john.doe@domain.com","name":"John Doe"},"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"}}
// Create a new signal-based notification rule returns "Successfully created the notification rule." responsepackagemainimport("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")funcmain(){body:=datadogV2.CreateNotificationRuleParameters{Data:&datadogV2.CreateNotificationRuleParametersData{Attributes:datadogV2.CreateNotificationRuleParametersDataAttributes{Enabled:datadog.PtrBool(true),Name:"Rule 1",Selectors:datadogV2.Selectors{Query:datadog.PtrString("(source:production_service OR env:prod)"),RuleTypes:[]datadogV2.RuleTypesItems{datadogV2.RULETYPESITEMS_MISCONFIGURATION,datadogV2.RULETYPESITEMS_ATTACK_PATH,},Severities:[]datadogV2.RuleSeverity{datadogV2.RULESEVERITY_CRITICAL,},TriggerSource:datadogV2.TRIGGERSOURCE_SECURITY_FINDINGS,},Targets:[]string{"@john.doe@email.com",},TimeAggregation:datadog.PtrInt64(86400),},Type:datadogV2.NOTIFICATIONRULESTYPE_NOTIFICATION_RULES,},}ctx:=datadog.NewDefaultContext(context.Background())configuration:=datadog.NewConfiguration()apiClient:=datadog.NewAPIClient(configuration)api:=datadogV2.NewSecurityMonitoringApi(apiClient)resp,r,err:=api.CreateSignalNotificationRule(ctx,body)iferr!=nil{fmt.Fprintf(os.Stderr,"Error when calling `SecurityMonitoringApi.CreateSignalNotificationRule`: %v\n",err)fmt.Fprintf(os.Stderr,"Full HTTP response: %v\n",r)}responseContent,_:=json.MarshalIndent(resp,""," ")fmt.Fprintf(os.Stdout,"Response from `SecurityMonitoringApi.CreateSignalNotificationRule`:\n%s\n",responseContent)}
// Create a new signal-based notification rule returns "Successfully created the notification rule."// responseimportcom.datadog.api.client.ApiClient;importcom.datadog.api.client.ApiException;importcom.datadog.api.client.v2.api.SecurityMonitoringApi;importcom.datadog.api.client.v2.model.CreateNotificationRuleParameters;importcom.datadog.api.client.v2.model.CreateNotificationRuleParametersData;importcom.datadog.api.client.v2.model.CreateNotificationRuleParametersDataAttributes;importcom.datadog.api.client.v2.model.NotificationRuleResponse;importcom.datadog.api.client.v2.model.NotificationRulesType;importcom.datadog.api.client.v2.model.RuleSeverity;importcom.datadog.api.client.v2.model.RuleTypesItems;importcom.datadog.api.client.v2.model.Selectors;importcom.datadog.api.client.v2.model.TriggerSource;importjava.util.Arrays;importjava.util.Collections;publicclassExample{publicstaticvoidmain(String[]args){ApiClientdefaultClient=ApiClient.getDefaultApiClient();SecurityMonitoringApiapiInstance=newSecurityMonitoringApi(defaultClient);CreateNotificationRuleParametersbody=newCreateNotificationRuleParameters().data(newCreateNotificationRuleParametersData().attributes(newCreateNotificationRuleParametersDataAttributes().enabled(true).name("Rule 1").selectors(newSelectors().query("(source:production_service OR env:prod)").ruleTypes(Arrays.asList(RuleTypesItems.MISCONFIGURATION,RuleTypesItems.ATTACK_PATH)).severities(Collections.singletonList(RuleSeverity.CRITICAL)).triggerSource(TriggerSource.SECURITY_FINDINGS)).targets(Collections.singletonList("@john.doe@email.com")).timeAggregation(86400L)).type(NotificationRulesType.NOTIFICATION_RULES));try{NotificationRuleResponseresult=apiInstance.createSignalNotificationRule(body);System.out.println(result);}catch(ApiExceptione){System.err.println("Exception when calling SecurityMonitoringApi#createSignalNotificationRule");System.err.println("Status code: "+e.getCode());System.err.println("Reason: "+e.getResponseBody());System.err.println("Response headers: "+e.getResponseHeaders());e.printStackTrace();}}}
"""
Create a new signal-based notification rule returns "Successfully created the notification rule." response
"""fromdatadog_api_clientimportApiClient,Configurationfromdatadog_api_client.v2.api.security_monitoring_apiimportSecurityMonitoringApifromdatadog_api_client.v2.model.create_notification_rule_parametersimportCreateNotificationRuleParametersfromdatadog_api_client.v2.model.create_notification_rule_parameters_dataimportCreateNotificationRuleParametersDatafromdatadog_api_client.v2.model.create_notification_rule_parameters_data_attributesimport(CreateNotificationRuleParametersDataAttributes,)fromdatadog_api_client.v2.model.notification_rules_typeimportNotificationRulesTypefromdatadog_api_client.v2.model.rule_severityimportRuleSeverityfromdatadog_api_client.v2.model.rule_types_itemsimportRuleTypesItemsfromdatadog_api_client.v2.model.selectorsimportSelectorsfromdatadog_api_client.v2.model.trigger_sourceimportTriggerSourcebody=CreateNotificationRuleParameters(data=CreateNotificationRuleParametersData(attributes=CreateNotificationRuleParametersDataAttributes(enabled=True,name="Rule 1",selectors=Selectors(query="(source:production_service OR env:prod)",rule_types=[RuleTypesItems.MISCONFIGURATION,RuleTypesItems.ATTACK_PATH,],severities=[RuleSeverity.CRITICAL,],trigger_source=TriggerSource.SECURITY_FINDINGS,),targets=["@john.doe@email.com",],time_aggregation=86400,),type=NotificationRulesType.NOTIFICATION_RULES,),)configuration=Configuration()withApiClient(configuration)asapi_client:api_instance=SecurityMonitoringApi(api_client)response=api_instance.create_signal_notification_rule(body=body)print(response)
# Create a new signal-based notification rule returns "Successfully created the notification rule." responserequire"datadog_api_client"api_instance=DatadogAPIClient::V2::SecurityMonitoringAPI.newbody=DatadogAPIClient::V2::CreateNotificationRuleParameters.new({data:DatadogAPIClient::V2::CreateNotificationRuleParametersData.new({attributes:DatadogAPIClient::V2::CreateNotificationRuleParametersDataAttributes.new({enabled:true,name:"Rule 1",selectors:DatadogAPIClient::V2::Selectors.new({query:"(source:production_service OR env:prod)",rule_types:[DatadogAPIClient::V2::RuleTypesItems::MISCONFIGURATION,DatadogAPIClient::V2::RuleTypesItems::ATTACK_PATH,],severities:[DatadogAPIClient::V2::RuleSeverity::CRITICAL,],trigger_source:DatadogAPIClient::V2::TriggerSource::SECURITY_FINDINGS,}),targets:["@john.doe@email.com",],time_aggregation:86400,}),type:DatadogAPIClient::V2::NotificationRulesType::NOTIFICATION_RULES,}),})papi_instance.create_signal_notification_rule(body)
// Create a new signal-based notification rule returns "Successfully created the
// notification rule." response
usedatadog_api_client::datadog;usedatadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;usedatadog_api_client::datadogV2::model::CreateNotificationRuleParameters;usedatadog_api_client::datadogV2::model::CreateNotificationRuleParametersData;usedatadog_api_client::datadogV2::model::CreateNotificationRuleParametersDataAttributes;usedatadog_api_client::datadogV2::model::NotificationRulesType;usedatadog_api_client::datadogV2::model::RuleSeverity;usedatadog_api_client::datadogV2::model::RuleTypesItems;usedatadog_api_client::datadogV2::model::Selectors;usedatadog_api_client::datadogV2::model::TriggerSource;#[tokio::main]asyncfnmain(){letbody=CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(CreateNotificationRuleParametersDataAttributes::new("Rule 1".to_string(),Selectors::new(TriggerSource::SECURITY_FINDINGS).query("(source:production_service OR env:prod)".to_string()).rule_types(vec![RuleTypesItems::MISCONFIGURATION,RuleTypesItems::ATTACK_PATH,]).severities(vec![RuleSeverity::CRITICAL]),vec!["@john.doe@email.com".to_string()],).enabled(true).time_aggregation(86400),NotificationRulesType::NOTIFICATION_RULES,));letconfiguration=datadog::Configuration::new();letapi=SecurityMonitoringAPI::with_config(configuration);letresp=api.create_signal_notification_rule(body).await;ifletOk(value)=resp{println!("{:#?}",value);}else{println!("{:#?}",resp.unwrap_err());}}
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com"DD_API_KEY="<DD_API_KEY>"DD_APP_KEY="<DD_APP_KEY>"cargo run
/**
* Create a new signal-based notification rule returns "Successfully created the notification rule." response
*/import{client,v2}from"@datadog/datadog-api-client";constconfiguration=client.createConfiguration();constapiInstance=newv2.SecurityMonitoringApi(configuration);constparams: v2.SecurityMonitoringApiCreateSignalNotificationRuleRequest={body:{data:{attributes:{enabled: true,name:"Rule 1",selectors:{query:"(source:production_service OR env:prod)",ruleTypes:["misconfiguration","attack_path"],severities:["critical"],triggerSource:"security_findings",},targets:["@john.doe@email.com"],timeAggregation: 86400,},type:"notification_rules",},},};apiInstance.createSignalNotificationRule(params).then((data: v2.NotificationRuleResponse)=>{console.log("API called successfully. Returned data: "+JSON.stringify(data));}).catch((error: any)=>console.error(error));