grafana/pkg/tests/api/alerting/api_available_channel_test.go

1699 lines
44 KiB
Go
Raw Normal View History

package alerting
import (
"fmt"
"io/ioutil"
"net/http"
"testing"
"github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/tests/testinfra"
)
func TestAvailableChannels(t *testing.T) {
_, err := tracing.InitializeTracerForTest()
require.NoError(t, err)
dir, path := testinfra.CreateGrafDir(t, testinfra.GrafanaOpts{
DisableLegacyAlerting: true,
EnableUnifiedAlerting: true,
DisableAnonymous: true,
})
grafanaListedAddr, store := testinfra.StartGrafana(t, dir, path)
store.Bus = bus.GetBus()
// Create a user to make authenticated requests
createUser(t, store, models.CreateUserCommand{
DefaultOrgRole: string(models.ROLE_EDITOR),
Password: "password",
Login: "grafana",
})
alertsURL := fmt.Sprintf("http://grafana:password@%s/api/alert-notifiers", grafanaListedAddr)
// nolint:gosec
resp, err := http.Get(alertsURL)
require.NoError(t, err)
t.Cleanup(func() {
err := resp.Body.Close()
require.NoError(t, err)
})
b, err := ioutil.ReadAll(resp.Body)
require.NoError(t, err)
require.Equal(t, 200, resp.StatusCode)
require.JSONEq(t, expAvailableChannelJsonOutput, string(b))
}
var expAvailableChannelJsonOutput = `
[
{
"type": "dingding",
"name": "DingDing",
"heading": "DingDing settings",
"description": "Sends HTTP POST request to DingDing",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Url",
"description": "",
"placeholder": "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "Message Type",
"description": "",
"placeholder": "",
"propertyName": "msgType",
"selectOptions": [
{
"value": "link",
"label": "Link"
},
{
"value": "actionCard",
"label": "ActionCard"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Message",
"description": "",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "kafka",
"name": "Kafka REST Proxy",
"heading": "Kafka settings",
"description": "Sends notifications to Kafka Rest Proxy",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Kafka REST Proxy",
"description": "",
"placeholder": "http://localhost:8082",
"propertyName": "kafkaRestProxy",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Topic",
"description": "",
"placeholder": "topic1",
"propertyName": "kafkaTopic",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
}
]
},
{
"type": "email",
"name": "Email",
"heading": "Email settings",
"description": "Sends notifications using Grafana server configured SMTP settings",
"info": "",
"options": [
{
"element": "checkbox",
"inputType": "",
"label": "Single email",
"description": "Send a single email to all recipients",
"placeholder": "",
"propertyName": "singleEmail",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Addresses",
"description": "You can enter multiple email addresses using a \";\" separator",
"placeholder": "",
"propertyName": "addresses",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Message",
"description": "Optional message to include with the email. You can use template variables",
"placeholder": "",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "pagerduty",
"name": "PagerDuty",
"heading": "PagerDuty settings",
"description": "Sends notifications to PagerDuty",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Integration Key",
"description": "",
"placeholder": "Pagerduty Integration Key",
"propertyName": "integrationKey",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
},
{
"element": "select",
"inputType": "",
"label": "Severity",
"description": "",
"placeholder": "",
"propertyName": "severity",
"selectOptions": [
{
"value": "critical",
"label": "Critical"
},
{
"value": "error",
"label": "Error"
},
{
"value": "warning",
"label": "Warning"
},
{
"value": "info",
"label": "Info"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Class",
"description": "The class/type of the event, for example 'ping failure' or 'cpu load'",
"placeholder": "",
"propertyName": "class",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Component",
"description": "Component of the source machine that is responsible for the event, for example mysql or eth0",
"placeholder": "Grafana",
"propertyName": "component",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Group",
"description": "Logical grouping of components of a service, for example 'app-stack'",
"placeholder": "",
"propertyName": "group",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Summary",
"description": "You can use templates for summary",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "summary",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "victorops",
"name": "VictorOps",
"heading": "VictorOps settings",
"description": "Sends notifications to VictorOps",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Url",
"description": "",
"placeholder": "VictorOps url",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "Message Type",
"description": "",
"placeholder": "",
"propertyName": "messageType",
"selectOptions": [
{
"value": "CRITICAL",
"label": "CRITICAL"
},
{
"value": "WARNING",
"label": "WARNING"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "pushover",
"name": "Pushover",
"description": "Sends HTTP POST request to the Pushover API",
"heading": "Pushover settings",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "API Token",
"description": "",
"placeholder": "Application token",
"propertyName": "apiToken",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
},
{
"element": "input",
"inputType": "text",
"label": "User key(s)",
"description": "",
"placeholder": "comma-separated list",
"propertyName": "userKey",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
},
{
"element": "input",
"inputType": "text",
"label": "Device(s) (optional)",
"description": "",
"placeholder": "comma-separated list; leave empty to send to all devices",
"propertyName": "device",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "Alerting priority",
"description": "",
"placeholder": "",
"propertyName": "priority",
"selectOptions": [
{
"value": "2",
"label": "Emergency"
},
{
"value": "1",
"label": "High"
},
{
"value": "0",
"label": "Normal"
},
{
"value": "-1",
"label": "Low"
},
{
"value": "-2",
"label": "Lowest"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "OK priority",
"description": "",
"placeholder": "",
"propertyName": "okPriority",
"selectOptions": [
{
"value": "2",
"label": "Emergency"
},
{
"value": "1",
"label": "High"
},
{
"value": "0",
"label": "Normal"
},
{
"value": "-1",
"label": "Low"
},
{
"value": "-2",
"label": "Lowest"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Retry (Only used for Emergency Priority)",
"description": "How often (in seconds) the Pushover servers will send the same alerting or OK notification to the user.",
"placeholder": "minimum 30 seconds",
"propertyName": "retry",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Expire (Only used for Emergency Priority)",
"description": "How many seconds the alerting or OK notification will continue to be retried.",
"placeholder": "maximum 86400 seconds",
"propertyName": "expire",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "Alerting sound",
"description": "",
"placeholder": "",
"propertyName": "sound",
"selectOptions": [
{
"value": "default",
"label": "Default"
},
{
"value": "pushover",
"label": "Pushover"
},
{
"value": "bike",
"label": "Bike"
},
{
"value": "bugle",
"label": "Bugle"
},
{
"value": "cashregister",
"label": "Cashregister"
},
{
"value": "classical",
"label": "Classical"
},
{
"value": "cosmic",
"label": "Cosmic"
},
{
"value": "falling",
"label": "Falling"
},
{
"value": "gamelan",
"label": "Gamelan"
},
{
"value": "incoming",
"label": "Incoming"
},
{
"value": "intermission",
"label": "Intermission"
},
{
"value": "magic",
"label": "Magic"
},
{
"value": "mechanical",
"label": "Mechanical"
},
{
"value": "pianobar",
"label": "Pianobar"
},
{
"value": "siren",
"label": "Siren"
},
{
"value": "spacealarm",
"label": "Spacealarm"
},
{
"value": "tugboat",
"label": "Tugboat"
},
{
"value": "alien",
"label": "Alien"
},
{
"value": "climb",
"label": "Climb"
},
{
"value": "persistent",
"label": "Persistent"
},
{
"value": "echo",
"label": "Echo"
},
{
"value": "updown",
"label": "Updown"
},
{
"value": "none",
"label": "None"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "OK sound",
"description": "",
"placeholder": "",
"propertyName": "okSound",
"selectOptions": [
{
"value": "default",
"label": "Default"
},
{
"value": "pushover",
"label": "Pushover"
},
{
"value": "bike",
"label": "Bike"
},
{
"value": "bugle",
"label": "Bugle"
},
{
"value": "cashregister",
"label": "Cashregister"
},
{
"value": "classical",
"label": "Classical"
},
{
"value": "cosmic",
"label": "Cosmic"
},
{
"value": "falling",
"label": "Falling"
},
{
"value": "gamelan",
"label": "Gamelan"
},
{
"value": "incoming",
"label": "Incoming"
},
{
"value": "intermission",
"label": "Intermission"
},
{
"value": "magic",
"label": "Magic"
},
{
"value": "mechanical",
"label": "Mechanical"
},
{
"value": "pianobar",
"label": "Pianobar"
},
{
"value": "siren",
"label": "Siren"
},
{
"value": "spacealarm",
"label": "Spacealarm"
},
{
"value": "tugboat",
"label": "Tugboat"
},
{
"value": "alien",
"label": "Alien"
},
{
"value": "climb",
"label": "Climb"
},
{
"value": "persistent",
"label": "Persistent"
},
{
"value": "echo",
"label": "Echo"
},
{
"value": "updown",
"label": "Updown"
},
{
"value": "none",
"label": "None"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Message",
"description": "",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "slack",
"name": "Slack",
"heading": "Slack settings",
"description": "Sends notifications to Slack",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Recipient",
"description": "Specify channel, private group, or IM channel (can be an encoded ID or a name) - required unless you provide a webhook",
"placeholder": "",
"propertyName": "recipient",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Token",
"description": "Provide a Slack API token (starts with \"xoxb\") - required unless you provide a webhook",
"placeholder": "",
"propertyName": "token",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": true
},
{
"element": "input",
"inputType": "text",
"label": "Username",
"description": "Set the username for the bot's message",
"placeholder": "",
"propertyName": "username",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Icon emoji",
"description": "Provide an emoji to use as the icon for the bot's message. Overrides the icon URL.",
"placeholder": "",
"propertyName": "icon_emoji",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Icon URL",
"description": "Provide a URL to an image to use as the icon for the bot's message",
"placeholder": "",
"propertyName": "icon_url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Mention Users",
"description": "Mention one or more users (comma separated) when notifying in a channel, by ID (you can copy this from the user's Slack profile)",
"placeholder": "",
"propertyName": "mentionUsers",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Mention Groups",
"description": "Mention one or more groups (comma separated) when notifying in a channel (you can copy this from the group's Slack profile URL)",
"placeholder": "",
"propertyName": "mentionGroups",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "Mention Channel",
"description": "Mention whole channel or just active members when notifying",
"placeholder": "",
"propertyName": "mentionChannel",
"selectOptions": [
{
"value": "",
"label": "Disabled"
},
{
"value": "here",
"label": "Every active channel member"
},
{
"value": "channel",
"label": "Every channel member"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Webhook URL",
"description": "Optionally provide a Slack incoming webhook URL for sending messages, in this case the token isn't necessary",
"placeholder": "Slack incoming webhook URL",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": true
},
{
"element": "input",
"inputType": "text",
"label": "Title",
"description": "Templated title of the slack message",
"placeholder": "{{ template \"slack.default.title\" . }}",
"propertyName": "title",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Text Body",
"description": "Body of the slack message",
"placeholder": "{{ template \"slack.default.text\" . }}",
"propertyName": "text",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "sensugo",
"name": "Sensu Go",
"description": "Sends HTTP POST request to a Sensu Go API",
"heading": "Sensu Go Settings",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Backend URL",
"description": "",
"placeholder": "http://sensu-api.local:8080",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "password",
"label": "API Key",
"description": "API key to auth to Sensu Go backend",
"placeholder": "",
"propertyName": "apikey",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
},
{
"element": "input",
"inputType": "text",
"label": "Proxy entity name",
"description": "",
"placeholder": "default",
"propertyName": "entity",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Check name",
"description": "",
"placeholder": "default",
"propertyName": "check",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Handler",
"description": "",
"placeholder": "",
"propertyName": "handler",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Namespace",
"description": "",
"placeholder": "default",
"propertyName": "namespace",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Message",
"description": "",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "teams",
"name": "Microsoft Teams",
"heading": "Teams settings",
"description": "Sends notifications using Incoming Webhook connector to Microsoft Teams",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "URL",
"description": "",
"placeholder": "Teams incoming webhook url",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Message",
"description": "",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "telegram",
"name": "Telegram",
"heading": "Telegram API settings",
"description": "Sends notifications to Telegram",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "BOT API Token",
"description": "",
"placeholder": "Telegram BOT API Token",
"propertyName": "bottoken",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
},
{
"element": "input",
"inputType": "text",
"label": "Chat ID",
"description": "Integer Telegram Chat Identifier",
"placeholder": "",
"propertyName": "chatid",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Message",
"description": "",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "webhook",
"name": "webhook",
"heading": "Webhook settings",
"description": "Sends HTTP POST request to a URL",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Url",
"description": "",
"placeholder": "",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "Http Method",
"description": "",
"placeholder": "",
"propertyName": "httpMethod",
"selectOptions": [
{
"value": "POST",
"label": "POST"
},
{
"value": "PUT",
"label": "PUT"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Username",
"description": "",
"placeholder": "",
"propertyName": "username",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "password",
"label": "Password",
"description": "",
"placeholder": "",
"propertyName": "password",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": true
},
{
"element": "input",
"inputType": "text",
"label": "Max Alerts",
"description": "Max alerts to include in a notification. Remaining alerts in the same batch will be ignored above this number. 0 means no limit.",
"placeholder": "",
"propertyName": "maxAlerts",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "wecom",
"name": "WeCom",
"heading": "WeCom settings",
"description": "Send alerts generated by Grafana to WeCom",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Url",
"description": "",
"placeholder": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
},
{
"element": "textarea",
"inputType": "",
"label": "Message",
"description": "Custom WeCom message. You can use template variables.",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "prometheus-alertmanager",
"name": "Alertmanager",
"heading": "Alertmanager Settings",
"description": "Sends notifications to Alertmanager",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "URL",
"description": "",
"placeholder": "http://localhost:9093",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Basic Auth User",
"description": "",
"placeholder": "",
"propertyName": "basicAuthUser",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "input",
"inputType": "password",
"label": "Basic Auth Password",
"description": "",
"placeholder": "",
"propertyName": "basicAuthPassword",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": true
}
]
},
{
"type": "discord",
"name": "Discord",
"heading": "Discord settings",
"description": "Sends notifications to Discord",
"info": "",
"options": [
{
"label": "Message Content",
"description": "Mention a group using @ or a user using <@ID> when notifying in a channel",
"element": "input",
"inputType": "text",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"label": "Webhook URL",
"description": "",
"element": "input",
"inputType": "text",
"placeholder": "Discord webhook URL",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"label": "Avatar URL",
"description": "",
"element": "input",
"inputType": "text",
"placeholder": "",
"propertyName": "avatar_url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "checkbox",
"inputType": "",
"label": "Use Discord's Webhook Username",
"description": "Use the username configured in Discord's webhook settings. Otherwise, the username will be 'Grafana'",
"placeholder": "",
"propertyName": "use_discord_username",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "googlechat",
"name": "Google Hangouts Chat",
"heading": "Google Hangouts Chat settings",
"description": "Sends notifications to Google Hangouts Chat via webhooks based on the official JSON message format",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Url",
"description": "",
"placeholder": "Google Hangouts Chat incoming webhook url",
"propertyName": "url",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "textarea",
"inputType": "",
"label": "Message",
"description": "",
"placeholder": "{{ template \"default.message\" . }}",
"propertyName": "message",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
},
{
"type": "LINE",
"name": "LINE",
"heading": "LINE notify settings",
"description": "Send notifications to LINE notify",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Token",
"description": "",
"placeholder": "LINE notify token key",
"propertyName": "token",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
}
]
},
{
"type": "threema",
"name": "Threema Gateway",
"heading": "Threema Gateway settings",
"description": "Sends notifications to Threema using Threema Gateway (Basic IDs)",
"info": "Notifications can be configured for any Threema Gateway ID of type \"Basic\". End-to-End IDs are not currently supported.The Threema Gateway ID can be set up at https://gateway.threema.ch/.",
"options": [
{
"element": "input",
"inputType": "text",
"label": "Gateway ID",
"description": "Your 8 character Threema Gateway Basic ID (starting with a *).",
"placeholder": "*3MAGWID",
"propertyName": "gateway_id",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "\\*[0-9A-Z]{7}",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "Recipient ID",
"description": "The 8 character Threema ID that should receive the alerts.",
"placeholder": "YOUR3MID",
"propertyName": "recipient_id",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "[0-9A-Z]{8}",
"secure": false
},
{
"element": "input",
"inputType": "text",
"label": "API Secret",
"description": "Your Threema Gateway API secret.",
"placeholder": "",
"propertyName": "api_secret",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
}
]
},
{
"type": "opsgenie",
"name": "OpsGenie",
"heading": "OpsGenie settings",
"description": "Sends notifications to OpsGenie",
"info": "",
"options": [
{
"element": "input",
"inputType": "text",
"label": "API Key",
"description": "",
"placeholder": "OpsGenie API Key",
"propertyName": "apiKey",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": true
},
{
"element": "input",
"inputType": "text",
"label": "Alert API Url",
"description": "",
"placeholder": "https://api.opsgenie.com/v2/alerts",
"propertyName": "apiUrl",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": true,
"validationRule": "",
"secure": false
},
{
"element": "checkbox",
"inputType": "",
"label": "Auto close incidents",
"description": "Automatically close alerts in OpsGenie once the alert goes back to ok.",
"placeholder": "",
"propertyName": "autoClose",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "checkbox",
"inputType": "",
"label": "Override priority",
"description": "Allow the alert priority to be set using the og_priority annotation",
"placeholder": "",
"propertyName": "overridePriority",
"selectOptions": null,
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
},
{
"element": "select",
"inputType": "",
"label": "Send notification tags as",
"description": "Send the common annotations to Opsgenie as either Extra Properties, Tags or both",
"placeholder": "",
"propertyName": "sendTagsAs",
"selectOptions": [
{
"value": "tags",
"label": "Tags"
},
{
"value": "details",
"label": "Extra Properties"
},
{
"value": "both",
"label": "Tags & Extra Properties"
}
],
"showWhen": {
"field": "",
"is": ""
},
"required": false,
"validationRule": "",
"secure": false
}
]
}
]
`