$schema: "http://json-schema.org/draft-06/schema#"

title: networkservices v1alpha1 GrpcRoute export schema
description: A gcloud export/import command YAML validation schema.
type: object
required:
- hostnames
- name
- rules
additionalProperties: false
properties:
  COMMENT:
    type: object
    description: User specified info ignored by gcloud import.
    additionalProperties: false
    properties:
      template-id:
        type: string
      region:
        type: string
      description:
        type: string
      date:
        type: string
      version:
        type: string
  UNKNOWN:
    type: array
    description: Unknown API fields that cannot be imported.
    items:
      type: string
  description:
    description: |-
      A free-text description of the resource. Max length 1024 characters.
    type: string
  gateways:
    description: |-
      Gateways defines a list of gateways this GrpcRoute is attached to, as one
      of the routing rules to route the requests served by the gateway. Each
      gateway reference should match the pattern:
      `projects/*/locations/global/gateways/`
    type: array
    items:
      type: string
  hostnames:
    description: |-
      Service hostnames with an optional port for which this route describes
      traffic. Format: [:] Hostname is the fully qualified domain name of a
      network host. This matches the RFC 1123 definition of a hostname with
      2 notable exceptions: - IPs are not allowed. - A hostname may be
      prefixed with a wildcard label (`*.`). The wildcard label must appear
      by itself as the first label. Hostname can be "precise" which is a
      domain name without the terminating dot of a network host (e.g.
      `foo.example.com`) or "wildcard", which is a domain name prefixed with
      a single wildcard label (e.g. `*.example.com`). Note that as per
      RFC1035 and RFC1123, a label must consist of lower case alphanumeric
      characters or '-', and must start and end with an alphanumeric
      character. No other punctuation is allowed. The routes associated with
      a Mesh or Gateway must have unique hostnames. If you attempt to attach
      multiple routes with conflicting hostnames, the configuration will be
      rejected. For example, while it is acceptable for routes for the
      hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the
      same route, it is not possible to associate two routes both with
      `*.bar.com` or both with `bar.com`. If a port is specified, then gRPC
      clients must use the channel URI with the port to match this rule
      (i.e. "xds:///service:123"), otherwise they must supply the URI
      without a port (i.e. "xds:///service").
    type: array
    items:
      type: string
  labels:
    description: |-
      Set of label tags associated with the GrpcRoute resource.
    $ref: LabelsValue.yaml
  meshes:
    description: |-
      Meshes defines a list of meshes this GrpcRoute is attached to, as
      one of the routing rules to route the requests served by the mesh.
      Each mesh reference should match the pattern:
      `projects/*/locations/global/meshes/`
    type: array
    items:
      type: string
  name:
    description: |-
      Name of the GrpcRoute resource. It matches pattern
      `projects/*/locations/global/grpcRoutes/`
    type: string
  rules:
    description: |-
      A list of detailed rules defining how to route traffic. Within
      a single GrpcRoute, the GrpcRoute.RouteAction associated with
      the first matching GrpcRoute.RouteRule will be executed. At
      least one rule must be supplied.
    type: array
    items:
      $ref: GrpcRouteRouteRule.yaml
