variable "contact_points" {
  description = "List of contact points"
  type = list(object({
    name       = string
    type       = string
    is_default = optional(bool, false)
    labels     = optional(map(string))
    settings   = map(string)
  }))
}

variable "org_id" {
  description = "Grafana organization ID"
  type        = string
}

variable "disable_provenance" {
  description = "Controls whether Grafana provisioning is disabled"
  type        = bool
  default     = true
}

variable "group_by" {
  description = "A list of alert labels to group alerts into notifications"
  type        = list(string)
  default     = ["alertname"]
}

variable "group_wait" {
  description = "Time to wait to buffer alerts of the same group before sending a notification"
  type        = string
  default     = "30s"
}

variable "group_interval" {
  description = "Minimum time interval between two notifications for the same group"
  type        = string
  default     = "5m"
}

variable "repeat_interval" {
  description = "Minimum time interval for re-sending a notification if an alert is still firing"
  type        = string
  default     = "4h"
}

variable "notification_policies" {
  description = "Routing rules for specific label sets"
  type = list(object({
    contact_point   = string
    continue        = optional(bool)
    group_by        = optional(list(string))
    group_wait      = optional(string)
    group_interval  = optional(string)
    repeat_interval = optional(string)
    matchers = list(object({
      label = string
      match = string # Allowed operators are = for equality, != for negated equality, =~ for regex equality, and !~ for negated regex equality
      value = string
    }))
    policies = optional(list(object({
      contact_point   = string
      continue        = optional(bool)
      group_by        = optional(list(string))
      group_wait      = optional(string)
      group_interval  = optional(string)
      repeat_interval = optional(string)
      matchers = list(object({
        label = string
        match = string
        value = string
      }))
    })), [])
  }))
  default = []
}
