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

title: compute v1 PathMatcher export schema
description: A gcloud export/import command YAML validation schema.
type: object
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
  defaultRouteAction:
    description: |-
      defaultRouteAction takes effect when none of the pathRules or routeRules
      match. The load balancer performs advanced routing actions like URL
      rewrites, header transformations, etc. prior to forwarding the request to
      the selected backend. If defaultRouteAction specifies any
      weightedBackendServices, defaultService must not be set. Conversely if
      defaultService is set, defaultRouteAction cannot contain any
      weightedBackendServices. Only one of defaultRouteAction or
      defaultUrlRedirect must be set. UrlMaps for external HTTP(S) load
      balancers support only the urlRewrite action within a pathMatcher's
      defaultRouteAction.
    $ref: HttpRouteAction.yaml
  defaultService:
    description: |-
      The full or partial URL to the BackendService resource. This will be used
      if none of the pathRules or routeRules defined by this PathMatcher are
      matched. For example, the following are all valid URLs to a BackendService
      resource:   - https://www.googleapis.com/compute/v1/
      projects/project/global/backendServices/backendService  -
      compute/v1/projects/project/global/backendServices/backendService  -
      global/backendServices/backendService  If defaultRouteAction is
      additionally specified, advanced routing actions like URL Rewrites, etc.
      take effect prior to sending the request to the backend. However, if
      defaultService is specified, defaultRouteAction cannot contain any
      weightedBackendServices. Conversely, if defaultRouteAction specifies any
      weightedBackendServices, defaultService must not be specified. Only one of
      defaultService, defaultUrlRedirect  or
      defaultRouteAction.weightedBackendService must be set. Authorization
      requires one or more of the following Google IAM permissions on the
      specified resource default_service:   - compute.backendBuckets.use  -
      compute.backendServices.use
    type: string
  defaultUrlRedirect:
    description: |-
      When none of the specified pathRules or routeRules match, the request is
      redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect
      is specified, defaultService or defaultRouteAction must not be set. Not
      supported when the URL map is bound to target gRPC proxy.
    $ref: HttpRedirectAction.yaml
  description:
    description: |-
      An optional description of this resource. Provide this property when you
      create the resource.
    type: string
  headerAction:
    description: |-
      Specifies changes to request and response headers that need to take effect
      for the selected backendService. HeaderAction specified here are applied
      after the matching HttpRouteRule HeaderAction and before the HeaderAction
      in the UrlMap  Note that headerAction is not supported for Loadbalancers
      that have their loadBalancingScheme set to EXTERNAL. Not supported when
      the URL map is bound to target gRPC proxy that has validateForProxyless
      field set to true.
    $ref: HttpHeaderAction.yaml
  name:
    description: The name to which this PathMatcher is referred by the HostRule.
    type: string
  pathRules:
    description: |-
      The list of path rules. Use this list instead of routeRules when routing
      based on simple path matching is all that's required. The order by which
      path rules are specified does not matter. Matches are always done on the
      longest-path-first basis. For example: a pathRule with a path /a/b/c/*
      will match before /a/b/* irrespective of the order in which those paths
      appear in this list. Within a given pathMatcher, only one of pathRules or
      routeRules must be set.
    type: array
    items:
      $ref: PathRule.yaml
  routeRules:
    description: |-
      The list of HTTP route rules. Use this list instead of pathRules when
      advanced route matching and routing actions are desired. routeRules
      are evaluated in order of priority, from the lowest to highest number.
      Within a given pathMatcher, you can set only one of pathRules or
      routeRules.
    type: array
    items:
      $ref: HttpRouteRule.yaml
