{
  "apiVersion": "apiextensions.k8s.io/v1",
  "kind": "CustomResourceDefinition",
  "metadata": {
    "annotations": {
      "controller-gen.kubebuilder.io/version": "v0.6.2"
    },
    "name": "traefikservices.traefik.containo.us"
  },
  "spec": {
    "group": "traefik.containo.us",
    "names": {
      "kind": "TraefikService",
      "listKind": "TraefikServiceList",
      "plural": "traefikservices",
      "singular": "traefikservice"
    },
    "scope": "Namespaced",
    "versions": [
      {
        "name": "v1alpha1",
        "schema": {
          "openAPIV3Schema": {
            "description": "TraefikService is the specification for a service (that an IngressRoute refers to) that is usually not a terminal service (i.e. not a pod of servers), as opposed to a Kubernetes Service. That is to say, it usually refers to other (children) services, which themselves can be TraefikServices or Services.",
            "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"
              },
              "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"
              },
              "metadata": {
                "type": "object"
              },
              "spec": {
                "description": "ServiceSpec defines whether a TraefikService is a load-balancer of services or a mirroring service.",
                "properties": {
                  "mirroring": {
                    "description": "Mirroring defines a mirroring service, which is composed of a main load-balancer, and a list of mirrors.",
                    "properties": {
                      "kind": {
                        "enum": [
                          "Service",
                          "TraefikService"
                        ],
                        "type": "string"
                      },
                      "maxBodySize": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "mirrors": {
                        "items": {
                          "description": "MirrorService defines one of the mirrors of a Mirroring service.",
                          "properties": {
                            "kind": {
                              "enum": [
                                "Service",
                                "TraefikService"
                              ],
                              "type": "string"
                            },
                            "name": {
                              "description": "Name is a reference to a Kubernetes Service object (for a load-balancer of servers), or to a TraefikService object (service load-balancer, mirroring, etc). The differentiation between the two is specified in the Kind field.",
                              "type": "string"
                            },
                            "namespace": {
                              "type": "string"
                            },
                            "passHostHeader": {
                              "type": "boolean"
                            },
                            "percent": {
                              "type": "integer"
                            },
                            "port": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "string"
                                }
                              ],
                              "x-kubernetes-int-or-string": true
                            },
                            "responseForwarding": {
                              "description": "ResponseForwarding holds configuration for the forward of the response.",
                              "properties": {
                                "flushInterval": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "scheme": {
                              "type": "string"
                            },
                            "serversTransport": {
                              "type": "string"
                            },
                            "sticky": {
                              "description": "Sticky holds the sticky configuration.",
                              "properties": {
                                "cookie": {
                                  "description": "Cookie holds the sticky configuration based on cookie.",
                                  "properties": {
                                    "httpOnly": {
                                      "type": "boolean"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "sameSite": {
                                      "type": "string"
                                    },
                                    "secure": {
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                }
                              },
                              "type": "object"
                            },
                            "strategy": {
                              "type": "string"
                            },
                            "weight": {
                              "description": "Weight should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin).",
                              "type": "integer"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "name": {
                        "description": "Name is a reference to a Kubernetes Service object (for a load-balancer of servers), or to a TraefikService object (service load-balancer, mirroring, etc). The differentiation between the two is specified in the Kind field.",
                        "type": "string"
                      },
                      "namespace": {
                        "type": "string"
                      },
                      "passHostHeader": {
                        "type": "boolean"
                      },
                      "port": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "string"
                          }
                        ],
                        "x-kubernetes-int-or-string": true
                      },
                      "responseForwarding": {
                        "description": "ResponseForwarding holds configuration for the forward of the response.",
                        "properties": {
                          "flushInterval": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "scheme": {
                        "type": "string"
                      },
                      "serversTransport": {
                        "type": "string"
                      },
                      "sticky": {
                        "description": "Sticky holds the sticky configuration.",
                        "properties": {
                          "cookie": {
                            "description": "Cookie holds the sticky configuration based on cookie.",
                            "properties": {
                              "httpOnly": {
                                "type": "boolean"
                              },
                              "name": {
                                "type": "string"
                              },
                              "sameSite": {
                                "type": "string"
                              },
                              "secure": {
                                "type": "boolean"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "strategy": {
                        "type": "string"
                      },
                      "weight": {
                        "description": "Weight should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin).",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object"
                  },
                  "weighted": {
                    "description": "WeightedRoundRobin defines a load-balancer of services.",
                    "properties": {
                      "services": {
                        "items": {
                          "description": "Service defines an upstream to proxy traffic.",
                          "properties": {
                            "kind": {
                              "enum": [
                                "Service",
                                "TraefikService"
                              ],
                              "type": "string"
                            },
                            "name": {
                              "description": "Name is a reference to a Kubernetes Service object (for a load-balancer of servers), or to a TraefikService object (service load-balancer, mirroring, etc). The differentiation between the two is specified in the Kind field.",
                              "type": "string"
                            },
                            "namespace": {
                              "type": "string"
                            },
                            "passHostHeader": {
                              "type": "boolean"
                            },
                            "port": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "string"
                                }
                              ],
                              "x-kubernetes-int-or-string": true
                            },
                            "responseForwarding": {
                              "description": "ResponseForwarding holds configuration for the forward of the response.",
                              "properties": {
                                "flushInterval": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "scheme": {
                              "type": "string"
                            },
                            "serversTransport": {
                              "type": "string"
                            },
                            "sticky": {
                              "description": "Sticky holds the sticky configuration.",
                              "properties": {
                                "cookie": {
                                  "description": "Cookie holds the sticky configuration based on cookie.",
                                  "properties": {
                                    "httpOnly": {
                                      "type": "boolean"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "sameSite": {
                                      "type": "string"
                                    },
                                    "secure": {
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                }
                              },
                              "type": "object"
                            },
                            "strategy": {
                              "type": "string"
                            },
                            "weight": {
                              "description": "Weight should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin).",
                              "type": "integer"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "sticky": {
                        "description": "Sticky holds the sticky configuration.",
                        "properties": {
                          "cookie": {
                            "description": "Cookie holds the sticky configuration based on cookie.",
                            "properties": {
                              "httpOnly": {
                                "type": "boolean"
                              },
                              "name": {
                                "type": "string"
                              },
                              "sameSite": {
                                "type": "string"
                              },
                              "secure": {
                                "type": "boolean"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "metadata",
              "spec"
            ],
            "type": "object"
          }
        },
        "served": true,
        "storage": true
      }
    ]
  },
  "status": {
    "acceptedNames": {
      "kind": "",
      "plural": ""
    },
    "conditions": [],
    "storedVersions": []
  }
}
