Create an Issue Alert Rule for a Project
Create a new issue alert rule for the given project.
An issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:
- Triggers: specify what type of activity you'd like monitored or when an alert should be triggered.
- Filters: help control noise by triggering an alert only if the issue matches the specified criteria.
- Actions: specify what should happen when the trigger conditions are met and the filters match.
Path Parameters
organization_id_or_slug
(string)REQUIREDThe id or slug of the organization the resource belongs to.
project_id_or_slug
(string)REQUIREDThe id or slug of the project the resource belongs to.
Body Parameters
name
(string)REQUIREDThe name for the rule.
actionMatch
(string)REQUIREDA string determining which of the conditions need to be true before any filters are evaluated.
all
- All conditions must evaluate to true.any
- At least one of the conditions must evaluate to true.none
- All conditions must evaluate to false.
conditions
(array(object))REQUIREDA list of triggers that determine when the rule fires. See below for a list of possible conditions.
A new issue is created
Copied{ "id": "sentry.rules.conditions.first_seen_event.FirstSeenEventCondition" }
The issue changes state from resolved to unresolved
Copied{ "id": "sentry.rules.conditions.regression_event.RegressionEventCondition" }
The issue is seen more than
value
times ininterval
value
- An integerinterval
- Valid values are1m
,5m
,15m
,1h
,1d
,1w
and30d
(m
for minutes,h
for hours,d
for days, andw
for weeks).
Copied{ "id": "sentry.rules.conditions.event_frequency.EventFrequencyCondition", "value": 500, "interval": "1h" }
The issue is seen by more than
value
users ininterval
value
- An integerinterval
- Valid values are1m
,5m
,15m
,1h
,1d
,1w
and30d
(m
for minutes,h
for hours,d
for days, andw
for weeks).
Copied{ "id": "sentry.rules.conditions.event_frequency.EventUniqueUserFrequencyCondition", "value": 1000, "interval": "15m" }
The issue affects more than
value
percent of sessions ininterval
value
- An integer from 0 to 100interval
- Valid values are5m
,10m
,30m
, and1h
(m
for minutes,h
for hours).
Copied{ "id": "sentry.rules.conditions.event_frequency.EventFrequencyPercentCondition", "value": 50, "interval": "10m" }
actions
(array(object))REQUIREDA list of actions that take place when all required conditions and filters for the rule are met. See below for a list of possible actions.
Send a notification to Suggested Assignees
fallthroughType
- Who the notification should be sent to if there are no suggested assignees. Valid values areActiveMembers
,AllMembers
, andNoOne
.
Copied{ "id" - "sentry.mail.actions.NotifyEmailAction", "targetType" - "IssueOwners", "fallthroughType" - "ActiveMembers" }
Send a notification to a Member or a Team
targetType
- One ofMember
orTeam
.fallthroughType
- Who the notification should be sent to if it cannot be sent to the original target. Valid values areActiveMembers
,AllMembers
, andNoOne
.targetIdentifier
- The ID of the Member or Team the notification should be sent to.
Copied{ "id": "sentry.mail.actions.NotifyEmailAction", "targetType": "Team" "fallthroughType": "AllMembers" "targetIdentifier": 4524986223 }
Send a Slack notification
workspace
- The integration ID associated with the Slack workspace.channel
- The name of the channel to send the notification to (e.g., #critical, Jane Schmidt).channel_id
(optional) - The ID of the channel to send the notification to.tags
- A string of tags to show in the notification, separated by commas (e.g., "environment, user, my_tag").notes
- Text to show alongside the notification. To @ a user, include their user id like@<USER_ID>
. To include a clickable link, format the link and title like<http://example.com|Click Here>
.
Copied{ "id": "sentry.integrations.slack.notify_action.SlackNotifyServiceAction", "workspace": 293854098, "channel": "#warning", "tags": "environment,level" "notes": "Please <http://example.com|click here> for triage information" }
Send a Microsoft Teams notification
team
- The integration ID associated with the Microsoft Teams team.channel
- The name of the channel to send the notification to.
Copied{ "id": "sentry.integrations.msteams.notify_action.MsTeamsNotifyServiceAction", "team": 23465424, "channel": "General" }
Send a Discord notification
server
- The integration ID associated with the Discord server.channel_id
- The ID of the channel to send the notification to.tags
- A string of tags to show in the notification, separated by commas (e.g., "environment, user, my_tag").
Copied{ "id": "sentry.integrations.discord.notify_action.DiscordNotifyServiceAction", "server": 63408298, "channel_id": 94732897, "tags": "browser,user" }
Create a Jira Ticket
integration
- The integration ID associated with Jira.project
- The ID of the Jira project.issuetype
- The ID of the type of issue that the ticket should be created as.dynamic_form_fields
(optional) - A list of any custom fields you want to include in the ticket as objects.
Copied{ "id": "sentry.integrations.jira.notify_action.JiraCreateTicketAction", "integration": 321424, "project": "349719" "issueType": "1" }
Create a Jira Server Ticket
integration
- The integration ID associated with Jira Server.project
- The ID of the Jira Server project.issuetype
- The ID of the type of issue that the ticket should be created as.dynamic_form_fields
(optional) - A list of any custom fields you want to include in the ticket as objects.
Copied{ "id": "sentry.integrations.jira_server.notify_action.JiraServerCreateTicketAction", "integration": 321424, "project": "349719" "issueType": "1" }
Create a GitHub Issue
integration
- The integration ID associated with GitHub.repo
- The name of the repository to create the issue in.title
- The title of the issue.body
(optional) - The contents of the issue.assignee
(optional) - The GitHub user to assign the issue to.labels
(optional) - A list of labels to assign to the issue.
Copied{ "id": "sentry.integrations.github.notify_action.GitHubCreateTicketAction", "integration": 93749, "repo": default, "title": "My Test Issue", "assignee": "Baxter the Hacker", "labels": ["bug", "p1"] "" }
Create a GitHub Enterprise Issue
integration
- The integration ID associated with GitHub Enterprise.repo
- The name of the repository to create the issue in.title
- The title of the issue.body
(optional) - The contents of the issue.assignee
(optional) - The GitHub user to assign the issue to.labels
(optional) - A list of labels to assign to the issue.
Copied{ "id": "sentry.integrations.github_enterprise.notify_action.GitHubEnterpriseCreateTicketAction", "integration": 93749, "repo": default, "title": "My Test Issue", "assignee": "Baxter the Hacker", "labels": ["bug", "p1"] "" }
Create an Azure DevOps work item
integration
- The integration ID.project
- The ID of the Azure DevOps project.work_item_type
- The type of work item to create.dynamic_form_fields
(optional) - A list of any custom fields you want to include in the work item as objects.
Copied{ "id": "sentry.integrations.vsts.notify_action.AzureDevopsCreateTicketAction", "integration": 294838, "project": "0389485", "work_item_type": "Microsoft.VSTS.WorkItemTypes.Task", }
Send a PagerDuty notification
account
- The integration ID associated with the PagerDuty account.service
- The ID of the service to send the notification to.severity
- The severity of the Pagerduty alert. This is optional, the default iscritical
for fatal issues,error
for error issues,warning
for warning issues, andinfo
for info and debug issues.
Copied{ "id": "sentry.integrations.pagerduty.notify_action.PagerDutyNotifyServiceAction", "account": 92385907, "service": 9823924, "severity": "critical" }
Send an Opsgenie notification
account
- The integration ID associated with the Opsgenie account.team
- The ID of the Opsgenie team to send the notification to.priority
- The priority of the Opsgenie alert. This is optional, the default isP3
.
Copied{ "id": "sentry.integrations.opsgenie.notify_action.OpsgenieNotifyTeamAction", "account": 8723897589, "team": "9438930258-fairy", "priority": "P1" }
Send a notification to a service
service
- The plugin slug.
Copied{ "id": "sentry.rules.actions.notify_event_service.NotifyEventServiceAction", "service": "mail" }
Send a notification to a Sentry app with a custom webhook payload
settings
- A list of objects denoting the settings each action will be created with. All required fields must be included.sentryAppInstallationUuid
- The ID for the Sentry app
Copied{ "id": "sentry.rules.actions.notify_event_sentry_app.NotifyEventSentryAppAction", "settings": [ {"name": "title", "value": "Team Rocket"}, {"name": "summary", "value": "We're blasting off again."}, ], "sentryAppInstallationUuid": 643522 "hasSchemaFormConfig": true }
Send a notification (for all legacy integrations)
Copied{ "id": "sentry.rules.actions.notify_event.NotifyEventAction" }
frequency
(integer)REQUIREDHow often to perform the actions once for an issue, in minutes. The valid range is
5
to43200
.environment
(string)The name of the environment to filter by.
filterMatch
(string)A string determining which filters need to be true before any actions take place. Required when a value is provided for
filters
.all
- All filters must evaluate to true.any
- At least one of the filters must evaluate to true.none
- All filters must evaluate to false.
filters
(array(object))A list of filters that determine if a rule fires after the necessary conditions have been met. See below for a list of possible filters.
The issue is
comparison_type
thanvalue
time
comparison_type
- One ofolder
ornewer
value
- An integertime
- The unit of time. Valid values areminute
,hour
,day
, andweek
.
Copied{ "id": "sentry.rules.filters.age_comparison.AgeComparisonFilter", "comparison_type": "older", "value": 3, "time": "week" }
The issue has happened at least
value
timesvalue
- An integer
Copied{ "id": "sentry.rules.filters.issue_occurrences.IssueOccurrencesFilter", "value": 120 }
The issue is assigned to No One
Copied{ "id": "sentry.rules.filters.assigned_to.AssignedToFilter", "targetType": "Unassigned" }
The issue is assigned to
targetType
targetType
- One ofTeam
orMember
targetIdentifier
- The target's ID
Copied{ "id": "sentry.rules.filters.assigned_to.AssignedToFilter", "targetType": "Member", "targetIdentifier": 895329789 }
The event is from the latest release
Copied{ "id": "sentry.rules.filters.latest_release.LatestReleaseFilter" }
The issue's category is equal to
value
value
- An integer correlated with a category. Valid values are1
(Error),2
(Performance),3
(Profile),4
(Cron), and5
(Replay).
Copied{ "id": "sentry.rules.filters.issue_category.IssueCategoryFilter", "value": 2 }
The event's
attribute
valuematch
value
attribute
- Valid values aremessage
,platform
,environment
,type
,error.handled
,error.unhandled
,error.main_thread
,exception.type
,exception.value
,user.id
,user.email
,user.username
,user.ip_address
,http.method
,http.url
,http.status_code
,sdk.name
,stacktrace.code
,stacktrace.module
,stacktrace.filename
,stacktrace.abs_path
,stacktrace.package
,unreal.crashtype
, andapp.in_foreground
.match
- The comparison operator. Valid values areeq
(equals),ne
(does not equal),sw
(starts with),ew
(ends with),co
(contains),nc
(does not contain),is
(is set), andns
(is not set).value
- A string. Not required whenmatch
isis
orns
.
Copied{ "id": "sentry.rules.conditions.event_attribute.EventAttributeCondition", "attribute": "http.url", "match": "nc", "value": "localhost" }
The event's tags match
key
match
value
key
- The tagmatch
- The comparison operator. Valid values areeq
(equals),ne
(does not equal),sw
(starts with),ew
(ends with),co
(contains),nc
(does not contain),is
(is set), andns
(is not set).value
- A string. Not required whenmatch
isis
orns
.
Copied{ "id": "sentry.rules.filters.tagged_event.TaggedEventFilter", "key": "level", "match": "eq" "value": "error" }
The event's level is
match
level
match
- Valid values areeq
,gte
, andlte
.level
- Valid values are50
(fatal),40
(error),30
(warning),20
(info),10
(debug),0
(sample).
Copied{ "id": "sentry.rules.filters.level.LevelFilter", "match": "gte" "level": "50" }
owner
(string)The ID of the team or user that owns the rule.
Scopes
<auth_token>
requires one of the following scopes:alerts:write
project:admin
project:write
curl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/ \ -H 'Authorization: Bearer <auth_token>' \ -H 'Content-Type: application/json' \ -d '{}'
{
"id": "1",
"conditions": [
{
"id": "sentry.rules.conditions.first_seen_event.FirstSeenEventCondition"
}
],
"filters": [
{
"targetType": "Unassigned",
"id": "sentry.rules.filters.assigned_to.AssignedToFilter",
"targetIdentifier": ""
}
],
"actions": [
{
"targetType": "Member",
"fallthroughType": "ActiveMembers",
"id": "sentry.mail.actions.NotifyEmailAction",
"targetIdentifier": 1523125
}
],
"actionMatch": "any",
"filterMatch": "all",
"frequency": 1440,
"name": "Owner Alert",
"dateCreated": "2023-09-08T20:00:07.244602Z",
"owner": "team:74234",
"createdBy": {
"id": 24601,
"name": "Jean Valjean",
"email": "jean@example.com"
},
"environment": null,
"projects": [
"python"
],
"status": "active",
"snooze": false
}