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

title: compute v1 BackendService 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
  affinityCookieTtlSec:
    description: |-
      Lifetime of cookies in seconds. This setting is applicable to external and
      internal HTTP(S) load balancers and Traffic Director and requires
      GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie
      is non-persistent and lasts only until the end of the browser session (or
      equivalent). The maximum allowed value is one day (86,400). Not supported
      when the backend service is referenced by a URL map that is bound to
      target gRPC proxy that has validateForProxyless field set to true.
    type: integer
  backends:
    description: The list of backends that serve this BackendService.
    type: array
    items:
      $ref: Backend.yaml
  cdnPolicy:
    description: |-
      Cloud CDN configuration for this BackendService. Only available for
      specified load balancer types.
    $ref: BackendServiceCdnPolicy.yaml
  circuitBreakers:
    description: A CircuitBreakers attribute.
    $ref: CircuitBreakers.yaml
  connectionDraining:
    description: A ConnectionDraining attribute.
    $ref: ConnectionDraining.yaml
  connectionTrackingPolicy:
    description: |-
      Connection Tracking configuration for this BackendService. Connection
      tracking policy settings are only available for Network Load Balancing
      and Internal TCP/UDP Load Balancing.
    $ref: BackendServiceConnectionTrackingPolicy.yaml
  consistentHash:
    description: |-
      Consistent Hash-based load balancing can be used to provide soft
      session affinity based on HTTP headers, cookies or other properties.
      This load balancing policy is applicable only for HTTP connections.
      The affinity to a particular destination host will be lost when one or
      more hosts are added/removed from the destination service. This field
      specifies parameters that control consistent hashing. This field is
      only applicable when localityLbPolicy is set to MAGLEV or RING_HASH.
      This field is applicable to either: - A regional backend service with
      the service_protocol set to HTTP, HTTPS, or HTTP2, and
      load_balancing_scheme set to INTERNAL_MANAGED. - A global backend
      service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.
    $ref: ConsistentHashLoadBalancerSettings.yaml
  creationTimestamp:
    description: '[Output Only] Creation timestamp in RFC3339 text format.'
    type: string
  customRequestHeaders:
    description: |-
      Headers that the load balancer adds to proxied requests. See [Creating
      custom headers](https://cloud.google.com/load- balancing/docs/custom-
      headers).
    type: array
    items:
      type: string
  customResponseHeaders:
    description: |-
      Headers that the load balancer adds to proxied responses. See
      [Creating custom headers](https://cloud.google.com/load-
      balancing/docs/custom-headers).
    type: array
    items:
      type: string
  description:
    description: |-
      An optional description of this resource. Provide this
      property when you create the resource.
    type: string
  edgeSecurityPolicy:
    description: |-
      [Output Only] The resource URL for the edge security policy
      associated with this backend service.
    type: string
  enableCDN:
    description: |-
      If true, enables Cloud CDN for the backend service of an
      external HTTP(S) load balancer.
    type: boolean
  failoverPolicy:
    description: |-
      Requires at least one backend instance group to be defined as
      a backup (failover) backend. For load balancers that have
      configurable failover: [Internal TCP/UDP Load
      Balancing](https://cloud.google.com/load-
      balancing/docs/internal/failover-overview) and [external
      TCP/UDP Load Balancing](https://cloud.google.com/load-
      balancing/docs/network/networklb-failover-overview).
    $ref: BackendServiceFailoverPolicy.yaml
  healthChecks:
    description: |-
      The list of URLs to the healthChecks, httpHealthChecks
      (legacy), or httpsHealthChecks (legacy) resource for health
      checking this backend service. Not all backend services
      support legacy health checks. See Load balancer guide.
      Currently, at most one health check can be specified for each
      backend service. Backend services with instance group or zonal
      NEG backends must have a health check. Backend services with
      internet or serverless NEG backends must not have a health
      check.
    type: array
    items:
      type: string
  iap:
    description: |-
      The configurations for Identity-Aware Proxy on this
      resource. Not available for Internal TCP/UDP Load
      Balancing and Network Load Balancing.
    $ref: BackendServiceIAP.yaml
  kind:
    description: |-
      [Output Only] Type of resource. Always
      compute#backendService for backend services.
    type: string
  loadBalancingScheme:
    description: |-
      Specifies the load balancer type. A backend service
      created for one type of load balancer cannot be used with
      another. For more information, refer to Choosing a load
      balancer.
    type: string
    enum:
    - EXTERNAL
    - EXTERNAL_MANAGED
    - INTERNAL
    - INTERNAL_MANAGED
    - INTERNAL_SELF_MANAGED
    - INVALID_LOAD_BALANCING_SCHEME
  localityLbPolicies:
    description: |-
      A list of locality load balancing policies to be used in
      order of preference. Either the policy or the customPolicy
      field should be set. Overrides any value set in the
      localityLbPolicy field. localityLbPolicies is only
      supported when the BackendService is referenced by a URL
      Map that is referenced by a target gRPC proxy that has the
      validateForProxyless field set to true.
    type: array
    items:
      $ref: BackendServiceLocalityLoadBalancingPolicyConfig.yaml
  localityLbPolicy:
    description: |-
      The load balancing algorithm used within the scope of
      the locality. The possible values are: - ROUND_ROBIN:
      This is a simple policy in which each healthy backend
      is selected in round robin order. This is the default.
      - LEAST_REQUEST: An O(1) algorithm which selects two
      random healthy hosts and picks the host which has
      fewer active requests. - RING_HASH: The ring/modulo
      hash load balancer implements consistent hashing to
      backends. The algorithm has the property that the
      addition/removal of a host from a set of N hosts only
      affects 1/N of the requests. - RANDOM: The load
      balancer selects a random healthy host. -
    type: string
    enum:
    - INVALID_LB_POLICY
    - LEAST_REQUEST
    - MAGLEV
    - ORIGINAL_DESTINATION
    - RANDOM
    - RING_HASH
    - ROUND_ROBIN
  logConfig:
    description: |-
      This field denotes the logging options for the load
      balancer traffic served by this backend service. If
      logging is enabled, logs will be exported to
      Stackdriver.
    $ref: BackendServiceLogConfig.yaml
  maxStreamDuration:
    description: |-
      Specifies the default maximum duration (timeout) for
      streams to this service. Duration is computed from the
      beginning of the stream until the response has been
      completely processed, including all retries. A stream
      that does not complete in this duration is closed. If
      not specified, there will be no timeout limit, i.e.
      the maximum duration is infinite. This value can be
      overridden in the PathMatcher configuration of the
      UrlMap that references this backend service. This
      field is only allowed when the loadBalancingScheme of
      the backend service is INTERNAL_SELF_MANAGED.
    $ref: Duration.yaml
  name:
    description: |-
      Name of the resource. Provided by the client when the
      resource is created. The name must be 1-63 characters
      long, and comply with RFC1035. Specifically, the name
      must be 1-63 characters long and match the regular
      expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
      the first character must be a lowercase letter, and
      all following characters must be a dash, lowercase
      letter, or digit, except the last character, which
      cannot be a dash.
    type: string
  network:
    description: |-
      The URL of the network to which this backend service
      belongs. This field can only be specified when the
      load balancing scheme is set to INTERNAL.
    type: string
  outlierDetection:
    description: |-
      Settings controlling the eviction of unhealthy hosts
      from the load balancing pool for the backend service.
      If not set, this feature is considered disabled. This
      field is applicable to either: - A regional backend
      service with the service_protocol set to HTTP, HTTPS,
      or HTTP2, and load_balancing_scheme set to
      INTERNAL_MANAGED. - A global backend service with the
      load_balancing_scheme set to INTERNAL_SELF_MANAGED.
      Not supported when the backend service is referenced
      by a URL map that is bound to target gRPC proxy that
      has validateForProxyless field set to true.
    $ref: OutlierDetection.yaml
  port:
    description: |-
      Deprecated in favor of portName. The TCP port to
      connect on the backend. The default value is 80. For
      Internal TCP/UDP Load Balancing and Network Load
      Balancing, omit port.
    type: integer
  portName:
    description: |-
      A named port on a backend instance group representing
      the port for communication to the backend VMs in that
      group. The named port must be [defined on each backend
      instance group](https://cloud.google.com/load-
      balancing/docs/backend- service#named_ports). This
      parameter has no meaning if the backends are NEGs. For
      Internal TCP/UDP Load Balancing and Network Load
      Balancing, omit port_name.
    type: string
  protocol:
    description: |-
      The protocol this BackendService uses to communicate
      with backends. Possible values are HTTP, HTTPS, HTTP2,
      TCP, SSL, UDP or GRPC. depending on the chosen load
      balancer or Traffic Director configuration. Refer to
      the documentation for the load balancers or for
      Traffic Director for more information. Must be set to
      GRPC when the backend service is referenced by a URL
      map that is bound to target gRPC proxy.
    type: string
    enum:
    - GRPC
    - HTTP
    - HTTP2
    - HTTPS
    - SSL
    - TCP
    - UDP
    - UNSPECIFIED
  region:
    description: |-
      [Output Only] URL of the region where the regional
      backend service resides. This field is not applicable
      to global backend services. You must specify this
      field as part of the HTTP request URL. It is not
      settable as a field in the request body.
    type: string
  securityPolicy:
    description: |-
      [Output Only] The resource URL for the security policy
      associated with this backend service.
    type: string
  securitySettings:
    description: |-
      This field specifies the security settings that apply
      to this backend service. This field is applicable to a
      global backend service with the load_balancing_scheme
      set to INTERNAL_SELF_MANAGED.
    $ref: SecuritySettings.yaml
  selfLink:
    description: |-
      [Output Only] Server-defined URL for the resource.
    type: string
  sessionAffinity:
    description: |-
      Type of session affinity to use. The default is NONE.
      Only NONE and HEADER_FIELD are supported when the
      backend service is referenced by a URL map that is
      bound to target gRPC proxy that has
      validateForProxyless field set to true. For more
      details, see: [Session
      Affinity](https://cloud.google.com/load-
      balancing/docs/backend- service#session_affinity).
    type: string
    enum:
    - CLIENT_IP
    - CLIENT_IP_NO_DESTINATION
    - CLIENT_IP_PORT_PROTO
    - CLIENT_IP_PROTO
    - GENERATED_COOKIE
    - HEADER_FIELD
    - HTTP_COOKIE
    - NONE
  subsetting:
    description: A Subsetting attribute.
    $ref: Subsetting.yaml
  timeoutSec:
    description: |-
      The backend service timeout has a different meaning
      depending on the type of load balancer. For more
      information see, Backend service settings. The default
      is 30 seconds. The full range of timeout values
      allowed goes from 1 through 2,147,483,647 seconds.
      This value can be overridden in the PathMatcher
      configuration of the UrlMap that references this
      backend service. Not supported when the backend
      service is referenced by a URL map that is bound to
      target gRPC proxy that has validateForProxyless field
      set to true. Instead, use maxStreamDuration.
    type: integer
