{
  "description": "OperatorConfig defines configuration of the gmp-operator.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "collection": {
      "additionalProperties": false,
      "description": "Collection specifies how the operator configures collection.",
      "properties": {
        "credentials": {
          "additionalProperties": false,
          "description": "A reference to GCP service account credentials with which Prometheus collectors are run. It needs to have metric write permissions for all project IDs to which data is written. Within GKE, this can typically be left empty if the compute default service account has the required permissions.",
          "properties": {
            "key": {
              "description": "The key of the secret to select from.  Must be a valid secret key.",
              "type": "string"
            },
            "name": {
              "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
              "type": [
                "string",
                "null"
              ]
            },
            "optional": {
              "description": "Specify whether the Secret or its key must be defined",
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          "required": [
            "key"
          ],
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-map-type": "atomic"
        },
        "externalLabels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "ExternalLabels specifies external labels that are attached to all scraped data before being written to Cloud Monitoring. The precedence behavior matches that of Prometheus.",
          "type": [
            "object",
            "null"
          ]
        },
        "filter": {
          "additionalProperties": false,
          "description": "Filter limits which metric data is sent to Cloud Monitoring.",
          "properties": {
            "matchOneOf": {
              "description": "A list Prometheus time series matchers. Every time series must match at least one of the matchers to be exported. This field can be used equivalently to the match[] parameter of the Prometheus federation endpoint to selectively export data. Example: `[\"{job='prometheus'}\", \"{__name__=~'job:.*'}\"]`",
              "items": {
                "type": "string"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "rules": {
      "additionalProperties": false,
      "description": "Rules specifies how the operator configures and deployes rule-evaluator.",
      "properties": {
        "alerting": {
          "additionalProperties": false,
          "description": "Alerting contains how the rule-evaluator configures alerting.",
          "properties": {
            "alertmanagers": {
              "description": "Alertmanagers contains endpoint configuration for designated Alertmanagers.",
              "items": {
                "additionalProperties": false,
                "description": "AlertmanagerEndpoints defines a selection of a single Endpoints object containing alertmanager IPs to fire alerts against.",
                "properties": {
                  "apiVersion": {
                    "description": "Version of the Alertmanager API that rule-evaluator uses to send alerts. It can be \"v1\" or \"v2\".",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "authorization": {
                    "additionalProperties": false,
                    "description": "Authorization section for this alertmanager endpoint",
                    "properties": {
                      "credentials": {
                        "additionalProperties": false,
                        "description": "The secret's key that contains the credentials of the request",
                        "properties": {
                          "key": {
                            "description": "The key of the secret to select from.  Must be a valid secret key.",
                            "type": "string"
                          },
                          "name": {
                            "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "optional": {
                            "description": "Specify whether the Secret or its key must be defined",
                            "type": [
                              "boolean",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "key"
                        ],
                        "type": [
                          "object",
                          "null"
                        ],
                        "x-kubernetes-map-type": "atomic"
                      },
                      "type": {
                        "description": "Set the authentication type. Defaults to Bearer, Basic will cause an error",
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "Name of Endpoints object in Namespace.",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "Namespace of Endpoints object.",
                    "type": "string"
                  },
                  "pathPrefix": {
                    "description": "Prefix for the HTTP path alerts are pushed to.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "port": {
                    "description": "Port the Alertmanager API is exposed on.",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      }
                    ],
                    "x-kubernetes-int-or-string": true
                  },
                  "scheme": {
                    "description": "Scheme to use when firing alerts.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "timeout": {
                    "description": "Timeout is a per-target Alertmanager timeout when pushing alerts.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "tls": {
                    "additionalProperties": false,
                    "description": "TLS Config to use for alertmanager connection.",
                    "properties": {
                      "ca": {
                        "additionalProperties": false,
                        "description": "Struct containing the CA cert to use for the targets.",
                        "properties": {
                          "configMap": {
                            "additionalProperties": false,
                            "description": "ConfigMap containing data to use for the targets.",
                            "properties": {
                              "key": {
                                "description": "The key to select.",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "optional": {
                                "description": "Specify whether the ConfigMap or its key must be defined",
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "key"
                            ],
                            "type": [
                              "object",
                              "null"
                            ],
                            "x-kubernetes-map-type": "atomic"
                          },
                          "secret": {
                            "additionalProperties": false,
                            "description": "Secret containing data to use for the targets.",
                            "properties": {
                              "key": {
                                "description": "The key of the secret to select from.  Must be a valid secret key.",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "optional": {
                                "description": "Specify whether the Secret or its key must be defined",
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "key"
                            ],
                            "type": [
                              "object",
                              "null"
                            ],
                            "x-kubernetes-map-type": "atomic"
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "cert": {
                        "additionalProperties": false,
                        "description": "Struct containing the client cert file for the targets.",
                        "properties": {
                          "configMap": {
                            "additionalProperties": false,
                            "description": "ConfigMap containing data to use for the targets.",
                            "properties": {
                              "key": {
                                "description": "The key to select.",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "optional": {
                                "description": "Specify whether the ConfigMap or its key must be defined",
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "key"
                            ],
                            "type": [
                              "object",
                              "null"
                            ],
                            "x-kubernetes-map-type": "atomic"
                          },
                          "secret": {
                            "additionalProperties": false,
                            "description": "Secret containing data to use for the targets.",
                            "properties": {
                              "key": {
                                "description": "The key of the secret to select from.  Must be a valid secret key.",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "optional": {
                                "description": "Specify whether the Secret or its key must be defined",
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "key"
                            ],
                            "type": [
                              "object",
                              "null"
                            ],
                            "x-kubernetes-map-type": "atomic"
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "insecureSkipVerify": {
                        "description": "Disable target certificate validation.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "keySecret": {
                        "additionalProperties": false,
                        "description": "Secret containing the client key file for the targets.",
                        "properties": {
                          "key": {
                            "description": "The key of the secret to select from.  Must be a valid secret key.",
                            "type": "string"
                          },
                          "name": {
                            "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "optional": {
                            "description": "Specify whether the Secret or its key must be defined",
                            "type": [
                              "boolean",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "key"
                        ],
                        "type": [
                          "object",
                          "null"
                        ],
                        "x-kubernetes-map-type": "atomic"
                      },
                      "serverName": {
                        "description": "Used to verify the hostname for the targets.",
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  }
                },
                "required": [
                  "name",
                  "namespace",
                  "port"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "credentials": {
          "additionalProperties": false,
          "description": "A reference to GCP service account credentials with which the rule evaluator container is run. It needs to have metric read permissions against queryProjectId and metric write permissions against all projects to which rule results are written. Within GKE, this can typically be left empty if the compute default service account has the required permissions.",
          "properties": {
            "key": {
              "description": "The key of the secret to select from.  Must be a valid secret key.",
              "type": "string"
            },
            "name": {
              "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
              "type": [
                "string",
                "null"
              ]
            },
            "optional": {
              "description": "Specify whether the Secret or its key must be defined",
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          "required": [
            "key"
          ],
          "type": [
            "object",
            "null"
          ],
          "x-kubernetes-map-type": "atomic"
        },
        "externalLabels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "ExternalLabels specifies external labels that are attached to any rule results and alerts produced by rules. The precedence behavior matches that of Prometheus.",
          "type": [
            "object",
            "null"
          ]
        },
        "queryProjectID": {
          "description": "QueryProjectID is the GCP project ID to evaluate rules against. If left blank, the rule-evaluator will try attempt to infer the Project ID from the environment.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}