{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pushover": {
      "enabled": {
        "type": "boolean",
        "description": "Whether pushover notifications are enabled or not.",
        "default": false
      },
      "appToken": {
        "type": "string",
        "description": "The token of your Pushover application."
      },
      "deliveryToken": {
        "type": "string",
        "description": "The token of either the Pushover group or individual user that notifications should be sent to."
      },
      "priority": {
        "type": "integer",
        "description": "Affects how the receipient of the notification sees it. See https://pushover.net/api#priority",
        "default": 2,
        "minimum": -2,
        "maximum": 2
      },
      "retry": {
        "type": "integer",
        "description": "How often to re-display the notification until the user acknowledges it. Only applies when `priority` is `2`. See https://pushover.net/api#priority",
        "default": 30,
        "minimum": 30
      },
      "expire": {
        "type": "integer",
        "description": "How long to conintue re-displaying a notification before giving up. Only applies when `priority` is `2`. See https://pushover.net/api#priority",
        "default": 3600,
        "minimum": 60,
        "maximum": 86400
      },
      "requred": [
        "appToken",
        "deliveryToken"
      ]
    },
    "slack": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Slack notifications are enabled or not.",
          "default": false
        },
        "user": {
          "type": "string",
          "description": "The username the alert should come from, for example 'NodeCG Alerts'."
        },
        "destination": {
          "type": "string",
          "description": "Who should the message go to, can be a #channel or a @user."
        },
        "url": {
          "type": "string",
          "description": "The Webhook URL provided by Slack."
        }
      },
      "required": [
        "user",
        "destination",
        "url"
      ]
    }
  },
  "required": [
    "pushover",
    "slack"
  ]
}