---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.14.0
  name: meshhttproutes.kuma.io
spec:
  group: kuma.io
  names:
    categories:
    - kuma
    kind: MeshHTTPRoute
    listKind: MeshHTTPRouteList
    plural: meshhttproutes
    singular: meshhttproute
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.targetRef.kind
      name: TargetRef Kind
      type: string
    - jsonPath: .spec.targetRef.name
      name: TargetRef Name
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        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: Spec is the specification of the Kuma MeshHTTPRoute resource.
            properties:
              targetRef:
                description: |-
                  TargetRef is a reference to the resource the policy takes an effect on.
                  The resource could be either a real store object or virtual resource
                  defined inplace.
                properties:
                  kind:
                    description: Kind of the referenced resource
                    enum:
                    - Mesh
                    - MeshSubset
                    - MeshGateway
                    - MeshService
                    - MeshServiceSubset
                    - MeshHTTPRoute
                    type: string
                  mesh:
                    description: Mesh is reserved for future use to identify cross
                      mesh resources.
                    type: string
                  name:
                    description: |-
                      Name of the referenced resource. Can only be used with kinds: `MeshService`,
                      `MeshServiceSubset` and `MeshGatewayRoute`
                    type: string
                  proxyTypes:
                    description: |-
                      ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                      all data plane types are targeted by the policy.
                    items:
                      enum:
                      - Sidecar
                      - Gateway
                      type: string
                    minItems: 1
                    type: array
                  tags:
                    additionalProperties:
                      type: string
                    description: |-
                      Tags used to select a subset of proxies by tags. Can only be used with kinds
                      `MeshSubset` and `MeshServiceSubset`
                    type: object
                type: object
              to:
                description: To matches destination services of requests and holds
                  configuration.
                items:
                  properties:
                    hostnames:
                      description: |-
                        Hostnames is only valid when targeting MeshGateway and limits the
                        effects of the rules to requests to this hostname.
                        Given hostnames must intersect with the hostname of the listeners the
                        route attaches to.
                      items:
                        type: string
                      type: array
                    rules:
                      description: |-
                        Rules contains the routing rules applies to a combination of top-level
                        targetRef and the targetRef in this entry.
                      items:
                        properties:
                          default:
                            description: |-
                              Default holds routing rules that can be merged with rules from other
                              policies.
                            properties:
                              backendRefs:
                                items:
                                  description: BackendRef defines where to forward
                                    traffic.
                                  properties:
                                    kind:
                                      description: Kind of the referenced resource
                                      enum:
                                      - Mesh
                                      - MeshSubset
                                      - MeshGateway
                                      - MeshService
                                      - MeshServiceSubset
                                      - MeshHTTPRoute
                                      type: string
                                    mesh:
                                      description: Mesh is reserved for future use
                                        to identify cross mesh resources.
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referenced resource. Can only be used with kinds: `MeshService`,
                                        `MeshServiceSubset` and `MeshGatewayRoute`
                                      type: string
                                    port:
                                      description: Port is only supported when this
                                        ref refers to a real MeshService object
                                      format: int32
                                      type: integer
                                    proxyTypes:
                                      description: |-
                                        ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                                        all data plane types are targeted by the policy.
                                      items:
                                        enum:
                                        - Sidecar
                                        - Gateway
                                        type: string
                                      minItems: 1
                                      type: array
                                    tags:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        Tags used to select a subset of proxies by tags. Can only be used with kinds
                                        `MeshSubset` and `MeshServiceSubset`
                                      type: object
                                    weight:
                                      default: 1
                                      minimum: 0
                                      type: integer
                                  type: object
                                type: array
                              filters:
                                items:
                                  properties:
                                    requestHeaderModifier:
                                      description: |-
                                        Only one action is supported per header name.
                                        Configuration to set or add multiple values for a header must use RFC 7230
                                        header value formatting, separating each value with a comma.
                                      properties:
                                        add:
                                          items:
                                            properties:
                                              name:
                                                maxLength: 256
                                                minLength: 1
                                                pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - name
                                            - value
                                            type: object
                                          maxItems: 16
                                          type: array
                                          x-kubernetes-list-map-keys:
                                          - name
                                          x-kubernetes-list-type: map
                                        remove:
                                          items:
                                            type: string
                                          maxItems: 16
                                          type: array
                                        set:
                                          items:
                                            properties:
                                              name:
                                                maxLength: 256
                                                minLength: 1
                                                pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - name
                                            - value
                                            type: object
                                          maxItems: 16
                                          type: array
                                          x-kubernetes-list-map-keys:
                                          - name
                                          x-kubernetes-list-type: map
                                      type: object
                                    requestMirror:
                                      properties:
                                        backendRef:
                                          description: TODO forbid weight
                                          properties:
                                            kind:
                                              description: Kind of the referenced
                                                resource
                                              enum:
                                              - Mesh
                                              - MeshSubset
                                              - MeshGateway
                                              - MeshService
                                              - MeshServiceSubset
                                              - MeshHTTPRoute
                                              type: string
                                            mesh:
                                              description: Mesh is reserved for future
                                                use to identify cross mesh resources.
                                              type: string
                                            name:
                                              description: |-
                                                Name of the referenced resource. Can only be used with kinds: `MeshService`,
                                                `MeshServiceSubset` and `MeshGatewayRoute`
                                              type: string
                                            port:
                                              description: Port is only supported
                                                when this ref refers to a real MeshService
                                                object
                                              format: int32
                                              type: integer
                                            proxyTypes:
                                              description: |-
                                                ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                                                all data plane types are targeted by the policy.
                                              items:
                                                enum:
                                                - Sidecar
                                                - Gateway
                                                type: string
                                              minItems: 1
                                              type: array
                                            tags:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                Tags used to select a subset of proxies by tags. Can only be used with kinds
                                                `MeshSubset` and `MeshServiceSubset`
                                              type: object
                                            weight:
                                              default: 1
                                              minimum: 0
                                              type: integer
                                          type: object
                                        percentage:
                                          anyOf:
                                          - type: integer
                                          - type: string
                                          description: |-
                                            Percentage of requests to mirror. If not specified, all requests
                                            to the target cluster will be mirrored.
                                          x-kubernetes-int-or-string: true
                                      required:
                                      - backendRef
                                      type: object
                                    requestRedirect:
                                      properties:
                                        hostname:
                                          description: |-
                                            PreciseHostname is the fully qualified domain name of a network host. This
                                            matches the RFC 1123 definition of a hostname with 1 notable exception that
                                            numeric IP addresses are not allowed.


                                            Note that as per RFC1035 and RFC1123, a *label* must consist of lower case
                                            alphanumeric characters or '-', and must start and end with an alphanumeric
                                            character. No other punctuation is allowed.
                                          maxLength: 253
                                          minLength: 1
                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                                          type: string
                                        path:
                                          description: |-
                                            Path defines parameters used to modify the path of the incoming request.
                                            The modified path is then used to construct the location header.
                                            When empty, the request path is used as-is.
                                          properties:
                                            replaceFullPath:
                                              type: string
                                            replacePrefixMatch:
                                              type: string
                                            type:
                                              enum:
                                              - ReplaceFullPath
                                              - ReplacePrefixMatch
                                              type: string
                                          required:
                                          - type
                                          type: object
                                        port:
                                          description: |-
                                            Port is the port to be used in the value of the `Location`
                                            header in the response.
                                            When empty, port (if specified) of the request is used.
                                          format: int32
                                          maximum: 65535
                                          minimum: 1
                                          type: integer
                                        scheme:
                                          enum:
                                          - http
                                          - https
                                          type: string
                                        statusCode:
                                          default: 302
                                          description: StatusCode is the HTTP status
                                            code to be used in response.
                                          enum:
                                          - 301
                                          - 302
                                          - 303
                                          - 307
                                          - 308
                                          type: integer
                                      type: object
                                    responseHeaderModifier:
                                      description: |-
                                        Only one action is supported per header name.
                                        Configuration to set or add multiple values for a header must use RFC 7230
                                        header value formatting, separating each value with a comma.
                                      properties:
                                        add:
                                          items:
                                            properties:
                                              name:
                                                maxLength: 256
                                                minLength: 1
                                                pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - name
                                            - value
                                            type: object
                                          maxItems: 16
                                          type: array
                                          x-kubernetes-list-map-keys:
                                          - name
                                          x-kubernetes-list-type: map
                                        remove:
                                          items:
                                            type: string
                                          maxItems: 16
                                          type: array
                                        set:
                                          items:
                                            properties:
                                              name:
                                                maxLength: 256
                                                minLength: 1
                                                pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - name
                                            - value
                                            type: object
                                          maxItems: 16
                                          type: array
                                          x-kubernetes-list-map-keys:
                                          - name
                                          x-kubernetes-list-type: map
                                      type: object
                                    type:
                                      enum:
                                      - RequestHeaderModifier
                                      - ResponseHeaderModifier
                                      - RequestRedirect
                                      - URLRewrite
                                      - RequestMirror
                                      type: string
                                    urlRewrite:
                                      properties:
                                        hostToBackendHostname:
                                          description: |-
                                            HostToBackendHostname rewrites the hostname to the hostname of the
                                            upstream host. This option is only available when targeting MeshGateways.
                                          type: boolean
                                        hostname:
                                          description: Hostname is the value to be
                                            used to replace the host header value
                                            during forwarding.
                                          maxLength: 253
                                          minLength: 1
                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                                          type: string
                                        path:
                                          description: Path defines a path rewrite.
                                          properties:
                                            replaceFullPath:
                                              type: string
                                            replacePrefixMatch:
                                              type: string
                                            type:
                                              enum:
                                              - ReplaceFullPath
                                              - ReplacePrefixMatch
                                              type: string
                                          required:
                                          - type
                                          type: object
                                      type: object
                                  required:
                                  - type
                                  type: object
                                type: array
                            type: object
                          matches:
                            description: |-
                              Matches describes how to match HTTP requests this rule should be applied
                              to.
                            items:
                              properties:
                                headers:
                                  items:
                                    description: |-
                                      HeaderMatch describes how to select an HTTP route by matching HTTP request
                                      headers.
                                    properties:
                                      name:
                                        description: |-
                                          Name is the name of the HTTP Header to be matched. Name MUST be lower case
                                          as they will be handled with case insensitivity (See https://tools.ietf.org/html/rfc7230#section-3.2).
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      type:
                                        default: Exact
                                        description: Type specifies how to match against
                                          the value of the header.
                                        enum:
                                        - Exact
                                        - Present
                                        - RegularExpression
                                        - Absent
                                        - Prefix
                                        type: string
                                      value:
                                        description: Value is the value of HTTP Header
                                          to be matched.
                                        type: string
                                    required:
                                    - name
                                    type: object
                                  type: array
                                method:
                                  enum:
                                  - CONNECT
                                  - DELETE
                                  - GET
                                  - HEAD
                                  - OPTIONS
                                  - PATCH
                                  - POST
                                  - PUT
                                  - TRACE
                                  type: string
                                path:
                                  properties:
                                    type:
                                      enum:
                                      - Exact
                                      - PathPrefix
                                      - RegularExpression
                                      type: string
                                    value:
                                      description: |-
                                        Exact or prefix matches must be an absolute path. A prefix matches only
                                        if separated by a slash or the entire path.
                                      minLength: 1
                                      type: string
                                  required:
                                  - type
                                  - value
                                  type: object
                                queryParams:
                                  description: |-
                                    QueryParams matches based on HTTP URL query parameters. Multiple matches
                                    are ANDed together such that all listed matches must succeed.
                                  items:
                                    properties:
                                      name:
                                        minLength: 1
                                        type: string
                                      type:
                                        enum:
                                        - Exact
                                        - RegularExpression
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - type
                                    - value
                                    type: object
                                  type: array
                              type: object
                            minItems: 1
                            type: array
                        required:
                        - default
                        - matches
                        type: object
                      type: array
                    targetRef:
                      description: |-
                        TargetRef is a reference to the resource that represents a group of
                        request destinations.
                      properties:
                        kind:
                          description: Kind of the referenced resource
                          enum:
                          - Mesh
                          - MeshSubset
                          - MeshGateway
                          - MeshService
                          - MeshServiceSubset
                          - MeshHTTPRoute
                          type: string
                        mesh:
                          description: Mesh is reserved for future use to identify
                            cross mesh resources.
                          type: string
                        name:
                          description: |-
                            Name of the referenced resource. Can only be used with kinds: `MeshService`,
                            `MeshServiceSubset` and `MeshGatewayRoute`
                          type: string
                        proxyTypes:
                          description: |-
                            ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                            all data plane types are targeted by the policy.
                          items:
                            enum:
                            - Sidecar
                            - Gateway
                            type: string
                          minItems: 1
                          type: array
                        tags:
                          additionalProperties:
                            type: string
                          description: |-
                            Tags used to select a subset of proxies by tags. Can only be used with kinds
                            `MeshSubset` and `MeshServiceSubset`
                          type: object
                      type: object
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
