import { type GrafanaNotifierType, type NotifierDTO } from 'app/features/alerting/unified/types/alerting';

export const grafanaAlertNotifiers: Record<GrafanaNotifierType, NotifierDTO> = {
  dingding: {
    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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the message',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description: 'Custom DingDing message. You can use template variables.',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  kafka: {
    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:
          'Hint: If you are directly using v3 APIs hosted on a Confluent Kafka Server, you must append /kafka to the URL here. Example: https://localhost:8082/kafka',
        placeholder: 'http://localhost:8082',
        propertyName: 'kafkaRestProxy',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Topic',
        description: '',
        placeholder: 'topic1',
        propertyName: 'kafkaTopic',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Username',
        description: '',
        placeholder: '',
        propertyName: 'username',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'password',
        label: 'Password',
        description: 'The password to use when making a call to the Kafka REST Proxy',
        placeholder: '',
        propertyName: 'password',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: true,
        dependsOn: '',
      },
      {
        element: 'select',
        inputType: 'text',
        label: 'API version',
        description: 'The API version to use when contacting the Kafka REST Server. By default v2 will be used.',
        placeholder: '',
        propertyName: 'apiVersion',
        selectOptions: [
          {
            value: 'v2',
            label: 'v2',
          },
          {
            value: 'v3',
            label: 'v3',
          },
        ],
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Cluster ID',
        description: 'v3 APIs require a clusterID to be specified.',
        placeholder: 'lkc-abcde',
        propertyName: 'kafkaClusterId',
        selectOptions: null,
        showWhen: {
          field: 'apiVersion',
          is: 'v3',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Description',
        description: 'Templated description of the Kafka message',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'description',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Details',
        description: 'Custom details to include with the message. You can use template variables.',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'details',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  email: {
    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,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Addresses',
        description: 'You can enter multiple email addresses using a ";", "\\n" or  "," separator',
        placeholder: '',
        propertyName: 'addresses',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description:
          'Optional message. You can use templates to customize this field. Using a custom message will replace the default message',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Subject',
        description: 'Optional subject. You can use templates to customize this field',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'subject',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  pagerduty: {
    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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Severity',
        description:
          'Severity of the event. It must be critical, error, warning, info - otherwise, the default is set which is critical. You can use templates',
        placeholder: 'critical',
        propertyName: 'severity',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Summary',
        description: 'You can use templates for summary',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'summary',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Source',
        description: 'The unique location of the affected system, preferably a hostname or FQDN. You can use templates',
        placeholder: 'Konrads-MBP',
        propertyName: 'source',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Client',
        description: 'The name of the monitoring client that is triggering this event. You can use templates',
        placeholder: 'Grafana',
        propertyName: 'client',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Client URL',
        description: 'The URL of the monitoring client that is triggering this event. You can use templates',
        placeholder: '{{ .ExternalURL }}',
        propertyName: 'client_url',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'key_value_map',
        inputType: 'text',
        label: 'Details',
        description: 'A set of arbitrary key/value pairs that provide further detail about the incident.',
        placeholder: '',
        propertyName: 'details',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  victorops: {
    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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title to display',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Description',
        description: 'Templated description of the message',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'description',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  pushover: {
    type: 'pushover',
    name: 'Pushover',
    heading: 'Pushover settings',
    description: 'Sends HTTP POST request to the Pushover API',
    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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: '',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description: '',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  slack: {
    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: true,
        validationRule: '',
        secure: false,
        dependsOn: 'url',
      },
      {
        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: true,
        validationRule: '',
        secure: true,
        dependsOn: 'url',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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: true,
        validationRule: '',
        secure: true,
        dependsOn: 'token',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Endpoint URL',
        description:
          'Optionally provide a custom Slack message API endpoint for non-webhook requests, default is https://slack.com/api/chat.postMessage',
        placeholder: 'Slack endpoint url',
        propertyName: 'endpointUrl',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
    ],
  },
  sensugo: {
    type: 'sensugo',
    name: 'Sensu Go',
    heading: 'Sensu Go Settings',
    description: 'Sends HTTP POST request to a Sensu Go API',
    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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Proxy entity name',
        description: '',
        placeholder: 'default',
        propertyName: 'entity',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Check name',
        description: '',
        placeholder: 'default',
        propertyName: 'check',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Handler',
        description: '',
        placeholder: '',
        propertyName: 'handler',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Namespace',
        description: '',
        placeholder: 'default',
        propertyName: 'namespace',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description: '',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  teams: {
    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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the Teams message.',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Section Title',
        description: 'Section title for the Teams message. Leave blank for none.',
        placeholder: '',
        propertyName: 'sectiontitle',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description: '',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  telegram: {
    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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description: '',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'select',
        inputType: '',
        label: 'Parse Mode',
        description: "Mode for parsing entities in the message text. Default is 'HTML'",
        placeholder: '',
        propertyName: 'parse_mode',
        selectOptions: [
          {
            value: 'None',
            label: 'None',
          },
          {
            value: 'HTML',
            label: 'HTML',
          },
          {
            value: 'Markdown',
            label: 'Markdown',
          },
          {
            value: 'MarkdownV2',
            label: 'Markdown V2',
          },
        ],
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'checkbox',
        inputType: '',
        label: 'Disable Web Page Preview',
        description: 'Disables link previews for links in this message',
        placeholder: '',
        propertyName: 'disable_web_page_preview',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'checkbox',
        inputType: '',
        label: 'Protect Content',
        description: 'Protects the contents of the sent message from forwarding and saving',
        placeholder: '',
        propertyName: 'protect_content',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'checkbox',
        inputType: '',
        label: 'Disable Notification',
        description: 'Sends the message silently. Users will receive a notification with no sound.',
        placeholder: '',
        propertyName: 'disable_notification',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  webhook: {
    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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'HTTP Basic Authentication - Username',
        description: '',
        placeholder: '',
        propertyName: 'username',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'password',
        label: 'HTTP Basic Authentication - Password',
        description: '',
        placeholder: '',
        propertyName: 'password',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: true,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Authorization Header - Scheme',
        description: 'Optionally provide a scheme for the Authorization Request Header. Default is Bearer.',
        placeholder: 'Bearer',
        propertyName: 'authorization_scheme',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Authorization Header - Credentials',
        description:
          'Credentials for the Authorization Request header. Only one of HTTP Basic Authentication or Authorization Request Header can be set.',
        placeholder: '',
        propertyName: 'authorization_credentials',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: true,
        dependsOn: '',
      },
      {
        element: 'key_value_map',
        inputType: 'text',
        label: 'Extra Headers',
        description: 'Optionally provide extra headers to be used in the request.',
        placeholder: '',
        propertyName: 'headers',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the message.',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description: 'Templated message to be used in the payload\'s "message" field.',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'subform',
        inputType: '',
        label: 'Custom Payload',
        description: "Optionally provide a templated payload. Overrides 'Message' and 'Title' field.",
        placeholder: '',
        propertyName: 'payload',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: [
          {
            element: 'textarea',
            inputType: '',
            label: 'Payload Template',
            description: 'Custom payload template.',
            placeholder: '{{ template "webhook.default.payload" . }}',
            propertyName: 'template',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: true,
            validationRule: '',
            secure: false,
            dependsOn: '',
          },
          {
            element: 'key_value_map',
            inputType: 'text',
            label: 'Payload Variables',
            description:
              'Optionally provide a variables to be used in the payload template. They will be available in the template as `.Vars.<variable_name>`.',
            placeholder: '',
            propertyName: 'vars',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
          },
        ],
      },
      {
        element: 'subform',
        inputType: '',
        label: 'TLS',
        description: 'TLS configuration options',
        placeholder: '',
        propertyName: 'tlsConfig',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: [
          {
            element: 'checkbox',
            inputType: '',
            label: 'Disable certificate verification',
            description: "Do not verify the server's certificate chain and host name.",
            placeholder: '',
            propertyName: 'insecureSkipVerify',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
          },
          {
            element: 'textarea',
            inputType: 'text',
            label: 'CA Certificate',
            description: "Certificate in PEM format to use when verifying the server's certificate chain.",
            placeholder: '',
            propertyName: 'caCertificate',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: true,
            dependsOn: '',
          },
          {
            element: 'textarea',
            inputType: 'text',
            label: 'Client Certificate',
            description: 'Client certificate in PEM format to use when connecting to the server.',
            placeholder: '',
            propertyName: 'clientCertificate',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: true,
            dependsOn: '',
          },
          {
            element: 'textarea',
            inputType: 'text',
            label: 'Client Key',
            description: 'Client key in PEM format to use when connecting to the server.',
            placeholder: '',
            propertyName: 'clientKey',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: true,
            dependsOn: '',
          },
        ],
      },
      {
        element: 'subform',
        inputType: '',
        label: 'HMAC Signature',
        description: 'HMAC signature configuration options',
        placeholder: '',
        propertyName: 'hmacConfig',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: [
          {
            element: 'input',
            inputType: 'text',
            label: 'Secret',
            description: '',
            placeholder: '',
            propertyName: 'secret',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: true,
            validationRule: '',
            secure: true,
            dependsOn: '',
          },
          {
            element: 'input',
            inputType: 'text',
            label: 'Header',
            description: 'The header in which the HMAC signature will be included.',
            placeholder: 'X-Grafana-Alerting-Signature',
            propertyName: 'header',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
          },
          {
            element: 'input',
            inputType: 'text',
            label: 'Timestamp header',
            description:
              'If set, the timestamp will be included in the HMAC signature. The value should be the name of the header to use.',
            placeholder: '',
            propertyName: 'timestampHeader',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
          },
        ],
      },
      {
        element: 'subform',
        inputType: '',
        label: 'HTTP Config',
        description: 'Common HTTP client options.',
        placeholder: '',
        propertyName: 'http_config',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: [
          {
            element: 'subform',
            inputType: '',
            label: 'OAuth2',
            description: 'OAuth2 configuration options',
            placeholder: '',
            propertyName: 'oauth2',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
            subformOptions: [
              {
                element: 'input',
                inputType: 'text',
                label: 'Token URL',
                description: 'URL for the access token endpoint.',
                placeholder: '',
                propertyName: 'token_url',
                selectOptions: null,
                showWhen: { field: '', is: '' },
                required: true,
                validationRule: '',
                secure: false,
                dependsOn: '',
              },
              {
                element: 'input',
                inputType: 'text',
                label: 'Client ID',
                description: 'Client ID to use when authenticating.',
                placeholder: '',
                propertyName: 'client_id',
                selectOptions: null,
                showWhen: { field: '', is: '' },
                required: true,
                validationRule: '',
                secure: false,
                dependsOn: '',
              },
              {
                element: 'input',
                inputType: 'text',
                label: 'Client Secret',
                description: 'Client secret to use when authenticating.',
                placeholder: '',
                propertyName: 'client_secret',
                selectOptions: null,
                showWhen: { field: '', is: '' },
                required: true,
                validationRule: '',
                secure: true,
                dependsOn: '',
              },
              {
                element: 'string_array',
                inputType: '',
                label: 'Scopes',
                description: 'Optional scopes to request when obtaining an access token.',
                placeholder: '',
                propertyName: 'scopes',
                selectOptions: null,
                showWhen: { field: '', is: '' },
                required: false,
                validationRule: '',
                secure: false,
                dependsOn: '',
              },
              {
                element: 'key_value_map',
                inputType: '',
                label: 'Endpoint Parameters',
                description: 'Optional parameters to append to the access token request.',
                placeholder: '',
                propertyName: 'endpoint_params',
                selectOptions: null,
                showWhen: { field: '', is: '' },
                required: false,
                validationRule: '',
                secure: false,
                dependsOn: '',
              },
              {
                element: 'subform',
                inputType: '',
                label: 'TLS',
                description: 'Optional TLS configuration options for OAuth2 requests.',
                placeholder: '',
                propertyName: 'tls_config',
                selectOptions: null,
                showWhen: { field: '', is: '' },
                required: false,
                validationRule: '',
                secure: false,
                dependsOn: '',
                subformOptions: [
                  {
                    element: 'checkbox',
                    inputType: '',
                    label: 'Disable certificate verification',
                    description: "Do not verify the server's certificate chain and host name.",
                    placeholder: '',
                    propertyName: 'insecureSkipVerify',
                    selectOptions: null,
                    showWhen: { field: '', is: '' },
                    required: false,
                    validationRule: '',
                    secure: false,
                    dependsOn: '',
                  },
                  {
                    element: 'textarea',
                    inputType: 'text',
                    label: 'CA Certificate',
                    description: "Certificate in PEM format to use when verifying the server's certificate chain.",
                    placeholder: '',
                    propertyName: 'caCertificate',
                    selectOptions: null,
                    showWhen: { field: '', is: '' },
                    required: false,
                    validationRule: '',
                    secure: true,
                    dependsOn: '',
                  },
                  {
                    element: 'textarea',
                    inputType: 'text',
                    label: 'Client Certificate',
                    description: 'Client certificate in PEM format to use when connecting to the server.',
                    placeholder: '',
                    propertyName: 'clientCertificate',
                    selectOptions: null,
                    showWhen: { field: '', is: '' },
                    required: false,
                    validationRule: '',
                    secure: true,
                    dependsOn: '',
                  },
                  {
                    element: 'textarea',
                    inputType: 'text',
                    label: 'Client Key',
                    description: 'Client key in PEM format to use when connecting to the server.',
                    placeholder: '',
                    propertyName: 'clientKey',
                    selectOptions: null,
                    showWhen: { field: '', is: '' },
                    required: false,
                    validationRule: '',
                    secure: true,
                    dependsOn: '',
                  },
                ],
              },
              {
                element: 'subform',
                inputType: '',
                label: 'Proxy Config',
                description: 'Optional proxy configuration.',
                placeholder: '',
                propertyName: 'proxy_config',
                selectOptions: null,
                showWhen: { field: '', is: '' },
                required: false,
                validationRule: '',
                secure: false,
                dependsOn: '',
                subformOptions: [
                  {
                    element: 'input',
                    inputType: 'text',
                    label: 'Proxy URL',
                    description: 'HTTP proxy server to use to connect to the targets.',
                    placeholder: 'https://proxy.example.com',
                    propertyName: 'proxy_url',
                    selectOptions: null,
                    showWhen: { field: '', is: '' },
                    required: false,
                    validationRule: '',
                    secure: false,
                    dependsOn: '',
                  },
                  {
                    element: 'checkbox',
                    inputType: '',
                    label: 'Proxy from environment',
                    description: 'Use environment HTTP_PROXY, HTTPS_PROXY and NO_PROXY to determine proxies.',
                    placeholder: '',
                    propertyName: 'proxy_from_environment',
                    selectOptions: null,
                    showWhen: { field: '', is: '' },
                    required: false,
                    validationRule: '',
                    secure: false,
                    dependsOn: '',
                  },
                  {
                    element: 'input',
                    inputType: 'text',
                    label: 'No Proxy',
                    description: 'Comma-separated list of addresses that should not use a proxy.',
                    placeholder: 'example.com,1.2.3.4',
                    propertyName: 'no_proxy',
                    selectOptions: null,
                    showWhen: { field: '', is: '' },
                    required: false,
                    validationRule: '',
                    secure: false,
                    dependsOn: '',
                  },
                  {
                    element: 'key_value_map',
                    inputType: 'text',
                    label: 'Proxy Connect Header',
                    description: 'Optional headers to send to proxies during CONNECT requests.',
                    placeholder: '',
                    propertyName: 'proxy_connect_header',
                    selectOptions: null,
                    showWhen: { field: '', is: '' },
                    required: false,
                    validationRule: '',
                    secure: false,
                    dependsOn: '',
                  },
                ],
              },
            ],
          },
        ],
      },
    ],
  },
  oncall: {
    type: 'oncall',
    name: 'Grafana IRM',
    heading: 'Grafana IRM settings',
    description: 'Sends notifications to Grafana IRM',
    info: '',
    options: [
      {
        element: 'input',
        inputType: 'text',
        label: 'URL',
        description: '',
        placeholder: '',
        propertyName: 'url',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'HTTP Basic Authentication - Username',
        description: '',
        placeholder: '',
        propertyName: 'username',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'password',
        label: 'HTTP Basic Authentication - Password',
        description: '',
        placeholder: '',
        propertyName: 'password',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: true,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Authorization Header - Scheme',
        description: 'Optionally provide a scheme for the Authorization Request Header. Default is Bearer.',
        placeholder: 'Bearer',
        propertyName: 'authorization_scheme',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Authorization Header - Credentials',
        description:
          'Credentials for the Authorization Request header. Only one of HTTP Basic Authentication or Authorization Request Header can be set.',
        placeholder: '',
        propertyName: 'authorization_credentials',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: true,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the message.',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description: 'Custom message. You can use template variables.',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  wecom: {
    type: 'wecom',
    name: 'WeCom',
    heading: 'WeCom settings',
    description: 'Send alerts generated by Grafana to WeCom',
    info: '',
    options: [
      {
        element: 'input',
        inputType: 'text',
        label: 'Webhook URL',
        description: 'Required if using GroupRobot',
        placeholder: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx',
        propertyName: 'url',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: true,
        dependsOn: 'secret',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Agent ID',
        description: 'Required if using APIAPP, see https://work.weixin.qq.com/wework_admin/frame#apps create ApiApp',
        placeholder: '1000002',
        propertyName: 'agent_id',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: 'url',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Corp ID',
        description: 'Required if using APIAPP, see https://work.weixin.qq.com/wework_admin/frame#profile',
        placeholder: 'wwxxxxxxxxx',
        propertyName: 'corp_id',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: 'url',
      },
      {
        element: 'input',
        inputType: 'password',
        label: 'Secret',
        description: 'Required if using APIAPP',
        placeholder: 'secret',
        propertyName: 'secret',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: true,
        dependsOn: 'url',
      },
      {
        element: 'select',
        inputType: '',
        label: 'Message Type',
        description: '',
        placeholder: 'Text',
        propertyName: 'msgtype',
        selectOptions: [
          {
            value: 'text',
            label: 'Text',
          },
          {
            value: 'markdown',
            label: 'Markdown',
          },
        ],
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the message',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'To User',
        description: '',
        placeholder: '@all',
        propertyName: 'touser',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  'prometheus-alertmanager': {
    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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Basic Auth User',
        description: '',
        placeholder: '',
        propertyName: 'basicAuthUser',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'password',
        label: 'Basic Auth Password',
        description: '',
        placeholder: '',
        propertyName: 'basicAuthPassword',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: true,
        dependsOn: '',
      },
    ],
  },
  discord: {
    type: 'discord',
    name: 'Discord',
    heading: 'Discord settings',
    description: 'Sends notifications to Discord',
    info: '',
    options: [
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the message',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Message Content',
        description: 'Mention a group using @ or a user using <@ID> when notifying in a channel',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Webhook URL',
        description: '',
        placeholder: 'Discord webhook URL',
        propertyName: 'url',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Avatar URL',
        description: '',
        placeholder: '',
        propertyName: 'avatar_url',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
    ],
  },
  googlechat: {
    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: true,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the message',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description: '',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  LINE: {
    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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the message',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Description',
        description: 'Templated description of the message',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'description',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  threema: {
    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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Title',
        description: 'Templated title of the message.',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'title',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Description',
        description: 'Templated description of the message.',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'description',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  mqtt: {
    type: 'mqtt',
    name: 'MQTT',
    heading: 'MQTT settings',
    description: 'Sends notifications to an MQTT broker',
    info: 'The MQTT notifier sends messages to an MQTT broker. The message is sent to the topic specified in the configuration. ',
    options: [
      {
        element: 'input',
        inputType: 'text',
        label: 'Broker URL',
        description: 'The URL of the MQTT broker.',
        placeholder: 'tcp://localhost:1883',
        propertyName: 'brokerUrl',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Topic',
        description: 'The topic to which the message will be sent.',
        placeholder: 'grafana/alerts',
        propertyName: 'topic',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'select',
        inputType: 'text',
        label: 'Message format',
        description:
          "If set to 'json', the notification message is the default JSON payload, and the Message field sets only the message field in the payload. If set to 'text', the Message field defines the entire payload. The default is 'json'.",
        placeholder: 'json',
        propertyName: 'messageFormat',
        selectOptions: [
          {
            value: 'json',
            label: 'json',
          },
          {
            value: 'text',
            label: 'text',
          },
        ],
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Client ID',
        description: 'The client ID to use when connecting to the MQTT broker. If blank, a random client ID is used.',
        placeholder: '',
        propertyName: 'clientId',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description:
          "In 'json' Message format, sets the message field of the default JSON payload. In 'text' Message format, defines the entire payload.",
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Username',
        description: 'The username to use when connecting to the MQTT broker.',
        placeholder: '',
        propertyName: 'username',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Password',
        description: 'The password to use when connecting to the MQTT broker.',
        placeholder: '',
        propertyName: 'password',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: true,
        dependsOn: '',
      },
      {
        element: 'select',
        inputType: '',
        label: 'QoS',
        description: 'The quality of service to use when sending the message.',
        placeholder: '',
        propertyName: 'qos',
        selectOptions: [
          {
            value: '0',
            label: 'At most once (0)',
          },
          {
            value: '1',
            label: 'At least once (1)',
          },
          {
            value: '2',
            label: 'Exactly once (2)',
          },
        ],
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'checkbox',
        inputType: '',
        label: 'Retain',
        description: 'If set to true, the message will be retained by the broker.',
        placeholder: '',
        propertyName: 'retain',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'subform',
        inputType: '',
        label: 'TLS',
        description: 'TLS configuration options',
        placeholder: '',
        propertyName: 'tlsConfig',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: [
          {
            element: 'checkbox',
            inputType: '',
            label: 'Disable certificate verification',
            description: "Do not verify the broker's certificate chain and host name.",
            placeholder: '',
            propertyName: 'insecureSkipVerify',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
          },
          {
            element: 'textarea',
            inputType: 'text',
            label: 'CA Certificate',
            description: "Certificate in PEM format to use when verifying the broker's certificate chain.",
            placeholder: '',
            propertyName: 'caCertificate',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: true,
            dependsOn: '',
          },
          {
            element: 'textarea',
            inputType: 'text',
            label: 'Client Certificate',
            description: 'Client certificate in PEM format to use when connecting to the broker.',
            placeholder: '',
            propertyName: 'clientCertificate',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: true,
            dependsOn: '',
          },
          {
            element: 'textarea',
            inputType: 'text',
            label: 'Client Key',
            description: 'Client key in PEM format to use when connecting to the broker.',
            placeholder: '',
            propertyName: 'clientKey',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: true,
            dependsOn: '',
          },
        ],
      },
    ],
  },
  opsgenie: {
    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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Message',
        description: 'Alert text limited to 130 characters.',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Description',
        description: 'A description of the incident.',
        placeholder: '',
        propertyName: 'description',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
      {
        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,
        dependsOn: '',
      },
    ],
  },
  webex: {
    type: 'webex',
    name: 'Cisco Webex Teams',
    heading: 'Webex settings',
    description: 'Sends notifications to Cisco Webex Teams',
    info: 'Notifications can be configured for any Cisco Webex Teams',
    options: [
      {
        element: 'input',
        inputType: 'text',
        label: 'Cisco Webex API URL',
        description: "API endpoint at which we'll send webhooks to.",
        placeholder: 'https://api.ciscospark.com/v1/messages',
        propertyName: 'api_url',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Room ID',
        description: 'The room ID to send messages to.',
        placeholder: 'GMtOWY0ZGJkNzMyMGFl',
        propertyName: 'room_id',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Bot Token',
        description: 'Non-expiring access token of the bot that will post messages on our behalf.',
        placeholder: 'GMtOWY0ZGJkNzMyMGFl-12535454-123213',
        propertyName: 'bot_token',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: true,
        validationRule: '',
        secure: true,
        dependsOn: '',
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Notification Template',
        description: 'Notification template to use. Markdown is supported.',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
      },
    ],
  },
  sns: {
    type: 'sns',
    name: 'AWS SNS',
    heading: 'Webex settings',
    description: 'Sends notifications to AWS Simple Notification Service',
    info: '',
    options: [
      {
        element: 'input',
        inputType: 'text',
        label: 'The Amazon SNS API URL',
        description: '',
        placeholder: '',
        propertyName: 'api_url',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: undefined,
      },
      {
        element: 'subform',
        inputType: '',
        label: 'SigV4 Authentication',
        description: "Configures AWS's Signature Verification 4 signing process to sign requests",
        placeholder: '',
        propertyName: 'sigv4',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: [
          {
            element: 'input',
            inputType: 'text',
            label: 'Region',
            description: 'The AWS region. If blank, the region from the default credentials chain is used.',
            placeholder: '',
            propertyName: 'region',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
            subformOptions: undefined,
          },
          {
            element: 'input',
            inputType: 'text',
            label: 'Access Key',
            description: 'The AWS API access key.',
            placeholder: '',
            propertyName: 'access_key',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: true,
            dependsOn: '',
            subformOptions: undefined,
          },
          {
            element: 'input',
            inputType: 'text',
            label: 'Secret Key',
            description: 'The AWS API secret key.',
            placeholder: '',
            propertyName: 'secret_key',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: true,
            dependsOn: '',
            subformOptions: undefined,
          },
          {
            element: 'input',
            inputType: 'text',
            label: 'Profile',
            description: 'Named AWS profile used to authenticate',
            placeholder: '',
            propertyName: 'profile',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
            subformOptions: undefined,
          },
          {
            element: 'input',
            inputType: 'text',
            label: 'Role ARN',
            description: 'AWS Role ARN, an alternative to using AWS API keys',
            placeholder: '',
            propertyName: 'role_arn',
            selectOptions: null,
            showWhen: {
              field: '',
              is: '',
            },
            required: false,
            validationRule: '',
            secure: false,
            dependsOn: '',
            subformOptions: undefined,
          },
        ],
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'SNS topic ARN',
        description:
          "If you don't specify this value, you must specify a value for the phone_number or target_arn. If you are using a FIFO SNS topic you should set a message group interval longer than 5 minutes to prevent messages with the same group key being deduplicated by the SNS default deduplication window.",
        placeholder: '',
        propertyName: 'topic_arn',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: undefined,
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Phone number',
        description:
          "Phone number if message is delivered via SMS in E.164 format. If you don't specify this value, you must specify a value for the topic_arn or target_arn",
        placeholder: '',
        propertyName: 'phone_number',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: undefined,
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Target ARN',
        description:
          "The mobile platform endpoint ARN if message is delivered via mobile notifications. If you don't specify this value, you must specify a value for the topic_arn or phone_number",
        placeholder: '',
        propertyName: 'target_arn',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: undefined,
      },
      {
        element: 'input',
        inputType: 'text',
        label: 'Subject',
        description:
          'Optional subject. By default, this field uses the default title template and can be customized using templates. It cannot be an empty string',
        placeholder: '{{ template "default.title" . }}',
        propertyName: 'subject',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: undefined,
      },
      {
        element: 'textarea',
        inputType: '',
        label: 'Message',
        description:
          'Optional message. By default, this field uses the default message template and can be customized with templates and custom messages',
        placeholder: '{{ template "default.message" . }}',
        propertyName: 'message',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: undefined,
      },
      {
        element: 'key_value_map',
        inputType: 'text',
        label: 'Attributes',
        description: 'SNS message attributes',
        placeholder: '',
        propertyName: 'attributes',
        selectOptions: null,
        showWhen: {
          field: '',
          is: '',
        },
        required: false,
        validationRule: '',
        secure: false,
        dependsOn: '',
        subformOptions: undefined,
      },
    ],
  },
};

export const grafanaAlertNotifiersMock: NotifierDTO[] = Object.values(grafanaAlertNotifiers);
