{
  "apiVersion": "apiextensions.k8s.io/v1",
  "kind": "CustomResourceDefinition",
  "metadata": {
    "annotations": {
      "controller-gen.kubebuilder.io/version": "v0.19.0",
      "operator.prometheus.io/version": "0.88.1"
    },
    "name": "prometheusrules.monitoring.coreos.com"
  },
  "spec": {
    "group": "monitoring.coreos.com",
    "names": {
      "categories": [
        "prometheus-operator"
      ],
      "kind": "PrometheusRule",
      "listKind": "PrometheusRuleList",
      "plural": "prometheusrules",
      "shortNames": [
        "promrule"
      ],
      "singular": "prometheusrule"
    },
    "scope": "Namespaced",
    "versions": [
      {
        "name": "v1",
        "schema": {
          "openAPIV3Schema": {
            "description": "The `PrometheusRule` custom resource definition (CRD) defines [alerting](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) and [recording](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) rules to be evaluated by `Prometheus` or `ThanosRuler` objects.\n\n`Prometheus` and `ThanosRuler` objects select `PrometheusRule` objects using label and namespace selectors.",
            "properties": {
              "apiVersion": {
                "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
                "type": "string"
              },
              "kind": {
                "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                "type": "string"
              },
              "metadata": {
                "type": "object"
              },
              "spec": {
                "description": "spec defines the specification of desired alerting rule definitions for Prometheus.",
                "properties": {
                  "groups": {
                    "description": "groups defines the content of Prometheus rule file",
                    "items": {
                      "description": "RuleGroup is a list of sequentially evaluated recording and alerting rules.",
                      "properties": {
                        "interval": {
                          "description": "interval defines how often rules in the group are evaluated.",
                          "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$",
                          "type": "string"
                        },
                        "labels": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "labels define the labels to add or overwrite before storing the result for its rules.\nThe labels defined at the rule level take precedence.\n\nIt requires Prometheus >= 3.0.0.\nThe field is ignored for Thanos Ruler.",
                          "type": "object"
                        },
                        "limit": {
                          "description": "limit defines the number of alerts an alerting rule and series a recording\nrule can produce.\nLimit is supported starting with Prometheus >= 2.31 and Thanos Ruler >= 0.24.",
                          "type": "integer"
                        },
                        "name": {
                          "description": "name defines the name of the rule group.",
                          "minLength": 1,
                          "type": "string"
                        },
                        "partial_response_strategy": {
                          "description": "partial_response_strategy is only used by ThanosRuler and will\nbe ignored by Prometheus instances.\nMore info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response",
                          "pattern": "^(?i)(abort|warn)?$",
                          "type": "string"
                        },
                        "query_offset": {
                          "description": "query_offset defines the offset the rule evaluation timestamp of this particular group by the specified duration into the past.\n\nIt requires Prometheus >= v2.53.0.\nIt is not supported for ThanosRuler.",
                          "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$",
                          "type": "string"
                        },
                        "rules": {
                          "description": "rules defines the list of alerting and recording rules.",
                          "items": {
                            "description": "Rule describes an alerting or recording rule\nSee Prometheus documentation: [alerting](https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) or [recording](https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules) rule",
                            "properties": {
                              "alert": {
                                "description": "alert defines the name of the alert. Must be a valid label value.\nOnly one of `record` and `alert` must be set.",
                                "type": "string"
                              },
                              "annotations": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "annotations defines annotations to add to each alert.\nOnly valid for alerting rules.",
                                "type": "object"
                              },
                              "expr": {
                                "anyOf": [
                                  {
                                    "type": "integer"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ],
                                "description": "expr defines the PromQL expression to evaluate.",
                                "x-kubernetes-int-or-string": true
                              },
                              "for": {
                                "description": "for defines how alerts are considered firing once they have been returned for this long.",
                                "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$",
                                "type": "string"
                              },
                              "keep_firing_for": {
                                "description": "keep_firing_for defines how long an alert will continue firing after the condition that triggered it has cleared.",
                                "minLength": 1,
                                "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$",
                                "type": "string"
                              },
                              "labels": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "labels defines labels to add or overwrite.",
                                "type": "object"
                              },
                              "record": {
                                "description": "record defines the name of the time series to output to. Must be a valid metric name.\nOnly one of `record` and `alert` must be set.",
                                "type": "string"
                              }
                            },
                            "required": [
                              "expr"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "type": "object"
                    },
                    "type": "array",
                    "x-kubernetes-list-map-keys": [
                      "name"
                    ],
                    "x-kubernetes-list-type": "map"
                  }
                },
                "type": "object"
              },
              "status": {
                "description": "status defines the status subresource. It is under active development and is updated only when the\n\"StatusForConfigurationResources\" feature gate is enabled.\n\nMost recent observed status of the PrometheusRule. Read-only.\nMore info:\nhttps://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
                "properties": {
                  "bindings": {
                    "description": "bindings defines the list of workload resources (Prometheus, PrometheusAgent, ThanosRuler or Alertmanager) which select the configuration resource.",
                    "items": {
                      "description": "WorkloadBinding is a link between a configuration resource and a workload resource.",
                      "properties": {
                        "conditions": {
                          "description": "conditions defines the current state of the configuration resource when bound to the referenced Workload object.",
                          "items": {
                            "description": "ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager or ThanosRuler.",
                            "properties": {
                              "lastTransitionTime": {
                                "description": "lastTransitionTime defines the time of the last update to the current status property.",
                                "format": "date-time",
                                "type": "string"
                              },
                              "message": {
                                "description": "message defines the human-readable message indicating details for the condition's last transition.",
                                "type": "string"
                              },
                              "observedGeneration": {
                                "description": "observedGeneration defines the .metadata.generation that the\ncondition was set based upon. For instance, if `.metadata.generation` is\ncurrently 12, but the `.status.conditions[].observedGeneration` is 9, the\ncondition is out of date with respect to the current state of the object.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "reason": {
                                "description": "reason for the condition's last transition.",
                                "type": "string"
                              },
                              "status": {
                                "description": "status of the condition.",
                                "minLength": 1,
                                "type": "string"
                              },
                              "type": {
                                "description": "type of the condition being reported.\nCurrently, only \"Accepted\" is supported.",
                                "enum": [
                                  "Accepted"
                                ],
                                "minLength": 1,
                                "type": "string"
                              }
                            },
                            "required": [
                              "lastTransitionTime",
                              "status",
                              "type"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "x-kubernetes-list-map-keys": [
                            "type"
                          ],
                          "x-kubernetes-list-type": "map"
                        },
                        "group": {
                          "description": "group defines the group of the referenced resource.",
                          "enum": [
                            "monitoring.coreos.com"
                          ],
                          "type": "string"
                        },
                        "name": {
                          "description": "name defines the name of the referenced object.",
                          "minLength": 1,
                          "type": "string"
                        },
                        "namespace": {
                          "description": "namespace defines the namespace of the referenced object.",
                          "minLength": 1,
                          "type": "string"
                        },
                        "resource": {
                          "description": "resource defines the type of resource being referenced (e.g. Prometheus, PrometheusAgent, ThanosRuler or Alertmanager).",
                          "enum": [
                            "prometheuses",
                            "prometheusagents",
                            "thanosrulers",
                            "alertmanagers"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "group",
                        "name",
                        "namespace",
                        "resource"
                      ],
                      "type": "object"
                    },
                    "type": "array",
                    "x-kubernetes-list-map-keys": [
                      "group",
                      "resource",
                      "name",
                      "namespace"
                    ],
                    "x-kubernetes-list-type": "map"
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "spec"
            ],
            "type": "object"
          }
        },
        "served": true,
        "storage": true,
        "subresources": {
          "status": {}
        }
      }
    ]
  }
}
