{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/prometheus-alertmanager-json/latest.json",
  "description": "Prometheus Alertmanager configuration file",
  "x-lintel": {
    "source": "https://www.schemastore.org/prometheus-alertmanager.json",
    "sourceSha256": "71e170288e90505e499856c5dcfcf86b7cf1761897230404e05f484c76dc637a",
    "fileMatch": [
      "alertmanager.yml",
      "alertmanager.yaml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": [
    "object",
    "null"
  ],
  "properties": {
    "global": {
      "type": "object",
      "properties": {
        "smtp_from": {
          "type": "string",
          "description": "The default SMTP From header field"
        },
        "smtp_smarthost": {
          "type": "string",
          "description": "The default SMTP smarthost used for sending emails, including port number. Port number usually is 25, or 587 for SMTP over TLS (sometimes referred to as STARTTLS).",
          "examples": [
            "smtp.example.org:587"
          ]
        },
        "smtp_hello": {
          "type": "string",
          "description": "The default hostname to identify to the SMTP server",
          "default": "localhost"
        },
        "smtp_auth_username": {
          "type": "string"
        },
        "smtp_auth_password": {
          "type": "string"
        },
        "smtp_auth_password_file": {
          "type": "string"
        },
        "smtp_auth_identity": {
          "type": "string"
        },
        "smtp_auth_secret": {
          "type": "string"
        },
        "smtp_require_tls": {
          "type": "boolean",
          "description": "The default SMTP TLS requirement",
          "default": true
        },
        "smtp_tls_config": {
          "$ref": "#/$defs/tls_config",
          "description": "The default TLS configuration for SMTP receivers"
        },
        "jira_api_url": {
          "type": "string"
        },
        "slack_api_url": {
          "type": "string"
        },
        "slack_api_url_file": {
          "type": "string"
        },
        "victorops_api_key": {
          "type": "string"
        },
        "victorops_api_key_file": {
          "type": "string"
        },
        "victorops_api_url": {
          "type": "string",
          "default": "https://alert.victorops.com/integrations/generic/20131114/alert/"
        },
        "pagerduty_url": {
          "type": "string",
          "default": "https://events.pagerduty.com/v2/enqueue"
        },
        "opsgenie_api_key": {
          "type": "string"
        },
        "opsgenie_api_key_file": {
          "type": "string"
        },
        "opsgenie_api_url": {
          "type": "string",
          "default": "https://api.opsgenie.com/"
        },
        "rocketchat_api_url": {
          "type": "string",
          "default": "https://open.rocket.chat/"
        },
        "rocketchat_token": {
          "type": "string"
        },
        "rocketchat_token_file": {
          "type": "string"
        },
        "rocketchat_token_id": {
          "type": "string"
        },
        "rocketchat_token_id_file": {
          "type": "string"
        },
        "wechat_api_url": {
          "type": "string",
          "default": "https://qyapi.weixin.qq.com/cgi-bin/"
        },
        "wechat_api_secret": {
          "type": "string"
        },
        "wechat_api_corp_id": {
          "type": "string"
        },
        "telegram_api_url": {
          "type": "string",
          "default": "https://api.telegram.org"
        },
        "webex_api_url": {
          "type": "string",
          "default": "https://webexapis.com/v1/messages"
        },
        "http_config": {
          "$ref": "#/$defs/http_config",
          "description": "The default HTTP client configuration"
        },
        "resolve_timeout": {
          "$ref": "#/$defs/duration",
          "default": "5m"
        }
      },
      "additionalProperties": false
    },
    "templates": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Files from which custom notification template definitions are read. The last component may use a wildcard matcher, e.g. 'templates/*.tmpl'."
    },
    "route": {
      "$ref": "#/$defs/route"
    },
    "receivers": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/receiver"
      }
    },
    "inhibit_rules": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/inhibit_rule"
      }
    },
    "mute_time_intervals": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/time_interval"
      },
      "description": "DEPRECATED. A list of mute time intervals for muting routes. Use time_intervals"
    },
    "time_intervals": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/time_interval"
      }
    }
  },
  "$defs": {
    "duration": {
      "type": "string",
      "pattern": "^((([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?|0)$"
    },
    "labelname": {
      "type": "string",
      "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
    },
    "labelvalue": {
      "type": "string"
    },
    "regex": {
      "type": "string"
    },
    "filepath": {
      "type": "string"
    },
    "secret": {
      "type": "string"
    },
    "tls_config": {
      "type": "object",
      "properties": {
        "ca_file": {
          "type": "string",
          "description": "CA certificate to validate the server certificate with"
        },
        "cert_file": {
          "type": "string",
          "description": "Certificate file for client cert authentication to the server"
        },
        "key_file": {
          "type": "string",
          "description": "Key files for client cert authentication to the server"
        },
        "server_name": {
          "type": "string",
          "description": "ServerName extension to indicate the name of the server"
        },
        "insecure_skip_verify": {
          "type": "boolean",
          "description": "Disable validation of the server certificate",
          "default": false
        },
        "min_version": {
          "enum": [
            "TLS10",
            "TLS11",
            "TLS12",
            "TLS13"
          ],
          "description": "Minimum acceptable TLS version"
        },
        "max_version": {
          "enum": [
            "TLS10",
            "TLS11",
            "TLS12",
            "TLS13"
          ],
          "description": "Maximum acceptable TLS version"
        }
      },
      "additionalProperties": false
    },
    "oauth2": {
      "type": "object",
      "properties": {
        "client_id": {
          "type": "string"
        },
        "client_secret": {
          "type": "string"
        },
        "client_secret_file": {
          "type": "string",
          "description": "Read the client secret from a file. It is mutually exclusive with `client_secret`"
        },
        "scopes": {
          "type": "array",
          "description": "Scopes for the token request",
          "items": {
            "type": "string"
          }
        },
        "token_url": {
          "type": "string",
          "description": "The URL to fetch the token from"
        },
        "endpoint_params": {
          "type": "object",
          "description": "Optional parameters to append to the token URL",
          "additionalProperties": {
            "type": "string"
          }
        },
        "tls_config": {
          "$ref": "#/$defs/tls_config",
          "description": "Configures the token request's TLS settings"
        },
        "proxy_url": {
          "type": "string",
          "description": "Optional proxy URL"
        },
        "no_proxy": {
          "type": "string",
          "description": "Comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers"
        },
        "proxy_from_environment": {
          "type": "boolean",
          "default": false,
          "description": "Use proxy URL indicated by environment variables (HTTP_PROXY, https_proxy, HTTPs_PROXY, https_proxy, and no_proxy)"
        },
        "proxy_connect_header": {
          "type": "object",
          "description": "Specifies headers to send to proxies during CONNECT requests",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "additionalProperties": false
    },
    "http_config": {
      "type": "object",
      "properties": {
        "basic_auth": {
          "type": "object",
          "properties": {
            "username": {
              "type": "string"
            },
            "password": {
              "type": "string"
            },
            "password_file": {
              "type": "string"
            }
          },
          "description": "Sets the `Authorization` header with the configured username and password. password and password_file are mutually exclusive",
          "additionalProperties": false
        },
        "authorization": {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "default": "Bearer",
              "description": "Sets the authentication type"
            },
            "credentials": {
              "type": "string",
              "description": "Sets the credentials. It is mutually exclusive with `credentials_file`"
            },
            "credentials_file": {
              "type": "string",
              "description": "Sets the credentials with the credentials read from the configured file. It is mutually exclusive with `credentials`"
            }
          },
          "description": "Optional the `Authorization` header configuration",
          "additionalProperties": false
        },
        "oauth2": {
          "$ref": "#/$defs/oauth2",
          "description": "Optional OAuth 2.0 configuration. Cannot be used at the same time as basic_auth or authorization"
        },
        "enable_http2": {
          "type": "boolean",
          "default": true,
          "description": "Whether to enable HTTP2"
        },
        "proxy_url": {
          "type": "string",
          "description": "Optional proxy URL"
        },
        "no_proxy": {
          "type": "string",
          "description": "Comma-separated string that can contain IPs, CIDR notation, domain names that should be excluded from proxying. IP and domain names can contain port numbers"
        },
        "proxy_from_environment": {
          "type": "boolean",
          "default": false,
          "description": "Use proxy URL indicated by environment variables (HTTP_PROXY, http_proxy, HTTPS_PROXY, https_proxy, NO_PROXY, and no_proxy)"
        },
        "proxy_connect_header": {
          "type": "object",
          "description": "Specifies headers to send to proxies during CONNECT requests",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "follow_redirects": {
          "type": "boolean",
          "default": true,
          "description": "Configure whether HTTP requests follow HTTP 3xx redirects"
        },
        "tls_config": {
          "$ref": "#/$defs/tls_config",
          "description": "Configures the TLS settings"
        },
        "http_headers": {
          "type": "object",
          "description": "Custom HTTP headers to be sent along with each request. Headers that are set by Prometheus itself can't be overwritten",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "values": {
                "type": "array",
                "description": "Header values",
                "items": {
                  "type": "string"
                }
              },
              "secrets": {
                "type": "array",
                "description": "Headers values. Hidden in configuration page",
                "items": {
                  "type": "string"
                }
              },
              "files": {
                "type": "array",
                "description": "Files to read header values from",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "additionalProperties": false
    },
    "route": {
      "type": "object",
      "properties": {
        "receiver": {
          "type": "string"
        },
        "group_by": {
          "anyOf": [
            {
              "type": "array",
              "minItems": 1,
              "prefixItems": [
                {
                  "enum": [
                    "..."
                  ]
                }
              ],
              "description": "Group by all labels",
              "items": false
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/labelname"
              },
              "description": "The labels by which incoming alerts are grouped together"
            }
          ]
        },
        "continue": {
          "type": "boolean",
          "description": "Whether an alert should continue matching subsequent sibling nodes",
          "default": false
        },
        "match": {
          "type": "object",
          "description": "DEPRECATED. A set of equality matchers an alert has to fulfill to match the node. Use matchers instead",
          "additionalProperties": {
            "$ref": "#/$defs/labelvalue"
          }
        },
        "match_re": {
          "type": "object",
          "description": "DEPRECATED. A set of regex-matchers an alert has to fulfill to match the node. Use matchers instead",
          "additionalProperties": {
            "$ref": "#/$defs/regex"
          }
        },
        "matchers": {
          "$ref": "#/$defs/matcher",
          "description": "A list of matchers that an alert has to fulfill to match the node"
        },
        "group_wait": {
          "$ref": "#/$defs/duration",
          "description": "How long to initially wait to send a notification for a group of alerts. Allows to wait for an inhibiting alert to arrive or collect more initial alerts for the same group. (Usually ~0s to few minutes.) If omitted, child routes inherit the group_wait of the parent route",
          "default": "30s"
        },
        "group_interval": {
          "$ref": "#/$defs/duration",
          "description": "How long to wait before sending a notification about new alerts that are added to a group of alerts for which an initial notification has already been sent. (Usually ~5m or more.) If omitted, child routes inherit the group_interval of the parent route.",
          "default": "5m"
        },
        "repeat_interval": {
          "$ref": "#/$defs/duration",
          "description": "How long to wait before sending a notification again if it has already been sent successfully for an alert. (Usually ~3h or more). If omitted, child routes inherit the repeat_interval of the parent route. Note that this parameter is implicitly bound by Alertmanager's `--data.retention` configuration flag. Notifications will be resent after either repeat_interval or the data retention period have passed, whichever occurs first. `repeat_interval` should be a multiple of `group_interval`",
          "default": "4h"
        },
        "mute_time_intervals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Times when the route should be muted. These must match the name of a time interval defined in the time_intervals section. Additionally, the root node cannot have any mute times. When a route is muted it will not send any notifications, but otherwise acts normally (including ending the route-matching process if the `continue` option is not set.)"
        },
        "active_time_intervals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Times when the route should be active. These must match the name of a time interval defined in the time_intervals section. An empty value means that the route is always active. Additionally, the root node cannot have any active times. The route will send notifications only when active, but otherwise acts normally (including ending the route-matching process if the `continue` option is not set)."
        },
        "routes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/route"
          }
        }
      },
      "additionalProperties": false
    },
    "matcher": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "receiver": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The unique name of the receiver"
        },
        "discord_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "webhook_url": {
                "type": "string",
                "description": "The Discord webhook URL. webhook_url and webhook_url_file are mutually exclusive"
              },
              "webhook_url_file": {
                "type": "string",
                "description": "The Discord webhook URL. webhook_url and webhook_url_file are mutually exclusive"
              },
              "title": {
                "type": "string",
                "default": "{{ template \"discord.default.title\" . }}",
                "description": "Message title template"
              },
              "message": {
                "type": "string",
                "default": "{{ template \"discord.default.message\" . }}",
                "description": "Message body template"
              },
              "content": {
                "type": "string",
                "default": "{{ template \"discord.default.content\" . }}",
                "description": "Message content template. Limited to 2000 characters"
              },
              "username": {
                "type": "string",
                "default": "",
                "description": "Message username"
              },
              "avatar_url": {
                "type": "string",
                "default": "",
                "description": "Message avatar URL"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "email_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "to": {
                "type": "string",
                "description": "The email address to send notifications to. Allows a comma separated list of rfc5322 compliant email addresses"
              },
              "from": {
                "type": "string",
                "description": "The sender's address"
              },
              "smarthost": {
                "type": "string",
                "description": "The SMTP host through which emails are sent"
              },
              "hello": {
                "type": "string",
                "description": "The hostname to identify to the SMTP server"
              },
              "auth_username": {
                "type": "string"
              },
              "auth_password": {
                "type": "string"
              },
              "auth_password_file": {
                "type": "string"
              },
              "auth_secret": {
                "type": "string"
              },
              "auth_identity": {
                "type": "string"
              },
              "require_tls": {
                "type": "boolean",
                "description": " The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints"
              },
              "tls_config": {
                "$ref": "#/$defs/tls_config",
                "description": "TLS configuration"
              },
              "html": {
                "type": "string",
                "default": "{{ template \"email.default.html\" . }}",
                "description": "The HTML body of the email notification"
              },
              "text": {
                "type": "string",
                "description": "The text body of the email notification"
              },
              "headers": {
                "type": "object",
                "description": "Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          }
        },
        "msteams_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "webhook_url": {
                "type": "string",
                "description": "The incoming webhook URL. webhook_url and webhook_url_file are mutually exclusive"
              },
              "webhook_url_file": {
                "type": "string",
                "description": "The incoming webhook URL. webhook_url and webhook_url_file are mutually exclusive"
              },
              "title": {
                "type": "string",
                "default": "{{ template \"msteams.default.title\" . }}",
                "description": "Message title template"
              },
              "summary": {
                "type": "string",
                "default": "{{ template \"msteams.default.summary\" . }}",
                "description": "Message summary template"
              },
              "text": {
                "type": "string",
                "default": "{{ template \"msteams.default.text\" . }}",
                "description": "Message body template"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "msteamsv2_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "webhook_url": {
                "type": "string",
                "description": "The incoming webhook URL. webhook_url and webhook_url_file are mutually exclusive"
              },
              "webhook_url_file": {
                "type": "string",
                "description": "The incoming webhook URL. webhook_url and webhook_url_file are mutually exclusive"
              },
              "title": {
                "type": "string",
                "default": "{{ template \"msteamsv2.default.title\" . }}",
                "description": "Message title template"
              },
              "text": {
                "type": "string",
                "default": "{{ template \"msteamsv2.default.text\" . }}",
                "description": "Message body template"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "jira_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_url": {
                "type": "string",
                "description": "The URL to send API requests to. The full API path must be included. Example: <https://company.atlassian.net/rest/api/2/>"
              },
              "project": {
                "type": "string",
                "description": "The project key where issues are created"
              },
              "summary": {
                "type": "string",
                "default": "{{ template \"jira.default.summary\" . }}",
                "description": "Issue summary template"
              },
              "description": {
                "type": "string",
                "default": "{{ template \"jira.default.description\" . }}",
                "description": "Issue description template"
              },
              "labels": {
                "type": "array",
                "description": "Labels to be added to the issue",
                "items": {
                  "type": "string"
                }
              },
              "priority": {
                "type": "string",
                "default": "{{ template \"jira.default.priority\" . }}",
                "description": "Priority of the issue"
              },
              "issue_type": {
                "type": "string",
                "description": "Type of the issue (e.g. Bug)"
              },
              "resolve_transition": {
                "type": "string",
                "description": "Name of the workflow transition to resolve an issue. The target status must have the category \"done\". NOTE: The name of the transition can be localized and depends on the language setting of the service account"
              },
              "reopen_transition": {
                "type": "string",
                "description": "Name of the workflow transition to reopen an issue. The target status should not have the category \"done\". NOTE: The name of the transition can be localized and depends on the language setting of the service account"
              },
              "wont_fix_resolution": {
                "type": "string",
                "description": "If reopen_transition is defined, ignore issues with that resolution"
              },
              "reopen_duration": {
                "$ref": "#/$defs/duration",
                "description": "If reopen_transition is defined, reopen the issue when it is not older than this value (rounded down to the nearest minute). The resolutiondate field is used to determine the age of the issue"
              },
              "fields": {
                "type": "object",
                "description": "Other issue and custom fields",
                "additionalProperties": true
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration. You must use this configuration to supply the personal access token (PAT) as part of the HTTP `Authorization` header. For Jira Cloud, use basic_auth with the email address as the username and the PAT as the password. For Jira Data Center, use the 'authorization' field with 'credentials: <PAT value>'"
              }
            },
            "additionalProperties": false
          }
        },
        "opsgenie_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_key": {
                "type": "string",
                "description": "The API key to use when talking to the OpsGenie API"
              },
              "api_key_file": {
                "type": "string",
                "description": "The filepath to API key to use when talking to the OpsGenie API. Conflicts with api_key"
              },
              "api_url": {
                "type": "string",
                "description": "The host to send OpsGenie API requests to"
              },
              "message": {
                "type": "string",
                "default": "{{ template \"opsgenie.default.message\" . }}",
                "description": "Alert text limited to 130 characters"
              },
              "description": {
                "type": "string",
                "default": "{{ template \"opsgenie.default.description\" . }}",
                "description": "A description of the alert"
              },
              "source": {
                "type": "string",
                "default": "{{ template \"opsgenie.default.source\" . }}",
                "description": "A backlink to the sender of the notification"
              },
              "details": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "responders": {
                "type": "array",
                "description": "List of responders responsible for notifications",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "username": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string",
                      "description": "One of `team`, `teams`, `user`, `escalation` or `schedule`. The `teams` responder is configured using the `name` field above. This field can contain a comma-separated list of team names. If the list is empty, no responders are configured"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "tags": {
                "type": "string",
                "description": "Comma separated list of tags attached to the notifications"
              },
              "note": {
                "type": "string",
                "description": "Additional alert note"
              },
              "priority": {
                "enum": [
                  "P1",
                  "P2",
                  "P3",
                  "P4",
                  "P5"
                ],
                "description": "Priority level of alert"
              },
              "update_alerts": {
                "type": "boolean",
                "default": false,
                "description": "Whether to update message and description of the alert in OpsGenie if it already exists. By default, the alert is never updated in OpsGenie, the new message only appears in activity log"
              },
              "entity": {
                "type": "string",
                "description": "Optional field that can be used to specify which domain alert is related to"
              },
              "actions": {
                "type": "string",
                "description": "Comma separated list of actions that will be available for the alert"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "pagerduty_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "routing_key": {
                "type": "string",
                "description": "The routing and service keys are mutually exclusive. The PagerDuty integration key (when using PagerDuty integration type `Events API v2`). It is mutually exclusive with `routing_key_file`"
              },
              "routing_key_file": {
                "type": "string",
                "description": "Read the Pager Duty routing key from a file. It is mutually exclusive with `routing_key`"
              },
              "service_key": {
                "type": "string",
                "description": "The PagerDuty integration key (when using PagerDuty integration type `Prometheus`). It is mutually exclusive with `service_key_file`"
              },
              "service_key_file": {
                "type": "string",
                "description": "Read the Pager Duty service key from a file. It is mutually exclusive with `service_key`"
              },
              "url": {
                "type": "string",
                "description": "The URL to send API requests to"
              },
              "client": {
                "type": "string",
                "default": "{{ template \"pagerduty.default.client\" . }}",
                "description": "The client identification of the Alertmanager"
              },
              "client_url": {
                "type": "string",
                "default": "{{ template \"pagerduty.default.clientURL\" . }}",
                "description": "A backlink to the sender of the notification"
              },
              "description": {
                "type": "string",
                "default": "{{ template \"pagerduty.default.description\" .}}",
                "description": "A description of the incident"
              },
              "severity": {
                "type": "string",
                "default": "error",
                "description": "Severity of the incident"
              },
              "source": {
                "type": "string",
                "default": "client",
                "description": "Unique location of the affected system"
              },
              "details": {
                "type": "object",
                "description": "A set of arbitrary key/value pairs that provide further detail about the incident",
                "properties": {
                  "firing": {
                    "type": "string",
                    "default": "{{ template \"pagerduty.default.instances\" .Alerts.Firing }}"
                  },
                  "resolved": {
                    "type": "string",
                    "default": "{{ template \"pagerduty.default.instances\" .Alerts.Resolved }}"
                  },
                  "num_firing": {
                    "type": "string",
                    "default": "{{ .Alerts.Firing | len }}"
                  },
                  "num_resolved": {
                    "type": "string",
                    "default": "{{ .Alerts.Resolved | len }}"
                  }
                },
                "additionalProperties": {
                  "type": "string"
                }
              },
              "images": {
                "type": "array",
                "description": "Images to attach to the incident",
                "items": {
                  "type": "object",
                  "properties": {
                    "href": {
                      "type": "string"
                    },
                    "src": {
                      "type": "string"
                    },
                    "alt": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "links": {
                "type": "array",
                "description": "Links to attach to the incident",
                "items": {
                  "type": "object",
                  "properties": {
                    "href": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "component": {
                "type": "string",
                "description": "The part or component of the affected system that is broken"
              },
              "group": {
                "type": "string",
                "description": "A cluster or grouping of sources"
              },
              "class": {
                "type": "string",
                "description": "The class/type of the event"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "pushover_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "user_key": {
                "type": "string",
                "description": "The recipient user's key. user_key and user_key_file are mutually exclusive"
              },
              "user_key_file": {
                "type": "string",
                "description": "The recipient user's key. user_key and user_key_file are mutually exclusive"
              },
              "token": {
                "type": "string",
                "description": "Your registered application's API token, see <https://pushover.net/apps>. You can also register a token by cloning this Prometheus app: <https://pushover.net/apps/clone/prometheus>. token and token_file are mutually exclusive"
              },
              "token_file": {
                "type": "string",
                "description": "Your registered application's API token, see <https://pushover.net/apps>. You can also register a token by cloning this Prometheus app: <https://pushover.net/apps/clone/prometheus>. token and token_file are mutually exclusive"
              },
              "title": {
                "type": "string",
                "default": "{{ template \"pushover.default.title\" . }}",
                "description": "Notification title"
              },
              "message": {
                "type": "string",
                "default": "{{ template \"pushover.default.message\" . }}",
                "description": "Notification message"
              },
              "url": {
                "type": "string",
                "default": "{{ template \"pushover.default.url\" . }}",
                "description": "A supplementary URL shown alongside the message"
              },
              "device": {
                "type": "string",
                "description": "Optional device to send notification to, see <https://pushover.net/api#device>"
              },
              "sound": {
                "type": "string",
                "description": "Optional sound to use for notification, see <https://pushover.net/api#sound>"
              },
              "priority": {
                "type": "string",
                "default": "{{ if eq .Status \"firing\" }}2{{ else }}0{{ end }}",
                "description": "Priority, see <https://pushover.net/api#priority>"
              },
              "retry": {
                "$ref": "#/$defs/duration",
                "default": "1m",
                "description": "How often the Pushover servers will send the same notification to the user. Must be at least 30 seconds"
              },
              "expire": {
                "$ref": "#/$defs/duration",
                "default": "1h",
                "description": "How long your notification will continue to be retried for, unless the user acknowledges the notification"
              },
              "ttl": {
                "$ref": "#/$defs/duration",
                "description": "Optional time to live (TTL) to use for notification, see <https://pushover.net/api#ttl>"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "rocketchat_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_url": {
                "type": "string"
              },
              "channel": {
                "type": "string"
              },
              "token": {
                "type": "string",
                "description": "The sender token. token and token_file are mutually exclusive"
              },
              "token_file": {
                "type": "string",
                "description": "The sender token. token and token_file are mutually exclusive"
              },
              "token_id": {
                "type": "string",
                "description": "The sender token_id. token_id and token_id_file are mutually exclusive"
              },
              "token_id_file": {
                "type": "string",
                "description": "The sender token_id. token_id and token_id_file are mutually exclusive"
              },
              "color": {
                "type": "string",
                "default": "{{ if eq .Status \"firing\" }}red{{ else }}green{{ end }}"
              },
              "emoji": {
                "type": "string",
                "default": "{{ template \"rocketchat.default.emoji\" . }}"
              },
              "icon_url": {
                "type": "string",
                "default": "{{ template \"rocketchat.default.iconurl\" . }}"
              },
              "text": {
                "type": "string",
                "default": "{{ template \"rocketchat.default.text\" . }}"
              },
              "title": {
                "type": "string",
                "default": "{{ template \"rocketchat.default.title\" . }}"
              },
              "title_link": {
                "type": "string",
                "default": "{{ template \"rocketchat.default.titlelink\" . }}"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    },
                    "short": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "image_url": {
                "type": "string"
              },
              "thumb_url": {
                "type": "string"
              },
              "link_names": {
                "type": "string"
              },
              "short_fields": {
                "type": "boolean",
                "default": false
              },
              "actions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "ignored, only \"button\" is supported"
                    },
                    "text": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    },
                    "msg": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                }
              }
            },
            "additionalProperties": false
          }
        },
        "slack_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_url": {
                "type": "string"
              },
              "api_url_file": {
                "type": "string"
              },
              "channel": {
                "type": "string"
              },
              "icon_emoji": {
                "type": "string"
              },
              "icon_url": {
                "type": "string"
              },
              "link_names": {
                "type": "boolean",
                "default": false
              },
              "username": {
                "type": "string",
                "default": "{{ template \"slack.default.username\" . }}"
              },
              "actions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "text": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    },
                    "confirm": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "dismiss_text": {
                          "type": "string"
                        },
                        "ok_text": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "style": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "text",
                    "type"
                  ],
                  "additionalProperties": false
                }
              },
              "callback_id": {
                "type": "string",
                "default": "{{ template \"slack.default.callbackid\" . }}"
              },
              "color": {
                "type": "string",
                "default": "{{ if eq .Status \"firing\" }}danger{{ else }}good{{ end }}"
              },
              "fallback": {
                "type": "string",
                "default": "{{ template \"slack.default.fallback\" . }}"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    },
                    "short": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "title",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "footer": {
                "type": "string",
                "default": "{{ template \"slack.default.footer\" . }}"
              },
              "mrkdwn_in": {
                "type": "array",
                "default": [
                  "fallback",
                  "pretext",
                  "text"
                ],
                "items": {
                  "type": "string"
                }
              },
              "pretext": {
                "type": "string",
                "default": "{{ template \"slack.default.pretext\" . }}"
              },
              "short_fields": {
                "type": "boolean",
                "default": false
              },
              "text": {
                "type": "string",
                "default": "{{ template \"slack.default.text\" . }}"
              },
              "title": {
                "type": "string",
                "default": "{{ template \"slack.default.title\" . }}"
              },
              "title_link": {
                "type": "string",
                "default": "{{ template \"slack.default.titlelink\" . }}"
              },
              "image_url": {
                "type": "string"
              },
              "thumb_url": {
                "type": "string"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "sns_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_url": {
                "type": "string",
                "description": "The SNS API URL i.e. <https://sns.us-east-2.amazonaws.com>. If not specified, the SNS API URL from the SNS SDK will be used"
              },
              "sigv4": {
                "type": "object",
                "properties": {
                  "region": {
                    "type": "string",
                    "description": "The AWS region. If blank, the region from the default credentials chain is used"
                  },
                  "access_key": {
                    "type": "string",
                    "description": "The AWS API keys. Both access_key and secret_key must be supplied or both must be blank. If blank the environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are used"
                  },
                  "secret_key": {
                    "type": "string",
                    "description": "The AWS API keys. Both access_key and secret_key must be supplied or both must be blank. If blank the environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are used"
                  },
                  "profile": {
                    "type": "string",
                    "description": "Named AWS profile used to authenticate"
                  },
                  "role_arn": {
                    "type": "string",
                    "description": "AWS Role ARN, an alternative to using AWS API keys"
                  }
                },
                "additionalProperties": false
              },
              "topic_arn": {
                "type": "string",
                "description": "SNS topic ARN, i.e. arn:aws:sns:us-east-2:698519295917:My-Topic. 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"
              },
              "subject": {
                "type": "string",
                "default": "{{ template \"sns.default.subject\" .}}",
                "description": "Subject line when the message is delivered to email endpoints"
              },
              "phone_number": {
                "type": "string",
                "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"
              },
              "target_arn": {
                "type": "string",
                "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"
              },
              "message": {
                "type": "string",
                "default": "{{ template \"sns.default.message\" .}}",
                "description": "The message content of the SNS notification"
              },
              "attributes": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "telegram_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_url": {
                "type": "string",
                "description": "The Telegram API URL i.e. <https://api.telegram.org>. If not specified, default API URL will be used"
              },
              "bot_token": {
                "type": "string",
                "description": "Telegram bot token. It is mutually exclusive with `bot_token_file`"
              },
              "bot_token_file": {
                "type": "string",
                "description": "Telegram bot token. It is mutually exclusive with `bot_token_file`"
              },
              "chat_id": {
                "type": "integer",
                "description": "ID of the chat where to send the messages"
              },
              "message_thread_id": {
                "type": "integer",
                "description": "Optional ID of the message thread where to send the messages"
              },
              "message": {
                "type": "string",
                "default": "{{ template \"telegram.default.message\" .}}",
                "description": "Message template"
              },
              "disable_notifications": {
                "type": "boolean",
                "default": false,
                "description": "Disable telegram notifications"
              },
              "parse_mode": {
                "enum": [
                  "MarkdownV2",
                  "Markdown",
                  "HTML",
                  ""
                ],
                "default": "HTML",
                "description": "Parse mode for telegram message, supported values are MarkdownV2, Markdown, HTML and empty string for plain text"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "victorops_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_key": {
                "type": "string",
                "description": "The API key to use when talking to the VictorOps API. It is mutually exclusive with `api_key_file`."
              },
              "api_key_file": {
                "type": "string",
                "description": "Reads the API key to use when talking to the VictorOps API from a file. It is mutually exclusive with `api_key`"
              },
              "api_url": {
                "type": "string",
                "description": "The VictorOps API URL"
              },
              "routing_key": {
                "type": "string",
                "description": "A key used to map the alert to a team"
              },
              "message_type": {
                "type": "string",
                "default": "CRITICAL",
                "description": "Describes the behavior of the alert (CRITICAL, WARNING, INFO)"
              },
              "entity_display_name": {
                "type": "string",
                "default": "{{ template \"victorops.default.entity_display_name\" . }}",
                "description": "Contains summary of the alerted problem"
              },
              "state_message": {
                "type": "string",
                "default": "{{ template \"victorops.default.state_message\" . }}",
                "description": "Contains long explanation of the alerted problem"
              },
              "monitoring_tool": {
                "type": "string",
                "default": "{{ template \"victorops.default.monitoring_tool\" . }}",
                "description": "The monitoring tool the state message is from"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              }
            },
            "additionalProperties": false
          }
        },
        "webex_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_url": {
                "type": "string",
                "description": "The Webex Teams API URL i.e. <https://webexapis.com/v1/messages>. If not specified, default API URL will be used."
              },
              "room_id": {
                "type": "string",
                "description": "ID of the Webex Teams room where to send the messages"
              },
              "message": {
                "type": "string",
                "default": "{{ template \"webex.default.message\" .}}",
                "description": "Message template"
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration. You must use this configuration to supply the bot token as part of the HTTP `Authorization` header"
              }
            },
            "additionalProperties": false
          }
        },
        "webhook_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "url": {
                "type": "string",
                "description": "The endpoint to send HTTP POST requests to. url and url_file are mutually exclusive."
              },
              "url_file": {
                "type": "string",
                "description": "The endpoint to send HTTP POST requests to. url and url_file are mutually exclusive."
              },
              "http_config": {
                "$ref": "#/$defs/http_config",
                "description": "The HTTP client's configuration"
              },
              "max_alerts": {
                "type": "integer",
                "default": 0,
                "description": "The maximum number of alerts to include in a single webhook message. Alerts above this threshold are truncated. When leaving this at its default value of 0, all alerts are included."
              },
              "timeout": {
                "$ref": "#/$defs/duration",
                "default": "0s",
                "description": "The maximum time to wait for a webhook request to complete, before failing the request and allowing it to be retried. The default value of 0s indicates that no timeout should be applied. NOTE: This will have no effect if set higher than the group_interval."
              }
            },
            "additionalProperties": false
          }
        },
        "wechat_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "send_resolved": {
                "type": "boolean",
                "default": true,
                "description": "Whether to notify about resolved alerts"
              },
              "api_secret": {
                "type": "string",
                "description": "The API key to use when talking to the WeChat API"
              },
              "api_url": {
                "type": "string",
                "description": "The WeChat API URL"
              },
              "corp_id": {
                "type": "string",
                "description": "The corp id for authentication"
              },
              "message": {
                "type": "string",
                "default": "{{ template \"wechat.default.message\" . }}"
              },
              "message_type": {
                "enum": [
                  "text",
                  "markdown"
                ],
                "default": "text"
              },
              "agent_id": {
                "type": "string",
                "default": "{{ template \"wechat.default.agent_id\" . }}"
              },
              "to_user": {
                "type": "string",
                "default": "{{ template \"wechat.default.to_user\" . }}"
              },
              "to_party": {
                "type": "string",
                "default": "{{ template \"wechat.default.to_party\" . }}"
              },
              "to_tag": {
                "type": "string",
                "default": "{{ template \"wechat.default.to_tag\" . }}"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    },
    "inhibit_rule": {
      "type": "object",
      "properties": {
        "target_match": {
          "type": "object",
          "description": "DEPRECATED. Matchers that have to be fulfilled in the alerts to be muted. Use target_matchers",
          "additionalProperties": {
            "$ref": "#/$defs/labelvalue"
          }
        },
        "target_match_re": {
          "type": "object",
          "description": "DEPRECATED: Use target_matchers",
          "additionalProperties": {
            "$ref": "#/$defs/regex"
          }
        },
        "target_matchers": {
          "$ref": "#/$defs/matcher",
          "description": "A list of matchers that have to be fulfilled by the target alerts to be muted"
        },
        "source_match": {
          "type": "object",
          "description": "DEPRECATED. Matchers for which one or more alerts have to exist for the inhibition to take effect. Use source_matchers",
          "additionalProperties": {
            "$ref": "#/$defs/labelvalue"
          }
        },
        "source_match_re": {
          "type": "object",
          "description": "DEPRECATED. Use source_matchers",
          "additionalProperties": {
            "$ref": "#/$defs/regex"
          }
        },
        "source_matchers": {
          "$ref": "#/$defs/matcher",
          "description": "A list of matchers for which one or more alerts have to exist for the inhibition to take effect"
        },
        "equal": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/labelname"
          },
          "description": "Labels that must have an equal value in the source and target alert for the inhibition to take effect"
        }
      },
      "additionalProperties": false
    },
    "time_interval": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/time_interval_spec"
          }
        }
      },
      "additionalProperties": false
    },
    "time_interval_spec": {
      "type": "object",
      "properties": {
        "times": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "start_time": {
                "type": "string",
                "pattern": "^[0-9]{2}:[0-9]{2}$"
              },
              "end_time": {
                "type": "string",
                "pattern": "^[0-9]{2}:[0-9]{2}$"
              }
            },
            "additionalProperties": false
          }
        },
        "weekdays": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "days_of_month": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "months": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "years": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "location": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
