$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
  defaultCustomErrorResponsePolicy:
    description: |-
      defaultCustomErrorResponsePolicy specifies how the Load Balancer returns
      error responses when BackendServiceor BackendBucket responds with an
      error. This policy takes effect at the PathMatcher level and applies only
      when no policy has been defined for the error code at lower levels like
      RouteRule and PathRule within this PathMatcher. If an error code does not
      have a policy defined in defaultCustomErrorResponsePolicy, then a policy
      defined for the error code in UrlMap.defaultCustomErrorResponsePolicy
      takes effect. For example, consider a UrlMap with the following
      configuration: - UrlMap.defaultCustomErrorResponsePolicy is configured
      with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is
      configured for the error code 404. If the request is for
      www.myotherdomain.com and a 404 is encountered, the policy under
      UrlMap.defaultCustomErrorResponsePolicy takes effect. If a 404 response is
      encountered for the request www.example.com/current_events/, the
      pathMatcher's policy takes effect. If however, the request for
      www.example.com/coming_soon/ encounters a 404, the policy in
      RouteRule.customErrorResponsePolicy takes effect. If any of the requests
      in this example encounter a 500 error code, the policy at
      UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in
      conjunction with pathMatcher.defaultRouteAction.retryPolicy, retries take
      precedence. Only once all retries are exhausted, the
      defaultCustomErrorResponsePolicy is applied. While attempting a retry, if
      load balancer is successful in reaching the service, the
      defaultCustomErrorResponsePolicy is ignored and the response from the
      service is returned to the client. defaultCustomErrorResponsePolicy is
      supported only for global external Application Load Balancers.
    $ref: CustomErrorResponsePolicy.yaml
  defaultRouteAction:
    description: |-
      defaultRouteAction takes effect when none of the pathRules or routeRules
      match. The load balancer performs advanced routing actions, such as URL
      rewrites and header transformations, before 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. If defaultRouteAction is specified, don't set
      defaultUrlRedirect. If defaultRouteAction.weightedBackendServices is
      specified, don't set defaultService. URL maps for classic Application Load
      Balancers only support the urlRewrite action within a path matcher's
      defaultRouteAction.
    $ref: HttpRouteAction.yaml
  defaultService:
    description: |-
      The full or partial URL to the BackendService resource. This URL is 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 also
      specified, advanced routing actions, such as URL rewrites, take effect
      before 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. If defaultService is specified, then
      set either defaultUrlRedirect or
      defaultRouteAction.weightedBackendService. Don't set both. 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, then set either defaultService or defaultRouteAction. Don't
      set both. Not supported when the URL map is bound to a 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 backend service. HeaderAction specified here are applied
      after the matching HttpRouteRule HeaderAction and before the HeaderAction
      in the UrlMap HeaderAction is not supported for load balancers that have
      their loadBalancingScheme set to EXTERNAL. Not supported when the URL map
      is bound to a 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
