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:
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" : { }
}
}
}
}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.
Raw Response: Returns the raw response in a single row with the following columns:
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.
To use this node in KNIME, install the extension Sentry Nodes from the below update site following our NodePit Product and Node Installation Guide:
A zipped version of the software site can be downloaded here.
Deploy, schedule, execute, and monitor your KNIME workflows locally, in the cloud or on-premises – with our brand new NodePit Runner.
Try NodePit Runner!