github.com/oam-dev/kubevela@v1.9.11/pkg/velaql/providers/query/testdata/gateway/crds/gateway.networking.k8s.io_httproutes.yaml (about)

     1  apiVersion: apiextensions.k8s.io/v1
     2  kind: CustomResourceDefinition
     3  metadata:
     4    annotations:
     5      api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/1538
     6      gateway.networking.k8s.io/bundle-version: v0.6.2
     7      gateway.networking.k8s.io/channel: standard
     8    creationTimestamp: null
     9    name: httproutes.gateway.networking.k8s.io
    10  spec:
    11    group: gateway.networking.k8s.io
    12    names:
    13      categories:
    14        - gateway-api
    15      kind: HTTPRoute
    16      listKind: HTTPRouteList
    17      plural: httproutes
    18      singular: httproute
    19    scope: Namespaced
    20    versions:
    21      - additionalPrinterColumns:
    22          - jsonPath: .spec.hostnames
    23            name: Hostnames
    24            type: string
    25          - jsonPath: .metadata.creationTimestamp
    26            name: Age
    27            type: date
    28        deprecated: true
    29        deprecationWarning: The v1alpha2 version of HTTPRoute has been deprecated and
    30          will be removed in a future release of the API. Please upgrade to v1beta1.
    31        name: v1alpha2
    32        schema:
    33          openAPIV3Schema:
    34            description: HTTPRoute provides a way to route HTTP requests. This includes
    35              the capability to match requests by hostname, path, header, or query param.
    36              Filters can be used to specify additional processing steps. Backends specify
    37              where matching requests should be routed.
    38            properties:
    39              apiVersion:
    40                description: 'APIVersion defines the versioned schema of this representation
    41                of an object. Servers should convert recognized schemas to the latest
    42                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
    43                type: string
    44              kind:
    45                description: 'Kind is a string value representing the REST resource this
    46                object represents. Servers may infer this from the endpoint the client
    47                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
    48                type: string
    49              metadata:
    50                type: object
    51              spec:
    52                description: Spec defines the desired state of HTTPRoute.
    53                properties:
    54                  hostnames:
    55                    description: "Hostnames defines a set of hostname that should match
    56                    against the HTTP Host header to select a HTTPRoute to process the
    57                    request. This matches the RFC 1123 definition of a hostname with
    58                    2 notable exceptions: \n 1. IPs are not allowed. 2. A hostname may
    59                    be prefixed with a wildcard label (`*.`). The wildcard label must
    60                    appear by itself as the first label. \n If a hostname is specified
    61                    by both the Listener and HTTPRoute, there must be at least one intersecting
    62                    hostname for the HTTPRoute to be attached to the Listener. For example:
    63                    \n * A Listener with `test.example.com` as the hostname matches
    64                    HTTPRoutes that have either not specified any hostnames, or have
    65                    specified at least one of `test.example.com` or `*.example.com`.
    66                    * A Listener with `*.example.com` as the hostname matches HTTPRoutes
    67                    that have either not specified any hostnames or have specified at
    68                    least one hostname that matches the Listener hostname. For example,
    69                    `*.example.com`, `test.example.com`, and `foo.test.example.com`
    70                    would all match. On the other hand, `example.com` and `test.example.net`
    71                    would not match. \n Hostnames that are prefixed with a wildcard
    72                    label (`*.`) are interpreted as a suffix match. That means that
    73                    a match for `*.example.com` would match both `test.example.com`,
    74                    and `foo.test.example.com`, but not `example.com`. \n If both the
    75                    Listener and HTTPRoute have specified hostnames, any HTTPRoute hostnames
    76                    that do not match the Listener hostname MUST be ignored. For example,
    77                    if a Listener specified `*.example.com`, and the HTTPRoute specified
    78                    `test.example.com` and `test.example.net`, `test.example.net` must
    79                    not be considered for a match. \n If both the Listener and HTTPRoute
    80                    have specified hostnames, and none match with the criteria above,
    81                    then the HTTPRoute is not accepted. The implementation must raise
    82                    an 'Accepted' Condition with a status of `False` in the corresponding
    83                    RouteParentStatus. \n In the event that multiple HTTPRoutes specify
    84                    intersecting hostnames (e.g. overlapping wildcard matching and exact
    85                    matching hostnames), precedence must be given to rules from the
    86                    HTTPRoute with the largest number of: \n * Characters in a matching
    87                    non-wildcard hostname. * Characters in a matching hostname. \n If
    88                    ties exist across multiple Routes, the matching precedence rules
    89                    for HTTPRouteMatches takes over. \n Support: Core"
    90                    items:
    91                      description: "Hostname is the fully qualified domain name of a network
    92                      host. This matches the RFC 1123 definition of a hostname with
    93                      2 notable exceptions: \n 1. IPs are not allowed. 2. A hostname
    94                      may be prefixed with a wildcard label (`*.`). The wildcard label
    95                      must appear by itself as the first label. \n Hostname can be \"precise\"
    96                      which is a domain name without the terminating dot of a network
    97                      host (e.g. \"foo.example.com\") or \"wildcard\", which is a domain
    98                      name prefixed with a single wildcard label (e.g. `*.example.com`).
    99                      \n Note that as per RFC1035 and RFC1123, a *label* must consist
   100                      of lower case alphanumeric characters or '-', and must start and
   101                      end with an alphanumeric character. No other punctuation is allowed."
   102                      maxLength: 253
   103                      minLength: 1
   104                      pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   105                      type: string
   106                    maxItems: 16
   107                    type: array
   108                  parentRefs:
   109                    description: "ParentRefs references the resources (usually Gateways)
   110                    that a Route wants to be attached to. Note that the referenced parent
   111                    resource needs to allow this for the attachment to be complete.
   112                    For Gateways, that means the Gateway needs to allow attachment from
   113                    Routes of this kind and namespace. \n The only kind of parent resource
   114                    with \"Core\" support is Gateway. This API may be extended in the
   115                    future to support additional kinds of parent resources such as one
   116                    of the route kinds. \n It is invalid to reference an identical parent
   117                    more than once. It is valid to reference multiple distinct sections
   118                    within the same parent resource, such as 2 Listeners within a Gateway.
   119                    \n It is possible to separately reference multiple distinct objects
   120                    that may be collapsed by an implementation. For example, some implementations
   121                    may choose to merge compatible Gateway Listeners together. If that
   122                    is the case, the list of routes attached to those resources should
   123                    also be merged. \n Note that for ParentRefs that cross namespace
   124                    boundaries, there are specific rules. Cross-namespace references
   125                    are only valid if they are explicitly allowed by something in the
   126                    namespace they are referring to. For example, Gateway has the AllowedRoutes
   127                    field, and ReferenceGrant provides a generic way to enable any other
   128                    kind of cross-namespace reference."
   129                    items:
   130                      description: "ParentReference identifies an API object (usually
   131                      a Gateway) that can be considered a parent of this resource (usually
   132                      a route). The only kind of parent resource with \"Core\" support
   133                      is Gateway. This API may be extended in the future to support
   134                      additional kinds of parent resources, such as HTTPRoute. \n The
   135                      API object must be valid in the cluster; the Group and Kind must
   136                      be registered in the cluster for this reference to be valid."
   137                      properties:
   138                        group:
   139                          default: gateway.networking.k8s.io
   140                          description: "Group is the group of the referent. When unspecified,
   141                          \"gateway.networking.k8s.io\" is inferred. To set the core
   142                          API group (such as for a \"Service\" kind referent), Group
   143                          must be explicitly set to \"\" (empty string). \n Support:
   144                          Core"
   145                          maxLength: 253
   146                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   147                          type: string
   148                        kind:
   149                          default: Gateway
   150                          description: "Kind is kind of the referent. \n Support: Core
   151                          (Gateway) \n Support: Implementation-specific (Other Resources)"
   152                          maxLength: 63
   153                          minLength: 1
   154                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   155                          type: string
   156                        name:
   157                          description: "Name is the name of the referent. \n Support:
   158                          Core"
   159                          maxLength: 253
   160                          minLength: 1
   161                          type: string
   162                        namespace:
   163                          description: "Namespace is the namespace of the referent. When
   164                          unspecified, this refers to the local namespace of the Route.
   165                          \n Note that there are specific rules for ParentRefs which
   166                          cross namespace boundaries. Cross-namespace references are
   167                          only valid if they are explicitly allowed by something in
   168                          the namespace they are referring to. For example: Gateway
   169                          has the AllowedRoutes field, and ReferenceGrant provides a
   170                          generic way to enable any other kind of cross-namespace reference.
   171                          \n Support: Core"
   172                          maxLength: 63
   173                          minLength: 1
   174                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
   175                          type: string
   176                        sectionName:
   177                          description: "SectionName is the name of a section within the
   178                          target resource. In the following resources, SectionName is
   179                          interpreted as the following: \n * Gateway: Listener Name.
   180                          When both Port (experimental) and SectionName are specified,
   181                          the name and port of the selected listener must match both
   182                          specified values. \n Implementations MAY choose to support
   183                          attaching Routes to other resources. If that is the case,
   184                          they MUST clearly document how SectionName is interpreted.
   185                          \n When unspecified (empty string), this will reference the
   186                          entire resource. For the purpose of status, an attachment
   187                          is considered successful if at least one section in the parent
   188                          resource accepts it. For example, Gateway listeners can restrict
   189                          which Routes can attach to them by Route kind, namespace,
   190                          or hostname. If 1 of 2 Gateway listeners accept attachment
   191                          from the referencing Route, the Route MUST be considered successfully
   192                          attached. If no Gateway listeners accept attachment from this
   193                          Route, the Route MUST be considered detached from the Gateway.
   194                          \n Support: Core"
   195                          maxLength: 253
   196                          minLength: 1
   197                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   198                          type: string
   199                      required:
   200                        - name
   201                      type: object
   202                    maxItems: 32
   203                    type: array
   204                  rules:
   205                    default:
   206                      - matches:
   207                          - path:
   208                              type: PathPrefix
   209                              value: /
   210                    description: Rules are a list of HTTP matchers, filters and actions.
   211                    items:
   212                      description: HTTPRouteRule defines semantics for matching an HTTP
   213                        request based on conditions (matches), processing it (filters),
   214                        and forwarding the request to an API object (backendRefs).
   215                      properties:
   216                        backendRefs:
   217                          description: "BackendRefs defines the backend(s) where matching
   218                          requests should be sent. \n Failure behavior here depends
   219                          on how many BackendRefs are specified and how many are invalid.
   220                          \n If *all* entries in BackendRefs are invalid, and there
   221                          are also no filters specified in this route rule, *all* traffic
   222                          which matches this rule MUST receive a 500 status code. \n
   223                          See the HTTPBackendRef definition for the rules about what
   224                          makes a single HTTPBackendRef invalid. \n When a HTTPBackendRef
   225                          is invalid, 500 status codes MUST be returned for requests
   226                          that would have otherwise been routed to an invalid backend.
   227                          If multiple backends are specified, and some are invalid,
   228                          the proportion of requests that would otherwise have been
   229                          routed to an invalid backend MUST receive a 500 status code.
   230                          \n For example, if two backends are specified with equal weights,
   231                          and one is invalid, 50 percent of traffic must receive a 500.
   232                          Implementations may choose how that 50 percent is determined.
   233                          \n Support: Core for Kubernetes Service \n Support: Extended
   234                          for Kubernetes ServiceImport \n Support: Implementation-specific
   235                          for any other resource \n Support for weight: Core"
   236                          items:
   237                            description: HTTPBackendRef defines how a HTTPRoute should
   238                              forward an HTTP request.
   239                            properties:
   240                              filters:
   241                                description: "Filters defined at this level should be
   242                                executed if and only if the request is being forwarded
   243                                to the backend defined here. \n Support: Implementation-specific
   244                                (For broader support of filters, use the Filters field
   245                                in HTTPRouteRule.)"
   246                                items:
   247                                  description: HTTPRouteFilter defines processing steps
   248                                    that must be completed during the request or response
   249                                    lifecycle. HTTPRouteFilters are meant as an extension
   250                                    point to express processing that may be done in Gateway
   251                                    implementations. Some examples include request or
   252                                    response modification, implementing authentication
   253                                    strategies, rate-limiting, and traffic shaping. API
   254                                    guarantee/conformance is defined based on the type
   255                                    of the filter.
   256                                  properties:
   257                                    extensionRef:
   258                                      description: "ExtensionRef is an optional, implementation-specific
   259                                      extension to the \"filter\" behavior.  For example,
   260                                      resource \"myroutefilter\" in group \"networking.example.net\").
   261                                      ExtensionRef MUST NOT be used for core and extended
   262                                      filters. \n Support: Implementation-specific"
   263                                      properties:
   264                                        group:
   265                                          description: Group is the group of the referent.
   266                                            For example, "gateway.networking.k8s.io".
   267                                            When unspecified or empty string, core API
   268                                            group is inferred.
   269                                          maxLength: 253
   270                                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   271                                          type: string
   272                                        kind:
   273                                          description: Kind is kind of the referent. For
   274                                            example "HTTPRoute" or "Service".
   275                                          maxLength: 63
   276                                          minLength: 1
   277                                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   278                                          type: string
   279                                        name:
   280                                          description: Name is the name of the referent.
   281                                          maxLength: 253
   282                                          minLength: 1
   283                                          type: string
   284                                      required:
   285                                        - group
   286                                        - kind
   287                                        - name
   288                                      type: object
   289                                    requestHeaderModifier:
   290                                      description: "RequestHeaderModifier defines a schema
   291                                      for a filter that modifies request headers. \n
   292                                      Support: Core"
   293                                      properties:
   294                                        add:
   295                                          description: "Add adds the given header(s) (name,
   296                                          value) to the request before the action. It
   297                                          appends to any existing values associated
   298                                          with the header name. \n Input: GET /foo HTTP/1.1
   299                                          my-header: foo \n Config: add: - name: \"my-header\"
   300                                          value: \"bar,baz\" \n Output: GET /foo HTTP/1.1
   301                                          my-header: foo,bar,baz"
   302                                          items:
   303                                            description: HTTPHeader represents an HTTP
   304                                              Header name and value as defined by RFC
   305                                              7230.
   306                                            properties:
   307                                              name:
   308                                                description: "Name is the name of the
   309                                                HTTP Header to be matched. Name matching
   310                                                MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
   311                                                \n If multiple entries specify equivalent
   312                                                header names, the first entry with an
   313                                                equivalent name MUST be considered for
   314                                                a match. Subsequent entries with an
   315                                                equivalent header name MUST be ignored.
   316                                                Due to the case-insensitivity of header
   317                                                names, \"foo\" and \"Foo\" are considered
   318                                                equivalent."
   319                                                maxLength: 256
   320                                                minLength: 1
   321                                                pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
   322                                                type: string
   323                                              value:
   324                                                description: Value is the value of HTTP
   325                                                  Header to be matched.
   326                                                maxLength: 4096
   327                                                minLength: 1
   328                                                type: string
   329                                            required:
   330                                              - name
   331                                              - value
   332                                            type: object
   333                                          maxItems: 16
   334                                          type: array
   335                                          x-kubernetes-list-map-keys:
   336                                            - name
   337                                          x-kubernetes-list-type: map
   338                                        remove:
   339                                          description: "Remove the given header(s) from
   340                                          the HTTP request before the action. The value
   341                                          of Remove is a list of HTTP header names.
   342                                          Note that the header names are case-insensitive
   343                                          (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
   344                                          \n Input: GET /foo HTTP/1.1 my-header1: foo
   345                                          my-header2: bar my-header3: baz \n Config:
   346                                          remove: [\"my-header1\", \"my-header3\"] \n
   347                                          Output: GET /foo HTTP/1.1 my-header2: bar"
   348                                          items:
   349                                            type: string
   350                                          maxItems: 16
   351                                          type: array
   352                                        set:
   353                                          description: "Set overwrites the request with
   354                                          the given header (name, value) before the
   355                                          action. \n Input: GET /foo HTTP/1.1 my-header:
   356                                          foo \n Config: set: - name: \"my-header\"
   357                                          value: \"bar\" \n Output: GET /foo HTTP/1.1
   358                                          my-header: bar"
   359                                          items:
   360                                            description: HTTPHeader represents an HTTP
   361                                              Header name and value as defined by RFC
   362                                              7230.
   363                                            properties:
   364                                              name:
   365                                                description: "Name is the name of the
   366                                                HTTP Header to be matched. Name matching
   367                                                MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
   368                                                \n If multiple entries specify equivalent
   369                                                header names, the first entry with an
   370                                                equivalent name MUST be considered for
   371                                                a match. Subsequent entries with an
   372                                                equivalent header name MUST be ignored.
   373                                                Due to the case-insensitivity of header
   374                                                names, \"foo\" and \"Foo\" are considered
   375                                                equivalent."
   376                                                maxLength: 256
   377                                                minLength: 1
   378                                                pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
   379                                                type: string
   380                                              value:
   381                                                description: Value is the value of HTTP
   382                                                  Header to be matched.
   383                                                maxLength: 4096
   384                                                minLength: 1
   385                                                type: string
   386                                            required:
   387                                              - name
   388                                              - value
   389                                            type: object
   390                                          maxItems: 16
   391                                          type: array
   392                                          x-kubernetes-list-map-keys:
   393                                            - name
   394                                          x-kubernetes-list-type: map
   395                                      type: object
   396                                    requestMirror:
   397                                      description: "RequestMirror defines a schema for
   398                                      a filter that mirrors requests. Requests are sent
   399                                      to the specified destination, but responses from
   400                                      that destination are ignored. \n Support: Extended"
   401                                      properties:
   402                                        backendRef:
   403                                          description: "BackendRef references a resource
   404                                          where mirrored requests are sent. \n If the
   405                                          referent cannot be found, this BackendRef
   406                                          is invalid and must be dropped from the Gateway.
   407                                          The controller must ensure the \"ResolvedRefs\"
   408                                          condition on the Route status is set to `status:
   409                                          False` and not configure this backend in the
   410                                          underlying implementation. \n If there is
   411                                          a cross-namespace reference to an *existing*
   412                                          object that is not allowed by a ReferenceGrant,
   413                                          the controller must ensure the \"ResolvedRefs\"
   414                                          \ condition on the Route is set to `status:
   415                                          False`, with the \"RefNotPermitted\" reason
   416                                          and not configure this backend in the underlying
   417                                          implementation. \n In either error case, the
   418                                          Message of the `ResolvedRefs` Condition should
   419                                          be used to provide more detail about the problem.
   420                                          \n Support: Extended for Kubernetes Service
   421                                          \n Support: Implementation-specific for any
   422                                          other resource"
   423                                          properties:
   424                                            group:
   425                                              default: ""
   426                                              description: Group is the group of the referent.
   427                                                For example, "gateway.networking.k8s.io".
   428                                                When unspecified or empty string, core
   429                                                API group is inferred.
   430                                              maxLength: 253
   431                                              pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   432                                              type: string
   433                                            kind:
   434                                              default: Service
   435                                              description: "Kind is the Kubernetes resource
   436                                              kind of the referent. For example \"Service\".
   437                                              \n Defaults to \"Service\" when not specified.
   438                                              \n ExternalName services can refer to
   439                                              CNAME DNS records that may live outside
   440                                              of the cluster and as such are difficult
   441                                              to reason about in terms of conformance.
   442                                              They also may not be safe to forward to
   443                                              (see CVE-2021-25740 for more information).
   444                                              Implementations SHOULD NOT support ExternalName
   445                                              Services. \n Support: Core (Services with
   446                                              a type other than ExternalName) \n Support:
   447                                              Implementation-specific (Services with
   448                                              type ExternalName)"
   449                                              maxLength: 63
   450                                              minLength: 1
   451                                              pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   452                                              type: string
   453                                            name:
   454                                              description: Name is the name of the referent.
   455                                              maxLength: 253
   456                                              minLength: 1
   457                                              type: string
   458                                            namespace:
   459                                              description: "Namespace is the namespace
   460                                              of the backend. When unspecified, the
   461                                              local namespace is inferred. \n Note that
   462                                              when a namespace is specified, a ReferenceGrant
   463                                              object is required in the referent namespace
   464                                              to allow that namespace's owner to accept
   465                                              the reference. See the ReferenceGrant
   466                                              documentation for details. \n Support:
   467                                              Core"
   468                                              maxLength: 63
   469                                              minLength: 1
   470                                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
   471                                              type: string
   472                                            port:
   473                                              description: Port specifies the destination
   474                                                port number to use for this resource.
   475                                                Port is required when the referent is
   476                                                a Kubernetes Service. In this case, the
   477                                                port number is the service port number,
   478                                                not the target port. For other resources,
   479                                                destination port might be derived from
   480                                                the referent resource or this field.
   481                                              format: int32
   482                                              maximum: 65535
   483                                              minimum: 1
   484                                              type: integer
   485                                          required:
   486                                            - name
   487                                          type: object
   488                                      required:
   489                                        - backendRef
   490                                      type: object
   491                                    requestRedirect:
   492                                      description: "RequestRedirect defines a schema for
   493                                      a filter that responds to the request with an
   494                                      HTTP redirection. \n Support: Core"
   495                                      properties:
   496                                        hostname:
   497                                          description: "Hostname is the hostname to be
   498                                          used in the value of the `Location` header
   499                                          in the response. When empty, the hostname
   500                                          in the `Host` header of the request is used.
   501                                          \n Support: Core"
   502                                          maxLength: 253
   503                                          minLength: 1
   504                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   505                                          type: string
   506                                        path:
   507                                          description: "Path defines parameters used to
   508                                          modify the path of the incoming request. The
   509                                          modified path is then used to construct the
   510                                          `Location` header. When empty, the request
   511                                          path is used as-is. \n Support: Extended"
   512                                          properties:
   513                                            replaceFullPath:
   514                                              description: ReplaceFullPath specifies the
   515                                                value with which to replace the full path
   516                                                of a request during a rewrite or redirect.
   517                                              maxLength: 1024
   518                                              type: string
   519                                            replacePrefixMatch:
   520                                              description: "ReplacePrefixMatch specifies
   521                                              the value with which to replace the prefix
   522                                              match of a request during a rewrite or
   523                                              redirect. For example, a request to \"/foo/bar\"
   524                                              with a prefix match of \"/foo\" would
   525                                              be modified to \"/bar\". \n Note that
   526                                              this matches the behavior of the PathPrefix
   527                                              match type. This matches full path elements.
   528                                              A path element refers to the list of labels
   529                                              in the path split by the `/` separator.
   530                                              When specified, a trailing `/` is ignored.
   531                                              For example, the paths `/abc`, `/abc/`,
   532                                              and `/abc/def` would all match the prefix
   533                                              `/abc`, but the path `/abcd` would not."
   534                                              maxLength: 1024
   535                                              type: string
   536                                            type:
   537                                              description: "Type defines the type of path
   538                                              modifier. Additional types may be added
   539                                              in a future release of the API. \n Note
   540                                              that values may be added to this enum,
   541                                              implementations must ensure that unknown
   542                                              values will not cause a crash. \n Unknown
   543                                              values here must result in the implementation
   544                                              setting the Accepted Condition for the
   545                                              Route to `status: False`, with a Reason
   546                                              of `UnsupportedValue`."
   547                                              enum:
   548                                                - ReplaceFullPath
   549                                                - ReplacePrefixMatch
   550                                              type: string
   551                                          required:
   552                                            - type
   553                                          type: object
   554                                        port:
   555                                          description: "Port is the port to be used in
   556                                          the value of the `Location` header in the
   557                                          response. \n When empty, the Gateway Listener
   558                                          port is used. \n Implementations SHOULD NOT
   559                                          add the port number in the 'Location' header
   560                                          in the following cases: \n * A Location header
   561                                          that will use HTTP (whether that is determined
   562                                          via the Listener protocol or the Scheme field)
   563                                          _and_ use port 80. * A Location header that
   564                                          will use HTTPS (whether that is determined
   565                                          via the Listener protocol or the Scheme field)
   566                                          _and_ use port 443. \n Support: Extended"
   567                                          format: int32
   568                                          maximum: 65535
   569                                          minimum: 1
   570                                          type: integer
   571                                        scheme:
   572                                          description: "Scheme is the scheme to be used
   573                                          in the value of the `Location` header in the
   574                                          response. When empty, the scheme of the request
   575                                          is used. \n Note that values may be added
   576                                          to this enum, implementations must ensure
   577                                          that unknown values will not cause a crash.
   578                                          \n Unknown values here must result in the
   579                                          implementation setting the Accepted Condition
   580                                          for the Route to `status: False`, with a Reason
   581                                          of `UnsupportedValue`. \n Support: Extended"
   582                                          enum:
   583                                            - http
   584                                            - https
   585                                          type: string
   586                                        statusCode:
   587                                          default: 302
   588                                          description: "StatusCode is the HTTP status
   589                                          code to be used in response. \n Note that
   590                                          values may be added to this enum, implementations
   591                                          must ensure that unknown values will not cause
   592                                          a crash. \n Unknown values here must result
   593                                          in the implementation setting the Accepted
   594                                          Condition for the Route to `status: False`,
   595                                          with a Reason of `UnsupportedValue`. \n Support:
   596                                          Core"
   597                                          enum:
   598                                            - 301
   599                                            - 302
   600                                          type: integer
   601                                      type: object
   602                                    responseHeaderModifier:
   603                                      description: "ResponseHeaderModifier defines a schema
   604                                      for a filter that modifies response headers. \n
   605                                      Support: Extended"
   606                                      properties:
   607                                        add:
   608                                          description: "Add adds the given header(s) (name,
   609                                          value) to the request before the action. It
   610                                          appends to any existing values associated
   611                                          with the header name. \n Input: GET /foo HTTP/1.1
   612                                          my-header: foo \n Config: add: - name: \"my-header\"
   613                                          value: \"bar,baz\" \n Output: GET /foo HTTP/1.1
   614                                          my-header: foo,bar,baz"
   615                                          items:
   616                                            description: HTTPHeader represents an HTTP
   617                                              Header name and value as defined by RFC
   618                                              7230.
   619                                            properties:
   620                                              name:
   621                                                description: "Name is the name of the
   622                                                HTTP Header to be matched. Name matching
   623                                                MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
   624                                                \n If multiple entries specify equivalent
   625                                                header names, the first entry with an
   626                                                equivalent name MUST be considered for
   627                                                a match. Subsequent entries with an
   628                                                equivalent header name MUST be ignored.
   629                                                Due to the case-insensitivity of header
   630                                                names, \"foo\" and \"Foo\" are considered
   631                                                equivalent."
   632                                                maxLength: 256
   633                                                minLength: 1
   634                                                pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
   635                                                type: string
   636                                              value:
   637                                                description: Value is the value of HTTP
   638                                                  Header to be matched.
   639                                                maxLength: 4096
   640                                                minLength: 1
   641                                                type: string
   642                                            required:
   643                                              - name
   644                                              - value
   645                                            type: object
   646                                          maxItems: 16
   647                                          type: array
   648                                          x-kubernetes-list-map-keys:
   649                                            - name
   650                                          x-kubernetes-list-type: map
   651                                        remove:
   652                                          description: "Remove the given header(s) from
   653                                          the HTTP request before the action. The value
   654                                          of Remove is a list of HTTP header names.
   655                                          Note that the header names are case-insensitive
   656                                          (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
   657                                          \n Input: GET /foo HTTP/1.1 my-header1: foo
   658                                          my-header2: bar my-header3: baz \n Config:
   659                                          remove: [\"my-header1\", \"my-header3\"] \n
   660                                          Output: GET /foo HTTP/1.1 my-header2: bar"
   661                                          items:
   662                                            type: string
   663                                          maxItems: 16
   664                                          type: array
   665                                        set:
   666                                          description: "Set overwrites the request with
   667                                          the given header (name, value) before the
   668                                          action. \n Input: GET /foo HTTP/1.1 my-header:
   669                                          foo \n Config: set: - name: \"my-header\"
   670                                          value: \"bar\" \n Output: GET /foo HTTP/1.1
   671                                          my-header: bar"
   672                                          items:
   673                                            description: HTTPHeader represents an HTTP
   674                                              Header name and value as defined by RFC
   675                                              7230.
   676                                            properties:
   677                                              name:
   678                                                description: "Name is the name of the
   679                                                HTTP Header to be matched. Name matching
   680                                                MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
   681                                                \n If multiple entries specify equivalent
   682                                                header names, the first entry with an
   683                                                equivalent name MUST be considered for
   684                                                a match. Subsequent entries with an
   685                                                equivalent header name MUST be ignored.
   686                                                Due to the case-insensitivity of header
   687                                                names, \"foo\" and \"Foo\" are considered
   688                                                equivalent."
   689                                                maxLength: 256
   690                                                minLength: 1
   691                                                pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
   692                                                type: string
   693                                              value:
   694                                                description: Value is the value of HTTP
   695                                                  Header to be matched.
   696                                                maxLength: 4096
   697                                                minLength: 1
   698                                                type: string
   699                                            required:
   700                                              - name
   701                                              - value
   702                                            type: object
   703                                          maxItems: 16
   704                                          type: array
   705                                          x-kubernetes-list-map-keys:
   706                                            - name
   707                                          x-kubernetes-list-type: map
   708                                      type: object
   709                                    type:
   710                                      description: "Type identifies the type of filter
   711                                      to apply. As with other API fields, types are
   712                                      classified into three conformance levels: \n -
   713                                      Core: Filter types and their corresponding configuration
   714                                      defined by \"Support: Core\" in this package,
   715                                      e.g. \"RequestHeaderModifier\". All implementations
   716                                      must support core filters. \n - Extended: Filter
   717                                      types and their corresponding configuration defined
   718                                      by \"Support: Extended\" in this package, e.g.
   719                                      \"RequestMirror\". Implementers are encouraged
   720                                      to support extended filters. \n - Implementation-specific:
   721                                      Filters that are defined and supported by specific
   722                                      vendors. In the future, filters showing convergence
   723                                      in behavior across multiple implementations will
   724                                      be considered for inclusion in extended or core
   725                                      conformance levels. Filter-specific configuration
   726                                      for such filters is specified using the ExtensionRef
   727                                      field. `Type` should be set to \"ExtensionRef\"
   728                                      for custom filters. \n Implementers are encouraged
   729                                      to define custom implementation types to extend
   730                                      the core API with implementation-specific behavior.
   731                                      \n If a reference to a custom filter type cannot
   732                                      be resolved, the filter MUST NOT be skipped. Instead,
   733                                      requests that would have been processed by that
   734                                      filter MUST receive a HTTP error response. \n
   735                                      Note that values may be added to this enum, implementations
   736                                      must ensure that unknown values will not cause
   737                                      a crash. \n Unknown values here must result in
   738                                      the implementation setting the Accepted Condition
   739                                      for the Route to `status: False`, with a Reason
   740                                      of `UnsupportedValue`."
   741                                      enum:
   742                                        - RequestHeaderModifier
   743                                        - ResponseHeaderModifier
   744                                        - RequestMirror
   745                                        - RequestRedirect
   746                                        - URLRewrite
   747                                        - ExtensionRef
   748                                      type: string
   749                                    urlRewrite:
   750                                      description: "URLRewrite defines a schema for a
   751                                      filter that modifies a request during forwarding.
   752                                      \n Support: Extended"
   753                                      properties:
   754                                        hostname:
   755                                          description: "Hostname is the value to be used
   756                                          to replace the Host header value during forwarding.
   757                                          \n Support: Extended"
   758                                          maxLength: 253
   759                                          minLength: 1
   760                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   761                                          type: string
   762                                        path:
   763                                          description: "Path defines a path rewrite. \n
   764                                          Support: Extended"
   765                                          properties:
   766                                            replaceFullPath:
   767                                              description: ReplaceFullPath specifies the
   768                                                value with which to replace the full path
   769                                                of a request during a rewrite or redirect.
   770                                              maxLength: 1024
   771                                              type: string
   772                                            replacePrefixMatch:
   773                                              description: "ReplacePrefixMatch specifies
   774                                              the value with which to replace the prefix
   775                                              match of a request during a rewrite or
   776                                              redirect. For example, a request to \"/foo/bar\"
   777                                              with a prefix match of \"/foo\" would
   778                                              be modified to \"/bar\". \n Note that
   779                                              this matches the behavior of the PathPrefix
   780                                              match type. This matches full path elements.
   781                                              A path element refers to the list of labels
   782                                              in the path split by the `/` separator.
   783                                              When specified, a trailing `/` is ignored.
   784                                              For example, the paths `/abc`, `/abc/`,
   785                                              and `/abc/def` would all match the prefix
   786                                              `/abc`, but the path `/abcd` would not."
   787                                              maxLength: 1024
   788                                              type: string
   789                                            type:
   790                                              description: "Type defines the type of path
   791                                              modifier. Additional types may be added
   792                                              in a future release of the API. \n Note
   793                                              that values may be added to this enum,
   794                                              implementations must ensure that unknown
   795                                              values will not cause a crash. \n Unknown
   796                                              values here must result in the implementation
   797                                              setting the Accepted Condition for the
   798                                              Route to `status: False`, with a Reason
   799                                              of `UnsupportedValue`."
   800                                              enum:
   801                                                - ReplaceFullPath
   802                                                - ReplacePrefixMatch
   803                                              type: string
   804                                          required:
   805                                            - type
   806                                          type: object
   807                                      type: object
   808                                  required:
   809                                    - type
   810                                  type: object
   811                                maxItems: 16
   812                                type: array
   813                              group:
   814                                default: ""
   815                                description: Group is the group of the referent. For example,
   816                                  "gateway.networking.k8s.io". When unspecified or empty
   817                                  string, core API group is inferred.
   818                                maxLength: 253
   819                                pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   820                                type: string
   821                              kind:
   822                                default: Service
   823                                description: "Kind is the Kubernetes resource kind of
   824                                the referent. For example \"Service\". \n Defaults to
   825                                \"Service\" when not specified. \n ExternalName services
   826                                can refer to CNAME DNS records that may live outside
   827                                of the cluster and as such are difficult to reason about
   828                                in terms of conformance. They also may not be safe to
   829                                forward to (see CVE-2021-25740 for more information).
   830                                Implementations SHOULD NOT support ExternalName Services.
   831                                \n Support: Core (Services with a type other than ExternalName)
   832                                \n Support: Implementation-specific (Services with type
   833                                ExternalName)"
   834                                maxLength: 63
   835                                minLength: 1
   836                                pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   837                                type: string
   838                              name:
   839                                description: Name is the name of the referent.
   840                                maxLength: 253
   841                                minLength: 1
   842                                type: string
   843                              namespace:
   844                                description: "Namespace is the namespace of the backend.
   845                                When unspecified, the local namespace is inferred. \n
   846                                Note that when a namespace is specified, a ReferenceGrant
   847                                object is required in the referent namespace to allow
   848                                that namespace's owner to accept the reference. See
   849                                the ReferenceGrant documentation for details. \n Support:
   850                                Core"
   851                                maxLength: 63
   852                                minLength: 1
   853                                pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
   854                                type: string
   855                              port:
   856                                description: Port specifies the destination port number
   857                                  to use for this resource. Port is required when the
   858                                  referent is a Kubernetes Service. In this case, the
   859                                  port number is the service port number, not the target
   860                                  port. For other resources, destination port might be
   861                                  derived from the referent resource or this field.
   862                                format: int32
   863                                maximum: 65535
   864                                minimum: 1
   865                                type: integer
   866                              weight:
   867                                default: 1
   868                                description: "Weight specifies the proportion of requests
   869                                forwarded to the referenced backend. This is computed
   870                                as weight/(sum of all weights in this BackendRefs list).
   871                                For non-zero values, there may be some epsilon from
   872                                the exact proportion defined here depending on the precision
   873                                an implementation supports. Weight is not a percentage
   874                                and the sum of weights does not need to equal 100. \n
   875                                If only one backend is specified and it has a weight
   876                                greater than 0, 100% of the traffic is forwarded to
   877                                that backend. If weight is set to 0, no traffic should
   878                                be forwarded for this entry. If unspecified, weight
   879                                defaults to 1. \n Support for this field varies based
   880                                on the context where used."
   881                                format: int32
   882                                maximum: 1000000
   883                                minimum: 0
   884                                type: integer
   885                            required:
   886                              - name
   887                            type: object
   888                          maxItems: 16
   889                          type: array
   890                        filters:
   891                          description: "Filters define the filters that are applied to
   892                          requests that match this rule. \n The effects of ordering
   893                          of multiple behaviors are currently unspecified. This can
   894                          change in the future based on feedback during the alpha stage.
   895                          \n Conformance-levels at this level are defined based on the
   896                          type of filter: \n - ALL core filters MUST be supported by
   897                          all implementations. - Implementers are encouraged to support
   898                          extended filters. - Implementation-specific custom filters
   899                          have no API guarantees across implementations. \n Specifying
   900                          a core filter multiple times has unspecified or implementation-specific
   901                          conformance. \n All filters are expected to be compatible
   902                          with each other except for the URLRewrite and RequestRedirect
   903                          filters, which may not be combined. If an implementation can
   904                          not support other combinations of filters, they must clearly
   905                          document that limitation. In all cases where incompatible
   906                          or unsupported filters are specified, implementations MUST
   907                          add a warning condition to status. \n Support: Core"
   908                          items:
   909                            description: HTTPRouteFilter defines processing steps that
   910                              must be completed during the request or response lifecycle.
   911                              HTTPRouteFilters are meant as an extension point to express
   912                              processing that may be done in Gateway implementations.
   913                              Some examples include request or response modification,
   914                              implementing authentication strategies, rate-limiting, and
   915                              traffic shaping. API guarantee/conformance is defined based
   916                              on the type of the filter.
   917                            properties:
   918                              extensionRef:
   919                                description: "ExtensionRef is an optional, implementation-specific
   920                                extension to the \"filter\" behavior.  For example,
   921                                resource \"myroutefilter\" in group \"networking.example.net\").
   922                                ExtensionRef MUST NOT be used for core and extended
   923                                filters. \n Support: Implementation-specific"
   924                                properties:
   925                                  group:
   926                                    description: Group is the group of the referent. For
   927                                      example, "gateway.networking.k8s.io". When unspecified
   928                                      or empty string, core API group is inferred.
   929                                    maxLength: 253
   930                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
   931                                    type: string
   932                                  kind:
   933                                    description: Kind is kind of the referent. For example
   934                                      "HTTPRoute" or "Service".
   935                                    maxLength: 63
   936                                    minLength: 1
   937                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
   938                                    type: string
   939                                  name:
   940                                    description: Name is the name of the referent.
   941                                    maxLength: 253
   942                                    minLength: 1
   943                                    type: string
   944                                required:
   945                                  - group
   946                                  - kind
   947                                  - name
   948                                type: object
   949                              requestHeaderModifier:
   950                                description: "RequestHeaderModifier defines a schema for
   951                                a filter that modifies request headers. \n Support:
   952                                Core"
   953                                properties:
   954                                  add:
   955                                    description: "Add adds the given header(s) (name,
   956                                    value) to the request before the action. It appends
   957                                    to any existing values associated with the header
   958                                    name. \n Input: GET /foo HTTP/1.1 my-header: foo
   959                                    \n Config: add: - name: \"my-header\" value: \"bar,baz\"
   960                                    \n Output: GET /foo HTTP/1.1 my-header: foo,bar,baz"
   961                                    items:
   962                                      description: HTTPHeader represents an HTTP Header
   963                                        name and value as defined by RFC 7230.
   964                                      properties:
   965                                        name:
   966                                          description: "Name is the name of the HTTP Header
   967                                          to be matched. Name matching MUST be case
   968                                          insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
   969                                          \n If multiple entries specify equivalent
   970                                          header names, the first entry with an equivalent
   971                                          name MUST be considered for a match. Subsequent
   972                                          entries with an equivalent header name MUST
   973                                          be ignored. Due to the case-insensitivity
   974                                          of header names, \"foo\" and \"Foo\" are considered
   975                                          equivalent."
   976                                          maxLength: 256
   977                                          minLength: 1
   978                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
   979                                          type: string
   980                                        value:
   981                                          description: Value is the value of HTTP Header
   982                                            to be matched.
   983                                          maxLength: 4096
   984                                          minLength: 1
   985                                          type: string
   986                                      required:
   987                                        - name
   988                                        - value
   989                                      type: object
   990                                    maxItems: 16
   991                                    type: array
   992                                    x-kubernetes-list-map-keys:
   993                                      - name
   994                                    x-kubernetes-list-type: map
   995                                  remove:
   996                                    description: "Remove the given header(s) from the
   997                                    HTTP request before the action. The value of Remove
   998                                    is a list of HTTP header names. Note that the header
   999                                    names are case-insensitive (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
  1000                                    \n Input: GET /foo HTTP/1.1 my-header1: foo my-header2:
  1001                                    bar my-header3: baz \n Config: remove: [\"my-header1\",
  1002                                    \"my-header3\"] \n Output: GET /foo HTTP/1.1 my-header2:
  1003                                    bar"
  1004                                    items:
  1005                                      type: string
  1006                                    maxItems: 16
  1007                                    type: array
  1008                                  set:
  1009                                    description: "Set overwrites the request with the
  1010                                    given header (name, value) before the action. \n
  1011                                    Input: GET /foo HTTP/1.1 my-header: foo \n Config:
  1012                                    set: - name: \"my-header\" value: \"bar\" \n Output:
  1013                                    GET /foo HTTP/1.1 my-header: bar"
  1014                                    items:
  1015                                      description: HTTPHeader represents an HTTP Header
  1016                                        name and value as defined by RFC 7230.
  1017                                      properties:
  1018                                        name:
  1019                                          description: "Name is the name of the HTTP Header
  1020                                          to be matched. Name matching MUST be case
  1021                                          insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  1022                                          \n If multiple entries specify equivalent
  1023                                          header names, the first entry with an equivalent
  1024                                          name MUST be considered for a match. Subsequent
  1025                                          entries with an equivalent header name MUST
  1026                                          be ignored. Due to the case-insensitivity
  1027                                          of header names, \"foo\" and \"Foo\" are considered
  1028                                          equivalent."
  1029                                          maxLength: 256
  1030                                          minLength: 1
  1031                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  1032                                          type: string
  1033                                        value:
  1034                                          description: Value is the value of HTTP Header
  1035                                            to be matched.
  1036                                          maxLength: 4096
  1037                                          minLength: 1
  1038                                          type: string
  1039                                      required:
  1040                                        - name
  1041                                        - value
  1042                                      type: object
  1043                                    maxItems: 16
  1044                                    type: array
  1045                                    x-kubernetes-list-map-keys:
  1046                                      - name
  1047                                    x-kubernetes-list-type: map
  1048                                type: object
  1049                              requestMirror:
  1050                                description: "RequestMirror defines a schema for a filter
  1051                                that mirrors requests. Requests are sent to the specified
  1052                                destination, but responses from that destination are
  1053                                ignored. \n Support: Extended"
  1054                                properties:
  1055                                  backendRef:
  1056                                    description: "BackendRef references a resource where
  1057                                    mirrored requests are sent. \n If the referent cannot
  1058                                    be found, this BackendRef is invalid and must be
  1059                                    dropped from the Gateway. The controller must ensure
  1060                                    the \"ResolvedRefs\" condition on the Route status
  1061                                    is set to `status: False` and not configure this
  1062                                    backend in the underlying implementation. \n If
  1063                                    there is a cross-namespace reference to an *existing*
  1064                                    object that is not allowed by a ReferenceGrant,
  1065                                    the controller must ensure the \"ResolvedRefs\"
  1066                                    \ condition on the Route is set to `status: False`,
  1067                                    with the \"RefNotPermitted\" reason and not configure
  1068                                    this backend in the underlying implementation. \n
  1069                                    In either error case, the Message of the `ResolvedRefs`
  1070                                    Condition should be used to provide more detail
  1071                                    about the problem. \n Support: Extended for Kubernetes
  1072                                    Service \n Support: Implementation-specific for
  1073                                    any other resource"
  1074                                    properties:
  1075                                      group:
  1076                                        default: ""
  1077                                        description: Group is the group of the referent.
  1078                                          For example, "gateway.networking.k8s.io". When
  1079                                          unspecified or empty string, core API group
  1080                                          is inferred.
  1081                                        maxLength: 253
  1082                                        pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1083                                        type: string
  1084                                      kind:
  1085                                        default: Service
  1086                                        description: "Kind is the Kubernetes resource
  1087                                        kind of the referent. For example \"Service\".
  1088                                        \n Defaults to \"Service\" when not specified.
  1089                                        \n ExternalName services can refer to CNAME
  1090                                        DNS records that may live outside of the cluster
  1091                                        and as such are difficult to reason about in
  1092                                        terms of conformance. They also may not be safe
  1093                                        to forward to (see CVE-2021-25740 for more information).
  1094                                        Implementations SHOULD NOT support ExternalName
  1095                                        Services. \n Support: Core (Services with a
  1096                                        type other than ExternalName) \n Support: Implementation-specific
  1097                                        (Services with type ExternalName)"
  1098                                        maxLength: 63
  1099                                        minLength: 1
  1100                                        pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  1101                                        type: string
  1102                                      name:
  1103                                        description: Name is the name of the referent.
  1104                                        maxLength: 253
  1105                                        minLength: 1
  1106                                        type: string
  1107                                      namespace:
  1108                                        description: "Namespace is the namespace of the
  1109                                        backend. When unspecified, the local namespace
  1110                                        is inferred. \n Note that when a namespace is
  1111                                        specified, a ReferenceGrant object is required
  1112                                        in the referent namespace to allow that namespace's
  1113                                        owner to accept the reference. See the ReferenceGrant
  1114                                        documentation for details. \n Support: Core"
  1115                                        maxLength: 63
  1116                                        minLength: 1
  1117                                        pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
  1118                                        type: string
  1119                                      port:
  1120                                        description: Port specifies the destination port
  1121                                          number to use for this resource. Port is required
  1122                                          when the referent is a Kubernetes Service. In
  1123                                          this case, the port number is the service port
  1124                                          number, not the target port. For other resources,
  1125                                          destination port might be derived from the referent
  1126                                          resource or this field.
  1127                                        format: int32
  1128                                        maximum: 65535
  1129                                        minimum: 1
  1130                                        type: integer
  1131                                    required:
  1132                                      - name
  1133                                    type: object
  1134                                required:
  1135                                  - backendRef
  1136                                type: object
  1137                              requestRedirect:
  1138                                description: "RequestRedirect defines a schema for a filter
  1139                                that responds to the request with an HTTP redirection.
  1140                                \n Support: Core"
  1141                                properties:
  1142                                  hostname:
  1143                                    description: "Hostname is the hostname to be used
  1144                                    in the value of the `Location` header in the response.
  1145                                    When empty, the hostname in the `Host` header of
  1146                                    the request is used. \n Support: Core"
  1147                                    maxLength: 253
  1148                                    minLength: 1
  1149                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1150                                    type: string
  1151                                  path:
  1152                                    description: "Path defines parameters used to modify
  1153                                    the path of the incoming request. The modified path
  1154                                    is then used to construct the `Location` header.
  1155                                    When empty, the request path is used as-is. \n Support:
  1156                                    Extended"
  1157                                    properties:
  1158                                      replaceFullPath:
  1159                                        description: ReplaceFullPath specifies the value
  1160                                          with which to replace the full path of a request
  1161                                          during a rewrite or redirect.
  1162                                        maxLength: 1024
  1163                                        type: string
  1164                                      replacePrefixMatch:
  1165                                        description: "ReplacePrefixMatch specifies the
  1166                                        value with which to replace the prefix match
  1167                                        of a request during a rewrite or redirect. For
  1168                                        example, a request to \"/foo/bar\" with a prefix
  1169                                        match of \"/foo\" would be modified to \"/bar\".
  1170                                        \n Note that this matches the behavior of the
  1171                                        PathPrefix match type. This matches full path
  1172                                        elements. A path element refers to the list
  1173                                        of labels in the path split by the `/` separator.
  1174                                        When specified, a trailing `/` is ignored. For
  1175                                        example, the paths `/abc`, `/abc/`, and `/abc/def`
  1176                                        would all match the prefix `/abc`, but the path
  1177                                        `/abcd` would not."
  1178                                        maxLength: 1024
  1179                                        type: string
  1180                                      type:
  1181                                        description: "Type defines the type of path modifier.
  1182                                        Additional types may be added in a future release
  1183                                        of the API. \n Note that values may be added
  1184                                        to this enum, implementations must ensure that
  1185                                        unknown values will not cause a crash. \n Unknown
  1186                                        values here must result in the implementation
  1187                                        setting the Accepted Condition for the Route
  1188                                        to `status: False`, with a Reason of `UnsupportedValue`."
  1189                                        enum:
  1190                                          - ReplaceFullPath
  1191                                          - ReplacePrefixMatch
  1192                                        type: string
  1193                                    required:
  1194                                      - type
  1195                                    type: object
  1196                                  port:
  1197                                    description: "Port is the port to be used in the value
  1198                                    of the `Location` header in the response. \n When
  1199                                    empty, the Gateway Listener port is used. \n Implementations
  1200                                    SHOULD NOT add the port number in the 'Location'
  1201                                    header in the following cases: \n * A Location header
  1202                                    that will use HTTP (whether that is determined via
  1203                                    the Listener protocol or the Scheme field) _and_
  1204                                    use port 80. * A Location header that will use HTTPS
  1205                                    (whether that is determined via the Listener protocol
  1206                                    or the Scheme field) _and_ use port 443. \n Support:
  1207                                    Extended"
  1208                                    format: int32
  1209                                    maximum: 65535
  1210                                    minimum: 1
  1211                                    type: integer
  1212                                  scheme:
  1213                                    description: "Scheme is the scheme to be used in the
  1214                                    value of the `Location` header in the response.
  1215                                    When empty, the scheme of the request is used. \n
  1216                                    Note that values may be added to this enum, implementations
  1217                                    must ensure that unknown values will not cause a
  1218                                    crash. \n Unknown values here must result in the
  1219                                    implementation setting the Accepted Condition for
  1220                                    the Route to `status: False`, with a Reason of `UnsupportedValue`.
  1221                                    \n Support: Extended"
  1222                                    enum:
  1223                                      - http
  1224                                      - https
  1225                                    type: string
  1226                                  statusCode:
  1227                                    default: 302
  1228                                    description: "StatusCode is the HTTP status code to
  1229                                    be used in response. \n Note that values may be
  1230                                    added to this enum, implementations must ensure
  1231                                    that unknown values will not cause a crash. \n Unknown
  1232                                    values here must result in the implementation setting
  1233                                    the Accepted Condition for the Route to `status:
  1234                                    False`, with a Reason of `UnsupportedValue`. \n
  1235                                    Support: Core"
  1236                                    enum:
  1237                                      - 301
  1238                                      - 302
  1239                                    type: integer
  1240                                type: object
  1241                              responseHeaderModifier:
  1242                                description: "ResponseHeaderModifier defines a schema
  1243                                for a filter that modifies response headers. \n Support:
  1244                                Extended"
  1245                                properties:
  1246                                  add:
  1247                                    description: "Add adds the given header(s) (name,
  1248                                    value) to the request before the action. It appends
  1249                                    to any existing values associated with the header
  1250                                    name. \n Input: GET /foo HTTP/1.1 my-header: foo
  1251                                    \n Config: add: - name: \"my-header\" value: \"bar,baz\"
  1252                                    \n Output: GET /foo HTTP/1.1 my-header: foo,bar,baz"
  1253                                    items:
  1254                                      description: HTTPHeader represents an HTTP Header
  1255                                        name and value as defined by RFC 7230.
  1256                                      properties:
  1257                                        name:
  1258                                          description: "Name is the name of the HTTP Header
  1259                                          to be matched. Name matching MUST be case
  1260                                          insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  1261                                          \n If multiple entries specify equivalent
  1262                                          header names, the first entry with an equivalent
  1263                                          name MUST be considered for a match. Subsequent
  1264                                          entries with an equivalent header name MUST
  1265                                          be ignored. Due to the case-insensitivity
  1266                                          of header names, \"foo\" and \"Foo\" are considered
  1267                                          equivalent."
  1268                                          maxLength: 256
  1269                                          minLength: 1
  1270                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  1271                                          type: string
  1272                                        value:
  1273                                          description: Value is the value of HTTP Header
  1274                                            to be matched.
  1275                                          maxLength: 4096
  1276                                          minLength: 1
  1277                                          type: string
  1278                                      required:
  1279                                        - name
  1280                                        - value
  1281                                      type: object
  1282                                    maxItems: 16
  1283                                    type: array
  1284                                    x-kubernetes-list-map-keys:
  1285                                      - name
  1286                                    x-kubernetes-list-type: map
  1287                                  remove:
  1288                                    description: "Remove the given header(s) from the
  1289                                    HTTP request before the action. The value of Remove
  1290                                    is a list of HTTP header names. Note that the header
  1291                                    names are case-insensitive (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
  1292                                    \n Input: GET /foo HTTP/1.1 my-header1: foo my-header2:
  1293                                    bar my-header3: baz \n Config: remove: [\"my-header1\",
  1294                                    \"my-header3\"] \n Output: GET /foo HTTP/1.1 my-header2:
  1295                                    bar"
  1296                                    items:
  1297                                      type: string
  1298                                    maxItems: 16
  1299                                    type: array
  1300                                  set:
  1301                                    description: "Set overwrites the request with the
  1302                                    given header (name, value) before the action. \n
  1303                                    Input: GET /foo HTTP/1.1 my-header: foo \n Config:
  1304                                    set: - name: \"my-header\" value: \"bar\" \n Output:
  1305                                    GET /foo HTTP/1.1 my-header: bar"
  1306                                    items:
  1307                                      description: HTTPHeader represents an HTTP Header
  1308                                        name and value as defined by RFC 7230.
  1309                                      properties:
  1310                                        name:
  1311                                          description: "Name is the name of the HTTP Header
  1312                                          to be matched. Name matching MUST be case
  1313                                          insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  1314                                          \n If multiple entries specify equivalent
  1315                                          header names, the first entry with an equivalent
  1316                                          name MUST be considered for a match. Subsequent
  1317                                          entries with an equivalent header name MUST
  1318                                          be ignored. Due to the case-insensitivity
  1319                                          of header names, \"foo\" and \"Foo\" are considered
  1320                                          equivalent."
  1321                                          maxLength: 256
  1322                                          minLength: 1
  1323                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  1324                                          type: string
  1325                                        value:
  1326                                          description: Value is the value of HTTP Header
  1327                                            to be matched.
  1328                                          maxLength: 4096
  1329                                          minLength: 1
  1330                                          type: string
  1331                                      required:
  1332                                        - name
  1333                                        - value
  1334                                      type: object
  1335                                    maxItems: 16
  1336                                    type: array
  1337                                    x-kubernetes-list-map-keys:
  1338                                      - name
  1339                                    x-kubernetes-list-type: map
  1340                                type: object
  1341                              type:
  1342                                description: "Type identifies the type of filter to apply.
  1343                                As with other API fields, types are classified into
  1344                                three conformance levels: \n - Core: Filter types and
  1345                                their corresponding configuration defined by \"Support:
  1346                                Core\" in this package, e.g. \"RequestHeaderModifier\".
  1347                                All implementations must support core filters. \n -
  1348                                Extended: Filter types and their corresponding configuration
  1349                                defined by \"Support: Extended\" in this package, e.g.
  1350                                \"RequestMirror\". Implementers are encouraged to support
  1351                                extended filters. \n - Implementation-specific: Filters
  1352                                that are defined and supported by specific vendors.
  1353                                In the future, filters showing convergence in behavior
  1354                                across multiple implementations will be considered for
  1355                                inclusion in extended or core conformance levels. Filter-specific
  1356                                configuration for such filters is specified using the
  1357                                ExtensionRef field. `Type` should be set to \"ExtensionRef\"
  1358                                for custom filters. \n Implementers are encouraged to
  1359                                define custom implementation types to extend the core
  1360                                API with implementation-specific behavior. \n If a reference
  1361                                to a custom filter type cannot be resolved, the filter
  1362                                MUST NOT be skipped. Instead, requests that would have
  1363                                been processed by that filter MUST receive a HTTP error
  1364                                response. \n Note that values may be added to this enum,
  1365                                implementations must ensure that unknown values will
  1366                                not cause a crash. \n Unknown values here must result
  1367                                in the implementation setting the Accepted Condition
  1368                                for the Route to `status: False`, with a Reason of `UnsupportedValue`."
  1369                                enum:
  1370                                  - RequestHeaderModifier
  1371                                  - ResponseHeaderModifier
  1372                                  - RequestMirror
  1373                                  - RequestRedirect
  1374                                  - URLRewrite
  1375                                  - ExtensionRef
  1376                                type: string
  1377                              urlRewrite:
  1378                                description: "URLRewrite defines a schema for a filter
  1379                                that modifies a request during forwarding. \n Support:
  1380                                Extended"
  1381                                properties:
  1382                                  hostname:
  1383                                    description: "Hostname is the value to be used to
  1384                                    replace the Host header value during forwarding.
  1385                                    \n Support: Extended"
  1386                                    maxLength: 253
  1387                                    minLength: 1
  1388                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1389                                    type: string
  1390                                  path:
  1391                                    description: "Path defines a path rewrite. \n Support:
  1392                                    Extended"
  1393                                    properties:
  1394                                      replaceFullPath:
  1395                                        description: ReplaceFullPath specifies the value
  1396                                          with which to replace the full path of a request
  1397                                          during a rewrite or redirect.
  1398                                        maxLength: 1024
  1399                                        type: string
  1400                                      replacePrefixMatch:
  1401                                        description: "ReplacePrefixMatch specifies the
  1402                                        value with which to replace the prefix match
  1403                                        of a request during a rewrite or redirect. For
  1404                                        example, a request to \"/foo/bar\" with a prefix
  1405                                        match of \"/foo\" would be modified to \"/bar\".
  1406                                        \n Note that this matches the behavior of the
  1407                                        PathPrefix match type. This matches full path
  1408                                        elements. A path element refers to the list
  1409                                        of labels in the path split by the `/` separator.
  1410                                        When specified, a trailing `/` is ignored. For
  1411                                        example, the paths `/abc`, `/abc/`, and `/abc/def`
  1412                                        would all match the prefix `/abc`, but the path
  1413                                        `/abcd` would not."
  1414                                        maxLength: 1024
  1415                                        type: string
  1416                                      type:
  1417                                        description: "Type defines the type of path modifier.
  1418                                        Additional types may be added in a future release
  1419                                        of the API. \n Note that values may be added
  1420                                        to this enum, implementations must ensure that
  1421                                        unknown values will not cause a crash. \n Unknown
  1422                                        values here must result in the implementation
  1423                                        setting the Accepted Condition for the Route
  1424                                        to `status: False`, with a Reason of `UnsupportedValue`."
  1425                                        enum:
  1426                                          - ReplaceFullPath
  1427                                          - ReplacePrefixMatch
  1428                                        type: string
  1429                                    required:
  1430                                      - type
  1431                                    type: object
  1432                                type: object
  1433                            required:
  1434                              - type
  1435                            type: object
  1436                          maxItems: 16
  1437                          type: array
  1438                        matches:
  1439                          default:
  1440                            - path:
  1441                                type: PathPrefix
  1442                                value: /
  1443                          description: "Matches define conditions used for matching the
  1444                          rule against incoming HTTP requests. Each match is independent,
  1445                          i.e. this rule will be matched if **any** one of the matches
  1446                          is satisfied. \n For example, take the following matches configuration:
  1447                          \n ``` matches: - path: value: \"/foo\" headers: - name: \"version\"
  1448                          value: \"v2\" - path: value: \"/v2/foo\" ``` \n For a request
  1449                          to match against this rule, a request must satisfy EITHER
  1450                          of the two conditions: \n - path prefixed with `/foo` AND
  1451                          contains the header `version: v2` - path prefix of `/v2/foo`
  1452                          \n See the documentation for HTTPRouteMatch on how to specify
  1453                          multiple match conditions that should be ANDed together. \n
  1454                          If no matches are specified, the default is a prefix path
  1455                          match on \"/\", which has the effect of matching every HTTP
  1456                          request. \n Proxy or Load Balancer routing configuration generated
  1457                          from HTTPRoutes MUST prioritize matches based on the following
  1458                          criteria, continuing on ties. Across all rules specified on
  1459                          applicable Routes, precedence must be given to the match with
  1460                          the largest number of: \n * Characters in a matching \"Exact\"
  1461                          path match * Characters in a matching \"Prefix\" path match
  1462                          * Header matches. * Query param matches. \n Note: The precedence
  1463                          of RegularExpression path matches are implementation-specific.
  1464                          \n If ties still exist across multiple Routes, matching precedence
  1465                          MUST be determined in order of the following criteria, continuing
  1466                          on ties: \n * The oldest Route based on creation timestamp.
  1467                          * The Route appearing first in alphabetical order by \"{namespace}/{name}\".
  1468                          \n If ties still exist within an HTTPRoute, matching precedence
  1469                          MUST be granted to the FIRST matching rule (in list order)
  1470                          with a match meeting the above criteria. \n When no rules
  1471                          matching a request have been successfully attached to the
  1472                          parent a request is coming from, a HTTP 404 status code MUST
  1473                          be returned."
  1474                          items:
  1475                            description: "HTTPRouteMatch defines the predicate used to
  1476                            match requests to a given action. Multiple match types are
  1477                            ANDed together, i.e. the match will evaluate to true only
  1478                            if all conditions are satisfied. \n For example, the match
  1479                            below will match a HTTP request only if its path starts
  1480                            with `/foo` AND it contains the `version: v1` header: \n
  1481                            ``` match: \n path: value: \"/foo\" headers: - name: \"version\"
  1482                            value \"v1\" \n ```"
  1483                            properties:
  1484                              headers:
  1485                                description: Headers specifies HTTP request header matchers.
  1486                                  Multiple match values are ANDed together, meaning, a
  1487                                  request must match all the specified headers to select
  1488                                  the route.
  1489                                items:
  1490                                  description: HTTPHeaderMatch describes how to select
  1491                                    a HTTP route by matching HTTP request headers.
  1492                                  properties:
  1493                                    name:
  1494                                      description: "Name is the name of the HTTP Header
  1495                                      to be matched. Name matching MUST be case insensitive.
  1496                                      (See https://tools.ietf.org/html/rfc7230#section-3.2).
  1497                                      \n If multiple entries specify equivalent header
  1498                                      names, only the first entry with an equivalent
  1499                                      name MUST be considered for a match. Subsequent
  1500                                      entries with an equivalent header name MUST be
  1501                                      ignored. Due to the case-insensitivity of header
  1502                                      names, \"foo\" and \"Foo\" are considered equivalent.
  1503                                      \n When a header is repeated in an HTTP request,
  1504                                      it is implementation-specific behavior as to how
  1505                                      this is represented. Generally, proxies should
  1506                                      follow the guidance from the RFC: https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2
  1507                                      regarding processing a repeated header, with special
  1508                                      handling for \"Set-Cookie\"."
  1509                                      maxLength: 256
  1510                                      minLength: 1
  1511                                      pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  1512                                      type: string
  1513                                    type:
  1514                                      default: Exact
  1515                                      description: "Type specifies how to match against
  1516                                      the value of the header. \n Support: Core (Exact)
  1517                                      \n Support: Implementation-specific (RegularExpression)
  1518                                      \n Since RegularExpression HeaderMatchType has
  1519                                      implementation-specific conformance, implementations
  1520                                      can support POSIX, PCRE or any other dialects
  1521                                      of regular expressions. Please read the implementation's
  1522                                      documentation to determine the supported dialect."
  1523                                      enum:
  1524                                        - Exact
  1525                                        - RegularExpression
  1526                                      type: string
  1527                                    value:
  1528                                      description: Value is the value of HTTP Header to
  1529                                        be matched.
  1530                                      maxLength: 4096
  1531                                      minLength: 1
  1532                                      type: string
  1533                                  required:
  1534                                    - name
  1535                                    - value
  1536                                  type: object
  1537                                maxItems: 16
  1538                                type: array
  1539                                x-kubernetes-list-map-keys:
  1540                                  - name
  1541                                x-kubernetes-list-type: map
  1542                              method:
  1543                                description: "Method specifies HTTP method matcher. When
  1544                                specified, this route will be matched only if the request
  1545                                has the specified method. \n Support: Extended"
  1546                                enum:
  1547                                  - GET
  1548                                  - HEAD
  1549                                  - POST
  1550                                  - PUT
  1551                                  - DELETE
  1552                                  - CONNECT
  1553                                  - OPTIONS
  1554                                  - TRACE
  1555                                  - PATCH
  1556                                type: string
  1557                              path:
  1558                                default:
  1559                                  type: PathPrefix
  1560                                  value: /
  1561                                description: Path specifies a HTTP request path matcher.
  1562                                  If this field is not specified, a default prefix match
  1563                                  on the "/" path is provided.
  1564                                properties:
  1565                                  type:
  1566                                    default: PathPrefix
  1567                                    description: "Type specifies how to match against
  1568                                    the path Value. \n Support: Core (Exact, PathPrefix)
  1569                                    \n Support: Implementation-specific (RegularExpression)"
  1570                                    enum:
  1571                                      - Exact
  1572                                      - PathPrefix
  1573                                      - RegularExpression
  1574                                    type: string
  1575                                  value:
  1576                                    default: /
  1577                                    description: Value of the HTTP path to match against.
  1578                                    maxLength: 1024
  1579                                    type: string
  1580                                type: object
  1581                              queryParams:
  1582                                description: "QueryParams specifies HTTP query parameter
  1583                                matchers. Multiple match values are ANDed together,
  1584                                meaning, a request must match all the specified query
  1585                                parameters to select the route. \n Support: Extended"
  1586                                items:
  1587                                  description: HTTPQueryParamMatch describes how to select
  1588                                    a HTTP route by matching HTTP query parameters.
  1589                                  properties:
  1590                                    name:
  1591                                      description: "Name is the name of the HTTP query
  1592                                      param to be matched. This must be an exact string
  1593                                      match. (See https://tools.ietf.org/html/rfc7230#section-2.7.3).
  1594                                      \n If multiple entries specify equivalent query
  1595                                      param names, only the first entry with an equivalent
  1596                                      name MUST be considered for a match. Subsequent
  1597                                      entries with an equivalent query param name MUST
  1598                                      be ignored. \n If a query param is repeated in
  1599                                      an HTTP request, the behavior is purposely left
  1600                                      undefined, since different data planes have different
  1601                                      capabilities. However, it is *recommended* that
  1602                                      implementations should match against the first
  1603                                      value of the param if the data plane supports
  1604                                      it, as this behavior is expected in other load
  1605                                      balancing contexts outside of the Gateway API.
  1606                                      \n Users SHOULD NOT route traffic based on repeated
  1607                                      query params to guard themselves against potential
  1608                                      differences in the implementations."
  1609                                      maxLength: 256
  1610                                      minLength: 1
  1611                                      pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  1612                                      type: string
  1613                                    type:
  1614                                      default: Exact
  1615                                      description: "Type specifies how to match against
  1616                                      the value of the query parameter. \n Support:
  1617                                      Extended (Exact) \n Support: Implementation-specific
  1618                                      (RegularExpression) \n Since RegularExpression
  1619                                      QueryParamMatchType has Implementation-specific
  1620                                      conformance, implementations can support POSIX,
  1621                                      PCRE or any other dialects of regular expressions.
  1622                                      Please read the implementation's documentation
  1623                                      to determine the supported dialect."
  1624                                      enum:
  1625                                        - Exact
  1626                                        - RegularExpression
  1627                                      type: string
  1628                                    value:
  1629                                      description: Value is the value of HTTP query param
  1630                                        to be matched.
  1631                                      maxLength: 1024
  1632                                      minLength: 1
  1633                                      type: string
  1634                                  required:
  1635                                    - name
  1636                                    - value
  1637                                  type: object
  1638                                maxItems: 16
  1639                                type: array
  1640                                x-kubernetes-list-map-keys:
  1641                                  - name
  1642                                x-kubernetes-list-type: map
  1643                            type: object
  1644                          maxItems: 8
  1645                          type: array
  1646                      type: object
  1647                    maxItems: 16
  1648                    type: array
  1649                type: object
  1650              status:
  1651                description: Status defines the current state of HTTPRoute.
  1652                properties:
  1653                  parents:
  1654                    description: "Parents is a list of parent resources (usually Gateways)
  1655                    that are associated with the route, and the status of the route
  1656                    with respect to each parent. When this route attaches to a parent,
  1657                    the controller that manages the parent must add an entry to this
  1658                    list when the controller first sees the route and should update
  1659                    the entry as appropriate when the route or gateway is modified.
  1660                    \n Note that parent references that cannot be resolved by an implementation
  1661                    of this API will not be added to this list. Implementations of this
  1662                    API can only populate Route status for the Gateways/parent resources
  1663                    they are responsible for. \n A maximum of 32 Gateways will be represented
  1664                    in this list. An empty list means the route has not been attached
  1665                    to any Gateway."
  1666                    items:
  1667                      description: RouteParentStatus describes the status of a route with
  1668                        respect to an associated Parent.
  1669                      properties:
  1670                        conditions:
  1671                          description: "Conditions describes the status of the route with
  1672                          respect to the Gateway. Note that the route's availability
  1673                          is also subject to the Gateway's own status conditions and
  1674                          listener status. \n If the Route's ParentRef specifies an
  1675                          existing Gateway that supports Routes of this kind AND that
  1676                          Gateway's controller has sufficient access, then that Gateway's
  1677                          controller MUST set the \"Accepted\" condition on the Route,
  1678                          to indicate whether the route has been accepted or rejected
  1679                          by the Gateway, and why. \n A Route MUST be considered \"Accepted\"
  1680                          if at least one of the Route's rules is implemented by the
  1681                          Gateway. \n There are a number of cases where the \"Accepted\"
  1682                          condition may not be set due to lack of controller visibility,
  1683                          that includes when: \n * The Route refers to a non-existent
  1684                          parent. * The Route is of a type that the controller does
  1685                          not support. * The Route is in a namespace the controller
  1686                          does not have access to."
  1687                          items:
  1688                            description: "Condition contains details for one aspect of
  1689                            the current state of this API Resource. --- This struct
  1690                            is intended for direct use as an array at the field path
  1691                            .status.conditions.  For example, \n type FooStatus struct{
  1692                            // Represents the observations of a foo's current state.
  1693                            // Known .status.conditions.type are: \"Available\", \"Progressing\",
  1694                            and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
  1695                            // +listType=map // +listMapKey=type Conditions []metav1.Condition
  1696                            `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
  1697                            protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields
  1698                            }"
  1699                            properties:
  1700                              lastTransitionTime:
  1701                                description: lastTransitionTime is the last time the condition
  1702                                  transitioned from one status to another. This should
  1703                                  be when the underlying condition changed.  If that is
  1704                                  not known, then using the time when the API field changed
  1705                                  is acceptable.
  1706                                format: date-time
  1707                                type: string
  1708                              message:
  1709                                description: message is a human readable message indicating
  1710                                  details about the transition. This may be an empty string.
  1711                                maxLength: 32768
  1712                                type: string
  1713                              observedGeneration:
  1714                                description: observedGeneration represents the .metadata.generation
  1715                                  that the condition was set based upon. For instance,
  1716                                  if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
  1717                                  is 9, the condition is out of date with respect to the
  1718                                  current state of the instance.
  1719                                format: int64
  1720                                minimum: 0
  1721                                type: integer
  1722                              reason:
  1723                                description: reason contains a programmatic identifier
  1724                                  indicating the reason for the condition's last transition.
  1725                                  Producers of specific condition types may define expected
  1726                                  values and meanings for this field, and whether the
  1727                                  values are considered a guaranteed API. The value should
  1728                                  be a CamelCase string. This field may not be empty.
  1729                                maxLength: 1024
  1730                                minLength: 1
  1731                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  1732                                type: string
  1733                              status:
  1734                                description: status of the condition, one of True, False,
  1735                                  Unknown.
  1736                                enum:
  1737                                  - "True"
  1738                                  - "False"
  1739                                  - Unknown
  1740                                type: string
  1741                              type:
  1742                                description: type of condition in CamelCase or in foo.example.com/CamelCase.
  1743                                  --- Many .condition.type values are consistent across
  1744                                  resources like Available, but because arbitrary conditions
  1745                                  can be useful (see .node.status.conditions), the ability
  1746                                  to deconflict is important. The regex it matches is
  1747                                  (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  1748                                maxLength: 316
  1749                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
  1750                                type: string
  1751                            required:
  1752                              - lastTransitionTime
  1753                              - message
  1754                              - reason
  1755                              - status
  1756                              - type
  1757                            type: object
  1758                          maxItems: 8
  1759                          minItems: 1
  1760                          type: array
  1761                          x-kubernetes-list-map-keys:
  1762                            - type
  1763                          x-kubernetes-list-type: map
  1764                        controllerName:
  1765                          description: "ControllerName is a domain/path string that indicates
  1766                          the name of the controller that wrote this status. This corresponds
  1767                          with the controllerName field on GatewayClass. \n Example:
  1768                          \"example.net/gateway-controller\". \n The format of this
  1769                          field is DOMAIN \"/\" PATH, where DOMAIN and PATH are valid
  1770                          Kubernetes names (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names).
  1771                          \n Controllers MUST populate this field when writing status.
  1772                          Controllers should ensure that entries to status populated
  1773                          with their ControllerName are cleaned up when they are no
  1774                          longer necessary."
  1775                          maxLength: 253
  1776                          minLength: 1
  1777                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
  1778                          type: string
  1779                        parentRef:
  1780                          description: ParentRef corresponds with a ParentRef in the spec
  1781                            that this RouteParentStatus struct describes the status of.
  1782                          properties:
  1783                            group:
  1784                              default: gateway.networking.k8s.io
  1785                              description: "Group is the group of the referent. When unspecified,
  1786                              \"gateway.networking.k8s.io\" is inferred. To set the
  1787                              core API group (such as for a \"Service\" kind referent),
  1788                              Group must be explicitly set to \"\" (empty string). \n
  1789                              Support: Core"
  1790                              maxLength: 253
  1791                              pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1792                              type: string
  1793                            kind:
  1794                              default: Gateway
  1795                              description: "Kind is kind of the referent. \n Support:
  1796                              Core (Gateway) \n Support: Implementation-specific (Other
  1797                              Resources)"
  1798                              maxLength: 63
  1799                              minLength: 1
  1800                              pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  1801                              type: string
  1802                            name:
  1803                              description: "Name is the name of the referent. \n Support:
  1804                              Core"
  1805                              maxLength: 253
  1806                              minLength: 1
  1807                              type: string
  1808                            namespace:
  1809                              description: "Namespace is the namespace of the referent.
  1810                              When unspecified, this refers to the local namespace of
  1811                              the Route. \n Note that there are specific rules for ParentRefs
  1812                              which cross namespace boundaries. Cross-namespace references
  1813                              are only valid if they are explicitly allowed by something
  1814                              in the namespace they are referring to. For example: Gateway
  1815                              has the AllowedRoutes field, and ReferenceGrant provides
  1816                              a generic way to enable any other kind of cross-namespace
  1817                              reference. \n Support: Core"
  1818                              maxLength: 63
  1819                              minLength: 1
  1820                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
  1821                              type: string
  1822                            sectionName:
  1823                              description: "SectionName is the name of a section within
  1824                              the target resource. In the following resources, SectionName
  1825                              is interpreted as the following: \n * Gateway: Listener
  1826                              Name. When both Port (experimental) and SectionName are
  1827                              specified, the name and port of the selected listener
  1828                              must match both specified values. \n Implementations MAY
  1829                              choose to support attaching Routes to other resources.
  1830                              If that is the case, they MUST clearly document how SectionName
  1831                              is interpreted. \n When unspecified (empty string), this
  1832                              will reference the entire resource. For the purpose of
  1833                              status, an attachment is considered successful if at least
  1834                              one section in the parent resource accepts it. For example,
  1835                              Gateway listeners can restrict which Routes can attach
  1836                              to them by Route kind, namespace, or hostname. If 1 of
  1837                              2 Gateway listeners accept attachment from the referencing
  1838                              Route, the Route MUST be considered successfully attached.
  1839                              If no Gateway listeners accept attachment from this Route,
  1840                              the Route MUST be considered detached from the Gateway.
  1841                              \n Support: Core"
  1842                              maxLength: 253
  1843                              minLength: 1
  1844                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1845                              type: string
  1846                          required:
  1847                            - name
  1848                          type: object
  1849                      required:
  1850                        - controllerName
  1851                        - parentRef
  1852                      type: object
  1853                    maxItems: 32
  1854                    type: array
  1855                required:
  1856                  - parents
  1857                type: object
  1858            required:
  1859              - spec
  1860            type: object
  1861        served: true
  1862        storage: false
  1863        subresources:
  1864          status: {}
  1865      - additionalPrinterColumns:
  1866          - jsonPath: .spec.hostnames
  1867            name: Hostnames
  1868            type: string
  1869          - jsonPath: .metadata.creationTimestamp
  1870            name: Age
  1871            type: date
  1872        name: v1beta1
  1873        schema:
  1874          openAPIV3Schema:
  1875            description: HTTPRoute provides a way to route HTTP requests. This includes
  1876              the capability to match requests by hostname, path, header, or query param.
  1877              Filters can be used to specify additional processing steps. Backends specify
  1878              where matching requests should be routed.
  1879            properties:
  1880              apiVersion:
  1881                description: 'APIVersion defines the versioned schema of this representation
  1882                of an object. Servers should convert recognized schemas to the latest
  1883                internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  1884                type: string
  1885              kind:
  1886                description: 'Kind is a string value representing the REST resource this
  1887                object represents. Servers may infer this from the endpoint the client
  1888                submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  1889                type: string
  1890              metadata:
  1891                type: object
  1892              spec:
  1893                description: Spec defines the desired state of HTTPRoute.
  1894                properties:
  1895                  hostnames:
  1896                    description: "Hostnames defines a set of hostname that should match
  1897                    against the HTTP Host header to select a HTTPRoute to process the
  1898                    request. This matches the RFC 1123 definition of a hostname with
  1899                    2 notable exceptions: \n 1. IPs are not allowed. 2. A hostname may
  1900                    be prefixed with a wildcard label (`*.`). The wildcard label must
  1901                    appear by itself as the first label. \n If a hostname is specified
  1902                    by both the Listener and HTTPRoute, there must be at least one intersecting
  1903                    hostname for the HTTPRoute to be attached to the Listener. For example:
  1904                    \n * A Listener with `test.example.com` as the hostname matches
  1905                    HTTPRoutes that have either not specified any hostnames, or have
  1906                    specified at least one of `test.example.com` or `*.example.com`.
  1907                    * A Listener with `*.example.com` as the hostname matches HTTPRoutes
  1908                    that have either not specified any hostnames or have specified at
  1909                    least one hostname that matches the Listener hostname. For example,
  1910                    `*.example.com`, `test.example.com`, and `foo.test.example.com`
  1911                    would all match. On the other hand, `example.com` and `test.example.net`
  1912                    would not match. \n Hostnames that are prefixed with a wildcard
  1913                    label (`*.`) are interpreted as a suffix match. That means that
  1914                    a match for `*.example.com` would match both `test.example.com`,
  1915                    and `foo.test.example.com`, but not `example.com`. \n If both the
  1916                    Listener and HTTPRoute have specified hostnames, any HTTPRoute hostnames
  1917                    that do not match the Listener hostname MUST be ignored. For example,
  1918                    if a Listener specified `*.example.com`, and the HTTPRoute specified
  1919                    `test.example.com` and `test.example.net`, `test.example.net` must
  1920                    not be considered for a match. \n If both the Listener and HTTPRoute
  1921                    have specified hostnames, and none match with the criteria above,
  1922                    then the HTTPRoute is not accepted. The implementation must raise
  1923                    an 'Accepted' Condition with a status of `False` in the corresponding
  1924                    RouteParentStatus. \n In the event that multiple HTTPRoutes specify
  1925                    intersecting hostnames (e.g. overlapping wildcard matching and exact
  1926                    matching hostnames), precedence must be given to rules from the
  1927                    HTTPRoute with the largest number of: \n * Characters in a matching
  1928                    non-wildcard hostname. * Characters in a matching hostname. \n If
  1929                    ties exist across multiple Routes, the matching precedence rules
  1930                    for HTTPRouteMatches takes over. \n Support: Core"
  1931                    items:
  1932                      description: "Hostname is the fully qualified domain name of a network
  1933                      host. This matches the RFC 1123 definition of a hostname with
  1934                      2 notable exceptions: \n 1. IPs are not allowed. 2. A hostname
  1935                      may be prefixed with a wildcard label (`*.`). The wildcard label
  1936                      must appear by itself as the first label. \n Hostname can be \"precise\"
  1937                      which is a domain name without the terminating dot of a network
  1938                      host (e.g. \"foo.example.com\") or \"wildcard\", which is a domain
  1939                      name prefixed with a single wildcard label (e.g. `*.example.com`).
  1940                      \n Note that as per RFC1035 and RFC1123, a *label* must consist
  1941                      of lower case alphanumeric characters or '-', and must start and
  1942                      end with an alphanumeric character. No other punctuation is allowed."
  1943                      maxLength: 253
  1944                      minLength: 1
  1945                      pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1946                      type: string
  1947                    maxItems: 16
  1948                    type: array
  1949                  parentRefs:
  1950                    description: "ParentRefs references the resources (usually Gateways)
  1951                    that a Route wants to be attached to. Note that the referenced parent
  1952                    resource needs to allow this for the attachment to be complete.
  1953                    For Gateways, that means the Gateway needs to allow attachment from
  1954                    Routes of this kind and namespace. \n The only kind of parent resource
  1955                    with \"Core\" support is Gateway. This API may be extended in the
  1956                    future to support additional kinds of parent resources such as one
  1957                    of the route kinds. \n It is invalid to reference an identical parent
  1958                    more than once. It is valid to reference multiple distinct sections
  1959                    within the same parent resource, such as 2 Listeners within a Gateway.
  1960                    \n It is possible to separately reference multiple distinct objects
  1961                    that may be collapsed by an implementation. For example, some implementations
  1962                    may choose to merge compatible Gateway Listeners together. If that
  1963                    is the case, the list of routes attached to those resources should
  1964                    also be merged. \n Note that for ParentRefs that cross namespace
  1965                    boundaries, there are specific rules. Cross-namespace references
  1966                    are only valid if they are explicitly allowed by something in the
  1967                    namespace they are referring to. For example, Gateway has the AllowedRoutes
  1968                    field, and ReferenceGrant provides a generic way to enable any other
  1969                    kind of cross-namespace reference."
  1970                    items:
  1971                      description: "ParentReference identifies an API object (usually
  1972                      a Gateway) that can be considered a parent of this resource (usually
  1973                      a route). The only kind of parent resource with \"Core\" support
  1974                      is Gateway. This API may be extended in the future to support
  1975                      additional kinds of parent resources, such as HTTPRoute. \n The
  1976                      API object must be valid in the cluster; the Group and Kind must
  1977                      be registered in the cluster for this reference to be valid."
  1978                      properties:
  1979                        group:
  1980                          default: gateway.networking.k8s.io
  1981                          description: "Group is the group of the referent. When unspecified,
  1982                          \"gateway.networking.k8s.io\" is inferred. To set the core
  1983                          API group (such as for a \"Service\" kind referent), Group
  1984                          must be explicitly set to \"\" (empty string). \n Support:
  1985                          Core"
  1986                          maxLength: 253
  1987                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  1988                          type: string
  1989                        kind:
  1990                          default: Gateway
  1991                          description: "Kind is kind of the referent. \n Support: Core
  1992                          (Gateway) \n Support: Implementation-specific (Other Resources)"
  1993                          maxLength: 63
  1994                          minLength: 1
  1995                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  1996                          type: string
  1997                        name:
  1998                          description: "Name is the name of the referent. \n Support:
  1999                          Core"
  2000                          maxLength: 253
  2001                          minLength: 1
  2002                          type: string
  2003                        namespace:
  2004                          description: "Namespace is the namespace of the referent. When
  2005                          unspecified, this refers to the local namespace of the Route.
  2006                          \n Note that there are specific rules for ParentRefs which
  2007                          cross namespace boundaries. Cross-namespace references are
  2008                          only valid if they are explicitly allowed by something in
  2009                          the namespace they are referring to. For example: Gateway
  2010                          has the AllowedRoutes field, and ReferenceGrant provides a
  2011                          generic way to enable any other kind of cross-namespace reference.
  2012                          \n Support: Core"
  2013                          maxLength: 63
  2014                          minLength: 1
  2015                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
  2016                          type: string
  2017                        sectionName:
  2018                          description: "SectionName is the name of a section within the
  2019                          target resource. In the following resources, SectionName is
  2020                          interpreted as the following: \n * Gateway: Listener Name.
  2021                          When both Port (experimental) and SectionName are specified,
  2022                          the name and port of the selected listener must match both
  2023                          specified values. \n Implementations MAY choose to support
  2024                          attaching Routes to other resources. If that is the case,
  2025                          they MUST clearly document how SectionName is interpreted.
  2026                          \n When unspecified (empty string), this will reference the
  2027                          entire resource. For the purpose of status, an attachment
  2028                          is considered successful if at least one section in the parent
  2029                          resource accepts it. For example, Gateway listeners can restrict
  2030                          which Routes can attach to them by Route kind, namespace,
  2031                          or hostname. If 1 of 2 Gateway listeners accept attachment
  2032                          from the referencing Route, the Route MUST be considered successfully
  2033                          attached. If no Gateway listeners accept attachment from this
  2034                          Route, the Route MUST be considered detached from the Gateway.
  2035                          \n Support: Core"
  2036                          maxLength: 253
  2037                          minLength: 1
  2038                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2039                          type: string
  2040                      required:
  2041                        - name
  2042                      type: object
  2043                    maxItems: 32
  2044                    type: array
  2045                  rules:
  2046                    default:
  2047                      - matches:
  2048                          - path:
  2049                              type: PathPrefix
  2050                              value: /
  2051                    description: Rules are a list of HTTP matchers, filters and actions.
  2052                    items:
  2053                      description: HTTPRouteRule defines semantics for matching an HTTP
  2054                        request based on conditions (matches), processing it (filters),
  2055                        and forwarding the request to an API object (backendRefs).
  2056                      properties:
  2057                        backendRefs:
  2058                          description: "BackendRefs defines the backend(s) where matching
  2059                          requests should be sent. \n Failure behavior here depends
  2060                          on how many BackendRefs are specified and how many are invalid.
  2061                          \n If *all* entries in BackendRefs are invalid, and there
  2062                          are also no filters specified in this route rule, *all* traffic
  2063                          which matches this rule MUST receive a 500 status code. \n
  2064                          See the HTTPBackendRef definition for the rules about what
  2065                          makes a single HTTPBackendRef invalid. \n When a HTTPBackendRef
  2066                          is invalid, 500 status codes MUST be returned for requests
  2067                          that would have otherwise been routed to an invalid backend.
  2068                          If multiple backends are specified, and some are invalid,
  2069                          the proportion of requests that would otherwise have been
  2070                          routed to an invalid backend MUST receive a 500 status code.
  2071                          \n For example, if two backends are specified with equal weights,
  2072                          and one is invalid, 50 percent of traffic must receive a 500.
  2073                          Implementations may choose how that 50 percent is determined.
  2074                          \n Support: Core for Kubernetes Service \n Support: Extended
  2075                          for Kubernetes ServiceImport \n Support: Implementation-specific
  2076                          for any other resource \n Support for weight: Core"
  2077                          items:
  2078                            description: HTTPBackendRef defines how a HTTPRoute should
  2079                              forward an HTTP request.
  2080                            properties:
  2081                              filters:
  2082                                description: "Filters defined at this level should be
  2083                                executed if and only if the request is being forwarded
  2084                                to the backend defined here. \n Support: Implementation-specific
  2085                                (For broader support of filters, use the Filters field
  2086                                in HTTPRouteRule.)"
  2087                                items:
  2088                                  description: HTTPRouteFilter defines processing steps
  2089                                    that must be completed during the request or response
  2090                                    lifecycle. HTTPRouteFilters are meant as an extension
  2091                                    point to express processing that may be done in Gateway
  2092                                    implementations. Some examples include request or
  2093                                    response modification, implementing authentication
  2094                                    strategies, rate-limiting, and traffic shaping. API
  2095                                    guarantee/conformance is defined based on the type
  2096                                    of the filter.
  2097                                  properties:
  2098                                    extensionRef:
  2099                                      description: "ExtensionRef is an optional, implementation-specific
  2100                                      extension to the \"filter\" behavior.  For example,
  2101                                      resource \"myroutefilter\" in group \"networking.example.net\").
  2102                                      ExtensionRef MUST NOT be used for core and extended
  2103                                      filters. \n Support: Implementation-specific"
  2104                                      properties:
  2105                                        group:
  2106                                          description: Group is the group of the referent.
  2107                                            For example, "gateway.networking.k8s.io".
  2108                                            When unspecified or empty string, core API
  2109                                            group is inferred.
  2110                                          maxLength: 253
  2111                                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2112                                          type: string
  2113                                        kind:
  2114                                          description: Kind is kind of the referent. For
  2115                                            example "HTTPRoute" or "Service".
  2116                                          maxLength: 63
  2117                                          minLength: 1
  2118                                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  2119                                          type: string
  2120                                        name:
  2121                                          description: Name is the name of the referent.
  2122                                          maxLength: 253
  2123                                          minLength: 1
  2124                                          type: string
  2125                                      required:
  2126                                        - group
  2127                                        - kind
  2128                                        - name
  2129                                      type: object
  2130                                    requestHeaderModifier:
  2131                                      description: "RequestHeaderModifier defines a schema
  2132                                      for a filter that modifies request headers. \n
  2133                                      Support: Core"
  2134                                      properties:
  2135                                        add:
  2136                                          description: "Add adds the given header(s) (name,
  2137                                          value) to the request before the action. It
  2138                                          appends to any existing values associated
  2139                                          with the header name. \n Input: GET /foo HTTP/1.1
  2140                                          my-header: foo \n Config: add: - name: \"my-header\"
  2141                                          value: \"bar,baz\" \n Output: GET /foo HTTP/1.1
  2142                                          my-header: foo,bar,baz"
  2143                                          items:
  2144                                            description: HTTPHeader represents an HTTP
  2145                                              Header name and value as defined by RFC
  2146                                              7230.
  2147                                            properties:
  2148                                              name:
  2149                                                description: "Name is the name of the
  2150                                                HTTP Header to be matched. Name matching
  2151                                                MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  2152                                                \n If multiple entries specify equivalent
  2153                                                header names, the first entry with an
  2154                                                equivalent name MUST be considered for
  2155                                                a match. Subsequent entries with an
  2156                                                equivalent header name MUST be ignored.
  2157                                                Due to the case-insensitivity of header
  2158                                                names, \"foo\" and \"Foo\" are considered
  2159                                                equivalent."
  2160                                                maxLength: 256
  2161                                                minLength: 1
  2162                                                pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  2163                                                type: string
  2164                                              value:
  2165                                                description: Value is the value of HTTP
  2166                                                  Header to be matched.
  2167                                                maxLength: 4096
  2168                                                minLength: 1
  2169                                                type: string
  2170                                            required:
  2171                                              - name
  2172                                              - value
  2173                                            type: object
  2174                                          maxItems: 16
  2175                                          type: array
  2176                                          x-kubernetes-list-map-keys:
  2177                                            - name
  2178                                          x-kubernetes-list-type: map
  2179                                        remove:
  2180                                          description: "Remove the given header(s) from
  2181                                          the HTTP request before the action. The value
  2182                                          of Remove is a list of HTTP header names.
  2183                                          Note that the header names are case-insensitive
  2184                                          (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
  2185                                          \n Input: GET /foo HTTP/1.1 my-header1: foo
  2186                                          my-header2: bar my-header3: baz \n Config:
  2187                                          remove: [\"my-header1\", \"my-header3\"] \n
  2188                                          Output: GET /foo HTTP/1.1 my-header2: bar"
  2189                                          items:
  2190                                            type: string
  2191                                          maxItems: 16
  2192                                          type: array
  2193                                        set:
  2194                                          description: "Set overwrites the request with
  2195                                          the given header (name, value) before the
  2196                                          action. \n Input: GET /foo HTTP/1.1 my-header:
  2197                                          foo \n Config: set: - name: \"my-header\"
  2198                                          value: \"bar\" \n Output: GET /foo HTTP/1.1
  2199                                          my-header: bar"
  2200                                          items:
  2201                                            description: HTTPHeader represents an HTTP
  2202                                              Header name and value as defined by RFC
  2203                                              7230.
  2204                                            properties:
  2205                                              name:
  2206                                                description: "Name is the name of the
  2207                                                HTTP Header to be matched. Name matching
  2208                                                MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  2209                                                \n If multiple entries specify equivalent
  2210                                                header names, the first entry with an
  2211                                                equivalent name MUST be considered for
  2212                                                a match. Subsequent entries with an
  2213                                                equivalent header name MUST be ignored.
  2214                                                Due to the case-insensitivity of header
  2215                                                names, \"foo\" and \"Foo\" are considered
  2216                                                equivalent."
  2217                                                maxLength: 256
  2218                                                minLength: 1
  2219                                                pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  2220                                                type: string
  2221                                              value:
  2222                                                description: Value is the value of HTTP
  2223                                                  Header to be matched.
  2224                                                maxLength: 4096
  2225                                                minLength: 1
  2226                                                type: string
  2227                                            required:
  2228                                              - name
  2229                                              - value
  2230                                            type: object
  2231                                          maxItems: 16
  2232                                          type: array
  2233                                          x-kubernetes-list-map-keys:
  2234                                            - name
  2235                                          x-kubernetes-list-type: map
  2236                                      type: object
  2237                                    requestMirror:
  2238                                      description: "RequestMirror defines a schema for
  2239                                      a filter that mirrors requests. Requests are sent
  2240                                      to the specified destination, but responses from
  2241                                      that destination are ignored. \n Support: Extended"
  2242                                      properties:
  2243                                        backendRef:
  2244                                          description: "BackendRef references a resource
  2245                                          where mirrored requests are sent. \n If the
  2246                                          referent cannot be found, this BackendRef
  2247                                          is invalid and must be dropped from the Gateway.
  2248                                          The controller must ensure the \"ResolvedRefs\"
  2249                                          condition on the Route status is set to `status:
  2250                                          False` and not configure this backend in the
  2251                                          underlying implementation. \n If there is
  2252                                          a cross-namespace reference to an *existing*
  2253                                          object that is not allowed by a ReferenceGrant,
  2254                                          the controller must ensure the \"ResolvedRefs\"
  2255                                          \ condition on the Route is set to `status:
  2256                                          False`, with the \"RefNotPermitted\" reason
  2257                                          and not configure this backend in the underlying
  2258                                          implementation. \n In either error case, the
  2259                                          Message of the `ResolvedRefs` Condition should
  2260                                          be used to provide more detail about the problem.
  2261                                          \n Support: Extended for Kubernetes Service
  2262                                          \n Support: Implementation-specific for any
  2263                                          other resource"
  2264                                          properties:
  2265                                            group:
  2266                                              default: ""
  2267                                              description: Group is the group of the referent.
  2268                                                For example, "gateway.networking.k8s.io".
  2269                                                When unspecified or empty string, core
  2270                                                API group is inferred.
  2271                                              maxLength: 253
  2272                                              pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2273                                              type: string
  2274                                            kind:
  2275                                              default: Service
  2276                                              description: "Kind is the Kubernetes resource
  2277                                              kind of the referent. For example \"Service\".
  2278                                              \n Defaults to \"Service\" when not specified.
  2279                                              \n ExternalName services can refer to
  2280                                              CNAME DNS records that may live outside
  2281                                              of the cluster and as such are difficult
  2282                                              to reason about in terms of conformance.
  2283                                              They also may not be safe to forward to
  2284                                              (see CVE-2021-25740 for more information).
  2285                                              Implementations SHOULD NOT support ExternalName
  2286                                              Services. \n Support: Core (Services with
  2287                                              a type other than ExternalName) \n Support:
  2288                                              Implementation-specific (Services with
  2289                                              type ExternalName)"
  2290                                              maxLength: 63
  2291                                              minLength: 1
  2292                                              pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  2293                                              type: string
  2294                                            name:
  2295                                              description: Name is the name of the referent.
  2296                                              maxLength: 253
  2297                                              minLength: 1
  2298                                              type: string
  2299                                            namespace:
  2300                                              description: "Namespace is the namespace
  2301                                              of the backend. When unspecified, the
  2302                                              local namespace is inferred. \n Note that
  2303                                              when a namespace is specified, a ReferenceGrant
  2304                                              object is required in the referent namespace
  2305                                              to allow that namespace's owner to accept
  2306                                              the reference. See the ReferenceGrant
  2307                                              documentation for details. \n Support:
  2308                                              Core"
  2309                                              maxLength: 63
  2310                                              minLength: 1
  2311                                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
  2312                                              type: string
  2313                                            port:
  2314                                              description: Port specifies the destination
  2315                                                port number to use for this resource.
  2316                                                Port is required when the referent is
  2317                                                a Kubernetes Service. In this case, the
  2318                                                port number is the service port number,
  2319                                                not the target port. For other resources,
  2320                                                destination port might be derived from
  2321                                                the referent resource or this field.
  2322                                              format: int32
  2323                                              maximum: 65535
  2324                                              minimum: 1
  2325                                              type: integer
  2326                                          required:
  2327                                            - name
  2328                                          type: object
  2329                                      required:
  2330                                        - backendRef
  2331                                      type: object
  2332                                    requestRedirect:
  2333                                      description: "RequestRedirect defines a schema for
  2334                                      a filter that responds to the request with an
  2335                                      HTTP redirection. \n Support: Core"
  2336                                      properties:
  2337                                        hostname:
  2338                                          description: "Hostname is the hostname to be
  2339                                          used in the value of the `Location` header
  2340                                          in the response. When empty, the hostname
  2341                                          in the `Host` header of the request is used.
  2342                                          \n Support: Core"
  2343                                          maxLength: 253
  2344                                          minLength: 1
  2345                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2346                                          type: string
  2347                                        path:
  2348                                          description: "Path defines parameters used to
  2349                                          modify the path of the incoming request. The
  2350                                          modified path is then used to construct the
  2351                                          `Location` header. When empty, the request
  2352                                          path is used as-is. \n Support: Extended"
  2353                                          properties:
  2354                                            replaceFullPath:
  2355                                              description: ReplaceFullPath specifies the
  2356                                                value with which to replace the full path
  2357                                                of a request during a rewrite or redirect.
  2358                                              maxLength: 1024
  2359                                              type: string
  2360                                            replacePrefixMatch:
  2361                                              description: "ReplacePrefixMatch specifies
  2362                                              the value with which to replace the prefix
  2363                                              match of a request during a rewrite or
  2364                                              redirect. For example, a request to \"/foo/bar\"
  2365                                              with a prefix match of \"/foo\" would
  2366                                              be modified to \"/bar\". \n Note that
  2367                                              this matches the behavior of the PathPrefix
  2368                                              match type. This matches full path elements.
  2369                                              A path element refers to the list of labels
  2370                                              in the path split by the `/` separator.
  2371                                              When specified, a trailing `/` is ignored.
  2372                                              For example, the paths `/abc`, `/abc/`,
  2373                                              and `/abc/def` would all match the prefix
  2374                                              `/abc`, but the path `/abcd` would not."
  2375                                              maxLength: 1024
  2376                                              type: string
  2377                                            type:
  2378                                              description: "Type defines the type of path
  2379                                              modifier. Additional types may be added
  2380                                              in a future release of the API. \n Note
  2381                                              that values may be added to this enum,
  2382                                              implementations must ensure that unknown
  2383                                              values will not cause a crash. \n Unknown
  2384                                              values here must result in the implementation
  2385                                              setting the Accepted Condition for the
  2386                                              Route to `status: False`, with a Reason
  2387                                              of `UnsupportedValue`."
  2388                                              enum:
  2389                                                - ReplaceFullPath
  2390                                                - ReplacePrefixMatch
  2391                                              type: string
  2392                                          required:
  2393                                            - type
  2394                                          type: object
  2395                                        port:
  2396                                          description: "Port is the port to be used in
  2397                                          the value of the `Location` header in the
  2398                                          response. \n When empty, the Gateway Listener
  2399                                          port is used. \n Implementations SHOULD NOT
  2400                                          add the port number in the 'Location' header
  2401                                          in the following cases: \n * A Location header
  2402                                          that will use HTTP (whether that is determined
  2403                                          via the Listener protocol or the Scheme field)
  2404                                          _and_ use port 80. * A Location header that
  2405                                          will use HTTPS (whether that is determined
  2406                                          via the Listener protocol or the Scheme field)
  2407                                          _and_ use port 443. \n Support: Extended"
  2408                                          format: int32
  2409                                          maximum: 65535
  2410                                          minimum: 1
  2411                                          type: integer
  2412                                        scheme:
  2413                                          description: "Scheme is the scheme to be used
  2414                                          in the value of the `Location` header in the
  2415                                          response. When empty, the scheme of the request
  2416                                          is used. \n Note that values may be added
  2417                                          to this enum, implementations must ensure
  2418                                          that unknown values will not cause a crash.
  2419                                          \n Unknown values here must result in the
  2420                                          implementation setting the Accepted Condition
  2421                                          for the Route to `status: False`, with a Reason
  2422                                          of `UnsupportedValue`. \n Support: Extended"
  2423                                          enum:
  2424                                            - http
  2425                                            - https
  2426                                          type: string
  2427                                        statusCode:
  2428                                          default: 302
  2429                                          description: "StatusCode is the HTTP status
  2430                                          code to be used in response. \n Note that
  2431                                          values may be added to this enum, implementations
  2432                                          must ensure that unknown values will not cause
  2433                                          a crash. \n Unknown values here must result
  2434                                          in the implementation setting the Accepted
  2435                                          Condition for the Route to `status: False`,
  2436                                          with a Reason of `UnsupportedValue`. \n Support:
  2437                                          Core"
  2438                                          enum:
  2439                                            - 301
  2440                                            - 302
  2441                                          type: integer
  2442                                      type: object
  2443                                    responseHeaderModifier:
  2444                                      description: "ResponseHeaderModifier defines a schema
  2445                                      for a filter that modifies response headers. \n
  2446                                      Support: Extended"
  2447                                      properties:
  2448                                        add:
  2449                                          description: "Add adds the given header(s) (name,
  2450                                          value) to the request before the action. It
  2451                                          appends to any existing values associated
  2452                                          with the header name. \n Input: GET /foo HTTP/1.1
  2453                                          my-header: foo \n Config: add: - name: \"my-header\"
  2454                                          value: \"bar,baz\" \n Output: GET /foo HTTP/1.1
  2455                                          my-header: foo,bar,baz"
  2456                                          items:
  2457                                            description: HTTPHeader represents an HTTP
  2458                                              Header name and value as defined by RFC
  2459                                              7230.
  2460                                            properties:
  2461                                              name:
  2462                                                description: "Name is the name of the
  2463                                                HTTP Header to be matched. Name matching
  2464                                                MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  2465                                                \n If multiple entries specify equivalent
  2466                                                header names, the first entry with an
  2467                                                equivalent name MUST be considered for
  2468                                                a match. Subsequent entries with an
  2469                                                equivalent header name MUST be ignored.
  2470                                                Due to the case-insensitivity of header
  2471                                                names, \"foo\" and \"Foo\" are considered
  2472                                                equivalent."
  2473                                                maxLength: 256
  2474                                                minLength: 1
  2475                                                pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  2476                                                type: string
  2477                                              value:
  2478                                                description: Value is the value of HTTP
  2479                                                  Header to be matched.
  2480                                                maxLength: 4096
  2481                                                minLength: 1
  2482                                                type: string
  2483                                            required:
  2484                                              - name
  2485                                              - value
  2486                                            type: object
  2487                                          maxItems: 16
  2488                                          type: array
  2489                                          x-kubernetes-list-map-keys:
  2490                                            - name
  2491                                          x-kubernetes-list-type: map
  2492                                        remove:
  2493                                          description: "Remove the given header(s) from
  2494                                          the HTTP request before the action. The value
  2495                                          of Remove is a list of HTTP header names.
  2496                                          Note that the header names are case-insensitive
  2497                                          (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
  2498                                          \n Input: GET /foo HTTP/1.1 my-header1: foo
  2499                                          my-header2: bar my-header3: baz \n Config:
  2500                                          remove: [\"my-header1\", \"my-header3\"] \n
  2501                                          Output: GET /foo HTTP/1.1 my-header2: bar"
  2502                                          items:
  2503                                            type: string
  2504                                          maxItems: 16
  2505                                          type: array
  2506                                        set:
  2507                                          description: "Set overwrites the request with
  2508                                          the given header (name, value) before the
  2509                                          action. \n Input: GET /foo HTTP/1.1 my-header:
  2510                                          foo \n Config: set: - name: \"my-header\"
  2511                                          value: \"bar\" \n Output: GET /foo HTTP/1.1
  2512                                          my-header: bar"
  2513                                          items:
  2514                                            description: HTTPHeader represents an HTTP
  2515                                              Header name and value as defined by RFC
  2516                                              7230.
  2517                                            properties:
  2518                                              name:
  2519                                                description: "Name is the name of the
  2520                                                HTTP Header to be matched. Name matching
  2521                                                MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  2522                                                \n If multiple entries specify equivalent
  2523                                                header names, the first entry with an
  2524                                                equivalent name MUST be considered for
  2525                                                a match. Subsequent entries with an
  2526                                                equivalent header name MUST be ignored.
  2527                                                Due to the case-insensitivity of header
  2528                                                names, \"foo\" and \"Foo\" are considered
  2529                                                equivalent."
  2530                                                maxLength: 256
  2531                                                minLength: 1
  2532                                                pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  2533                                                type: string
  2534                                              value:
  2535                                                description: Value is the value of HTTP
  2536                                                  Header to be matched.
  2537                                                maxLength: 4096
  2538                                                minLength: 1
  2539                                                type: string
  2540                                            required:
  2541                                              - name
  2542                                              - value
  2543                                            type: object
  2544                                          maxItems: 16
  2545                                          type: array
  2546                                          x-kubernetes-list-map-keys:
  2547                                            - name
  2548                                          x-kubernetes-list-type: map
  2549                                      type: object
  2550                                    type:
  2551                                      description: "Type identifies the type of filter
  2552                                      to apply. As with other API fields, types are
  2553                                      classified into three conformance levels: \n -
  2554                                      Core: Filter types and their corresponding configuration
  2555                                      defined by \"Support: Core\" in this package,
  2556                                      e.g. \"RequestHeaderModifier\". All implementations
  2557                                      must support core filters. \n - Extended: Filter
  2558                                      types and their corresponding configuration defined
  2559                                      by \"Support: Extended\" in this package, e.g.
  2560                                      \"RequestMirror\". Implementers are encouraged
  2561                                      to support extended filters. \n - Implementation-specific:
  2562                                      Filters that are defined and supported by specific
  2563                                      vendors. In the future, filters showing convergence
  2564                                      in behavior across multiple implementations will
  2565                                      be considered for inclusion in extended or core
  2566                                      conformance levels. Filter-specific configuration
  2567                                      for such filters is specified using the ExtensionRef
  2568                                      field. `Type` should be set to \"ExtensionRef\"
  2569                                      for custom filters. \n Implementers are encouraged
  2570                                      to define custom implementation types to extend
  2571                                      the core API with implementation-specific behavior.
  2572                                      \n If a reference to a custom filter type cannot
  2573                                      be resolved, the filter MUST NOT be skipped. Instead,
  2574                                      requests that would have been processed by that
  2575                                      filter MUST receive a HTTP error response. \n
  2576                                      Note that values may be added to this enum, implementations
  2577                                      must ensure that unknown values will not cause
  2578                                      a crash. \n Unknown values here must result in
  2579                                      the implementation setting the Accepted Condition
  2580                                      for the Route to `status: False`, with a Reason
  2581                                      of `UnsupportedValue`."
  2582                                      enum:
  2583                                        - RequestHeaderModifier
  2584                                        - ResponseHeaderModifier
  2585                                        - RequestMirror
  2586                                        - RequestRedirect
  2587                                        - URLRewrite
  2588                                        - ExtensionRef
  2589                                      type: string
  2590                                    urlRewrite:
  2591                                      description: "URLRewrite defines a schema for a
  2592                                      filter that modifies a request during forwarding.
  2593                                      \n Support: Extended"
  2594                                      properties:
  2595                                        hostname:
  2596                                          description: "Hostname is the value to be used
  2597                                          to replace the Host header value during forwarding.
  2598                                          \n Support: Extended"
  2599                                          maxLength: 253
  2600                                          minLength: 1
  2601                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2602                                          type: string
  2603                                        path:
  2604                                          description: "Path defines a path rewrite. \n
  2605                                          Support: Extended"
  2606                                          properties:
  2607                                            replaceFullPath:
  2608                                              description: ReplaceFullPath specifies the
  2609                                                value with which to replace the full path
  2610                                                of a request during a rewrite or redirect.
  2611                                              maxLength: 1024
  2612                                              type: string
  2613                                            replacePrefixMatch:
  2614                                              description: "ReplacePrefixMatch specifies
  2615                                              the value with which to replace the prefix
  2616                                              match of a request during a rewrite or
  2617                                              redirect. For example, a request to \"/foo/bar\"
  2618                                              with a prefix match of \"/foo\" would
  2619                                              be modified to \"/bar\". \n Note that
  2620                                              this matches the behavior of the PathPrefix
  2621                                              match type. This matches full path elements.
  2622                                              A path element refers to the list of labels
  2623                                              in the path split by the `/` separator.
  2624                                              When specified, a trailing `/` is ignored.
  2625                                              For example, the paths `/abc`, `/abc/`,
  2626                                              and `/abc/def` would all match the prefix
  2627                                              `/abc`, but the path `/abcd` would not."
  2628                                              maxLength: 1024
  2629                                              type: string
  2630                                            type:
  2631                                              description: "Type defines the type of path
  2632                                              modifier. Additional types may be added
  2633                                              in a future release of the API. \n Note
  2634                                              that values may be added to this enum,
  2635                                              implementations must ensure that unknown
  2636                                              values will not cause a crash. \n Unknown
  2637                                              values here must result in the implementation
  2638                                              setting the Accepted Condition for the
  2639                                              Route to `status: False`, with a Reason
  2640                                              of `UnsupportedValue`."
  2641                                              enum:
  2642                                                - ReplaceFullPath
  2643                                                - ReplacePrefixMatch
  2644                                              type: string
  2645                                          required:
  2646                                            - type
  2647                                          type: object
  2648                                      type: object
  2649                                  required:
  2650                                    - type
  2651                                  type: object
  2652                                maxItems: 16
  2653                                type: array
  2654                              group:
  2655                                default: ""
  2656                                description: Group is the group of the referent. For example,
  2657                                  "gateway.networking.k8s.io". When unspecified or empty
  2658                                  string, core API group is inferred.
  2659                                maxLength: 253
  2660                                pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2661                                type: string
  2662                              kind:
  2663                                default: Service
  2664                                description: "Kind is the Kubernetes resource kind of
  2665                                the referent. For example \"Service\". \n Defaults to
  2666                                \"Service\" when not specified. \n ExternalName services
  2667                                can refer to CNAME DNS records that may live outside
  2668                                of the cluster and as such are difficult to reason about
  2669                                in terms of conformance. They also may not be safe to
  2670                                forward to (see CVE-2021-25740 for more information).
  2671                                Implementations SHOULD NOT support ExternalName Services.
  2672                                \n Support: Core (Services with a type other than ExternalName)
  2673                                \n Support: Implementation-specific (Services with type
  2674                                ExternalName)"
  2675                                maxLength: 63
  2676                                minLength: 1
  2677                                pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  2678                                type: string
  2679                              name:
  2680                                description: Name is the name of the referent.
  2681                                maxLength: 253
  2682                                minLength: 1
  2683                                type: string
  2684                              namespace:
  2685                                description: "Namespace is the namespace of the backend.
  2686                                When unspecified, the local namespace is inferred. \n
  2687                                Note that when a namespace is specified, a ReferenceGrant
  2688                                object is required in the referent namespace to allow
  2689                                that namespace's owner to accept the reference. See
  2690                                the ReferenceGrant documentation for details. \n Support:
  2691                                Core"
  2692                                maxLength: 63
  2693                                minLength: 1
  2694                                pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
  2695                                type: string
  2696                              port:
  2697                                description: Port specifies the destination port number
  2698                                  to use for this resource. Port is required when the
  2699                                  referent is a Kubernetes Service. In this case, the
  2700                                  port number is the service port number, not the target
  2701                                  port. For other resources, destination port might be
  2702                                  derived from the referent resource or this field.
  2703                                format: int32
  2704                                maximum: 65535
  2705                                minimum: 1
  2706                                type: integer
  2707                              weight:
  2708                                default: 1
  2709                                description: "Weight specifies the proportion of requests
  2710                                forwarded to the referenced backend. This is computed
  2711                                as weight/(sum of all weights in this BackendRefs list).
  2712                                For non-zero values, there may be some epsilon from
  2713                                the exact proportion defined here depending on the precision
  2714                                an implementation supports. Weight is not a percentage
  2715                                and the sum of weights does not need to equal 100. \n
  2716                                If only one backend is specified and it has a weight
  2717                                greater than 0, 100% of the traffic is forwarded to
  2718                                that backend. If weight is set to 0, no traffic should
  2719                                be forwarded for this entry. If unspecified, weight
  2720                                defaults to 1. \n Support for this field varies based
  2721                                on the context where used."
  2722                                format: int32
  2723                                maximum: 1000000
  2724                                minimum: 0
  2725                                type: integer
  2726                            required:
  2727                              - name
  2728                            type: object
  2729                          maxItems: 16
  2730                          type: array
  2731                        filters:
  2732                          description: "Filters define the filters that are applied to
  2733                          requests that match this rule. \n The effects of ordering
  2734                          of multiple behaviors are currently unspecified. This can
  2735                          change in the future based on feedback during the alpha stage.
  2736                          \n Conformance-levels at this level are defined based on the
  2737                          type of filter: \n - ALL core filters MUST be supported by
  2738                          all implementations. - Implementers are encouraged to support
  2739                          extended filters. - Implementation-specific custom filters
  2740                          have no API guarantees across implementations. \n Specifying
  2741                          a core filter multiple times has unspecified or implementation-specific
  2742                          conformance. \n All filters are expected to be compatible
  2743                          with each other except for the URLRewrite and RequestRedirect
  2744                          filters, which may not be combined. If an implementation can
  2745                          not support other combinations of filters, they must clearly
  2746                          document that limitation. In all cases where incompatible
  2747                          or unsupported filters are specified, implementations MUST
  2748                          add a warning condition to status. \n Support: Core"
  2749                          items:
  2750                            description: HTTPRouteFilter defines processing steps that
  2751                              must be completed during the request or response lifecycle.
  2752                              HTTPRouteFilters are meant as an extension point to express
  2753                              processing that may be done in Gateway implementations.
  2754                              Some examples include request or response modification,
  2755                              implementing authentication strategies, rate-limiting, and
  2756                              traffic shaping. API guarantee/conformance is defined based
  2757                              on the type of the filter.
  2758                            properties:
  2759                              extensionRef:
  2760                                description: "ExtensionRef is an optional, implementation-specific
  2761                                extension to the \"filter\" behavior.  For example,
  2762                                resource \"myroutefilter\" in group \"networking.example.net\").
  2763                                ExtensionRef MUST NOT be used for core and extended
  2764                                filters. \n Support: Implementation-specific"
  2765                                properties:
  2766                                  group:
  2767                                    description: Group is the group of the referent. For
  2768                                      example, "gateway.networking.k8s.io". When unspecified
  2769                                      or empty string, core API group is inferred.
  2770                                    maxLength: 253
  2771                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2772                                    type: string
  2773                                  kind:
  2774                                    description: Kind is kind of the referent. For example
  2775                                      "HTTPRoute" or "Service".
  2776                                    maxLength: 63
  2777                                    minLength: 1
  2778                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  2779                                    type: string
  2780                                  name:
  2781                                    description: Name is the name of the referent.
  2782                                    maxLength: 253
  2783                                    minLength: 1
  2784                                    type: string
  2785                                required:
  2786                                  - group
  2787                                  - kind
  2788                                  - name
  2789                                type: object
  2790                              requestHeaderModifier:
  2791                                description: "RequestHeaderModifier defines a schema for
  2792                                a filter that modifies request headers. \n Support:
  2793                                Core"
  2794                                properties:
  2795                                  add:
  2796                                    description: "Add adds the given header(s) (name,
  2797                                    value) to the request before the action. It appends
  2798                                    to any existing values associated with the header
  2799                                    name. \n Input: GET /foo HTTP/1.1 my-header: foo
  2800                                    \n Config: add: - name: \"my-header\" value: \"bar,baz\"
  2801                                    \n Output: GET /foo HTTP/1.1 my-header: foo,bar,baz"
  2802                                    items:
  2803                                      description: HTTPHeader represents an HTTP Header
  2804                                        name and value as defined by RFC 7230.
  2805                                      properties:
  2806                                        name:
  2807                                          description: "Name is the name of the HTTP Header
  2808                                          to be matched. Name matching MUST be case
  2809                                          insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  2810                                          \n If multiple entries specify equivalent
  2811                                          header names, the first entry with an equivalent
  2812                                          name MUST be considered for a match. Subsequent
  2813                                          entries with an equivalent header name MUST
  2814                                          be ignored. Due to the case-insensitivity
  2815                                          of header names, \"foo\" and \"Foo\" are considered
  2816                                          equivalent."
  2817                                          maxLength: 256
  2818                                          minLength: 1
  2819                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  2820                                          type: string
  2821                                        value:
  2822                                          description: Value is the value of HTTP Header
  2823                                            to be matched.
  2824                                          maxLength: 4096
  2825                                          minLength: 1
  2826                                          type: string
  2827                                      required:
  2828                                        - name
  2829                                        - value
  2830                                      type: object
  2831                                    maxItems: 16
  2832                                    type: array
  2833                                    x-kubernetes-list-map-keys:
  2834                                      - name
  2835                                    x-kubernetes-list-type: map
  2836                                  remove:
  2837                                    description: "Remove the given header(s) from the
  2838                                    HTTP request before the action. The value of Remove
  2839                                    is a list of HTTP header names. Note that the header
  2840                                    names are case-insensitive (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
  2841                                    \n Input: GET /foo HTTP/1.1 my-header1: foo my-header2:
  2842                                    bar my-header3: baz \n Config: remove: [\"my-header1\",
  2843                                    \"my-header3\"] \n Output: GET /foo HTTP/1.1 my-header2:
  2844                                    bar"
  2845                                    items:
  2846                                      type: string
  2847                                    maxItems: 16
  2848                                    type: array
  2849                                  set:
  2850                                    description: "Set overwrites the request with the
  2851                                    given header (name, value) before the action. \n
  2852                                    Input: GET /foo HTTP/1.1 my-header: foo \n Config:
  2853                                    set: - name: \"my-header\" value: \"bar\" \n Output:
  2854                                    GET /foo HTTP/1.1 my-header: bar"
  2855                                    items:
  2856                                      description: HTTPHeader represents an HTTP Header
  2857                                        name and value as defined by RFC 7230.
  2858                                      properties:
  2859                                        name:
  2860                                          description: "Name is the name of the HTTP Header
  2861                                          to be matched. Name matching MUST be case
  2862                                          insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  2863                                          \n If multiple entries specify equivalent
  2864                                          header names, the first entry with an equivalent
  2865                                          name MUST be considered for a match. Subsequent
  2866                                          entries with an equivalent header name MUST
  2867                                          be ignored. Due to the case-insensitivity
  2868                                          of header names, \"foo\" and \"Foo\" are considered
  2869                                          equivalent."
  2870                                          maxLength: 256
  2871                                          minLength: 1
  2872                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  2873                                          type: string
  2874                                        value:
  2875                                          description: Value is the value of HTTP Header
  2876                                            to be matched.
  2877                                          maxLength: 4096
  2878                                          minLength: 1
  2879                                          type: string
  2880                                      required:
  2881                                        - name
  2882                                        - value
  2883                                      type: object
  2884                                    maxItems: 16
  2885                                    type: array
  2886                                    x-kubernetes-list-map-keys:
  2887                                      - name
  2888                                    x-kubernetes-list-type: map
  2889                                type: object
  2890                              requestMirror:
  2891                                description: "RequestMirror defines a schema for a filter
  2892                                that mirrors requests. Requests are sent to the specified
  2893                                destination, but responses from that destination are
  2894                                ignored. \n Support: Extended"
  2895                                properties:
  2896                                  backendRef:
  2897                                    description: "BackendRef references a resource where
  2898                                    mirrored requests are sent. \n If the referent cannot
  2899                                    be found, this BackendRef is invalid and must be
  2900                                    dropped from the Gateway. The controller must ensure
  2901                                    the \"ResolvedRefs\" condition on the Route status
  2902                                    is set to `status: False` and not configure this
  2903                                    backend in the underlying implementation. \n If
  2904                                    there is a cross-namespace reference to an *existing*
  2905                                    object that is not allowed by a ReferenceGrant,
  2906                                    the controller must ensure the \"ResolvedRefs\"
  2907                                    \ condition on the Route is set to `status: False`,
  2908                                    with the \"RefNotPermitted\" reason and not configure
  2909                                    this backend in the underlying implementation. \n
  2910                                    In either error case, the Message of the `ResolvedRefs`
  2911                                    Condition should be used to provide more detail
  2912                                    about the problem. \n Support: Extended for Kubernetes
  2913                                    Service \n Support: Implementation-specific for
  2914                                    any other resource"
  2915                                    properties:
  2916                                      group:
  2917                                        default: ""
  2918                                        description: Group is the group of the referent.
  2919                                          For example, "gateway.networking.k8s.io". When
  2920                                          unspecified or empty string, core API group
  2921                                          is inferred.
  2922                                        maxLength: 253
  2923                                        pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2924                                        type: string
  2925                                      kind:
  2926                                        default: Service
  2927                                        description: "Kind is the Kubernetes resource
  2928                                        kind of the referent. For example \"Service\".
  2929                                        \n Defaults to \"Service\" when not specified.
  2930                                        \n ExternalName services can refer to CNAME
  2931                                        DNS records that may live outside of the cluster
  2932                                        and as such are difficult to reason about in
  2933                                        terms of conformance. They also may not be safe
  2934                                        to forward to (see CVE-2021-25740 for more information).
  2935                                        Implementations SHOULD NOT support ExternalName
  2936                                        Services. \n Support: Core (Services with a
  2937                                        type other than ExternalName) \n Support: Implementation-specific
  2938                                        (Services with type ExternalName)"
  2939                                        maxLength: 63
  2940                                        minLength: 1
  2941                                        pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  2942                                        type: string
  2943                                      name:
  2944                                        description: Name is the name of the referent.
  2945                                        maxLength: 253
  2946                                        minLength: 1
  2947                                        type: string
  2948                                      namespace:
  2949                                        description: "Namespace is the namespace of the
  2950                                        backend. When unspecified, the local namespace
  2951                                        is inferred. \n Note that when a namespace is
  2952                                        specified, a ReferenceGrant object is required
  2953                                        in the referent namespace to allow that namespace's
  2954                                        owner to accept the reference. See the ReferenceGrant
  2955                                        documentation for details. \n Support: Core"
  2956                                        maxLength: 63
  2957                                        minLength: 1
  2958                                        pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
  2959                                        type: string
  2960                                      port:
  2961                                        description: Port specifies the destination port
  2962                                          number to use for this resource. Port is required
  2963                                          when the referent is a Kubernetes Service. In
  2964                                          this case, the port number is the service port
  2965                                          number, not the target port. For other resources,
  2966                                          destination port might be derived from the referent
  2967                                          resource or this field.
  2968                                        format: int32
  2969                                        maximum: 65535
  2970                                        minimum: 1
  2971                                        type: integer
  2972                                    required:
  2973                                      - name
  2974                                    type: object
  2975                                required:
  2976                                  - backendRef
  2977                                type: object
  2978                              requestRedirect:
  2979                                description: "RequestRedirect defines a schema for a filter
  2980                                that responds to the request with an HTTP redirection.
  2981                                \n Support: Core"
  2982                                properties:
  2983                                  hostname:
  2984                                    description: "Hostname is the hostname to be used
  2985                                    in the value of the `Location` header in the response.
  2986                                    When empty, the hostname in the `Host` header of
  2987                                    the request is used. \n Support: Core"
  2988                                    maxLength: 253
  2989                                    minLength: 1
  2990                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  2991                                    type: string
  2992                                  path:
  2993                                    description: "Path defines parameters used to modify
  2994                                    the path of the incoming request. The modified path
  2995                                    is then used to construct the `Location` header.
  2996                                    When empty, the request path is used as-is. \n Support:
  2997                                    Extended"
  2998                                    properties:
  2999                                      replaceFullPath:
  3000                                        description: ReplaceFullPath specifies the value
  3001                                          with which to replace the full path of a request
  3002                                          during a rewrite or redirect.
  3003                                        maxLength: 1024
  3004                                        type: string
  3005                                      replacePrefixMatch:
  3006                                        description: "ReplacePrefixMatch specifies the
  3007                                        value with which to replace the prefix match
  3008                                        of a request during a rewrite or redirect. For
  3009                                        example, a request to \"/foo/bar\" with a prefix
  3010                                        match of \"/foo\" would be modified to \"/bar\".
  3011                                        \n Note that this matches the behavior of the
  3012                                        PathPrefix match type. This matches full path
  3013                                        elements. A path element refers to the list
  3014                                        of labels in the path split by the `/` separator.
  3015                                        When specified, a trailing `/` is ignored. For
  3016                                        example, the paths `/abc`, `/abc/`, and `/abc/def`
  3017                                        would all match the prefix `/abc`, but the path
  3018                                        `/abcd` would not."
  3019                                        maxLength: 1024
  3020                                        type: string
  3021                                      type:
  3022                                        description: "Type defines the type of path modifier.
  3023                                        Additional types may be added in a future release
  3024                                        of the API. \n Note that values may be added
  3025                                        to this enum, implementations must ensure that
  3026                                        unknown values will not cause a crash. \n Unknown
  3027                                        values here must result in the implementation
  3028                                        setting the Accepted Condition for the Route
  3029                                        to `status: False`, with a Reason of `UnsupportedValue`."
  3030                                        enum:
  3031                                          - ReplaceFullPath
  3032                                          - ReplacePrefixMatch
  3033                                        type: string
  3034                                    required:
  3035                                      - type
  3036                                    type: object
  3037                                  port:
  3038                                    description: "Port is the port to be used in the value
  3039                                    of the `Location` header in the response. \n When
  3040                                    empty, the Gateway Listener port is used. \n Implementations
  3041                                    SHOULD NOT add the port number in the 'Location'
  3042                                    header in the following cases: \n * A Location header
  3043                                    that will use HTTP (whether that is determined via
  3044                                    the Listener protocol or the Scheme field) _and_
  3045                                    use port 80. * A Location header that will use HTTPS
  3046                                    (whether that is determined via the Listener protocol
  3047                                    or the Scheme field) _and_ use port 443. \n Support:
  3048                                    Extended"
  3049                                    format: int32
  3050                                    maximum: 65535
  3051                                    minimum: 1
  3052                                    type: integer
  3053                                  scheme:
  3054                                    description: "Scheme is the scheme to be used in the
  3055                                    value of the `Location` header in the response.
  3056                                    When empty, the scheme of the request is used. \n
  3057                                    Note that values may be added to this enum, implementations
  3058                                    must ensure that unknown values will not cause a
  3059                                    crash. \n Unknown values here must result in the
  3060                                    implementation setting the Accepted Condition for
  3061                                    the Route to `status: False`, with a Reason of `UnsupportedValue`.
  3062                                    \n Support: Extended"
  3063                                    enum:
  3064                                      - http
  3065                                      - https
  3066                                    type: string
  3067                                  statusCode:
  3068                                    default: 302
  3069                                    description: "StatusCode is the HTTP status code to
  3070                                    be used in response. \n Note that values may be
  3071                                    added to this enum, implementations must ensure
  3072                                    that unknown values will not cause a crash. \n Unknown
  3073                                    values here must result in the implementation setting
  3074                                    the Accepted Condition for the Route to `status:
  3075                                    False`, with a Reason of `UnsupportedValue`. \n
  3076                                    Support: Core"
  3077                                    enum:
  3078                                      - 301
  3079                                      - 302
  3080                                    type: integer
  3081                                type: object
  3082                              responseHeaderModifier:
  3083                                description: "ResponseHeaderModifier defines a schema
  3084                                for a filter that modifies response headers. \n Support:
  3085                                Extended"
  3086                                properties:
  3087                                  add:
  3088                                    description: "Add adds the given header(s) (name,
  3089                                    value) to the request before the action. It appends
  3090                                    to any existing values associated with the header
  3091                                    name. \n Input: GET /foo HTTP/1.1 my-header: foo
  3092                                    \n Config: add: - name: \"my-header\" value: \"bar,baz\"
  3093                                    \n Output: GET /foo HTTP/1.1 my-header: foo,bar,baz"
  3094                                    items:
  3095                                      description: HTTPHeader represents an HTTP Header
  3096                                        name and value as defined by RFC 7230.
  3097                                      properties:
  3098                                        name:
  3099                                          description: "Name is the name of the HTTP Header
  3100                                          to be matched. Name matching MUST be case
  3101                                          insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  3102                                          \n If multiple entries specify equivalent
  3103                                          header names, the first entry with an equivalent
  3104                                          name MUST be considered for a match. Subsequent
  3105                                          entries with an equivalent header name MUST
  3106                                          be ignored. Due to the case-insensitivity
  3107                                          of header names, \"foo\" and \"Foo\" are considered
  3108                                          equivalent."
  3109                                          maxLength: 256
  3110                                          minLength: 1
  3111                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  3112                                          type: string
  3113                                        value:
  3114                                          description: Value is the value of HTTP Header
  3115                                            to be matched.
  3116                                          maxLength: 4096
  3117                                          minLength: 1
  3118                                          type: string
  3119                                      required:
  3120                                        - name
  3121                                        - value
  3122                                      type: object
  3123                                    maxItems: 16
  3124                                    type: array
  3125                                    x-kubernetes-list-map-keys:
  3126                                      - name
  3127                                    x-kubernetes-list-type: map
  3128                                  remove:
  3129                                    description: "Remove the given header(s) from the
  3130                                    HTTP request before the action. The value of Remove
  3131                                    is a list of HTTP header names. Note that the header
  3132                                    names are case-insensitive (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
  3133                                    \n Input: GET /foo HTTP/1.1 my-header1: foo my-header2:
  3134                                    bar my-header3: baz \n Config: remove: [\"my-header1\",
  3135                                    \"my-header3\"] \n Output: GET /foo HTTP/1.1 my-header2:
  3136                                    bar"
  3137                                    items:
  3138                                      type: string
  3139                                    maxItems: 16
  3140                                    type: array
  3141                                  set:
  3142                                    description: "Set overwrites the request with the
  3143                                    given header (name, value) before the action. \n
  3144                                    Input: GET /foo HTTP/1.1 my-header: foo \n Config:
  3145                                    set: - name: \"my-header\" value: \"bar\" \n Output:
  3146                                    GET /foo HTTP/1.1 my-header: bar"
  3147                                    items:
  3148                                      description: HTTPHeader represents an HTTP Header
  3149                                        name and value as defined by RFC 7230.
  3150                                      properties:
  3151                                        name:
  3152                                          description: "Name is the name of the HTTP Header
  3153                                          to be matched. Name matching MUST be case
  3154                                          insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
  3155                                          \n If multiple entries specify equivalent
  3156                                          header names, the first entry with an equivalent
  3157                                          name MUST be considered for a match. Subsequent
  3158                                          entries with an equivalent header name MUST
  3159                                          be ignored. Due to the case-insensitivity
  3160                                          of header names, \"foo\" and \"Foo\" are considered
  3161                                          equivalent."
  3162                                          maxLength: 256
  3163                                          minLength: 1
  3164                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  3165                                          type: string
  3166                                        value:
  3167                                          description: Value is the value of HTTP Header
  3168                                            to be matched.
  3169                                          maxLength: 4096
  3170                                          minLength: 1
  3171                                          type: string
  3172                                      required:
  3173                                        - name
  3174                                        - value
  3175                                      type: object
  3176                                    maxItems: 16
  3177                                    type: array
  3178                                    x-kubernetes-list-map-keys:
  3179                                      - name
  3180                                    x-kubernetes-list-type: map
  3181                                type: object
  3182                              type:
  3183                                description: "Type identifies the type of filter to apply.
  3184                                As with other API fields, types are classified into
  3185                                three conformance levels: \n - Core: Filter types and
  3186                                their corresponding configuration defined by \"Support:
  3187                                Core\" in this package, e.g. \"RequestHeaderModifier\".
  3188                                All implementations must support core filters. \n -
  3189                                Extended: Filter types and their corresponding configuration
  3190                                defined by \"Support: Extended\" in this package, e.g.
  3191                                \"RequestMirror\". Implementers are encouraged to support
  3192                                extended filters. \n - Implementation-specific: Filters
  3193                                that are defined and supported by specific vendors.
  3194                                In the future, filters showing convergence in behavior
  3195                                across multiple implementations will be considered for
  3196                                inclusion in extended or core conformance levels. Filter-specific
  3197                                configuration for such filters is specified using the
  3198                                ExtensionRef field. `Type` should be set to \"ExtensionRef\"
  3199                                for custom filters. \n Implementers are encouraged to
  3200                                define custom implementation types to extend the core
  3201                                API with implementation-specific behavior. \n If a reference
  3202                                to a custom filter type cannot be resolved, the filter
  3203                                MUST NOT be skipped. Instead, requests that would have
  3204                                been processed by that filter MUST receive a HTTP error
  3205                                response. \n Note that values may be added to this enum,
  3206                                implementations must ensure that unknown values will
  3207                                not cause a crash. \n Unknown values here must result
  3208                                in the implementation setting the Accepted Condition
  3209                                for the Route to `status: False`, with a Reason of `UnsupportedValue`."
  3210                                enum:
  3211                                  - RequestHeaderModifier
  3212                                  - ResponseHeaderModifier
  3213                                  - RequestMirror
  3214                                  - RequestRedirect
  3215                                  - URLRewrite
  3216                                  - ExtensionRef
  3217                                type: string
  3218                              urlRewrite:
  3219                                description: "URLRewrite defines a schema for a filter
  3220                                that modifies a request during forwarding. \n Support:
  3221                                Extended"
  3222                                properties:
  3223                                  hostname:
  3224                                    description: "Hostname is the value to be used to
  3225                                    replace the Host header value during forwarding.
  3226                                    \n Support: Extended"
  3227                                    maxLength: 253
  3228                                    minLength: 1
  3229                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  3230                                    type: string
  3231                                  path:
  3232                                    description: "Path defines a path rewrite. \n Support:
  3233                                    Extended"
  3234                                    properties:
  3235                                      replaceFullPath:
  3236                                        description: ReplaceFullPath specifies the value
  3237                                          with which to replace the full path of a request
  3238                                          during a rewrite or redirect.
  3239                                        maxLength: 1024
  3240                                        type: string
  3241                                      replacePrefixMatch:
  3242                                        description: "ReplacePrefixMatch specifies the
  3243                                        value with which to replace the prefix match
  3244                                        of a request during a rewrite or redirect. For
  3245                                        example, a request to \"/foo/bar\" with a prefix
  3246                                        match of \"/foo\" would be modified to \"/bar\".
  3247                                        \n Note that this matches the behavior of the
  3248                                        PathPrefix match type. This matches full path
  3249                                        elements. A path element refers to the list
  3250                                        of labels in the path split by the `/` separator.
  3251                                        When specified, a trailing `/` is ignored. For
  3252                                        example, the paths `/abc`, `/abc/`, and `/abc/def`
  3253                                        would all match the prefix `/abc`, but the path
  3254                                        `/abcd` would not."
  3255                                        maxLength: 1024
  3256                                        type: string
  3257                                      type:
  3258                                        description: "Type defines the type of path modifier.
  3259                                        Additional types may be added in a future release
  3260                                        of the API. \n Note that values may be added
  3261                                        to this enum, implementations must ensure that
  3262                                        unknown values will not cause a crash. \n Unknown
  3263                                        values here must result in the implementation
  3264                                        setting the Accepted Condition for the Route
  3265                                        to `status: False`, with a Reason of `UnsupportedValue`."
  3266                                        enum:
  3267                                          - ReplaceFullPath
  3268                                          - ReplacePrefixMatch
  3269                                        type: string
  3270                                    required:
  3271                                      - type
  3272                                    type: object
  3273                                type: object
  3274                            required:
  3275                              - type
  3276                            type: object
  3277                          maxItems: 16
  3278                          type: array
  3279                        matches:
  3280                          default:
  3281                            - path:
  3282                                type: PathPrefix
  3283                                value: /
  3284                          description: "Matches define conditions used for matching the
  3285                          rule against incoming HTTP requests. Each match is independent,
  3286                          i.e. this rule will be matched if **any** one of the matches
  3287                          is satisfied. \n For example, take the following matches configuration:
  3288                          \n ``` matches: - path: value: \"/foo\" headers: - name: \"version\"
  3289                          value: \"v2\" - path: value: \"/v2/foo\" ``` \n For a request
  3290                          to match against this rule, a request must satisfy EITHER
  3291                          of the two conditions: \n - path prefixed with `/foo` AND
  3292                          contains the header `version: v2` - path prefix of `/v2/foo`
  3293                          \n See the documentation for HTTPRouteMatch on how to specify
  3294                          multiple match conditions that should be ANDed together. \n
  3295                          If no matches are specified, the default is a prefix path
  3296                          match on \"/\", which has the effect of matching every HTTP
  3297                          request. \n Proxy or Load Balancer routing configuration generated
  3298                          from HTTPRoutes MUST prioritize matches based on the following
  3299                          criteria, continuing on ties. Across all rules specified on
  3300                          applicable Routes, precedence must be given to the match with
  3301                          the largest number of: \n * Characters in a matching \"Exact\"
  3302                          path match * Characters in a matching \"Prefix\" path match
  3303                          * Header matches. * Query param matches. \n Note: The precedence
  3304                          of RegularExpression path matches are implementation-specific.
  3305                          \n If ties still exist across multiple Routes, matching precedence
  3306                          MUST be determined in order of the following criteria, continuing
  3307                          on ties: \n * The oldest Route based on creation timestamp.
  3308                          * The Route appearing first in alphabetical order by \"{namespace}/{name}\".
  3309                          \n If ties still exist within an HTTPRoute, matching precedence
  3310                          MUST be granted to the FIRST matching rule (in list order)
  3311                          with a match meeting the above criteria. \n When no rules
  3312                          matching a request have been successfully attached to the
  3313                          parent a request is coming from, a HTTP 404 status code MUST
  3314                          be returned."
  3315                          items:
  3316                            description: "HTTPRouteMatch defines the predicate used to
  3317                            match requests to a given action. Multiple match types are
  3318                            ANDed together, i.e. the match will evaluate to true only
  3319                            if all conditions are satisfied. \n For example, the match
  3320                            below will match a HTTP request only if its path starts
  3321                            with `/foo` AND it contains the `version: v1` header: \n
  3322                            ``` match: \n path: value: \"/foo\" headers: - name: \"version\"
  3323                            value \"v1\" \n ```"
  3324                            properties:
  3325                              headers:
  3326                                description: Headers specifies HTTP request header matchers.
  3327                                  Multiple match values are ANDed together, meaning, a
  3328                                  request must match all the specified headers to select
  3329                                  the route.
  3330                                items:
  3331                                  description: HTTPHeaderMatch describes how to select
  3332                                    a HTTP route by matching HTTP request headers.
  3333                                  properties:
  3334                                    name:
  3335                                      description: "Name is the name of the HTTP Header
  3336                                      to be matched. Name matching MUST be case insensitive.
  3337                                      (See https://tools.ietf.org/html/rfc7230#section-3.2).
  3338                                      \n If multiple entries specify equivalent header
  3339                                      names, only the first entry with an equivalent
  3340                                      name MUST be considered for a match. Subsequent
  3341                                      entries with an equivalent header name MUST be
  3342                                      ignored. Due to the case-insensitivity of header
  3343                                      names, \"foo\" and \"Foo\" are considered equivalent.
  3344                                      \n When a header is repeated in an HTTP request,
  3345                                      it is implementation-specific behavior as to how
  3346                                      this is represented. Generally, proxies should
  3347                                      follow the guidance from the RFC: https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2
  3348                                      regarding processing a repeated header, with special
  3349                                      handling for \"Set-Cookie\"."
  3350                                      maxLength: 256
  3351                                      minLength: 1
  3352                                      pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  3353                                      type: string
  3354                                    type:
  3355                                      default: Exact
  3356                                      description: "Type specifies how to match against
  3357                                      the value of the header. \n Support: Core (Exact)
  3358                                      \n Support: Implementation-specific (RegularExpression)
  3359                                      \n Since RegularExpression HeaderMatchType has
  3360                                      implementation-specific conformance, implementations
  3361                                      can support POSIX, PCRE or any other dialects
  3362                                      of regular expressions. Please read the implementation's
  3363                                      documentation to determine the supported dialect."
  3364                                      enum:
  3365                                        - Exact
  3366                                        - RegularExpression
  3367                                      type: string
  3368                                    value:
  3369                                      description: Value is the value of HTTP Header to
  3370                                        be matched.
  3371                                      maxLength: 4096
  3372                                      minLength: 1
  3373                                      type: string
  3374                                  required:
  3375                                    - name
  3376                                    - value
  3377                                  type: object
  3378                                maxItems: 16
  3379                                type: array
  3380                                x-kubernetes-list-map-keys:
  3381                                  - name
  3382                                x-kubernetes-list-type: map
  3383                              method:
  3384                                description: "Method specifies HTTP method matcher. When
  3385                                specified, this route will be matched only if the request
  3386                                has the specified method. \n Support: Extended"
  3387                                enum:
  3388                                  - GET
  3389                                  - HEAD
  3390                                  - POST
  3391                                  - PUT
  3392                                  - DELETE
  3393                                  - CONNECT
  3394                                  - OPTIONS
  3395                                  - TRACE
  3396                                  - PATCH
  3397                                type: string
  3398                              path:
  3399                                default:
  3400                                  type: PathPrefix
  3401                                  value: /
  3402                                description: Path specifies a HTTP request path matcher.
  3403                                  If this field is not specified, a default prefix match
  3404                                  on the "/" path is provided.
  3405                                properties:
  3406                                  type:
  3407                                    default: PathPrefix
  3408                                    description: "Type specifies how to match against
  3409                                    the path Value. \n Support: Core (Exact, PathPrefix)
  3410                                    \n Support: Implementation-specific (RegularExpression)"
  3411                                    enum:
  3412                                      - Exact
  3413                                      - PathPrefix
  3414                                      - RegularExpression
  3415                                    type: string
  3416                                  value:
  3417                                    default: /
  3418                                    description: Value of the HTTP path to match against.
  3419                                    maxLength: 1024
  3420                                    type: string
  3421                                type: object
  3422                              queryParams:
  3423                                description: "QueryParams specifies HTTP query parameter
  3424                                matchers. Multiple match values are ANDed together,
  3425                                meaning, a request must match all the specified query
  3426                                parameters to select the route. \n Support: Extended"
  3427                                items:
  3428                                  description: HTTPQueryParamMatch describes how to select
  3429                                    a HTTP route by matching HTTP query parameters.
  3430                                  properties:
  3431                                    name:
  3432                                      description: "Name is the name of the HTTP query
  3433                                      param to be matched. This must be an exact string
  3434                                      match. (See https://tools.ietf.org/html/rfc7230#section-2.7.3).
  3435                                      \n If multiple entries specify equivalent query
  3436                                      param names, only the first entry with an equivalent
  3437                                      name MUST be considered for a match. Subsequent
  3438                                      entries with an equivalent query param name MUST
  3439                                      be ignored. \n If a query param is repeated in
  3440                                      an HTTP request, the behavior is purposely left
  3441                                      undefined, since different data planes have different
  3442                                      capabilities. However, it is *recommended* that
  3443                                      implementations should match against the first
  3444                                      value of the param if the data plane supports
  3445                                      it, as this behavior is expected in other load
  3446                                      balancing contexts outside of the Gateway API.
  3447                                      \n Users SHOULD NOT route traffic based on repeated
  3448                                      query params to guard themselves against potential
  3449                                      differences in the implementations."
  3450                                      maxLength: 256
  3451                                      minLength: 1
  3452                                      pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
  3453                                      type: string
  3454                                    type:
  3455                                      default: Exact
  3456                                      description: "Type specifies how to match against
  3457                                      the value of the query parameter. \n Support:
  3458                                      Extended (Exact) \n Support: Implementation-specific
  3459                                      (RegularExpression) \n Since RegularExpression
  3460                                      QueryParamMatchType has Implementation-specific
  3461                                      conformance, implementations can support POSIX,
  3462                                      PCRE or any other dialects of regular expressions.
  3463                                      Please read the implementation's documentation
  3464                                      to determine the supported dialect."
  3465                                      enum:
  3466                                        - Exact
  3467                                        - RegularExpression
  3468                                      type: string
  3469                                    value:
  3470                                      description: Value is the value of HTTP query param
  3471                                        to be matched.
  3472                                      maxLength: 1024
  3473                                      minLength: 1
  3474                                      type: string
  3475                                  required:
  3476                                    - name
  3477                                    - value
  3478                                  type: object
  3479                                maxItems: 16
  3480                                type: array
  3481                                x-kubernetes-list-map-keys:
  3482                                  - name
  3483                                x-kubernetes-list-type: map
  3484                            type: object
  3485                          maxItems: 8
  3486                          type: array
  3487                      type: object
  3488                    maxItems: 16
  3489                    type: array
  3490                type: object
  3491              status:
  3492                description: Status defines the current state of HTTPRoute.
  3493                properties:
  3494                  parents:
  3495                    description: "Parents is a list of parent resources (usually Gateways)
  3496                    that are associated with the route, and the status of the route
  3497                    with respect to each parent. When this route attaches to a parent,
  3498                    the controller that manages the parent must add an entry to this
  3499                    list when the controller first sees the route and should update
  3500                    the entry as appropriate when the route or gateway is modified.
  3501                    \n Note that parent references that cannot be resolved by an implementation
  3502                    of this API will not be added to this list. Implementations of this
  3503                    API can only populate Route status for the Gateways/parent resources
  3504                    they are responsible for. \n A maximum of 32 Gateways will be represented
  3505                    in this list. An empty list means the route has not been attached
  3506                    to any Gateway."
  3507                    items:
  3508                      description: RouteParentStatus describes the status of a route with
  3509                        respect to an associated Parent.
  3510                      properties:
  3511                        conditions:
  3512                          description: "Conditions describes the status of the route with
  3513                          respect to the Gateway. Note that the route's availability
  3514                          is also subject to the Gateway's own status conditions and
  3515                          listener status. \n If the Route's ParentRef specifies an
  3516                          existing Gateway that supports Routes of this kind AND that
  3517                          Gateway's controller has sufficient access, then that Gateway's
  3518                          controller MUST set the \"Accepted\" condition on the Route,
  3519                          to indicate whether the route has been accepted or rejected
  3520                          by the Gateway, and why. \n A Route MUST be considered \"Accepted\"
  3521                          if at least one of the Route's rules is implemented by the
  3522                          Gateway. \n There are a number of cases where the \"Accepted\"
  3523                          condition may not be set due to lack of controller visibility,
  3524                          that includes when: \n * The Route refers to a non-existent
  3525                          parent. * The Route is of a type that the controller does
  3526                          not support. * The Route is in a namespace the controller
  3527                          does not have access to."
  3528                          items:
  3529                            description: "Condition contains details for one aspect of
  3530                            the current state of this API Resource. --- This struct
  3531                            is intended for direct use as an array at the field path
  3532                            .status.conditions.  For example, \n type FooStatus struct{
  3533                            // Represents the observations of a foo's current state.
  3534                            // Known .status.conditions.type are: \"Available\", \"Progressing\",
  3535                            and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
  3536                            // +listType=map // +listMapKey=type Conditions []metav1.Condition
  3537                            `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
  3538                            protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields
  3539                            }"
  3540                            properties:
  3541                              lastTransitionTime:
  3542                                description: lastTransitionTime is the last time the condition
  3543                                  transitioned from one status to another. This should
  3544                                  be when the underlying condition changed.  If that is
  3545                                  not known, then using the time when the API field changed
  3546                                  is acceptable.
  3547                                format: date-time
  3548                                type: string
  3549                              message:
  3550                                description: message is a human readable message indicating
  3551                                  details about the transition. This may be an empty string.
  3552                                maxLength: 32768
  3553                                type: string
  3554                              observedGeneration:
  3555                                description: observedGeneration represents the .metadata.generation
  3556                                  that the condition was set based upon. For instance,
  3557                                  if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
  3558                                  is 9, the condition is out of date with respect to the
  3559                                  current state of the instance.
  3560                                format: int64
  3561                                minimum: 0
  3562                                type: integer
  3563                              reason:
  3564                                description: reason contains a programmatic identifier
  3565                                  indicating the reason for the condition's last transition.
  3566                                  Producers of specific condition types may define expected
  3567                                  values and meanings for this field, and whether the
  3568                                  values are considered a guaranteed API. The value should
  3569                                  be a CamelCase string. This field may not be empty.
  3570                                maxLength: 1024
  3571                                minLength: 1
  3572                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  3573                                type: string
  3574                              status:
  3575                                description: status of the condition, one of True, False,
  3576                                  Unknown.
  3577                                enum:
  3578                                  - "True"
  3579                                  - "False"
  3580                                  - Unknown
  3581                                type: string
  3582                              type:
  3583                                description: type of condition in CamelCase or in foo.example.com/CamelCase.
  3584                                  --- Many .condition.type values are consistent across
  3585                                  resources like Available, but because arbitrary conditions
  3586                                  can be useful (see .node.status.conditions), the ability
  3587                                  to deconflict is important. The regex it matches is
  3588                                  (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  3589                                maxLength: 316
  3590                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
  3591                                type: string
  3592                            required:
  3593                              - lastTransitionTime
  3594                              - message
  3595                              - reason
  3596                              - status
  3597                              - type
  3598                            type: object
  3599                          maxItems: 8
  3600                          minItems: 1
  3601                          type: array
  3602                          x-kubernetes-list-map-keys:
  3603                            - type
  3604                          x-kubernetes-list-type: map
  3605                        controllerName:
  3606                          description: "ControllerName is a domain/path string that indicates
  3607                          the name of the controller that wrote this status. This corresponds
  3608                          with the controllerName field on GatewayClass. \n Example:
  3609                          \"example.net/gateway-controller\". \n The format of this
  3610                          field is DOMAIN \"/\" PATH, where DOMAIN and PATH are valid
  3611                          Kubernetes names (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names).
  3612                          \n Controllers MUST populate this field when writing status.
  3613                          Controllers should ensure that entries to status populated
  3614                          with their ControllerName are cleaned up when they are no
  3615                          longer necessary."
  3616                          maxLength: 253
  3617                          minLength: 1
  3618                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
  3619                          type: string
  3620                        parentRef:
  3621                          description: ParentRef corresponds with a ParentRef in the spec
  3622                            that this RouteParentStatus struct describes the status of.
  3623                          properties:
  3624                            group:
  3625                              default: gateway.networking.k8s.io
  3626                              description: "Group is the group of the referent. When unspecified,
  3627                              \"gateway.networking.k8s.io\" is inferred. To set the
  3628                              core API group (such as for a \"Service\" kind referent),
  3629                              Group must be explicitly set to \"\" (empty string). \n
  3630                              Support: Core"
  3631                              maxLength: 253
  3632                              pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  3633                              type: string
  3634                            kind:
  3635                              default: Gateway
  3636                              description: "Kind is kind of the referent. \n Support:
  3637                              Core (Gateway) \n Support: Implementation-specific (Other
  3638                              Resources)"
  3639                              maxLength: 63
  3640                              minLength: 1
  3641                              pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
  3642                              type: string
  3643                            name:
  3644                              description: "Name is the name of the referent. \n Support:
  3645                              Core"
  3646                              maxLength: 253
  3647                              minLength: 1
  3648                              type: string
  3649                            namespace:
  3650                              description: "Namespace is the namespace of the referent.
  3651                              When unspecified, this refers to the local namespace of
  3652                              the Route. \n Note that there are specific rules for ParentRefs
  3653                              which cross namespace boundaries. Cross-namespace references
  3654                              are only valid if they are explicitly allowed by something
  3655                              in the namespace they are referring to. For example: Gateway
  3656                              has the AllowedRoutes field, and ReferenceGrant provides
  3657                              a generic way to enable any other kind of cross-namespace
  3658                              reference. \n Support: Core"
  3659                              maxLength: 63
  3660                              minLength: 1
  3661                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
  3662                              type: string
  3663                            sectionName:
  3664                              description: "SectionName is the name of a section within
  3665                              the target resource. In the following resources, SectionName
  3666                              is interpreted as the following: \n * Gateway: Listener
  3667                              Name. When both Port (experimental) and SectionName are
  3668                              specified, the name and port of the selected listener
  3669                              must match both specified values. \n Implementations MAY
  3670                              choose to support attaching Routes to other resources.
  3671                              If that is the case, they MUST clearly document how SectionName
  3672                              is interpreted. \n When unspecified (empty string), this
  3673                              will reference the entire resource. For the purpose of
  3674                              status, an attachment is considered successful if at least
  3675                              one section in the parent resource accepts it. For example,
  3676                              Gateway listeners can restrict which Routes can attach
  3677                              to them by Route kind, namespace, or hostname. If 1 of
  3678                              2 Gateway listeners accept attachment from the referencing
  3679                              Route, the Route MUST be considered successfully attached.
  3680                              If no Gateway listeners accept attachment from this Route,
  3681                              the Route MUST be considered detached from the Gateway.
  3682                              \n Support: Core"
  3683                              maxLength: 253
  3684                              minLength: 1
  3685                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  3686                              type: string
  3687                          required:
  3688                            - name
  3689                          type: object
  3690                      required:
  3691                        - controllerName
  3692                        - parentRef
  3693                      type: object
  3694                    maxItems: 32
  3695                    type: array
  3696                required:
  3697                  - parents
  3698                type: object
  3699            required:
  3700              - spec
  3701            type: object
  3702        served: true
  3703        storage: true
  3704        subresources:
  3705          status: {}
  3706  status:
  3707    acceptedNames:
  3708      kind: ""
  3709      plural: ""
  3710    conditions: null
  3711    storedVersions: null