{
  "description": "Probe defines monitoring for a set of static targets or ingresses.",
  "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": "Specification of desired Ingress selection for target discovery by Prometheus.",
      "properties": {
        "authorization": {
          "description": "Authorization section for this endpoint",
          "properties": {
            "credentials": {
              "description": "Selects a key of a Secret in the namespace that contains the credentials for authentication.",
              "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                  "type": "string"
                },
                "optional": {
                  "description": "Specify whether the Secret or its key must be defined",
                  "type": "boolean"
                }
              },
              "required": [
                "key"
              ],
              "type": "object",
              "x-kubernetes-map-type": "atomic",
              "additionalProperties": false
            },
            "type": {
              "description": "Defines the authentication type. The value is case-insensitive.\n\n\n\"Basic\" is not a supported value.\n\n\nDefault: \"Bearer\"",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "basicAuth": {
          "description": "BasicAuth allow an endpoint to authenticate over basic authentication.\nMore info: https://prometheus.io/docs/operating/configuration/#endpoint",
          "properties": {
            "password": {
              "description": "`password` specifies a key of a Secret containing the password for\nauthentication.",
              "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                  "type": "string"
                },
                "optional": {
                  "description": "Specify whether the Secret or its key must be defined",
                  "type": "boolean"
                }
              },
              "required": [
                "key"
              ],
              "type": "object",
              "x-kubernetes-map-type": "atomic",
              "additionalProperties": false
            },
            "username": {
              "description": "`username` specifies a key of a Secret containing the username for\nauthentication.",
              "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                  "type": "string"
                },
                "optional": {
                  "description": "Specify whether the Secret or its key must be defined",
                  "type": "boolean"
                }
              },
              "required": [
                "key"
              ],
              "type": "object",
              "x-kubernetes-map-type": "atomic",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "bearerTokenSecret": {
          "description": "Secret to mount to read bearer token for scraping targets. The secret\nneeds to be in the same namespace as the probe and accessible by\nthe Prometheus Operator.",
          "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
              "type": "string"
            },
            "optional": {
              "description": "Specify whether the Secret or its key must be defined",
              "type": "boolean"
            }
          },
          "required": [
            "key"
          ],
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "interval": {
          "description": "Interval at which targets are probed using the configured prober.\nIf not specified Prometheus' global scrape interval is used.",
          "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"
        },
        "jobName": {
          "description": "The job name assigned to scraped metrics by default.",
          "type": "string"
        },
        "keepDroppedTargets": {
          "description": "Per-scrape limit on the number of targets dropped by relabeling\nthat will be kept in memory. 0 means no limit.\n\n\nIt requires Prometheus >= v2.47.0.",
          "format": "int64",
          "type": "integer"
        },
        "labelLimit": {
          "description": "Per-scrape limit on number of labels that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.",
          "format": "int64",
          "type": "integer"
        },
        "labelNameLengthLimit": {
          "description": "Per-scrape limit on length of labels name that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.",
          "format": "int64",
          "type": "integer"
        },
        "labelValueLengthLimit": {
          "description": "Per-scrape limit on length of labels value that will be accepted for a sample.\nOnly valid in Prometheus versions 2.27.0 and newer.",
          "format": "int64",
          "type": "integer"
        },
        "metricRelabelings": {
          "description": "MetricRelabelConfigs to apply to samples before ingestion.",
          "items": {
            "description": "RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\nscraped samples and remote write samples.\n\n\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config",
            "properties": {
              "action": {
                "default": "replace",
                "description": "Action to perform based on the regex matching.\n\n\n`Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n`DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n\nDefault: \"Replace\"",
                "enum": [
                  "replace",
                  "Replace",
                  "keep",
                  "Keep",
                  "drop",
                  "Drop",
                  "hashmod",
                  "HashMod",
                  "labelmap",
                  "LabelMap",
                  "labeldrop",
                  "LabelDrop",
                  "labelkeep",
                  "LabelKeep",
                  "lowercase",
                  "Lowercase",
                  "uppercase",
                  "Uppercase",
                  "keepequal",
                  "KeepEqual",
                  "dropequal",
                  "DropEqual"
                ],
                "type": "string"
              },
              "modulus": {
                "description": "Modulus to take of the hash of the source label values.\n\n\nOnly applicable when the action is `HashMod`.",
                "format": "int64",
                "type": "integer"
              },
              "regex": {
                "description": "Regular expression against which the extracted value is matched.",
                "type": "string"
              },
              "replacement": {
                "description": "Replacement value against which a Replace action is performed if the\nregular expression matches.\n\n\nRegex capture groups are available.",
                "type": "string"
              },
              "separator": {
                "description": "Separator is the string between concatenated SourceLabels.",
                "type": "string"
              },
              "sourceLabels": {
                "description": "The source labels select values from existing labels. Their content is\nconcatenated using the configured Separator and matched against the\nconfigured regular expression.",
                "items": {
                  "description": "LabelName is a valid Prometheus label name which may only contain ASCII\nletters, numbers, as well as underscores.",
                  "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
                  "type": "string"
                },
                "type": "array"
              },
              "targetLabel": {
                "description": "Label to which the resulting string is written in a replacement.\n\n\nIt is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n`KeepEqual` and `DropEqual` actions.\n\n\nRegex capture groups are available.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "module": {
          "description": "The module to use for probing specifying how to probe the target.\nExample module configuring in the blackbox exporter:\nhttps://github.com/prometheus/blackbox_exporter/blob/master/example.yml",
          "type": "string"
        },
        "oauth2": {
          "description": "OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.",
          "properties": {
            "clientId": {
              "description": "`clientId` specifies a key of a Secret or ConfigMap containing the\nOAuth2 client's ID.",
              "properties": {
                "configMap": {
                  "description": "ConfigMap containing data to use for the targets.",
                  "properties": {
                    "key": {
                      "description": "The key to select.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                      "type": "string"
                    },
                    "optional": {
                      "description": "Specify whether the ConfigMap or its key must be defined",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "type": "object",
                  "x-kubernetes-map-type": "atomic",
                  "additionalProperties": false
                },
                "secret": {
                  "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                      "type": "string"
                    },
                    "optional": {
                      "description": "Specify whether the Secret or its key must be defined",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "type": "object",
                  "x-kubernetes-map-type": "atomic",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "clientSecret": {
              "description": "`clientSecret` specifies a key of a Secret containing the OAuth2\nclient's secret.",
              "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                  "type": "string"
                },
                "optional": {
                  "description": "Specify whether the Secret or its key must be defined",
                  "type": "boolean"
                }
              },
              "required": [
                "key"
              ],
              "type": "object",
              "x-kubernetes-map-type": "atomic",
              "additionalProperties": false
            },
            "endpointParams": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "`endpointParams` configures the HTTP parameters to append to the token\nURL.",
              "type": "object"
            },
            "scopes": {
              "description": "`scopes` defines the OAuth2 scopes used for the token request.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "tokenUrl": {
              "description": "`tokenURL` configures the URL to fetch the token from.",
              "minLength": 1,
              "type": "string"
            }
          },
          "required": [
            "clientId",
            "clientSecret",
            "tokenUrl"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "prober": {
          "description": "Specification for the prober to use for probing targets.\nThe prober.URL parameter is required. Targets cannot be probed if left empty.",
          "properties": {
            "path": {
              "default": "/probe",
              "description": "Path to collect metrics from.\nDefaults to `/probe`.",
              "type": "string"
            },
            "proxyUrl": {
              "description": "Optional ProxyURL.",
              "type": "string"
            },
            "scheme": {
              "description": "HTTP scheme to use for scraping.\n`http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling.\nIf empty, Prometheus uses the default value `http`.",
              "enum": [
                "http",
                "https"
              ],
              "type": "string"
            },
            "url": {
              "description": "Mandatory URL of the prober.",
              "type": "string"
            }
          },
          "required": [
            "url"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "sampleLimit": {
          "description": "SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.",
          "format": "int64",
          "type": "integer"
        },
        "scrapeClass": {
          "description": "The scrape class to apply.",
          "minLength": 1,
          "type": "string"
        },
        "scrapeProtocols": {
          "description": "`scrapeProtocols` defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\n\n\nIf unset, Prometheus uses its default value.\n\n\nIt requires Prometheus >= v2.49.0.",
          "items": {
            "description": "ScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\nSupported values are:\n* `OpenMetricsText0.0.1`\n* `OpenMetricsText1.0.0`\n* `PrometheusProto`\n* `PrometheusText0.0.4`",
            "enum": [
              "PrometheusProto",
              "OpenMetricsText0.0.1",
              "OpenMetricsText1.0.0",
              "PrometheusText0.0.4"
            ],
            "type": "string"
          },
          "type": "array",
          "x-kubernetes-list-type": "set"
        },
        "scrapeTimeout": {
          "description": "Timeout for scraping metrics from the Prometheus exporter.\nIf not specified, the Prometheus global scrape timeout is used.",
          "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"
        },
        "targetLimit": {
          "description": "TargetLimit defines a limit on the number of scraped targets that will be accepted.",
          "format": "int64",
          "type": "integer"
        },
        "targets": {
          "description": "Targets defines a set of static or dynamically discovered targets to probe.",
          "properties": {
            "ingress": {
              "description": "ingress defines the Ingress objects to probe and the relabeling\nconfiguration.\nIf `staticConfig` is also defined, `staticConfig` takes precedence.",
              "properties": {
                "namespaceSelector": {
                  "description": "From which namespaces to select Ingress objects.",
                  "properties": {
                    "any": {
                      "description": "Boolean describing whether all namespaces are selected in contrast to a\nlist restricting them.",
                      "type": "boolean"
                    },
                    "matchNames": {
                      "description": "List of namespace names to select from.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "relabelingConfigs": {
                  "description": "RelabelConfigs to apply to the label set of the target before it gets\nscraped.\nThe original ingress address is available via the\n`__tmp_prometheus_ingress_address` label. It can be used to customize the\nprobed URL.\nThe original scrape job's name is available via the `__tmp_prometheus_job_name` label.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config",
                  "items": {
                    "description": "RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\nscraped samples and remote write samples.\n\n\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config",
                    "properties": {
                      "action": {
                        "default": "replace",
                        "description": "Action to perform based on the regex matching.\n\n\n`Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n`DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n\nDefault: \"Replace\"",
                        "enum": [
                          "replace",
                          "Replace",
                          "keep",
                          "Keep",
                          "drop",
                          "Drop",
                          "hashmod",
                          "HashMod",
                          "labelmap",
                          "LabelMap",
                          "labeldrop",
                          "LabelDrop",
                          "labelkeep",
                          "LabelKeep",
                          "lowercase",
                          "Lowercase",
                          "uppercase",
                          "Uppercase",
                          "keepequal",
                          "KeepEqual",
                          "dropequal",
                          "DropEqual"
                        ],
                        "type": "string"
                      },
                      "modulus": {
                        "description": "Modulus to take of the hash of the source label values.\n\n\nOnly applicable when the action is `HashMod`.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "regex": {
                        "description": "Regular expression against which the extracted value is matched.",
                        "type": "string"
                      },
                      "replacement": {
                        "description": "Replacement value against which a Replace action is performed if the\nregular expression matches.\n\n\nRegex capture groups are available.",
                        "type": "string"
                      },
                      "separator": {
                        "description": "Separator is the string between concatenated SourceLabels.",
                        "type": "string"
                      },
                      "sourceLabels": {
                        "description": "The source labels select values from existing labels. Their content is\nconcatenated using the configured Separator and matched against the\nconfigured regular expression.",
                        "items": {
                          "description": "LabelName is a valid Prometheus label name which may only contain ASCII\nletters, numbers, as well as underscores.",
                          "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "targetLabel": {
                        "description": "Label to which the resulting string is written in a replacement.\n\n\nIt is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n`KeepEqual` and `DropEqual` actions.\n\n\nRegex capture groups are available.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "selector": {
                  "description": "Selector to select the Ingress objects.",
                  "properties": {
                    "matchExpressions": {
                      "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                      "items": {
                        "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.",
                        "properties": {
                          "key": {
                            "description": "key is the label key that the selector applies to.",
                            "type": "string"
                          },
                          "operator": {
                            "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.",
                            "type": "string"
                          },
                          "values": {
                            "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        },
                        "required": [
                          "key",
                          "operator"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "matchLabels": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "x-kubernetes-map-type": "atomic",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "staticConfig": {
              "description": "staticConfig defines the static list of targets to probe and the\nrelabeling configuration.\nIf `ingress` is also defined, `staticConfig` takes precedence.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.",
              "properties": {
                "labels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Labels assigned to all metrics scraped from the targets.",
                  "type": "object"
                },
                "relabelingConfigs": {
                  "description": "RelabelConfigs to apply to the label set of the targets before it gets\nscraped.\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config",
                  "items": {
                    "description": "RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\nscraped samples and remote write samples.\n\n\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config",
                    "properties": {
                      "action": {
                        "default": "replace",
                        "description": "Action to perform based on the regex matching.\n\n\n`Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n`DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\n\nDefault: \"Replace\"",
                        "enum": [
                          "replace",
                          "Replace",
                          "keep",
                          "Keep",
                          "drop",
                          "Drop",
                          "hashmod",
                          "HashMod",
                          "labelmap",
                          "LabelMap",
                          "labeldrop",
                          "LabelDrop",
                          "labelkeep",
                          "LabelKeep",
                          "lowercase",
                          "Lowercase",
                          "uppercase",
                          "Uppercase",
                          "keepequal",
                          "KeepEqual",
                          "dropequal",
                          "DropEqual"
                        ],
                        "type": "string"
                      },
                      "modulus": {
                        "description": "Modulus to take of the hash of the source label values.\n\n\nOnly applicable when the action is `HashMod`.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "regex": {
                        "description": "Regular expression against which the extracted value is matched.",
                        "type": "string"
                      },
                      "replacement": {
                        "description": "Replacement value against which a Replace action is performed if the\nregular expression matches.\n\n\nRegex capture groups are available.",
                        "type": "string"
                      },
                      "separator": {
                        "description": "Separator is the string between concatenated SourceLabels.",
                        "type": "string"
                      },
                      "sourceLabels": {
                        "description": "The source labels select values from existing labels. Their content is\nconcatenated using the configured Separator and matched against the\nconfigured regular expression.",
                        "items": {
                          "description": "LabelName is a valid Prometheus label name which may only contain ASCII\nletters, numbers, as well as underscores.",
                          "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "targetLabel": {
                        "description": "Label to which the resulting string is written in a replacement.\n\n\nIt is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n`KeepEqual` and `DropEqual` actions.\n\n\nRegex capture groups are available.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "static": {
                  "description": "The list of hosts to probe.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tlsConfig": {
          "description": "TLS configuration to use when scraping the endpoint.",
          "properties": {
            "ca": {
              "description": "Certificate authority used when verifying server certificates.",
              "properties": {
                "configMap": {
                  "description": "ConfigMap containing data to use for the targets.",
                  "properties": {
                    "key": {
                      "description": "The key to select.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                      "type": "string"
                    },
                    "optional": {
                      "description": "Specify whether the ConfigMap or its key must be defined",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "type": "object",
                  "x-kubernetes-map-type": "atomic",
                  "additionalProperties": false
                },
                "secret": {
                  "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                      "type": "string"
                    },
                    "optional": {
                      "description": "Specify whether the Secret or its key must be defined",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "type": "object",
                  "x-kubernetes-map-type": "atomic",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "cert": {
              "description": "Client certificate to present when doing client-authentication.",
              "properties": {
                "configMap": {
                  "description": "ConfigMap containing data to use for the targets.",
                  "properties": {
                    "key": {
                      "description": "The key to select.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                      "type": "string"
                    },
                    "optional": {
                      "description": "Specify whether the ConfigMap or its key must be defined",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "type": "object",
                  "x-kubernetes-map-type": "atomic",
                  "additionalProperties": false
                },
                "secret": {
                  "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                      "type": "string"
                    },
                    "optional": {
                      "description": "Specify whether the Secret or its key must be defined",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "type": "object",
                  "x-kubernetes-map-type": "atomic",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "insecureSkipVerify": {
              "description": "Disable target certificate validation.",
              "type": "boolean"
            },
            "keySecret": {
              "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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?",
                  "type": "string"
                },
                "optional": {
                  "description": "Specify whether the Secret or its key must be defined",
                  "type": "boolean"
                }
              },
              "required": [
                "key"
              ],
              "type": "object",
              "x-kubernetes-map-type": "atomic",
              "additionalProperties": false
            },
            "serverName": {
              "description": "Used to verify the hostname for the targets.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
