Create an Issue Alert Rule for a Project

Go to Product

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.

Options

Organization Id or Slug
The ID or slug of the organization the resource belongs to.
Project Id or Slug
The ID or slug of the project the resource belongs to.
Body

Request body which must comply to the following JSON Schema:

{
  "required" : [ "actionMatch", "actions", "conditions", "frequency", "name" ],
  "type" : "object",
  "properties" : {
    "name" : {
      "maxLength" : 256,
      "type" : "string",
      "description" : "The name for the rule."
    },
    "frequency" : {
      "maximum" : 43200,
      "minimum" : 5,
      "type" : "integer",
      "description" : "How often to perform the actions once for an issue, in minutes. The valid range is `5` to `43200`."
    },
    "actionMatch" : {
      "type" : "string",
      "description" : "A string determining which of the conditions need to be true before any filters are evaluated.\n\n* `all` - All conditions must evaluate to true.\n* `any` - At least one of the conditions must evaluate to true.\n* `none` - All conditions must evaluate to false.",
      "enum" : [ "all", "any", "none" ]
    },
    "conditions" : {
      "type" : "array",
      "description" : "\nA list of triggers that determine when the rule fires. See below for a list of possible conditions.\n\n**A new issue is created**\n```json\n{\n    \"id\": \"sentry.rules.conditions.first_seen_event.FirstSeenEventCondition\"\n}\n```\n\n**The issue changes state from resolved to unresolved**\n```json\n{\n    \"id\": \"sentry.rules.conditions.regression_event.RegressionEventCondition\"\n}\n```\n\n**The issue is seen more than `value` times in `interval`**\n- `value` - An integer\n- `interval` - Valid values are `1m`, `5m`, `15m`, `1h`, `1d`, `1w` and `30d` (`m` for minutes, `h` for hours, `d` for days, and `w` for weeks).\n```json\n{\n    \"id\": \"sentry.rules.conditions.event_frequency.EventFrequencyCondition\",\n    \"value\": 500,\n    \"interval\": \"1h\"\n}\n```\n\n**The issue is seen by more than `value` users in `interval`**\n- `value` - An integer\n- `interval` - Valid values are `1m`, `5m`, `15m`, `1h`, `1d`, `1w` and `30d` (`m` for minutes, `h` for hours, `d` for days, and `w` for weeks).\n```json\n{\n    \"id\": \"sentry.rules.conditions.event_frequency.EventUniqueUserFrequencyCondition\",\n    \"value\": 1000,\n    \"interval\": \"15m\"\n}\n```\n\n**The issue affects more than `value` percent of sessions in `interval`**\n- `value` - A float\n- `interval` - Valid values are `5m`, `10m`, `30m`, and `1h` (`m` for minutes, `h` for hours).\n```json\n{\n    \"id\": \"sentry.rules.conditions.event_frequency.EventFrequencyPercentCondition\",\n    \"value\": 50.0,\n    \"interval\": \"10m\"\n}\n```\n",
      "items" : {
        "type" : "object",
        "additionalProperties" : { }
      }
    },
    "actions" : {
      "type" : "array",
      "description" : "\nA 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.\n\n**Send a notification to Suggested Assignees**\n- `fallthroughType` - Who the notification should be sent to if there are no suggested assignees. Valid values are `ActiveMembers`, `AllMembers`, and `NoOne`.\n```json\n{\n    \"id\" - \"sentry.mail.actions.NotifyEmailAction\",\n    \"targetType\" - \"IssueOwners\",\n    \"fallthroughType\" - \"ActiveMembers\"\n}\n```\n\n**Send a notification to a Member or a Team**\n- `targetType` - One of `Member` or `Team`.\n- `fallthroughType` - Who the notification should be sent to if it cannot be sent to the original target. Valid values are `ActiveMembers`, `AllMembers`, and `NoOne`.\n- `targetIdentifier` - The ID of the Member or Team the notification should be sent to.\n```json\n{\n    \"id\": \"sentry.mail.actions.NotifyEmailAction\",\n    \"targetType\": \"Team\"\n    \"fallthroughType\": \"AllMembers\"\n    \"targetIdentifier\": 4524986223\n}\n```\n\n**Send a Slack notification**\n- `workspace` - The integration ID associated with the Slack workspace.\n- `channel` - The name of the channel to send the notification to (e.g., #critical, Jane Schmidt).\n- `channel_id` (optional) - The ID of the channel to send the notification to.\n- `tags` - A string of tags to show in the notification, separated by commas (e.g., \"environment, user, my_tag\").\n- `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>`.\n```json\n{\n    \"id\": \"sentry.integrations.slack.notify_action.SlackNotifyServiceAction\",\n    \"workspace\": 293854098,\n    \"channel\": \"#warning\",\n    \"tags\": \"environment,level\"\n    \"notes\": \"Please <http://example.com|click here> for triage information\"\n}\n```\n\n**Send a Microsoft Teams notification**\n- `team` - The integration ID associated with the Microsoft Teams team.\n- `channel` - The name of the channel to send the notification to.\n```json\n{\n    \"id\": \"sentry.integrations.msteams.notify_action.MsTeamsNotifyServiceAction\",\n    \"team\": 23465424,\n    \"channel\": \"General\"\n}\n```\n\n**Send a Discord notification**\n- `server` - The integration ID associated with the Discord server.\n- `channel_id` - The ID of the channel to send the notification to.\n- `tags` - A string of tags to show in the notification, separated by commas (e.g., \"environment, user, my_tag\").\n```json\n{\n    \"id\": \"sentry.integrations.discord.notify_action.DiscordNotifyServiceAction\",\n    \"server\": 63408298,\n    \"channel_id\": 94732897,\n    \"tags\": \"browser,user\"\n}\n```\n\n**Create a Jira Ticket**\n- `integration` - The integration ID associated with Jira.\n- `project` - The ID of the Jira project.\n- `issuetype` - The ID of the type of issue that the ticket should be created as.\n- `dynamic_form_fields` (optional) - A list of any custom fields you want to include in the ticket as objects.\n```json\n{\n    \"id\": \"sentry.integrations.jira.notify_action.JiraCreateTicketAction\",\n    \"integration\": 321424,\n    \"project\": \"349719\"\n    \"issueType\": \"1\"\n}\n```\n\n**Create a Jira Server Ticket**\n- `integration` - The integration ID associated with Jira Server.\n- `project` - The ID of the Jira Server project.\n- `issuetype` - The ID of the type of issue that the ticket should be created as.\n- `dynamic_form_fields` (optional) - A list of any custom fields you want to include in the ticket as objects.\n```json\n{\n    \"id\": \"sentry.integrations.jira_server.notify_action.JiraServerCreateTicketAction\",\n    \"integration\": 321424,\n    \"project\": \"349719\"\n    \"issueType\": \"1\"\n}\n```\n\n**Create a GitHub Issue**\n- `integration` - The integration ID associated with GitHub.\n- `repo` - The name of the repository to create the issue in.\n- `title` - The title of the issue.\n- `body` (optional) - The contents of the issue.\n- `assignee` (optional) - The GitHub user to assign the issue to.\n- `labels` (optional) - A list of labels to assign to the issue.\n```json\n{\n    \"id\": \"sentry.integrations.github.notify_action.GitHubCreateTicketAction\",\n    \"integration\": 93749,\n    \"repo\": default,\n    \"title\": \"My Test Issue\",\n    \"assignee\": \"Baxter the Hacker\",\n    \"labels\": [\"bug\", \"p1\"]\n    \"\"\n}\n```\n\n**Create a GitHub Enterprise Issue**\n- `integration` - The integration ID associated with GitHub Enterprise.\n- `repo` - The name of the repository to create the issue in.\n- `title` - The title of the issue.\n- `body` (optional) - The contents of the issue.\n- `assignee` (optional) - The GitHub user to assign the issue to.\n- `labels` (optional) - A list of labels to assign to the issue.\n```json\n{\n    \"id\": \"sentry.integrations.github_enterprise.notify_action.GitHubEnterpriseCreateTicketAction\",\n    \"integration\": 93749,\n    \"repo\": default,\n    \"title\": \"My Test Issue\",\n    \"assignee\": \"Baxter the Hacker\",\n    \"labels\": [\"bug\", \"p1\"]\n    \"\"\n}\n```\n\n**Create an Azure DevOps work item**\n- `integration` - The integration ID.\n- `project` - The ID of the Azure DevOps project.\n- `work_item_type` - The type of work item to create.\n- `dynamic_form_fields` (optional) - A list of any custom fields you want to include in the work item as objects.\n```json\n{\n    \"id\": \"sentry.integrations.vsts.notify_action.AzureDevopsCreateTicketAction\",\n    \"integration\": 294838,\n    \"project\": \"0389485\",\n    \"work_item_type\": \"Microsoft.VSTS.WorkItemTypes.Task\",\n}\n```\n\n**Send a PagerDuty notification**\n- `account` - The integration ID associated with the PagerDuty account.\n- `service` - The ID of the service to send the notification to.\n- `severity` - The severity of the Pagerduty alert. This is optional, the default is `critical` for fatal issues, `error` for error issues, `warning` for warning issues, and `info` for info and debug issues.\n```json\n{\n    \"id\": \"sentry.integrations.pagerduty.notify_action.PagerDutyNotifyServiceAction\",\n    \"account\": 92385907,\n    \"service\": 9823924,\n    \"severity\": \"critical\"\n}\n```\n\n**Send an Opsgenie notification**\n- `account` - The integration ID associated with the Opsgenie account.\n- `team` - The ID of the Opsgenie team to send the notification to.\n- `priority` - The priority of the Opsgenie alert. This is optional, the default is `P3`.\n```json\n{\n    \"id\": \"sentry.integrations.opsgenie.notify_action.OpsgenieNotifyTeamAction\",\n    \"account\": 8723897589,\n    \"team\": \"9438930258-fairy\",\n    \"priority\": \"P1\"\n}\n```\n\n**Send a notification to a service**\n- `service` - The plugin slug.\n```json\n{\n    \"id\": \"sentry.rules.actions.notify_event_service.NotifyEventServiceAction\",\n    \"service\": \"mail\"\n}\n```\n\n**Send a notification to a Sentry app with a custom webhook payload**\n- `settings` - A list of objects denoting the settings each action will be created with. All required fields must be included.\n- `sentryAppInstallationUuid` - The ID for the Sentry app\n```json\n{\n    \"id\": \"sentry.rules.actions.notify_event_sentry_app.NotifyEventSentryAppAction\",\n    \"settings\": [\n        {\"name\": \"title\", \"value\": \"Team Rocket\"},\n        {\"name\": \"summary\", \"value\": \"We're blasting off again.\"},\n    ],\n    \"sentryAppInstallationUuid\": 643522\n    \"hasSchemaFormConfig\": true\n}\n```\n\n**Send a notification (for all legacy integrations)**\n```json\n{\n    \"id\": \"sentry.rules.actions.notify_event.NotifyEventAction\"\n}\n```\n",
      "items" : {
        "type" : "object",
        "additionalProperties" : { }
      }
    },
    "environment" : {
      "type" : "string",
      "description" : "The name of the environment to filter by.",
      "nullable" : true
    },
    "owner" : {
      "type" : "string",
      "description" : "The ID of the team or user that owns the rule.",
      "nullable" : true
    },
    "filterMatch" : {
      "type" : "string",
      "description" : "A string determining which filters need to be true before any actions take place. Required when a value is provided for `filters`.\n\n* `all` - All filters must evaluate to true.\n* `any` - At least one of the filters must evaluate to true.\n* `none` - All filters must evaluate to false.",
      "enum" : [ "all", "any", "none" ]
    },
    "filters" : {
      "type" : "array",
      "description" : "\nA list of filters that determine if a rule fires after the necessary conditions have been met. See below for a list of possible filters.\n\n**The issue is `comparison_type` than `value` `time`**\n- `comparison_type` - One of `older` or `newer`\n- `value` - An integer\n- `time` - The unit of time. Valid values are `minute`, `hour`, `day`, and `week`.\n```json\n{\n    \"id\": \"sentry.rules.filters.age_comparison.AgeComparisonFilter\",\n    \"comparison_type\": \"older\",\n    \"value\": 3,\n    \"time\": \"week\"\n}\n```\n\n**The issue has happened at least `value` times**\n- `value` - An integer\n```json\n{\n    \"id\": \"sentry.rules.filters.issue_occurrences.IssueOccurrencesFilter\",\n    \"value\": 120\n}\n```\n\n**The issue is assigned to No One**\n```json\n{\n    \"id\": \"sentry.rules.filters.assigned_to.AssignedToFilter\",\n    \"targetType\": \"Unassigned\"\n}\n```\n\n**The issue is assigned to `targetType`**\n- `targetType` - One of `Team` or `Member`\n- `targetIdentifier` - The target's ID\n```json\n{\n    \"id\": \"sentry.rules.filters.assigned_to.AssignedToFilter\",\n    \"targetType\": \"Member\",\n    \"targetIdentifier\": 895329789\n}\n```\n\n**The event is from the latest release**\n```json\n{\n    \"id\": \"sentry.rules.filters.latest_release.LatestReleaseFilter\"\n}\n```\n\n**The issue's category is equal to `value`**\n- `value` - An integer correlated with a category. Valid values are `1` (Error), `2` (Performance), `3` (Profile), `4` (Cron), and `5` (Replay).\n```json\n{\n    \"id\": \"sentry.rules.filters.issue_category.IssueCategoryFilter\",\n    \"value\": 2\n}\n```\n\n**The event's `attribute` value `match` `value`**\n- `attribute` - Valid values are `message`, `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`, and `app.in_foreground`.\n- `match` - The comparison operator. Valid values are `eq` (equals), `ne` (does not equal), `sw` (starts with), `ew` (ends with), `co` (contains), `nc` (does not contain), `is` (is set), and `ns` (is not set).\n- `value` - A string. Not required when `match` is `is` or `ns`.\n```json\n{\n    \"id\": \"sentry.rules.conditions.event_attribute.EventAttributeCondition\",\n    \"attribute\": \"http.url\",\n    \"match\": \"nc\",\n    \"value\": \"localhost\"\n}\n```\n\n**The event's tags match `key` `match` `value`**\n- `key` - The tag\n- `match` - The comparison operator. Valid values are `eq` (equals), `ne` (does not equal), `sw` (starts with), `ew` (ends with), `co` (contains), `nc` (does not contain), `is` (is set), and `ns` (is not set).\n- `value` - A string. Not required when `match` is `is` or `ns`.\n```json\n{\n    \"id\": \"sentry.rules.filters.tagged_event.TaggedEventFilter\",\n    \"key\": \"level\",\n    \"match\": \"eq\"\n    \"value\": \"error\"\n}\n```\n\n**The event's level is `match` `level`**\n- `match` - Valid values are `eq`, `gte`, and `lte`.\n- `level` - Valid values are `50` (fatal), `40` (error), `30` (warning), `20` (info), `10` (debug), `0` (sample).\n```json\n{\n    \"id\": \"sentry.rules.filters.level.LevelFilter\",\n    \"match\": \"gte\"\n    \"level\": \"50\"\n}\n```\n",
      "items" : {
        "type" : "object",
        "additionalProperties" : { }
      }
    }
  }
}
Result Format

Specify how the response should be mapped to the table output. The following formats are available:

Structured Table: Returns a parsed table with data split into rows and columns.

  • Owner:
  • Created By:
  • Environment:
  • Last Triggered:
  • Snooze Created By:
  • Snooze for Everyone:
  • Id:
  • Conditions:
  • Filters:
  • Actions:
  • Action Match:
  • Filter Match:
  • Frequency:
  • Name:
  • Date Created:
  • Projects:
  • Status:
  • Snooze:

Raw Response: Returns the raw response in a single row with the following columns:

  • body: Response body
  • status: HTTP status code

Input Ports

Icon
Configuration data.

Output Ports

Icon
Result of the request depending on the selected Result Format.
Icon
Configuration data (this is the same as the input port; it is provided as passthrough for sequentially chaining nodes to declutter your workflow connections).

Popular Predecessors

  • No recommendations found

Popular Successors

  • No recommendations found

Views

This node has no views

Workflows

  • No workflows found

Links

Developers

You want to see the source code for this node? Click the following button and we’ll use our super-powers to find it for you.