<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="compute_alpha.html">Compute Engine API</a> . <a href="compute_alpha.regionBackendServices.html">regionBackendServices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(project, region, backendService, requestId=None)</a></code></p>
<p class="firstline">Deletes the specified regional BackendService resource.</p>
<p class="toc_element">
  <code><a href="#get">get(project, region, backendService)</a></code></p>
<p class="firstline">Returns the specified regional BackendService resource.</p>
<p class="toc_element">
  <code><a href="#getHealth">getHealth(project, region, backendService, body=None)</a></code></p>
<p class="firstline">Gets the most recent health check results for this regional BackendService.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, region, body=None, requestId=None)</a></code></p>
<p class="firstline">Creates a regional BackendService resource in the specified project using the data included in the request. For more information, see  Backend services overview.</p>
<p class="toc_element">
  <code><a href="#list">list(project, region, filter=None, maxResults=None, orderBy=None, pageToken=None, returnPartialSuccess=None)</a></code></p>
<p class="firstline">Retrieves the list of regional BackendService resources available to the specified project in the given region.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(project, region, backendService, body=None, requestId=None)</a></code></p>
<p class="firstline">Updates the specified regional BackendService resource with the data included in the request. For more information, see  Understanding backend services This method supports PATCH semantics and uses the JSON merge patch format and processing rules.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(project, region, resource, body=None)</a></code></p>
<p class="firstline">Returns permissions that a caller has on the specified resource.</p>
<p class="toc_element">
  <code><a href="#update">update(project, region, backendService, body=None, requestId=None)</a></code></p>
<p class="firstline">Updates the specified regional BackendService resource with the data included in the request. For more information, see  Backend services overview.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(project, region, backendService, requestId=None)</code>
  <pre>Deletes the specified regional BackendService resource.

Args:
  project: string, Project ID for this request. (required)
  region: string, Name of the region scoping this request. (required)
  backendService: string, Name of the BackendService resource to delete. (required)
  requestId: string, An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.

For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.

The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).

Returns:
  An object of the form:

    { # Represents an Operation resource.
      #
      # Google Compute Engine has three Operation resources:
      #
      # * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations)
      #
      # You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses.
      #
      # Operations can be global, regional or zonal.
      # - For global operations, use the `globalOperations` resource.
      # - For regional operations, use the `regionOperations` resource.
      # - For zonal operations, use the `zonalOperations` resource.
      #
      # For more information, read  Global, Regional, and Zonal Resources. (== resource_for {$api_version}.globalOperations ==) (== resource_for {$api_version}.regionOperations ==) (== resource_for {$api_version}.zoneOperations ==)
    &quot;clientOperationId&quot;: &quot;A String&quot;, # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Deprecated] This field is deprecated.
    &quot;description&quot;: &quot;A String&quot;, # [Output Only] A textual description of the operation, which is set when the operation is created.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    &quot;error&quot;: { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      &quot;errors&quot;: [ # [Output Only] The array of errors encountered while processing this operation.
        {
          &quot;code&quot;: &quot;A String&quot;, # [Output Only] The error type identifier for this error.
          &quot;location&quot;: &quot;A String&quot;, # [Output Only] Indicates the field in the request that caused the error. This property is optional.
          &quot;message&quot;: &quot;A String&quot;, # [Output Only] An optional, human-readable error message.
        },
      ],
    },
    &quot;httpErrorMessage&quot;: &quot;A String&quot;, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`.
    &quot;httpErrorStatusCode&quot;: 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found.
    &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
    &quot;insertTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    &quot;kind&quot;: &quot;compute#operation&quot;, # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
    &quot;name&quot;: &quot;A String&quot;, # [Output Only] Name of the operation.
    &quot;operationType&quot;: &quot;A String&quot;, # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
    &quot;progress&quot;: 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
    &quot;region&quot;: &quot;A String&quot;, # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
    &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
    &quot;startTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    &quot;status&quot;: &quot;A String&quot;, # [Output Only] The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`.
    &quot;statusMessage&quot;: &quot;A String&quot;, # [Output Only] An optional textual description of the current status of the operation.
    &quot;targetId&quot;: &quot;A String&quot;, # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    &quot;targetLink&quot;: &quot;A String&quot;, # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
    &quot;user&quot;: &quot;A String&quot;, # [Output Only] User who requested the operation, for example: `user@example.com`.
    &quot;warnings&quot;: [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        &quot;code&quot;: &quot;A String&quot;, # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        &quot;data&quot;: [ # [Output Only] Metadata about this warning in key: value format. For example:
            # &quot;data&quot;: [ { &quot;key&quot;: &quot;scope&quot;, &quot;value&quot;: &quot;zones/us-east1-d&quot; }
          {
            &quot;key&quot;: &quot;A String&quot;, # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
            &quot;value&quot;: &quot;A String&quot;, # [Output Only] A warning data value corresponding to the key.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # [Output Only] A human-readable description of the warning code.
      },
    ],
    &quot;zone&quot;: &quot;A String&quot;, # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(project, region, backendService)</code>
  <pre>Returns the specified regional BackendService resource.

Args:
  project: string, Project ID for this request. (required)
  region: string, Name of the region scoping this request. (required)
  backendService: string, Name of the BackendService resource to return. (required)

Returns:
  An object of the form:

    { # Represents a Backend Service resource.
      #
      # A backend service defines how Google Cloud load balancers distribute traffic. The backend service configuration contains a set of values, such as the protocol used to connect to backends, various distribution and session settings, health checks, and timeouts. These settings provide fine-grained control over how your load balancer behaves. Most of the settings have default values that allow for easy configuration if you need to get started quickly.
      #
      # Backend services in Google Compute Engine can be either regionally or globally scoped.
      #
      # * [Global](/compute/docs/reference/rest/{$api_version}/backendServices) * [Regional](/compute/docs/reference/rest/{$api_version}/regionBackendServices)
      #
      # For more information, see Backend Services.
      #
      # (== resource_for {$api_version}.backendService ==)
    &quot;affinityCookieTtlSec&quot;: 42, # 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).
    &quot;backends&quot;: [ # The list of backends that serve this BackendService.
      { # Message containing information of one individual backend.
        &quot;balancingMode&quot;: &quot;A String&quot;, # Specifies the balancing mode for the backend.
            #
            # When choosing a balancing mode, you need to consider the loadBalancingScheme, and protocol for the backend service, as well as the type of backend (instance group or NEG).
            #
            #
            # - If the load balancing mode is CONNECTION, then the load is spread based on how many concurrent connections the backend can handle.
            # You can use the CONNECTION balancing mode if the protocol for the backend service is SSL, TCP, or UDP.
            #
            # If the loadBalancingScheme for the backend service is EXTERNAL (SSL Proxy and TCP Proxy load balancers), you must also specify exactly one of the following parameters: maxConnections (except for regional managed instance groups), maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
            #
            # If the loadBalancingScheme for the backend service is INTERNAL (internal TCP/UDP load balancers), you cannot specify any additional parameters.
            #
            # - If the load balancing mode is RATE, the load is spread based on the rate of HTTP requests per second (RPS).
            # You can use the RATE balancing mode if the protocol for the backend service is HTTP or HTTPS. You must specify exactly one of the following parameters: maxRate (except for regional managed instance groups), maxRatePerInstance, or maxRatePerEndpoint.
            #
            # - If the load balancing mode is UTILIZATION, the load is spread based on the backend utilization of instances in an instance group.
            # You can use the UTILIZATION balancing mode if the loadBalancingScheme of the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED and the backends are instance groups. There are no restrictions on the backend service protocol.
        &quot;capacityScaler&quot;: 3.14, # A multiplier applied to the group&#x27;s maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. Valid range is 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service.
            #
            # This cannot be used for internal load balancing.
        &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
        &quot;failover&quot;: True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
        &quot;group&quot;: &quot;A String&quot;, # The fully-qualified URL of an instance group or network endpoint group (NEG) resource. The type of backend that a backend service supports depends on the backend service&#x27;s loadBalancingScheme.
            #
            #
            # - When the loadBalancingScheme for the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, the backend can be either an instance group or a NEG. The backends on the backend service must be either all instance groups or all NEGs. You cannot mix instance group and NEG backends on the same backend service.
            #
            #
            # - When the loadBalancingScheme for the backend service is INTERNAL, the backend must be an instance group in the same region as the backend service. NEGs are not supported.
            #
            # You must use the fully-qualified URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported.
        &quot;maxConnections&quot;: 42, # Defines a target maximum number of simultaneous connections that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
            #
            # Not available if the backend&#x27;s balancingMode is RATE. If the loadBalancingScheme is INTERNAL, then maxConnections is not supported, even though the backend requires a balancing mode of CONNECTION.
        &quot;maxConnectionsPerEndpoint&quot;: 42, # Defines a target maximum number of simultaneous connections for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a maximum number of target maximum simultaneous connections for the NEG. If the backend&#x27;s balancingMode is CONNECTION, and the backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerInstance.
            #
            # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerEndpoint even though its backends require a balancing mode of CONNECTION.
        &quot;maxConnectionsPerInstance&quot;: 42, # Defines a target maximum number of simultaneous connections for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum number of simultaneous connections for the whole instance group. If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerEndpoint.
            #
            # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerInstance even though its backends require a balancing mode of CONNECTION.
        &quot;maxRate&quot;: 42, # Defines a maximum number of HTTP requests per second (RPS) that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). Must not be defined if the backend is a managed instance group that uses autoscaling based on load balancing.
            #
            # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify maxRate, maxRatePerInstance, or maxRatePerEndpoint.
            #
            # Not available if the backend&#x27;s balancingMode is CONNECTION.
        &quot;maxRatePerEndpoint&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a target maximum rate for the NEG.
            #
            # If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerInstance.
            #
            # Not available if the backend&#x27;s balancingMode is CONNECTION.
        &quot;maxRatePerInstance&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum rate for the whole instance group.
            #
            # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerEndpoint.
            #
            # Not available if the backend&#x27;s balancingMode is CONNECTION.
        &quot;maxUtilization&quot;: 3.14, # Defines the maximum average backend utilization of a backend VM in an instance group. The valid range is [0.0, 1.0]. This is an optional parameter if the backend&#x27;s balancingMode is UTILIZATION.
            #
            # This parameter can be used in conjunction with maxRate, maxRatePerInstance, maxConnections (except for regional managed instance groups), or maxConnectionsPerInstance.
      },
    ],
    &quot;cdnPolicy&quot;: { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
      &quot;cacheKeyPolicy&quot;: { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
        &quot;includeHost&quot;: True or False, # If true, requests to different hosts will be cached separately.
        &quot;includeProtocol&quot;: True or False, # If true, http and https requests will be cached separately.
        &quot;includeQueryString&quot;: True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
        &quot;queryStringBlacklist&quot;: [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
          &quot;A String&quot;,
        ],
        &quot;queryStringWhitelist&quot;: [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
          &quot;A String&quot;,
        ],
      },
      &quot;signedUrlCacheMaxAgeSec&quot;: &quot;A String&quot;, # Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a &quot;Cache-Control: public, max-age=[TTL]&quot; header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
      &quot;signedUrlKeyNames&quot;: [ # [Output Only] Names of the keys for signing request URLs.
        &quot;A String&quot;,
      ],
    },
    &quot;circuitBreakers&quot;: { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
      &quot;connectTimeout&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The timeout for new network connections to hosts.
        &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
        &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
      },
      &quot;maxConnections&quot;: 42, # The maximum number of connections to the backend service. If not specified, there is no limit.
      &quot;maxPendingRequests&quot;: 42, # The maximum number of pending requests allowed to the backend service. If not specified, there is no limit.
      &quot;maxRequests&quot;: 42, # The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit.
      &quot;maxRequestsPerConnection&quot;: 42, # Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive.
      &quot;maxRetries&quot;: 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1.
    },
    &quot;connectionDraining&quot;: { # Message containing connection draining configuration.
      &quot;drainingTimeoutSec&quot;: 42, # The amount of time in seconds to allow existing connections to persist while on unhealthy backend VMs. Only applicable if the protocol is not UDP. The valid range is [0, 3600].
    },
    &quot;consistentHash&quot;: { # This message defines settings for a consistent hash style load balancer. # 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.
      &quot;httpCookie&quot;: { # The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash. # Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE.
        &quot;name&quot;: &quot;A String&quot;, # Name of the cookie.
        &quot;path&quot;: &quot;A String&quot;, # Path to set for the cookie.
        &quot;ttl&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Lifetime of the cookie.
          &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
          &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
        },
      },
      &quot;httpHeaderName&quot;: &quot;A String&quot;, # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
      &quot;minimumRingSize&quot;: &quot;A String&quot;, # The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node.
    },
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Output Only] Creation timestamp in RFC3339 text format.
    &quot;customRequestHeaders&quot;: [ # Headers that the HTTP/S load balancer should add to proxied requests.
      &quot;A String&quot;,
    ],
    &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
    &quot;enableCDN&quot;: True or False, # If true, enables Cloud CDN for the backend service. Only applicable if the loadBalancingScheme is EXTERNAL and the protocol is HTTP or HTTPS.
    &quot;failoverPolicy&quot;: { # Applicable only to Failover for Internal TCP/UDP Load Balancing. On failover or failback, this field indicates whether connection draining will be honored. GCP has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes). # Applicable only to Failover for Internal TCP/UDP Load Balancing. Requires at least one backend instance group to be defined as a backup (failover) backend.
      &quot;disableConnectionDrainOnFailover&quot;: True or False, # This can be set to true only if the protocol is TCP.
          #
          # The default is false.
      &quot;dropTrafficIfUnhealthy&quot;: True or False, # Applicable only to Failover for Internal TCP/UDP Load Balancing. If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy. If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy.
          #
          # The default is false.
      &quot;failoverRatio&quot;: 3.14, # Applicable only to Failover for Internal TCP/UDP Load Balancing. The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio.
    },
    &quot;fingerprint&quot;: &quot;A String&quot;, # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet.
        #
        # To see the latest fingerprint, make a get() request to retrieve a BackendService.
    &quot;healthChecks&quot;: [ # 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. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet NEG backends must not have a health check. A health check must
      &quot;A String&quot;,
    ],
    &quot;iap&quot;: { # Identity-Aware Proxy # The configurations for Identity-Aware Proxy on this resource.
      &quot;enabled&quot;: True or False, # Whether the serving infrastructure will authenticate and authorize all incoming requests. If true, the oauth2ClientId and oauth2ClientSecret fields must be non-empty.
      &quot;oauth2ClientId&quot;: &quot;A String&quot;, # OAuth2 client ID to use for the authentication flow.
      &quot;oauth2ClientInfo&quot;: { # [Input Only] OAuth client info required to generate client id to be used for IAP.
        &quot;applicationName&quot;: &quot;A String&quot;, # Application name to be used in OAuth consent screen.
        &quot;clientName&quot;: &quot;A String&quot;, # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
        &quot;developerEmailAddress&quot;: &quot;A String&quot;, # Developer&#x27;s information to be used in OAuth consent screen.
      },
      &quot;oauth2ClientSecret&quot;: &quot;A String&quot;, # OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field.
      &quot;oauth2ClientSecretSha256&quot;: &quot;A String&quot;, # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
    },
    &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
    &quot;kind&quot;: &quot;compute#backendService&quot;, # [Output Only] Type of resource. Always compute#backendService for backend services.
    &quot;loadBalancingScheme&quot;: &quot;A String&quot;, # Specifies the load balancer type. Choose EXTERNAL for load balancers that receive traffic from external clients. Choose INTERNAL for Internal TCP/UDP Load Balancing. Choose INTERNAL_MANAGED for Internal HTTP(S) Load Balancing. Choose INTERNAL_SELF_MANAGED for Traffic Director. A backend service created for one type of load balancing cannot be used with another. For more information, refer to Choosing a load balancer.
    &quot;localityLbPolicy&quot;: &quot;A String&quot;, # 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.
        # - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.
        # - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824
        #
        # 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.
        #
        # If sessionAffinity is not NONE, and this field is not set to &gt;MAGLEV or RING_HASH, session affinity settings will not take effect.
    &quot;logConfig&quot;: { # The available logging options for the load balancer traffic served by this backend service. # 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.
      &quot;enable&quot;: True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
      &quot;sampleRate&quot;: 3.14, # This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0.
    },
    &quot;name&quot;: &quot;A String&quot;, # 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.
    &quot;network&quot;: &quot;A String&quot;, # The URL of the network to which this backend service belongs. This field can only be spcified when the load balancing scheme is set to INTERNAL.
    &quot;outlierDetection&quot;: { # Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service. # 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.
      &quot;baseEjectionTime&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The base time that a host is ejected for. The real ejection time is equal to the base ejection time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
        &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
        &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
      },
      &quot;consecutiveErrors&quot;: 42, # Number of errors before a host is ejected from the connection pool. When the backend host is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5.
      &quot;consecutiveGatewayFailure&quot;: 42, # The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3.
      &quot;enforcingConsecutiveErrors&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0.
      &quot;enforcingConsecutiveGatewayFailure&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
      &quot;enforcingSuccessRate&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
      &quot;interval&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Time interval between ejection analysis sweeps. This can result in both new ejections as well as hosts being returned to service. Defaults to 1 second.
        &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
        &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
      },
      &quot;maxEjectionPercent&quot;: 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 50%.
      &quot;successRateMinimumHosts&quot;: 42, # The number of hosts in a cluster that must have enough request volume to detect success rate outliers. If the number of hosts is less than this setting, outlier detection via success rate statistics is not performed for any host in the cluster. Defaults to 5.
      &quot;successRateRequestVolume&quot;: 42, # The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this host in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that host. Defaults to 100.
      &quot;successRateStdevFactor&quot;: 42, # This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900.
    },
    &quot;port&quot;: 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
        #
        # This cannot be used if the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
    &quot;portName&quot;: &quot;A String&quot;, # A named port on a backend instance group representing the port for communication to the backend VMs in that group. Required when the loadBalancingScheme is EXTERNAL, INTERNAL_MANAGED, or INTERNAL_SELF_MANAGED and the backends are instance groups. The named port must be defined on each backend instance group. This parameter has no meaning if the backends are NEGs.
        #
        #
        #
        # Must be omitted when the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
    &quot;protocol&quot;: &quot;A String&quot;, # The protocol this BackendService uses to communicate with backends.
        #
        # Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, or UDP. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancer or for Traffic Director for more information.
    &quot;region&quot;: &quot;A String&quot;, # [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.
    &quot;securityPolicy&quot;: &quot;A String&quot;, # [Output Only] The resource URL for the security policy associated with this backend service.
    &quot;securitySettings&quot;: { # The authentication and authorization settings for a BackendService. # This field specifies the security policy that applies to this backend service. 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.
      &quot;authentication&quot;: &quot;A String&quot;, # [Deprecated] Use clientTlsPolicy instead.
      &quot;authenticationPolicy&quot;: { # [Deprecated] The authentication settings for the backend service. The authentication settings for the backend service. # [Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal.
        &quot;origins&quot;: [ # List of authentication methods that can be used for origin authentication. Similar to peers, these will be evaluated in order the first valid one will be used to set origin identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if origin authentication is not required.
          { # [Deprecated] Configuration for the origin authentication method. Configuration for the origin authentication method.
            &quot;jwt&quot;: { # [Deprecated] JWT configuration for origin authentication. JWT configuration for origin authentication.
              &quot;audiences&quot;: [ # A JWT containing any of these audiences will be accepted. The service name will be accepted if audiences is empty. Examples: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com
                &quot;A String&quot;,
              ],
              &quot;issuer&quot;: &quot;A String&quot;, # Identifies the issuer that issued the JWT, which is usually a URL or an email address. Examples: https://securetoken.google.com, 1234567-compute@developer.gserviceaccount.com
              &quot;jwksPublicKeys&quot;: &quot;A String&quot;, # The provider&#x27;s public key set to validate the signature of the JWT.
              &quot;jwtHeaders&quot;: [ # jwt_headers and jwt_params define where to extract the JWT from an HTTP request. If no explicit location is specified, the following default locations are tried in order:
                  #
                  # 1. The Authorization header using the Bearer schema. See `here `_. Example:
                  #
                  # Authorization: Bearer .
                  #
                  # 2. `access_token` query parameter. See `this `_
                  #
                  # Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations its issuer specified or from the default locations.
                  #
                  # This field is set if JWT is sent in a request header. This field specifies the header name. For example, if `header=x-goog-iap-jwt-assertion`, the header format will be x-goog-iap-jwt-assertion: .
                { # [Deprecated] This message specifies a header location to extract JWT token. This message specifies a header location to extract JWT token.
                  &quot;name&quot;: &quot;A String&quot;, # The HTTP header name.
                  &quot;valuePrefix&quot;: &quot;A String&quot;, # The value prefix. The value format is &quot;value_prefix&quot; For example, for &quot;Authorization: Bearer &quot;, value_prefix=&quot;Bearer &quot; with a space at the end.
                },
              ],
              &quot;jwtParams&quot;: [ # This field is set if JWT is sent in a query parameter. This field specifies the query parameter name. For example, if jwt_params[0] is jwt_token, the JWT format in the query parameter is /path?jwt_token=.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;peers&quot;: [ # List of authentication methods that can be used for peer authentication. They will be evaluated in order the first valid one will be used to set peer identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if peer authentication is not required.
          { # [Deprecated] Configuration for the peer authentication method. Configuration for the peer authentication method.
            &quot;mtls&quot;: { # [Deprecated] Configuration for the mutual Tls mode for peer authentication. Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
              &quot;mode&quot;: &quot;A String&quot;, # Specifies if the server TLS is configured to be strict or permissive. This field can be set to one of the following: STRICT: Client certificate must be presented, connection is in TLS. PERMISSIVE: Client certificate can be omitted, connection can be either plaintext or TLS.
            },
          },
        ],
        &quot;principalBinding&quot;: &quot;A String&quot;, # Define whether peer or origin identity should be used for principal. Default value is USE_PEER. If peer (or origin) identity is not available, either because peer/origin authentication is not defined, or failed, principal will be left unset. In other words, binding rule does not affect the decision to accept or reject request. This field can be set to one of the following: USE_PEER: Principal will be set to the identity from peer authentication. USE_ORIGIN: Principal will be set to the identity from origin authentication.
        &quot;serverTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
          &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
            &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
              &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
              &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
            },
            &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
            &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
              &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                      # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                      # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                    &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                    &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
                &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                    &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                  },
                  &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
                },
                &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
              },
            },
          },
          &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
            &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
            &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
              &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                      # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                      # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                    &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                    &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
                &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                    &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                  },
                  &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
                },
                &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
              },
            },
            &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
          },
        },
      },
      &quot;authorizationConfig&quot;: { # [Deprecated] Authorization configuration provides service-level and method-level access control for a service. control for a service. # [Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config.
        &quot;policies&quot;: [ # List of RbacPolicies.
          {
            &quot;name&quot;: &quot;A String&quot;, # Name of the RbacPolicy.
            &quot;permissions&quot;: [ # The list of permissions.
              { # [Deprecated] All fields defined in a permission are ANDed.
                &quot;constraints&quot;: [ # Extra custom constraints. The constraints are ANDed together.
                  { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                    &quot;key&quot;: &quot;A String&quot;, # Key of the constraint.
                    &quot;values&quot;: [ # A list of allowed values.
                      &quot;A String&quot;,
                    ],
                  },
                ],
                &quot;hosts&quot;: [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                  &quot;A String&quot;,
                ],
                &quot;methods&quot;: [ # HTTP method.
                  &quot;A String&quot;,
                ],
                &quot;notHosts&quot;: [ # Negate of hosts. Specifies exclusions.
                  &quot;A String&quot;,
                ],
                &quot;notMethods&quot;: [ # Negate of methods. Specifies exclusions.
                  &quot;A String&quot;,
                ],
                &quot;notPaths&quot;: [ # Negate of paths. Specifies exclusions.
                  &quot;A String&quot;,
                ],
                &quot;notPorts&quot;: [ # Negate of ports. Specifies exclusions.
                  &quot;A String&quot;,
                ],
                &quot;paths&quot;: [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                  &quot;A String&quot;,
                ],
                &quot;ports&quot;: [ # Port names or numbers.
                  &quot;A String&quot;,
                ],
              },
            ],
            &quot;principals&quot;: [ # The list of principals.
              { # [Deprecated] All fields defined in a principal are ANDed.
                &quot;condition&quot;: &quot;A String&quot;, # An expression to specify custom condition.
                &quot;groups&quot;: [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                  &quot;A String&quot;,
                ],
                &quot;ips&quot;: [ # IPv4 or IPv6 address or range (In CIDR format)
                  &quot;A String&quot;,
                ],
                &quot;namespaces&quot;: [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                  &quot;A String&quot;,
                ],
                &quot;notGroups&quot;: [ # Negate of groups. Specifies exclusions.
                  &quot;A String&quot;,
                ],
                &quot;notIps&quot;: [ # Negate of IPs. Specifies exclusions.
                  &quot;A String&quot;,
                ],
                &quot;notNamespaces&quot;: [ # Negate of namespaces. Specifies exclusions.
                  &quot;A String&quot;,
                ],
                &quot;notUsers&quot;: [ # Negate of users. Specifies exclusions.
                  &quot;A String&quot;,
                ],
                &quot;properties&quot;: { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: &quot;v1&quot;`. The properties are ANDed together.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;users&quot;: [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                  &quot;A String&quot;,
                ],
              },
            ],
          },
        ],
      },
      &quot;clientTlsPolicy&quot;: &quot;A String&quot;, # Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service&#x27;s backends.
          # clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED.
          # If left blank, communications are not encrypted.
      &quot;clientTlsSettings&quot;: { # [Deprecated] The client side authentication settings for connection originating from the backend service. the backend service. # [Deprecated] TLS Settings for the backend service.
        &quot;clientTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain client-side security certificates and identity information. This field is only applicable when mode is set to MUTUAL.
          &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
            &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
              &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
              &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
            },
            &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
            &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
              &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                      # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                      # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                    &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                    &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
                &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                    &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                  },
                  &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
                },
                &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
              },
            },
          },
          &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
            &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
            &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
              &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                      # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                      # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                    &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                    &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
                &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                    &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                  },
                  &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
                },
                &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
              },
            },
            &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
          },
        },
        &quot;mode&quot;: &quot;A String&quot;, # Indicates whether connections to this port should be secured using TLS. The value of this field determines how TLS is enforced. This can be set to one of the following values: DISABLE: Do not setup a TLS connection to the backends. SIMPLE: Originate a TLS connection to the backends. MUTUAL: Secure connections to the backends using mutual TLS by presenting client certificates for authentication.
        &quot;sni&quot;: &quot;A String&quot;, # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
        &quot;subjectAltNames&quot;: [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate&#x27;s subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
          &quot;A String&quot;,
        ],
      },
      &quot;subjectAltNames&quot;: [ # Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate&#x27;s subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service.
          # Note that the contents of the server certificate&#x27;s subjectAltName field are configured by the Public Key Infrastructure which provisions server identities.
          # Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode).
        &quot;A String&quot;,
      ],
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
    &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
    &quot;sessionAffinity&quot;: &quot;A String&quot;, # Type of session affinity to use. The default is NONE. Session affinity is not applicable if the --protocol is UDP.
        #
        # When the loadBalancingScheme is EXTERNAL, possible values are NONE, CLIENT_IP, or GENERATED_COOKIE. You can use GENERATED_COOKIE if the protocol is HTTP or HTTPS.
        #
        # When the loadBalancingScheme is INTERNAL, possible values are NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
        #
        # When the loadBalancingScheme is INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, possible values are NONE, CLIENT_IP, GENERATED_COOKIE, HEADER_FIELD, or HTTP_COOKIE.
    &quot;timeoutSec&quot;: 42, # 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.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getHealth">getHealth(project, region, backendService, body=None)</code>
  <pre>Gets the most recent health check results for this regional BackendService.

Args:
  project: string, A parameter (required)
  region: string, Name of the region scoping this request. (required)
  backendService: string, Name of the BackendService resource for which to get health. (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;group&quot;: &quot;A String&quot;, # A URI referencing one of the instance groups or network endpoint groups listed in the backend service.
  }


Returns:
  An object of the form:

    {
    &quot;annotations&quot;: { # Metadata defined as annotations on the network endpoint group.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;healthStatus&quot;: [ # Health state of the backend instances or endpoints in requested instance or network endpoint group, determined based on configured health checks.
      {
        &quot;annotations&quot;: { # Metadata defined as annotations for network endpoint.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;healthState&quot;: &quot;A String&quot;, # Health state of the instance.
        &quot;instance&quot;: &quot;A String&quot;, # URL of the instance resource.
        &quot;ipAddress&quot;: &quot;A String&quot;, # A forwarding rule IP address assigned to this instance.
        &quot;port&quot;: 42, # The named port of the instance group, not necessarily the port that is health-checked.
      },
    ],
    &quot;kind&quot;: &quot;compute#backendServiceGroupHealth&quot;, # [Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, region, body=None, requestId=None)</code>
  <pre>Creates a regional BackendService resource in the specified project using the data included in the request. For more information, see  Backend services overview.

Args:
  project: string, Project ID for this request. (required)
  region: string, Name of the region scoping this request. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a Backend Service resource.
    # 
    # A backend service defines how Google Cloud load balancers distribute traffic. The backend service configuration contains a set of values, such as the protocol used to connect to backends, various distribution and session settings, health checks, and timeouts. These settings provide fine-grained control over how your load balancer behaves. Most of the settings have default values that allow for easy configuration if you need to get started quickly.
    # 
    # Backend services in Google Compute Engine can be either regionally or globally scoped.
    # 
    # * [Global](/compute/docs/reference/rest/{$api_version}/backendServices) * [Regional](/compute/docs/reference/rest/{$api_version}/regionBackendServices)
    # 
    # For more information, see Backend Services.
    # 
    # (== resource_for {$api_version}.backendService ==)
  &quot;affinityCookieTtlSec&quot;: 42, # 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).
  &quot;backends&quot;: [ # The list of backends that serve this BackendService.
    { # Message containing information of one individual backend.
      &quot;balancingMode&quot;: &quot;A String&quot;, # Specifies the balancing mode for the backend.
          #
          # When choosing a balancing mode, you need to consider the loadBalancingScheme, and protocol for the backend service, as well as the type of backend (instance group or NEG).
          #
          #
          # - If the load balancing mode is CONNECTION, then the load is spread based on how many concurrent connections the backend can handle.
          # You can use the CONNECTION balancing mode if the protocol for the backend service is SSL, TCP, or UDP.
          #
          # If the loadBalancingScheme for the backend service is EXTERNAL (SSL Proxy and TCP Proxy load balancers), you must also specify exactly one of the following parameters: maxConnections (except for regional managed instance groups), maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
          #
          # If the loadBalancingScheme for the backend service is INTERNAL (internal TCP/UDP load balancers), you cannot specify any additional parameters.
          #
          # - If the load balancing mode is RATE, the load is spread based on the rate of HTTP requests per second (RPS).
          # You can use the RATE balancing mode if the protocol for the backend service is HTTP or HTTPS. You must specify exactly one of the following parameters: maxRate (except for regional managed instance groups), maxRatePerInstance, or maxRatePerEndpoint.
          #
          # - If the load balancing mode is UTILIZATION, the load is spread based on the backend utilization of instances in an instance group.
          # You can use the UTILIZATION balancing mode if the loadBalancingScheme of the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED and the backends are instance groups. There are no restrictions on the backend service protocol.
      &quot;capacityScaler&quot;: 3.14, # A multiplier applied to the group&#x27;s maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. Valid range is 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service.
          #
          # This cannot be used for internal load balancing.
      &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
      &quot;failover&quot;: True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
      &quot;group&quot;: &quot;A String&quot;, # The fully-qualified URL of an instance group or network endpoint group (NEG) resource. The type of backend that a backend service supports depends on the backend service&#x27;s loadBalancingScheme.
          #
          #
          # - When the loadBalancingScheme for the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, the backend can be either an instance group or a NEG. The backends on the backend service must be either all instance groups or all NEGs. You cannot mix instance group and NEG backends on the same backend service.
          #
          #
          # - When the loadBalancingScheme for the backend service is INTERNAL, the backend must be an instance group in the same region as the backend service. NEGs are not supported.
          #
          # You must use the fully-qualified URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported.
      &quot;maxConnections&quot;: 42, # Defines a target maximum number of simultaneous connections that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. If the loadBalancingScheme is INTERNAL, then maxConnections is not supported, even though the backend requires a balancing mode of CONNECTION.
      &quot;maxConnectionsPerEndpoint&quot;: 42, # Defines a target maximum number of simultaneous connections for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a maximum number of target maximum simultaneous connections for the NEG. If the backend&#x27;s balancingMode is CONNECTION, and the backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerInstance.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerEndpoint even though its backends require a balancing mode of CONNECTION.
      &quot;maxConnectionsPerInstance&quot;: 42, # Defines a target maximum number of simultaneous connections for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum number of simultaneous connections for the whole instance group. If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerInstance even though its backends require a balancing mode of CONNECTION.
      &quot;maxRate&quot;: 42, # Defines a maximum number of HTTP requests per second (RPS) that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). Must not be defined if the backend is a managed instance group that uses autoscaling based on load balancing.
          #
          # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify maxRate, maxRatePerInstance, or maxRatePerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxRatePerEndpoint&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a target maximum rate for the NEG.
          #
          # If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerInstance.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxRatePerInstance&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum rate for the whole instance group.
          #
          # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxUtilization&quot;: 3.14, # Defines the maximum average backend utilization of a backend VM in an instance group. The valid range is [0.0, 1.0]. This is an optional parameter if the backend&#x27;s balancingMode is UTILIZATION.
          #
          # This parameter can be used in conjunction with maxRate, maxRatePerInstance, maxConnections (except for regional managed instance groups), or maxConnectionsPerInstance.
    },
  ],
  &quot;cdnPolicy&quot;: { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
    &quot;cacheKeyPolicy&quot;: { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
      &quot;includeHost&quot;: True or False, # If true, requests to different hosts will be cached separately.
      &quot;includeProtocol&quot;: True or False, # If true, http and https requests will be cached separately.
      &quot;includeQueryString&quot;: True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
      &quot;queryStringBlacklist&quot;: [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
        &quot;A String&quot;,
      ],
      &quot;queryStringWhitelist&quot;: [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
        &quot;A String&quot;,
      ],
    },
    &quot;signedUrlCacheMaxAgeSec&quot;: &quot;A String&quot;, # Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a &quot;Cache-Control: public, max-age=[TTL]&quot; header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
    &quot;signedUrlKeyNames&quot;: [ # [Output Only] Names of the keys for signing request URLs.
      &quot;A String&quot;,
    ],
  },
  &quot;circuitBreakers&quot;: { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
    &quot;connectTimeout&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The timeout for new network connections to hosts.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;maxConnections&quot;: 42, # The maximum number of connections to the backend service. If not specified, there is no limit.
    &quot;maxPendingRequests&quot;: 42, # The maximum number of pending requests allowed to the backend service. If not specified, there is no limit.
    &quot;maxRequests&quot;: 42, # The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit.
    &quot;maxRequestsPerConnection&quot;: 42, # Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive.
    &quot;maxRetries&quot;: 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1.
  },
  &quot;connectionDraining&quot;: { # Message containing connection draining configuration.
    &quot;drainingTimeoutSec&quot;: 42, # The amount of time in seconds to allow existing connections to persist while on unhealthy backend VMs. Only applicable if the protocol is not UDP. The valid range is [0, 3600].
  },
  &quot;consistentHash&quot;: { # This message defines settings for a consistent hash style load balancer. # 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.
    &quot;httpCookie&quot;: { # The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash. # Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE.
      &quot;name&quot;: &quot;A String&quot;, # Name of the cookie.
      &quot;path&quot;: &quot;A String&quot;, # Path to set for the cookie.
      &quot;ttl&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Lifetime of the cookie.
        &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
        &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
      },
    },
    &quot;httpHeaderName&quot;: &quot;A String&quot;, # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
    &quot;minimumRingSize&quot;: &quot;A String&quot;, # The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node.
  },
  &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Output Only] Creation timestamp in RFC3339 text format.
  &quot;customRequestHeaders&quot;: [ # Headers that the HTTP/S load balancer should add to proxied requests.
    &quot;A String&quot;,
  ],
  &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
  &quot;enableCDN&quot;: True or False, # If true, enables Cloud CDN for the backend service. Only applicable if the loadBalancingScheme is EXTERNAL and the protocol is HTTP or HTTPS.
  &quot;failoverPolicy&quot;: { # Applicable only to Failover for Internal TCP/UDP Load Balancing. On failover or failback, this field indicates whether connection draining will be honored. GCP has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes). # Applicable only to Failover for Internal TCP/UDP Load Balancing. Requires at least one backend instance group to be defined as a backup (failover) backend.
    &quot;disableConnectionDrainOnFailover&quot;: True or False, # This can be set to true only if the protocol is TCP.
        #
        # The default is false.
    &quot;dropTrafficIfUnhealthy&quot;: True or False, # Applicable only to Failover for Internal TCP/UDP Load Balancing. If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy. If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy.
        #
        # The default is false.
    &quot;failoverRatio&quot;: 3.14, # Applicable only to Failover for Internal TCP/UDP Load Balancing. The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio.
  },
  &quot;fingerprint&quot;: &quot;A String&quot;, # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet.
      # 
      # To see the latest fingerprint, make a get() request to retrieve a BackendService.
  &quot;healthChecks&quot;: [ # 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. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet NEG backends must not have a health check. A health check must
    &quot;A String&quot;,
  ],
  &quot;iap&quot;: { # Identity-Aware Proxy # The configurations for Identity-Aware Proxy on this resource.
    &quot;enabled&quot;: True or False, # Whether the serving infrastructure will authenticate and authorize all incoming requests. If true, the oauth2ClientId and oauth2ClientSecret fields must be non-empty.
    &quot;oauth2ClientId&quot;: &quot;A String&quot;, # OAuth2 client ID to use for the authentication flow.
    &quot;oauth2ClientInfo&quot;: { # [Input Only] OAuth client info required to generate client id to be used for IAP.
      &quot;applicationName&quot;: &quot;A String&quot;, # Application name to be used in OAuth consent screen.
      &quot;clientName&quot;: &quot;A String&quot;, # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
      &quot;developerEmailAddress&quot;: &quot;A String&quot;, # Developer&#x27;s information to be used in OAuth consent screen.
    },
    &quot;oauth2ClientSecret&quot;: &quot;A String&quot;, # OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field.
    &quot;oauth2ClientSecretSha256&quot;: &quot;A String&quot;, # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
  },
  &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
  &quot;kind&quot;: &quot;compute#backendService&quot;, # [Output Only] Type of resource. Always compute#backendService for backend services.
  &quot;loadBalancingScheme&quot;: &quot;A String&quot;, # Specifies the load balancer type. Choose EXTERNAL for load balancers that receive traffic from external clients. Choose INTERNAL for Internal TCP/UDP Load Balancing. Choose INTERNAL_MANAGED for Internal HTTP(S) Load Balancing. Choose INTERNAL_SELF_MANAGED for Traffic Director. A backend service created for one type of load balancing cannot be used with another. For more information, refer to Choosing a load balancer.
  &quot;localityLbPolicy&quot;: &quot;A String&quot;, # 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.
      # - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.
      # - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824
      # 
      # 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.
      # 
      # If sessionAffinity is not NONE, and this field is not set to &gt;MAGLEV or RING_HASH, session affinity settings will not take effect.
  &quot;logConfig&quot;: { # The available logging options for the load balancer traffic served by this backend service. # 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.
    &quot;enable&quot;: True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
    &quot;sampleRate&quot;: 3.14, # This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0.
  },
  &quot;name&quot;: &quot;A String&quot;, # 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.
  &quot;network&quot;: &quot;A String&quot;, # The URL of the network to which this backend service belongs. This field can only be spcified when the load balancing scheme is set to INTERNAL.
  &quot;outlierDetection&quot;: { # Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service. # 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.
    &quot;baseEjectionTime&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The base time that a host is ejected for. The real ejection time is equal to the base ejection time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;consecutiveErrors&quot;: 42, # Number of errors before a host is ejected from the connection pool. When the backend host is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5.
    &quot;consecutiveGatewayFailure&quot;: 42, # The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3.
    &quot;enforcingConsecutiveErrors&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0.
    &quot;enforcingConsecutiveGatewayFailure&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
    &quot;enforcingSuccessRate&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
    &quot;interval&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Time interval between ejection analysis sweeps. This can result in both new ejections as well as hosts being returned to service. Defaults to 1 second.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;maxEjectionPercent&quot;: 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 50%.
    &quot;successRateMinimumHosts&quot;: 42, # The number of hosts in a cluster that must have enough request volume to detect success rate outliers. If the number of hosts is less than this setting, outlier detection via success rate statistics is not performed for any host in the cluster. Defaults to 5.
    &quot;successRateRequestVolume&quot;: 42, # The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this host in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that host. Defaults to 100.
    &quot;successRateStdevFactor&quot;: 42, # This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900.
  },
  &quot;port&quot;: 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
      # 
      # This cannot be used if the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
  &quot;portName&quot;: &quot;A String&quot;, # A named port on a backend instance group representing the port for communication to the backend VMs in that group. Required when the loadBalancingScheme is EXTERNAL, INTERNAL_MANAGED, or INTERNAL_SELF_MANAGED and the backends are instance groups. The named port must be defined on each backend instance group. This parameter has no meaning if the backends are NEGs.
      # 
      # 
      # 
      # Must be omitted when the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
  &quot;protocol&quot;: &quot;A String&quot;, # The protocol this BackendService uses to communicate with backends.
      # 
      # Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, or UDP. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancer or for Traffic Director for more information.
  &quot;region&quot;: &quot;A String&quot;, # [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.
  &quot;securityPolicy&quot;: &quot;A String&quot;, # [Output Only] The resource URL for the security policy associated with this backend service.
  &quot;securitySettings&quot;: { # The authentication and authorization settings for a BackendService. # This field specifies the security policy that applies to this backend service. 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.
    &quot;authentication&quot;: &quot;A String&quot;, # [Deprecated] Use clientTlsPolicy instead.
    &quot;authenticationPolicy&quot;: { # [Deprecated] The authentication settings for the backend service. The authentication settings for the backend service. # [Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal.
      &quot;origins&quot;: [ # List of authentication methods that can be used for origin authentication. Similar to peers, these will be evaluated in order the first valid one will be used to set origin identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if origin authentication is not required.
        { # [Deprecated] Configuration for the origin authentication method. Configuration for the origin authentication method.
          &quot;jwt&quot;: { # [Deprecated] JWT configuration for origin authentication. JWT configuration for origin authentication.
            &quot;audiences&quot;: [ # A JWT containing any of these audiences will be accepted. The service name will be accepted if audiences is empty. Examples: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com
              &quot;A String&quot;,
            ],
            &quot;issuer&quot;: &quot;A String&quot;, # Identifies the issuer that issued the JWT, which is usually a URL or an email address. Examples: https://securetoken.google.com, 1234567-compute@developer.gserviceaccount.com
            &quot;jwksPublicKeys&quot;: &quot;A String&quot;, # The provider&#x27;s public key set to validate the signature of the JWT.
            &quot;jwtHeaders&quot;: [ # jwt_headers and jwt_params define where to extract the JWT from an HTTP request. If no explicit location is specified, the following default locations are tried in order:
                #
                # 1. The Authorization header using the Bearer schema. See `here `_. Example:
                #
                # Authorization: Bearer .
                #
                # 2. `access_token` query parameter. See `this `_
                #
                # Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations its issuer specified or from the default locations.
                #
                # This field is set if JWT is sent in a request header. This field specifies the header name. For example, if `header=x-goog-iap-jwt-assertion`, the header format will be x-goog-iap-jwt-assertion: .
              { # [Deprecated] This message specifies a header location to extract JWT token. This message specifies a header location to extract JWT token.
                &quot;name&quot;: &quot;A String&quot;, # The HTTP header name.
                &quot;valuePrefix&quot;: &quot;A String&quot;, # The value prefix. The value format is &quot;value_prefix&quot; For example, for &quot;Authorization: Bearer &quot;, value_prefix=&quot;Bearer &quot; with a space at the end.
              },
            ],
            &quot;jwtParams&quot;: [ # This field is set if JWT is sent in a query parameter. This field specifies the query parameter name. For example, if jwt_params[0] is jwt_token, the JWT format in the query parameter is /path?jwt_token=.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;peers&quot;: [ # List of authentication methods that can be used for peer authentication. They will be evaluated in order the first valid one will be used to set peer identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if peer authentication is not required.
        { # [Deprecated] Configuration for the peer authentication method. Configuration for the peer authentication method.
          &quot;mtls&quot;: { # [Deprecated] Configuration for the mutual Tls mode for peer authentication. Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
            &quot;mode&quot;: &quot;A String&quot;, # Specifies if the server TLS is configured to be strict or permissive. This field can be set to one of the following: STRICT: Client certificate must be presented, connection is in TLS. PERMISSIVE: Client certificate can be omitted, connection can be either plaintext or TLS.
          },
        },
      ],
      &quot;principalBinding&quot;: &quot;A String&quot;, # Define whether peer or origin identity should be used for principal. Default value is USE_PEER. If peer (or origin) identity is not available, either because peer/origin authentication is not defined, or failed, principal will be left unset. In other words, binding rule does not affect the decision to accept or reject request. This field can be set to one of the following: USE_PEER: Principal will be set to the identity from peer authentication. USE_ORIGIN: Principal will be set to the identity from origin authentication.
      &quot;serverTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
        &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
          &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
            &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
            &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
          },
          &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
        },
        &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
          &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
          &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
        },
      },
    },
    &quot;authorizationConfig&quot;: { # [Deprecated] Authorization configuration provides service-level and method-level access control for a service. control for a service. # [Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config.
      &quot;policies&quot;: [ # List of RbacPolicies.
        {
          &quot;name&quot;: &quot;A String&quot;, # Name of the RbacPolicy.
          &quot;permissions&quot;: [ # The list of permissions.
            { # [Deprecated] All fields defined in a permission are ANDed.
              &quot;constraints&quot;: [ # Extra custom constraints. The constraints are ANDed together.
                { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                  &quot;key&quot;: &quot;A String&quot;, # Key of the constraint.
                  &quot;values&quot;: [ # A list of allowed values.
                    &quot;A String&quot;,
                  ],
                },
              ],
              &quot;hosts&quot;: [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;methods&quot;: [ # HTTP method.
                &quot;A String&quot;,
              ],
              &quot;notHosts&quot;: [ # Negate of hosts. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notMethods&quot;: [ # Negate of methods. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notPaths&quot;: [ # Negate of paths. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notPorts&quot;: [ # Negate of ports. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;paths&quot;: [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;ports&quot;: [ # Port names or numbers.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;principals&quot;: [ # The list of principals.
            { # [Deprecated] All fields defined in a principal are ANDed.
              &quot;condition&quot;: &quot;A String&quot;, # An expression to specify custom condition.
              &quot;groups&quot;: [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;ips&quot;: [ # IPv4 or IPv6 address or range (In CIDR format)
                &quot;A String&quot;,
              ],
              &quot;namespaces&quot;: [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;notGroups&quot;: [ # Negate of groups. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notIps&quot;: [ # Negate of IPs. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notNamespaces&quot;: [ # Negate of namespaces. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notUsers&quot;: [ # Negate of users. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;properties&quot;: { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: &quot;v1&quot;`. The properties are ANDed together.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;users&quot;: [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
            },
          ],
        },
      ],
    },
    &quot;clientTlsPolicy&quot;: &quot;A String&quot;, # Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service&#x27;s backends.
        # clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED.
        # If left blank, communications are not encrypted.
    &quot;clientTlsSettings&quot;: { # [Deprecated] The client side authentication settings for connection originating from the backend service. the backend service. # [Deprecated] TLS Settings for the backend service.
      &quot;clientTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain client-side security certificates and identity information. This field is only applicable when mode is set to MUTUAL.
        &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
          &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
            &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
            &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
          },
          &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
        },
        &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
          &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
          &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
        },
      },
      &quot;mode&quot;: &quot;A String&quot;, # Indicates whether connections to this port should be secured using TLS. The value of this field determines how TLS is enforced. This can be set to one of the following values: DISABLE: Do not setup a TLS connection to the backends. SIMPLE: Originate a TLS connection to the backends. MUTUAL: Secure connections to the backends using mutual TLS by presenting client certificates for authentication.
      &quot;sni&quot;: &quot;A String&quot;, # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
      &quot;subjectAltNames&quot;: [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate&#x27;s subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
        &quot;A String&quot;,
      ],
    },
    &quot;subjectAltNames&quot;: [ # Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate&#x27;s subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service.
        # Note that the contents of the server certificate&#x27;s subjectAltName field are configured by the Public Key Infrastructure which provisions server identities.
        # Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode).
      &quot;A String&quot;,
    ],
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
  &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
  &quot;sessionAffinity&quot;: &quot;A String&quot;, # Type of session affinity to use. The default is NONE. Session affinity is not applicable if the --protocol is UDP.
      # 
      # When the loadBalancingScheme is EXTERNAL, possible values are NONE, CLIENT_IP, or GENERATED_COOKIE. You can use GENERATED_COOKIE if the protocol is HTTP or HTTPS.
      # 
      # When the loadBalancingScheme is INTERNAL, possible values are NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
      # 
      # When the loadBalancingScheme is INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, possible values are NONE, CLIENT_IP, GENERATED_COOKIE, HEADER_FIELD, or HTTP_COOKIE.
  &quot;timeoutSec&quot;: 42, # 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.
}

  requestId: string, An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.

For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.

The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).

Returns:
  An object of the form:

    { # Represents an Operation resource.
      #
      # Google Compute Engine has three Operation resources:
      #
      # * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations)
      #
      # You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses.
      #
      # Operations can be global, regional or zonal.
      # - For global operations, use the `globalOperations` resource.
      # - For regional operations, use the `regionOperations` resource.
      # - For zonal operations, use the `zonalOperations` resource.
      #
      # For more information, read  Global, Regional, and Zonal Resources. (== resource_for {$api_version}.globalOperations ==) (== resource_for {$api_version}.regionOperations ==) (== resource_for {$api_version}.zoneOperations ==)
    &quot;clientOperationId&quot;: &quot;A String&quot;, # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Deprecated] This field is deprecated.
    &quot;description&quot;: &quot;A String&quot;, # [Output Only] A textual description of the operation, which is set when the operation is created.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    &quot;error&quot;: { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      &quot;errors&quot;: [ # [Output Only] The array of errors encountered while processing this operation.
        {
          &quot;code&quot;: &quot;A String&quot;, # [Output Only] The error type identifier for this error.
          &quot;location&quot;: &quot;A String&quot;, # [Output Only] Indicates the field in the request that caused the error. This property is optional.
          &quot;message&quot;: &quot;A String&quot;, # [Output Only] An optional, human-readable error message.
        },
      ],
    },
    &quot;httpErrorMessage&quot;: &quot;A String&quot;, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`.
    &quot;httpErrorStatusCode&quot;: 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found.
    &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
    &quot;insertTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    &quot;kind&quot;: &quot;compute#operation&quot;, # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
    &quot;name&quot;: &quot;A String&quot;, # [Output Only] Name of the operation.
    &quot;operationType&quot;: &quot;A String&quot;, # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
    &quot;progress&quot;: 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
    &quot;region&quot;: &quot;A String&quot;, # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
    &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
    &quot;startTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    &quot;status&quot;: &quot;A String&quot;, # [Output Only] The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`.
    &quot;statusMessage&quot;: &quot;A String&quot;, # [Output Only] An optional textual description of the current status of the operation.
    &quot;targetId&quot;: &quot;A String&quot;, # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    &quot;targetLink&quot;: &quot;A String&quot;, # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
    &quot;user&quot;: &quot;A String&quot;, # [Output Only] User who requested the operation, for example: `user@example.com`.
    &quot;warnings&quot;: [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        &quot;code&quot;: &quot;A String&quot;, # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        &quot;data&quot;: [ # [Output Only] Metadata about this warning in key: value format. For example:
            # &quot;data&quot;: [ { &quot;key&quot;: &quot;scope&quot;, &quot;value&quot;: &quot;zones/us-east1-d&quot; }
          {
            &quot;key&quot;: &quot;A String&quot;, # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
            &quot;value&quot;: &quot;A String&quot;, # [Output Only] A warning data value corresponding to the key.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # [Output Only] A human-readable description of the warning code.
      },
    ],
    &quot;zone&quot;: &quot;A String&quot;, # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, region, filter=None, maxResults=None, orderBy=None, pageToken=None, returnPartialSuccess=None)</code>
  <pre>Retrieves the list of regional BackendService resources available to the specified project in the given region.

Args:
  project: string, Project ID for this request. (required)
  region: string, Name of the region scoping this request. (required)
  filter: string, A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either `=`, `!=`, `&gt;`, or `&lt;`.

For example, if you are filtering Compute Engine instances, you can exclude instances named `example-instance` by specifying `name != example-instance`.

You can also filter nested fields. For example, you could specify `scheduling.automaticRestart = false` to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.

To filter on multiple expressions, provide each separate expression within parentheses. For example: ``` (scheduling.automaticRestart = true) (cpuPlatform = &quot;Intel Skylake&quot;) ``` By default, each expression is an `AND` expression. However, you can include `AND` and `OR` expressions explicitly. For example: ``` (cpuPlatform = &quot;Intel Skylake&quot;) OR (cpuPlatform = &quot;Intel Broadwell&quot;) AND (scheduling.automaticRestart = true) ```
  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than `maxResults`, Compute Engine returns a `nextPageToken` that can be used to get the next page of results in subsequent list requests. Acceptable values are `0` to `500`, inclusive. (Default: `500`)
  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.

You can also sort results in descending order based on the creation timestamp using `orderBy=&quot;creationTimestamp desc&quot;`. This sorts results based on the `creationTimestamp` field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.

Currently, only sorting by `name` or `creationTimestamp desc` is supported.
  pageToken: string, Specifies a page token to use. Set `pageToken` to the `nextPageToken` returned by a previous list request to get the next page of results.
  returnPartialSuccess: boolean, Opt-in for partial success behavior which provides partial results in case of failure. The default value is false and the logic is the same as today.

Returns:
  An object of the form:

    { # Contains a list of BackendService resources.
    &quot;id&quot;: &quot;A String&quot;, # [Output Only] Unique identifier for the resource; defined by the server.
    &quot;items&quot;: [ # A list of BackendService resources.
      { # Represents a Backend Service resource.
          #
          # A backend service defines how Google Cloud load balancers distribute traffic. The backend service configuration contains a set of values, such as the protocol used to connect to backends, various distribution and session settings, health checks, and timeouts. These settings provide fine-grained control over how your load balancer behaves. Most of the settings have default values that allow for easy configuration if you need to get started quickly.
          #
          # Backend services in Google Compute Engine can be either regionally or globally scoped.
          #
          # * [Global](/compute/docs/reference/rest/{$api_version}/backendServices) * [Regional](/compute/docs/reference/rest/{$api_version}/regionBackendServices)
          #
          # For more information, see Backend Services.
          #
          # (== resource_for {$api_version}.backendService ==)
        &quot;affinityCookieTtlSec&quot;: 42, # 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).
        &quot;backends&quot;: [ # The list of backends that serve this BackendService.
          { # Message containing information of one individual backend.
            &quot;balancingMode&quot;: &quot;A String&quot;, # Specifies the balancing mode for the backend.
                #
                # When choosing a balancing mode, you need to consider the loadBalancingScheme, and protocol for the backend service, as well as the type of backend (instance group or NEG).
                #
                #
                # - If the load balancing mode is CONNECTION, then the load is spread based on how many concurrent connections the backend can handle.
                # You can use the CONNECTION balancing mode if the protocol for the backend service is SSL, TCP, or UDP.
                #
                # If the loadBalancingScheme for the backend service is EXTERNAL (SSL Proxy and TCP Proxy load balancers), you must also specify exactly one of the following parameters: maxConnections (except for regional managed instance groups), maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
                #
                # If the loadBalancingScheme for the backend service is INTERNAL (internal TCP/UDP load balancers), you cannot specify any additional parameters.
                #
                # - If the load balancing mode is RATE, the load is spread based on the rate of HTTP requests per second (RPS).
                # You can use the RATE balancing mode if the protocol for the backend service is HTTP or HTTPS. You must specify exactly one of the following parameters: maxRate (except for regional managed instance groups), maxRatePerInstance, or maxRatePerEndpoint.
                #
                # - If the load balancing mode is UTILIZATION, the load is spread based on the backend utilization of instances in an instance group.
                # You can use the UTILIZATION balancing mode if the loadBalancingScheme of the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED and the backends are instance groups. There are no restrictions on the backend service protocol.
            &quot;capacityScaler&quot;: 3.14, # A multiplier applied to the group&#x27;s maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. Valid range is 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service.
                #
                # This cannot be used for internal load balancing.
            &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
            &quot;failover&quot;: True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
            &quot;group&quot;: &quot;A String&quot;, # The fully-qualified URL of an instance group or network endpoint group (NEG) resource. The type of backend that a backend service supports depends on the backend service&#x27;s loadBalancingScheme.
                #
                #
                # - When the loadBalancingScheme for the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, the backend can be either an instance group or a NEG. The backends on the backend service must be either all instance groups or all NEGs. You cannot mix instance group and NEG backends on the same backend service.
                #
                #
                # - When the loadBalancingScheme for the backend service is INTERNAL, the backend must be an instance group in the same region as the backend service. NEGs are not supported.
                #
                # You must use the fully-qualified URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported.
            &quot;maxConnections&quot;: 42, # Defines a target maximum number of simultaneous connections that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
                #
                # Not available if the backend&#x27;s balancingMode is RATE. If the loadBalancingScheme is INTERNAL, then maxConnections is not supported, even though the backend requires a balancing mode of CONNECTION.
            &quot;maxConnectionsPerEndpoint&quot;: 42, # Defines a target maximum number of simultaneous connections for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a maximum number of target maximum simultaneous connections for the NEG. If the backend&#x27;s balancingMode is CONNECTION, and the backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerInstance.
                #
                # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerEndpoint even though its backends require a balancing mode of CONNECTION.
            &quot;maxConnectionsPerInstance&quot;: 42, # Defines a target maximum number of simultaneous connections for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum number of simultaneous connections for the whole instance group. If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerEndpoint.
                #
                # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerInstance even though its backends require a balancing mode of CONNECTION.
            &quot;maxRate&quot;: 42, # Defines a maximum number of HTTP requests per second (RPS) that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). Must not be defined if the backend is a managed instance group that uses autoscaling based on load balancing.
                #
                # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify maxRate, maxRatePerInstance, or maxRatePerEndpoint.
                #
                # Not available if the backend&#x27;s balancingMode is CONNECTION.
            &quot;maxRatePerEndpoint&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a target maximum rate for the NEG.
                #
                # If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerInstance.
                #
                # Not available if the backend&#x27;s balancingMode is CONNECTION.
            &quot;maxRatePerInstance&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum rate for the whole instance group.
                #
                # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerEndpoint.
                #
                # Not available if the backend&#x27;s balancingMode is CONNECTION.
            &quot;maxUtilization&quot;: 3.14, # Defines the maximum average backend utilization of a backend VM in an instance group. The valid range is [0.0, 1.0]. This is an optional parameter if the backend&#x27;s balancingMode is UTILIZATION.
                #
                # This parameter can be used in conjunction with maxRate, maxRatePerInstance, maxConnections (except for regional managed instance groups), or maxConnectionsPerInstance.
          },
        ],
        &quot;cdnPolicy&quot;: { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
          &quot;cacheKeyPolicy&quot;: { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
            &quot;includeHost&quot;: True or False, # If true, requests to different hosts will be cached separately.
            &quot;includeProtocol&quot;: True or False, # If true, http and https requests will be cached separately.
            &quot;includeQueryString&quot;: True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
            &quot;queryStringBlacklist&quot;: [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
              &quot;A String&quot;,
            ],
            &quot;queryStringWhitelist&quot;: [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
              &quot;A String&quot;,
            ],
          },
          &quot;signedUrlCacheMaxAgeSec&quot;: &quot;A String&quot;, # Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a &quot;Cache-Control: public, max-age=[TTL]&quot; header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
          &quot;signedUrlKeyNames&quot;: [ # [Output Only] Names of the keys for signing request URLs.
            &quot;A String&quot;,
          ],
        },
        &quot;circuitBreakers&quot;: { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
          &quot;connectTimeout&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The timeout for new network connections to hosts.
            &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
            &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
          },
          &quot;maxConnections&quot;: 42, # The maximum number of connections to the backend service. If not specified, there is no limit.
          &quot;maxPendingRequests&quot;: 42, # The maximum number of pending requests allowed to the backend service. If not specified, there is no limit.
          &quot;maxRequests&quot;: 42, # The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit.
          &quot;maxRequestsPerConnection&quot;: 42, # Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive.
          &quot;maxRetries&quot;: 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1.
        },
        &quot;connectionDraining&quot;: { # Message containing connection draining configuration.
          &quot;drainingTimeoutSec&quot;: 42, # The amount of time in seconds to allow existing connections to persist while on unhealthy backend VMs. Only applicable if the protocol is not UDP. The valid range is [0, 3600].
        },
        &quot;consistentHash&quot;: { # This message defines settings for a consistent hash style load balancer. # 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.
          &quot;httpCookie&quot;: { # The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash. # Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE.
            &quot;name&quot;: &quot;A String&quot;, # Name of the cookie.
            &quot;path&quot;: &quot;A String&quot;, # Path to set for the cookie.
            &quot;ttl&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Lifetime of the cookie.
              &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
              &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
            },
          },
          &quot;httpHeaderName&quot;: &quot;A String&quot;, # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
          &quot;minimumRingSize&quot;: &quot;A String&quot;, # The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node.
        },
        &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Output Only] Creation timestamp in RFC3339 text format.
        &quot;customRequestHeaders&quot;: [ # Headers that the HTTP/S load balancer should add to proxied requests.
          &quot;A String&quot;,
        ],
        &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
        &quot;enableCDN&quot;: True or False, # If true, enables Cloud CDN for the backend service. Only applicable if the loadBalancingScheme is EXTERNAL and the protocol is HTTP or HTTPS.
        &quot;failoverPolicy&quot;: { # Applicable only to Failover for Internal TCP/UDP Load Balancing. On failover or failback, this field indicates whether connection draining will be honored. GCP has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes). # Applicable only to Failover for Internal TCP/UDP Load Balancing. Requires at least one backend instance group to be defined as a backup (failover) backend.
          &quot;disableConnectionDrainOnFailover&quot;: True or False, # This can be set to true only if the protocol is TCP.
              #
              # The default is false.
          &quot;dropTrafficIfUnhealthy&quot;: True or False, # Applicable only to Failover for Internal TCP/UDP Load Balancing. If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy. If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy.
              #
              # The default is false.
          &quot;failoverRatio&quot;: 3.14, # Applicable only to Failover for Internal TCP/UDP Load Balancing. The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio.
        },
        &quot;fingerprint&quot;: &quot;A String&quot;, # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet.
            #
            # To see the latest fingerprint, make a get() request to retrieve a BackendService.
        &quot;healthChecks&quot;: [ # 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. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet NEG backends must not have a health check. A health check must
          &quot;A String&quot;,
        ],
        &quot;iap&quot;: { # Identity-Aware Proxy # The configurations for Identity-Aware Proxy on this resource.
          &quot;enabled&quot;: True or False, # Whether the serving infrastructure will authenticate and authorize all incoming requests. If true, the oauth2ClientId and oauth2ClientSecret fields must be non-empty.
          &quot;oauth2ClientId&quot;: &quot;A String&quot;, # OAuth2 client ID to use for the authentication flow.
          &quot;oauth2ClientInfo&quot;: { # [Input Only] OAuth client info required to generate client id to be used for IAP.
            &quot;applicationName&quot;: &quot;A String&quot;, # Application name to be used in OAuth consent screen.
            &quot;clientName&quot;: &quot;A String&quot;, # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
            &quot;developerEmailAddress&quot;: &quot;A String&quot;, # Developer&#x27;s information to be used in OAuth consent screen.
          },
          &quot;oauth2ClientSecret&quot;: &quot;A String&quot;, # OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field.
          &quot;oauth2ClientSecretSha256&quot;: &quot;A String&quot;, # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
        },
        &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
        &quot;kind&quot;: &quot;compute#backendService&quot;, # [Output Only] Type of resource. Always compute#backendService for backend services.
        &quot;loadBalancingScheme&quot;: &quot;A String&quot;, # Specifies the load balancer type. Choose EXTERNAL for load balancers that receive traffic from external clients. Choose INTERNAL for Internal TCP/UDP Load Balancing. Choose INTERNAL_MANAGED for Internal HTTP(S) Load Balancing. Choose INTERNAL_SELF_MANAGED for Traffic Director. A backend service created for one type of load balancing cannot be used with another. For more information, refer to Choosing a load balancer.
        &quot;localityLbPolicy&quot;: &quot;A String&quot;, # 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.
            # - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.
            # - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824
            #
            # 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.
            #
            # If sessionAffinity is not NONE, and this field is not set to &gt;MAGLEV or RING_HASH, session affinity settings will not take effect.
        &quot;logConfig&quot;: { # The available logging options for the load balancer traffic served by this backend service. # 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.
          &quot;enable&quot;: True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
          &quot;sampleRate&quot;: 3.14, # This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0.
        },
        &quot;name&quot;: &quot;A String&quot;, # 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.
        &quot;network&quot;: &quot;A String&quot;, # The URL of the network to which this backend service belongs. This field can only be spcified when the load balancing scheme is set to INTERNAL.
        &quot;outlierDetection&quot;: { # Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service. # 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.
          &quot;baseEjectionTime&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The base time that a host is ejected for. The real ejection time is equal to the base ejection time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
            &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
            &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
          },
          &quot;consecutiveErrors&quot;: 42, # Number of errors before a host is ejected from the connection pool. When the backend host is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5.
          &quot;consecutiveGatewayFailure&quot;: 42, # The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3.
          &quot;enforcingConsecutiveErrors&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0.
          &quot;enforcingConsecutiveGatewayFailure&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
          &quot;enforcingSuccessRate&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
          &quot;interval&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Time interval between ejection analysis sweeps. This can result in both new ejections as well as hosts being returned to service. Defaults to 1 second.
            &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
            &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
          },
          &quot;maxEjectionPercent&quot;: 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 50%.
          &quot;successRateMinimumHosts&quot;: 42, # The number of hosts in a cluster that must have enough request volume to detect success rate outliers. If the number of hosts is less than this setting, outlier detection via success rate statistics is not performed for any host in the cluster. Defaults to 5.
          &quot;successRateRequestVolume&quot;: 42, # The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this host in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that host. Defaults to 100.
          &quot;successRateStdevFactor&quot;: 42, # This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900.
        },
        &quot;port&quot;: 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
            #
            # This cannot be used if the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
        &quot;portName&quot;: &quot;A String&quot;, # A named port on a backend instance group representing the port for communication to the backend VMs in that group. Required when the loadBalancingScheme is EXTERNAL, INTERNAL_MANAGED, or INTERNAL_SELF_MANAGED and the backends are instance groups. The named port must be defined on each backend instance group. This parameter has no meaning if the backends are NEGs.
            #
            #
            #
            # Must be omitted when the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
        &quot;protocol&quot;: &quot;A String&quot;, # The protocol this BackendService uses to communicate with backends.
            #
            # Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, or UDP. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancer or for Traffic Director for more information.
        &quot;region&quot;: &quot;A String&quot;, # [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.
        &quot;securityPolicy&quot;: &quot;A String&quot;, # [Output Only] The resource URL for the security policy associated with this backend service.
        &quot;securitySettings&quot;: { # The authentication and authorization settings for a BackendService. # This field specifies the security policy that applies to this backend service. 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.
          &quot;authentication&quot;: &quot;A String&quot;, # [Deprecated] Use clientTlsPolicy instead.
          &quot;authenticationPolicy&quot;: { # [Deprecated] The authentication settings for the backend service. The authentication settings for the backend service. # [Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal.
            &quot;origins&quot;: [ # List of authentication methods that can be used for origin authentication. Similar to peers, these will be evaluated in order the first valid one will be used to set origin identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if origin authentication is not required.
              { # [Deprecated] Configuration for the origin authentication method. Configuration for the origin authentication method.
                &quot;jwt&quot;: { # [Deprecated] JWT configuration for origin authentication. JWT configuration for origin authentication.
                  &quot;audiences&quot;: [ # A JWT containing any of these audiences will be accepted. The service name will be accepted if audiences is empty. Examples: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com
                    &quot;A String&quot;,
                  ],
                  &quot;issuer&quot;: &quot;A String&quot;, # Identifies the issuer that issued the JWT, which is usually a URL or an email address. Examples: https://securetoken.google.com, 1234567-compute@developer.gserviceaccount.com
                  &quot;jwksPublicKeys&quot;: &quot;A String&quot;, # The provider&#x27;s public key set to validate the signature of the JWT.
                  &quot;jwtHeaders&quot;: [ # jwt_headers and jwt_params define where to extract the JWT from an HTTP request. If no explicit location is specified, the following default locations are tried in order:
                      #
                      # 1. The Authorization header using the Bearer schema. See `here `_. Example:
                      #
                      # Authorization: Bearer .
                      #
                      # 2. `access_token` query parameter. See `this `_
                      #
                      # Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations its issuer specified or from the default locations.
                      #
                      # This field is set if JWT is sent in a request header. This field specifies the header name. For example, if `header=x-goog-iap-jwt-assertion`, the header format will be x-goog-iap-jwt-assertion: .
                    { # [Deprecated] This message specifies a header location to extract JWT token. This message specifies a header location to extract JWT token.
                      &quot;name&quot;: &quot;A String&quot;, # The HTTP header name.
                      &quot;valuePrefix&quot;: &quot;A String&quot;, # The value prefix. The value format is &quot;value_prefix&quot; For example, for &quot;Authorization: Bearer &quot;, value_prefix=&quot;Bearer &quot; with a space at the end.
                    },
                  ],
                  &quot;jwtParams&quot;: [ # This field is set if JWT is sent in a query parameter. This field specifies the query parameter name. For example, if jwt_params[0] is jwt_token, the JWT format in the query parameter is /path?jwt_token=.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;peers&quot;: [ # List of authentication methods that can be used for peer authentication. They will be evaluated in order the first valid one will be used to set peer identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if peer authentication is not required.
              { # [Deprecated] Configuration for the peer authentication method. Configuration for the peer authentication method.
                &quot;mtls&quot;: { # [Deprecated] Configuration for the mutual Tls mode for peer authentication. Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
                  &quot;mode&quot;: &quot;A String&quot;, # Specifies if the server TLS is configured to be strict or permissive. This field can be set to one of the following: STRICT: Client certificate must be presented, connection is in TLS. PERMISSIVE: Client certificate can be omitted, connection can be either plaintext or TLS.
                },
              },
            ],
            &quot;principalBinding&quot;: &quot;A String&quot;, # Define whether peer or origin identity should be used for principal. Default value is USE_PEER. If peer (or origin) identity is not available, either because peer/origin authentication is not defined, or failed, principal will be left unset. In other words, binding rule does not affect the decision to accept or reject request. This field can be set to one of the following: USE_PEER: Principal will be set to the identity from peer authentication. USE_ORIGIN: Principal will be set to the identity from origin authentication.
            &quot;serverTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
              &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
                &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
                &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
                  &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                    &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                      &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                          # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                          # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                      &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                        &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                        &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                      },
                    },
                    &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                      &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                        &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                        &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                      },
                      &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
                    },
                    &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
                  },
                },
              },
              &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
                &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
                &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
                  &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                    &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                      &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                          # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                          # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                      &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                        &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                        &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                      },
                    },
                    &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                      &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                        &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                        &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                      },
                      &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
                    },
                    &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
                  },
                },
                &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
              },
            },
          },
          &quot;authorizationConfig&quot;: { # [Deprecated] Authorization configuration provides service-level and method-level access control for a service. control for a service. # [Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config.
            &quot;policies&quot;: [ # List of RbacPolicies.
              {
                &quot;name&quot;: &quot;A String&quot;, # Name of the RbacPolicy.
                &quot;permissions&quot;: [ # The list of permissions.
                  { # [Deprecated] All fields defined in a permission are ANDed.
                    &quot;constraints&quot;: [ # Extra custom constraints. The constraints are ANDed together.
                      { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                        &quot;key&quot;: &quot;A String&quot;, # Key of the constraint.
                        &quot;values&quot;: [ # A list of allowed values.
                          &quot;A String&quot;,
                        ],
                      },
                    ],
                    &quot;hosts&quot;: [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                      &quot;A String&quot;,
                    ],
                    &quot;methods&quot;: [ # HTTP method.
                      &quot;A String&quot;,
                    ],
                    &quot;notHosts&quot;: [ # Negate of hosts. Specifies exclusions.
                      &quot;A String&quot;,
                    ],
                    &quot;notMethods&quot;: [ # Negate of methods. Specifies exclusions.
                      &quot;A String&quot;,
                    ],
                    &quot;notPaths&quot;: [ # Negate of paths. Specifies exclusions.
                      &quot;A String&quot;,
                    ],
                    &quot;notPorts&quot;: [ # Negate of ports. Specifies exclusions.
                      &quot;A String&quot;,
                    ],
                    &quot;paths&quot;: [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                      &quot;A String&quot;,
                    ],
                    &quot;ports&quot;: [ # Port names or numbers.
                      &quot;A String&quot;,
                    ],
                  },
                ],
                &quot;principals&quot;: [ # The list of principals.
                  { # [Deprecated] All fields defined in a principal are ANDed.
                    &quot;condition&quot;: &quot;A String&quot;, # An expression to specify custom condition.
                    &quot;groups&quot;: [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                      &quot;A String&quot;,
                    ],
                    &quot;ips&quot;: [ # IPv4 or IPv6 address or range (In CIDR format)
                      &quot;A String&quot;,
                    ],
                    &quot;namespaces&quot;: [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                      &quot;A String&quot;,
                    ],
                    &quot;notGroups&quot;: [ # Negate of groups. Specifies exclusions.
                      &quot;A String&quot;,
                    ],
                    &quot;notIps&quot;: [ # Negate of IPs. Specifies exclusions.
                      &quot;A String&quot;,
                    ],
                    &quot;notNamespaces&quot;: [ # Negate of namespaces. Specifies exclusions.
                      &quot;A String&quot;,
                    ],
                    &quot;notUsers&quot;: [ # Negate of users. Specifies exclusions.
                      &quot;A String&quot;,
                    ],
                    &quot;properties&quot;: { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: &quot;v1&quot;`. The properties are ANDed together.
                      &quot;a_key&quot;: &quot;A String&quot;,
                    },
                    &quot;users&quot;: [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                      &quot;A String&quot;,
                    ],
                  },
                ],
              },
            ],
          },
          &quot;clientTlsPolicy&quot;: &quot;A String&quot;, # Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service&#x27;s backends.
              # clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED.
              # If left blank, communications are not encrypted.
          &quot;clientTlsSettings&quot;: { # [Deprecated] The client side authentication settings for connection originating from the backend service. the backend service. # [Deprecated] TLS Settings for the backend service.
            &quot;clientTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain client-side security certificates and identity information. This field is only applicable when mode is set to MUTUAL.
              &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
                &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
                &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
                  &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                    &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                      &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                          # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                          # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                      &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                        &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                        &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                      },
                    },
                    &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                      &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                        &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                        &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                      },
                      &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
                    },
                    &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
                  },
                },
              },
              &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
                &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
                &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
                  &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                    &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                      &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                          # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                          # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                      &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                        &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                        &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                      },
                    },
                    &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                      &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                        &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                        &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                      },
                      &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
                    },
                    &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
                  },
                },
                &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
              },
            },
            &quot;mode&quot;: &quot;A String&quot;, # Indicates whether connections to this port should be secured using TLS. The value of this field determines how TLS is enforced. This can be set to one of the following values: DISABLE: Do not setup a TLS connection to the backends. SIMPLE: Originate a TLS connection to the backends. MUTUAL: Secure connections to the backends using mutual TLS by presenting client certificates for authentication.
            &quot;sni&quot;: &quot;A String&quot;, # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
            &quot;subjectAltNames&quot;: [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate&#x27;s subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
              &quot;A String&quot;,
            ],
          },
          &quot;subjectAltNames&quot;: [ # Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate&#x27;s subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service.
              # Note that the contents of the server certificate&#x27;s subjectAltName field are configured by the Public Key Infrastructure which provisions server identities.
              # Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode).
            &quot;A String&quot;,
          ],
        },
        &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
        &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
        &quot;sessionAffinity&quot;: &quot;A String&quot;, # Type of session affinity to use. The default is NONE. Session affinity is not applicable if the --protocol is UDP.
            #
            # When the loadBalancingScheme is EXTERNAL, possible values are NONE, CLIENT_IP, or GENERATED_COOKIE. You can use GENERATED_COOKIE if the protocol is HTTP or HTTPS.
            #
            # When the loadBalancingScheme is INTERNAL, possible values are NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
            #
            # When the loadBalancingScheme is INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, possible values are NONE, CLIENT_IP, GENERATED_COOKIE, HEADER_FIELD, or HTTP_COOKIE.
        &quot;timeoutSec&quot;: 42, # 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.
      },
    ],
    &quot;kind&quot;: &quot;compute#backendServiceList&quot;, # [Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource.
    &quot;warning&quot;: { # [Output Only] Informational warning message.
      &quot;code&quot;: &quot;A String&quot;, # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
      &quot;data&quot;: [ # [Output Only] Metadata about this warning in key: value format. For example:
          # &quot;data&quot;: [ { &quot;key&quot;: &quot;scope&quot;, &quot;value&quot;: &quot;zones/us-east1-d&quot; }
        {
          &quot;key&quot;: &quot;A String&quot;, # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
          &quot;value&quot;: &quot;A String&quot;, # [Output Only] A warning data value corresponding to the key.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # [Output Only] A human-readable description of the warning code.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(project, region, backendService, body=None, requestId=None)</code>
  <pre>Updates the specified regional BackendService resource with the data included in the request. For more information, see  Understanding backend services This method supports PATCH semantics and uses the JSON merge patch format and processing rules.

Args:
  project: string, Project ID for this request. (required)
  region: string, Name of the region scoping this request. (required)
  backendService: string, Name of the BackendService resource to patch. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a Backend Service resource.
    # 
    # A backend service defines how Google Cloud load balancers distribute traffic. The backend service configuration contains a set of values, such as the protocol used to connect to backends, various distribution and session settings, health checks, and timeouts. These settings provide fine-grained control over how your load balancer behaves. Most of the settings have default values that allow for easy configuration if you need to get started quickly.
    # 
    # Backend services in Google Compute Engine can be either regionally or globally scoped.
    # 
    # * [Global](/compute/docs/reference/rest/{$api_version}/backendServices) * [Regional](/compute/docs/reference/rest/{$api_version}/regionBackendServices)
    # 
    # For more information, see Backend Services.
    # 
    # (== resource_for {$api_version}.backendService ==)
  &quot;affinityCookieTtlSec&quot;: 42, # 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).
  &quot;backends&quot;: [ # The list of backends that serve this BackendService.
    { # Message containing information of one individual backend.
      &quot;balancingMode&quot;: &quot;A String&quot;, # Specifies the balancing mode for the backend.
          #
          # When choosing a balancing mode, you need to consider the loadBalancingScheme, and protocol for the backend service, as well as the type of backend (instance group or NEG).
          #
          #
          # - If the load balancing mode is CONNECTION, then the load is spread based on how many concurrent connections the backend can handle.
          # You can use the CONNECTION balancing mode if the protocol for the backend service is SSL, TCP, or UDP.
          #
          # If the loadBalancingScheme for the backend service is EXTERNAL (SSL Proxy and TCP Proxy load balancers), you must also specify exactly one of the following parameters: maxConnections (except for regional managed instance groups), maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
          #
          # If the loadBalancingScheme for the backend service is INTERNAL (internal TCP/UDP load balancers), you cannot specify any additional parameters.
          #
          # - If the load balancing mode is RATE, the load is spread based on the rate of HTTP requests per second (RPS).
          # You can use the RATE balancing mode if the protocol for the backend service is HTTP or HTTPS. You must specify exactly one of the following parameters: maxRate (except for regional managed instance groups), maxRatePerInstance, or maxRatePerEndpoint.
          #
          # - If the load balancing mode is UTILIZATION, the load is spread based on the backend utilization of instances in an instance group.
          # You can use the UTILIZATION balancing mode if the loadBalancingScheme of the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED and the backends are instance groups. There are no restrictions on the backend service protocol.
      &quot;capacityScaler&quot;: 3.14, # A multiplier applied to the group&#x27;s maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. Valid range is 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service.
          #
          # This cannot be used for internal load balancing.
      &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
      &quot;failover&quot;: True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
      &quot;group&quot;: &quot;A String&quot;, # The fully-qualified URL of an instance group or network endpoint group (NEG) resource. The type of backend that a backend service supports depends on the backend service&#x27;s loadBalancingScheme.
          #
          #
          # - When the loadBalancingScheme for the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, the backend can be either an instance group or a NEG. The backends on the backend service must be either all instance groups or all NEGs. You cannot mix instance group and NEG backends on the same backend service.
          #
          #
          # - When the loadBalancingScheme for the backend service is INTERNAL, the backend must be an instance group in the same region as the backend service. NEGs are not supported.
          #
          # You must use the fully-qualified URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported.
      &quot;maxConnections&quot;: 42, # Defines a target maximum number of simultaneous connections that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. If the loadBalancingScheme is INTERNAL, then maxConnections is not supported, even though the backend requires a balancing mode of CONNECTION.
      &quot;maxConnectionsPerEndpoint&quot;: 42, # Defines a target maximum number of simultaneous connections for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a maximum number of target maximum simultaneous connections for the NEG. If the backend&#x27;s balancingMode is CONNECTION, and the backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerInstance.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerEndpoint even though its backends require a balancing mode of CONNECTION.
      &quot;maxConnectionsPerInstance&quot;: 42, # Defines a target maximum number of simultaneous connections for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum number of simultaneous connections for the whole instance group. If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerInstance even though its backends require a balancing mode of CONNECTION.
      &quot;maxRate&quot;: 42, # Defines a maximum number of HTTP requests per second (RPS) that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). Must not be defined if the backend is a managed instance group that uses autoscaling based on load balancing.
          #
          # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify maxRate, maxRatePerInstance, or maxRatePerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxRatePerEndpoint&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a target maximum rate for the NEG.
          #
          # If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerInstance.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxRatePerInstance&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum rate for the whole instance group.
          #
          # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxUtilization&quot;: 3.14, # Defines the maximum average backend utilization of a backend VM in an instance group. The valid range is [0.0, 1.0]. This is an optional parameter if the backend&#x27;s balancingMode is UTILIZATION.
          #
          # This parameter can be used in conjunction with maxRate, maxRatePerInstance, maxConnections (except for regional managed instance groups), or maxConnectionsPerInstance.
    },
  ],
  &quot;cdnPolicy&quot;: { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
    &quot;cacheKeyPolicy&quot;: { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
      &quot;includeHost&quot;: True or False, # If true, requests to different hosts will be cached separately.
      &quot;includeProtocol&quot;: True or False, # If true, http and https requests will be cached separately.
      &quot;includeQueryString&quot;: True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
      &quot;queryStringBlacklist&quot;: [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
        &quot;A String&quot;,
      ],
      &quot;queryStringWhitelist&quot;: [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
        &quot;A String&quot;,
      ],
    },
    &quot;signedUrlCacheMaxAgeSec&quot;: &quot;A String&quot;, # Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a &quot;Cache-Control: public, max-age=[TTL]&quot; header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
    &quot;signedUrlKeyNames&quot;: [ # [Output Only] Names of the keys for signing request URLs.
      &quot;A String&quot;,
    ],
  },
  &quot;circuitBreakers&quot;: { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
    &quot;connectTimeout&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The timeout for new network connections to hosts.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;maxConnections&quot;: 42, # The maximum number of connections to the backend service. If not specified, there is no limit.
    &quot;maxPendingRequests&quot;: 42, # The maximum number of pending requests allowed to the backend service. If not specified, there is no limit.
    &quot;maxRequests&quot;: 42, # The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit.
    &quot;maxRequestsPerConnection&quot;: 42, # Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive.
    &quot;maxRetries&quot;: 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1.
  },
  &quot;connectionDraining&quot;: { # Message containing connection draining configuration.
    &quot;drainingTimeoutSec&quot;: 42, # The amount of time in seconds to allow existing connections to persist while on unhealthy backend VMs. Only applicable if the protocol is not UDP. The valid range is [0, 3600].
  },
  &quot;consistentHash&quot;: { # This message defines settings for a consistent hash style load balancer. # 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.
    &quot;httpCookie&quot;: { # The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash. # Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE.
      &quot;name&quot;: &quot;A String&quot;, # Name of the cookie.
      &quot;path&quot;: &quot;A String&quot;, # Path to set for the cookie.
      &quot;ttl&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Lifetime of the cookie.
        &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
        &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
      },
    },
    &quot;httpHeaderName&quot;: &quot;A String&quot;, # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
    &quot;minimumRingSize&quot;: &quot;A String&quot;, # The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node.
  },
  &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Output Only] Creation timestamp in RFC3339 text format.
  &quot;customRequestHeaders&quot;: [ # Headers that the HTTP/S load balancer should add to proxied requests.
    &quot;A String&quot;,
  ],
  &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
  &quot;enableCDN&quot;: True or False, # If true, enables Cloud CDN for the backend service. Only applicable if the loadBalancingScheme is EXTERNAL and the protocol is HTTP or HTTPS.
  &quot;failoverPolicy&quot;: { # Applicable only to Failover for Internal TCP/UDP Load Balancing. On failover or failback, this field indicates whether connection draining will be honored. GCP has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes). # Applicable only to Failover for Internal TCP/UDP Load Balancing. Requires at least one backend instance group to be defined as a backup (failover) backend.
    &quot;disableConnectionDrainOnFailover&quot;: True or False, # This can be set to true only if the protocol is TCP.
        #
        # The default is false.
    &quot;dropTrafficIfUnhealthy&quot;: True or False, # Applicable only to Failover for Internal TCP/UDP Load Balancing. If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy. If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy.
        #
        # The default is false.
    &quot;failoverRatio&quot;: 3.14, # Applicable only to Failover for Internal TCP/UDP Load Balancing. The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio.
  },
  &quot;fingerprint&quot;: &quot;A String&quot;, # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet.
      # 
      # To see the latest fingerprint, make a get() request to retrieve a BackendService.
  &quot;healthChecks&quot;: [ # 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. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet NEG backends must not have a health check. A health check must
    &quot;A String&quot;,
  ],
  &quot;iap&quot;: { # Identity-Aware Proxy # The configurations for Identity-Aware Proxy on this resource.
    &quot;enabled&quot;: True or False, # Whether the serving infrastructure will authenticate and authorize all incoming requests. If true, the oauth2ClientId and oauth2ClientSecret fields must be non-empty.
    &quot;oauth2ClientId&quot;: &quot;A String&quot;, # OAuth2 client ID to use for the authentication flow.
    &quot;oauth2ClientInfo&quot;: { # [Input Only] OAuth client info required to generate client id to be used for IAP.
      &quot;applicationName&quot;: &quot;A String&quot;, # Application name to be used in OAuth consent screen.
      &quot;clientName&quot;: &quot;A String&quot;, # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
      &quot;developerEmailAddress&quot;: &quot;A String&quot;, # Developer&#x27;s information to be used in OAuth consent screen.
    },
    &quot;oauth2ClientSecret&quot;: &quot;A String&quot;, # OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field.
    &quot;oauth2ClientSecretSha256&quot;: &quot;A String&quot;, # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
  },
  &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
  &quot;kind&quot;: &quot;compute#backendService&quot;, # [Output Only] Type of resource. Always compute#backendService for backend services.
  &quot;loadBalancingScheme&quot;: &quot;A String&quot;, # Specifies the load balancer type. Choose EXTERNAL for load balancers that receive traffic from external clients. Choose INTERNAL for Internal TCP/UDP Load Balancing. Choose INTERNAL_MANAGED for Internal HTTP(S) Load Balancing. Choose INTERNAL_SELF_MANAGED for Traffic Director. A backend service created for one type of load balancing cannot be used with another. For more information, refer to Choosing a load balancer.
  &quot;localityLbPolicy&quot;: &quot;A String&quot;, # 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.
      # - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.
      # - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824
      # 
      # 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.
      # 
      # If sessionAffinity is not NONE, and this field is not set to &gt;MAGLEV or RING_HASH, session affinity settings will not take effect.
  &quot;logConfig&quot;: { # The available logging options for the load balancer traffic served by this backend service. # 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.
    &quot;enable&quot;: True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
    &quot;sampleRate&quot;: 3.14, # This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0.
  },
  &quot;name&quot;: &quot;A String&quot;, # 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.
  &quot;network&quot;: &quot;A String&quot;, # The URL of the network to which this backend service belongs. This field can only be spcified when the load balancing scheme is set to INTERNAL.
  &quot;outlierDetection&quot;: { # Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service. # 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.
    &quot;baseEjectionTime&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The base time that a host is ejected for. The real ejection time is equal to the base ejection time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;consecutiveErrors&quot;: 42, # Number of errors before a host is ejected from the connection pool. When the backend host is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5.
    &quot;consecutiveGatewayFailure&quot;: 42, # The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3.
    &quot;enforcingConsecutiveErrors&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0.
    &quot;enforcingConsecutiveGatewayFailure&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
    &quot;enforcingSuccessRate&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
    &quot;interval&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Time interval between ejection analysis sweeps. This can result in both new ejections as well as hosts being returned to service. Defaults to 1 second.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;maxEjectionPercent&quot;: 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 50%.
    &quot;successRateMinimumHosts&quot;: 42, # The number of hosts in a cluster that must have enough request volume to detect success rate outliers. If the number of hosts is less than this setting, outlier detection via success rate statistics is not performed for any host in the cluster. Defaults to 5.
    &quot;successRateRequestVolume&quot;: 42, # The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this host in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that host. Defaults to 100.
    &quot;successRateStdevFactor&quot;: 42, # This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900.
  },
  &quot;port&quot;: 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
      # 
      # This cannot be used if the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
  &quot;portName&quot;: &quot;A String&quot;, # A named port on a backend instance group representing the port for communication to the backend VMs in that group. Required when the loadBalancingScheme is EXTERNAL, INTERNAL_MANAGED, or INTERNAL_SELF_MANAGED and the backends are instance groups. The named port must be defined on each backend instance group. This parameter has no meaning if the backends are NEGs.
      # 
      # 
      # 
      # Must be omitted when the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
  &quot;protocol&quot;: &quot;A String&quot;, # The protocol this BackendService uses to communicate with backends.
      # 
      # Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, or UDP. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancer or for Traffic Director for more information.
  &quot;region&quot;: &quot;A String&quot;, # [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.
  &quot;securityPolicy&quot;: &quot;A String&quot;, # [Output Only] The resource URL for the security policy associated with this backend service.
  &quot;securitySettings&quot;: { # The authentication and authorization settings for a BackendService. # This field specifies the security policy that applies to this backend service. 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.
    &quot;authentication&quot;: &quot;A String&quot;, # [Deprecated] Use clientTlsPolicy instead.
    &quot;authenticationPolicy&quot;: { # [Deprecated] The authentication settings for the backend service. The authentication settings for the backend service. # [Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal.
      &quot;origins&quot;: [ # List of authentication methods that can be used for origin authentication. Similar to peers, these will be evaluated in order the first valid one will be used to set origin identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if origin authentication is not required.
        { # [Deprecated] Configuration for the origin authentication method. Configuration for the origin authentication method.
          &quot;jwt&quot;: { # [Deprecated] JWT configuration for origin authentication. JWT configuration for origin authentication.
            &quot;audiences&quot;: [ # A JWT containing any of these audiences will be accepted. The service name will be accepted if audiences is empty. Examples: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com
              &quot;A String&quot;,
            ],
            &quot;issuer&quot;: &quot;A String&quot;, # Identifies the issuer that issued the JWT, which is usually a URL or an email address. Examples: https://securetoken.google.com, 1234567-compute@developer.gserviceaccount.com
            &quot;jwksPublicKeys&quot;: &quot;A String&quot;, # The provider&#x27;s public key set to validate the signature of the JWT.
            &quot;jwtHeaders&quot;: [ # jwt_headers and jwt_params define where to extract the JWT from an HTTP request. If no explicit location is specified, the following default locations are tried in order:
                #
                # 1. The Authorization header using the Bearer schema. See `here `_. Example:
                #
                # Authorization: Bearer .
                #
                # 2. `access_token` query parameter. See `this `_
                #
                # Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations its issuer specified or from the default locations.
                #
                # This field is set if JWT is sent in a request header. This field specifies the header name. For example, if `header=x-goog-iap-jwt-assertion`, the header format will be x-goog-iap-jwt-assertion: .
              { # [Deprecated] This message specifies a header location to extract JWT token. This message specifies a header location to extract JWT token.
                &quot;name&quot;: &quot;A String&quot;, # The HTTP header name.
                &quot;valuePrefix&quot;: &quot;A String&quot;, # The value prefix. The value format is &quot;value_prefix&quot; For example, for &quot;Authorization: Bearer &quot;, value_prefix=&quot;Bearer &quot; with a space at the end.
              },
            ],
            &quot;jwtParams&quot;: [ # This field is set if JWT is sent in a query parameter. This field specifies the query parameter name. For example, if jwt_params[0] is jwt_token, the JWT format in the query parameter is /path?jwt_token=.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;peers&quot;: [ # List of authentication methods that can be used for peer authentication. They will be evaluated in order the first valid one will be used to set peer identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if peer authentication is not required.
        { # [Deprecated] Configuration for the peer authentication method. Configuration for the peer authentication method.
          &quot;mtls&quot;: { # [Deprecated] Configuration for the mutual Tls mode for peer authentication. Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
            &quot;mode&quot;: &quot;A String&quot;, # Specifies if the server TLS is configured to be strict or permissive. This field can be set to one of the following: STRICT: Client certificate must be presented, connection is in TLS. PERMISSIVE: Client certificate can be omitted, connection can be either plaintext or TLS.
          },
        },
      ],
      &quot;principalBinding&quot;: &quot;A String&quot;, # Define whether peer or origin identity should be used for principal. Default value is USE_PEER. If peer (or origin) identity is not available, either because peer/origin authentication is not defined, or failed, principal will be left unset. In other words, binding rule does not affect the decision to accept or reject request. This field can be set to one of the following: USE_PEER: Principal will be set to the identity from peer authentication. USE_ORIGIN: Principal will be set to the identity from origin authentication.
      &quot;serverTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
        &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
          &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
            &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
            &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
          },
          &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
        },
        &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
          &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
          &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
        },
      },
    },
    &quot;authorizationConfig&quot;: { # [Deprecated] Authorization configuration provides service-level and method-level access control for a service. control for a service. # [Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config.
      &quot;policies&quot;: [ # List of RbacPolicies.
        {
          &quot;name&quot;: &quot;A String&quot;, # Name of the RbacPolicy.
          &quot;permissions&quot;: [ # The list of permissions.
            { # [Deprecated] All fields defined in a permission are ANDed.
              &quot;constraints&quot;: [ # Extra custom constraints. The constraints are ANDed together.
                { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                  &quot;key&quot;: &quot;A String&quot;, # Key of the constraint.
                  &quot;values&quot;: [ # A list of allowed values.
                    &quot;A String&quot;,
                  ],
                },
              ],
              &quot;hosts&quot;: [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;methods&quot;: [ # HTTP method.
                &quot;A String&quot;,
              ],
              &quot;notHosts&quot;: [ # Negate of hosts. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notMethods&quot;: [ # Negate of methods. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notPaths&quot;: [ # Negate of paths. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notPorts&quot;: [ # Negate of ports. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;paths&quot;: [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;ports&quot;: [ # Port names or numbers.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;principals&quot;: [ # The list of principals.
            { # [Deprecated] All fields defined in a principal are ANDed.
              &quot;condition&quot;: &quot;A String&quot;, # An expression to specify custom condition.
              &quot;groups&quot;: [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;ips&quot;: [ # IPv4 or IPv6 address or range (In CIDR format)
                &quot;A String&quot;,
              ],
              &quot;namespaces&quot;: [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;notGroups&quot;: [ # Negate of groups. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notIps&quot;: [ # Negate of IPs. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notNamespaces&quot;: [ # Negate of namespaces. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notUsers&quot;: [ # Negate of users. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;properties&quot;: { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: &quot;v1&quot;`. The properties are ANDed together.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;users&quot;: [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
            },
          ],
        },
      ],
    },
    &quot;clientTlsPolicy&quot;: &quot;A String&quot;, # Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service&#x27;s backends.
        # clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED.
        # If left blank, communications are not encrypted.
    &quot;clientTlsSettings&quot;: { # [Deprecated] The client side authentication settings for connection originating from the backend service. the backend service. # [Deprecated] TLS Settings for the backend service.
      &quot;clientTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain client-side security certificates and identity information. This field is only applicable when mode is set to MUTUAL.
        &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
          &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
            &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
            &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
          },
          &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
        },
        &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
          &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
          &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
        },
      },
      &quot;mode&quot;: &quot;A String&quot;, # Indicates whether connections to this port should be secured using TLS. The value of this field determines how TLS is enforced. This can be set to one of the following values: DISABLE: Do not setup a TLS connection to the backends. SIMPLE: Originate a TLS connection to the backends. MUTUAL: Secure connections to the backends using mutual TLS by presenting client certificates for authentication.
      &quot;sni&quot;: &quot;A String&quot;, # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
      &quot;subjectAltNames&quot;: [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate&#x27;s subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
        &quot;A String&quot;,
      ],
    },
    &quot;subjectAltNames&quot;: [ # Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate&#x27;s subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service.
        # Note that the contents of the server certificate&#x27;s subjectAltName field are configured by the Public Key Infrastructure which provisions server identities.
        # Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode).
      &quot;A String&quot;,
    ],
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
  &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
  &quot;sessionAffinity&quot;: &quot;A String&quot;, # Type of session affinity to use. The default is NONE. Session affinity is not applicable if the --protocol is UDP.
      # 
      # When the loadBalancingScheme is EXTERNAL, possible values are NONE, CLIENT_IP, or GENERATED_COOKIE. You can use GENERATED_COOKIE if the protocol is HTTP or HTTPS.
      # 
      # When the loadBalancingScheme is INTERNAL, possible values are NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
      # 
      # When the loadBalancingScheme is INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, possible values are NONE, CLIENT_IP, GENERATED_COOKIE, HEADER_FIELD, or HTTP_COOKIE.
  &quot;timeoutSec&quot;: 42, # 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.
}

  requestId: string, An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.

For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.

The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).

Returns:
  An object of the form:

    { # Represents an Operation resource.
      #
      # Google Compute Engine has three Operation resources:
      #
      # * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations)
      #
      # You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses.
      #
      # Operations can be global, regional or zonal.
      # - For global operations, use the `globalOperations` resource.
      # - For regional operations, use the `regionOperations` resource.
      # - For zonal operations, use the `zonalOperations` resource.
      #
      # For more information, read  Global, Regional, and Zonal Resources. (== resource_for {$api_version}.globalOperations ==) (== resource_for {$api_version}.regionOperations ==) (== resource_for {$api_version}.zoneOperations ==)
    &quot;clientOperationId&quot;: &quot;A String&quot;, # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Deprecated] This field is deprecated.
    &quot;description&quot;: &quot;A String&quot;, # [Output Only] A textual description of the operation, which is set when the operation is created.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    &quot;error&quot;: { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      &quot;errors&quot;: [ # [Output Only] The array of errors encountered while processing this operation.
        {
          &quot;code&quot;: &quot;A String&quot;, # [Output Only] The error type identifier for this error.
          &quot;location&quot;: &quot;A String&quot;, # [Output Only] Indicates the field in the request that caused the error. This property is optional.
          &quot;message&quot;: &quot;A String&quot;, # [Output Only] An optional, human-readable error message.
        },
      ],
    },
    &quot;httpErrorMessage&quot;: &quot;A String&quot;, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`.
    &quot;httpErrorStatusCode&quot;: 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found.
    &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
    &quot;insertTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    &quot;kind&quot;: &quot;compute#operation&quot;, # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
    &quot;name&quot;: &quot;A String&quot;, # [Output Only] Name of the operation.
    &quot;operationType&quot;: &quot;A String&quot;, # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
    &quot;progress&quot;: 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
    &quot;region&quot;: &quot;A String&quot;, # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
    &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
    &quot;startTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    &quot;status&quot;: &quot;A String&quot;, # [Output Only] The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`.
    &quot;statusMessage&quot;: &quot;A String&quot;, # [Output Only] An optional textual description of the current status of the operation.
    &quot;targetId&quot;: &quot;A String&quot;, # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    &quot;targetLink&quot;: &quot;A String&quot;, # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
    &quot;user&quot;: &quot;A String&quot;, # [Output Only] User who requested the operation, for example: `user@example.com`.
    &quot;warnings&quot;: [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        &quot;code&quot;: &quot;A String&quot;, # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        &quot;data&quot;: [ # [Output Only] Metadata about this warning in key: value format. For example:
            # &quot;data&quot;: [ { &quot;key&quot;: &quot;scope&quot;, &quot;value&quot;: &quot;zones/us-east1-d&quot; }
          {
            &quot;key&quot;: &quot;A String&quot;, # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
            &quot;value&quot;: &quot;A String&quot;, # [Output Only] A warning data value corresponding to the key.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # [Output Only] A human-readable description of the warning code.
      },
    ],
    &quot;zone&quot;: &quot;A String&quot;, # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
  }</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(project, region, resource, body=None)</code>
  <pre>Returns permissions that a caller has on the specified resource.

Args:
  project: string, Project ID for this request. (required)
  region: string, The name of the region for this request. (required)
  resource: string, Name or id of the resource for this request. (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;permissions&quot;: [ # The set of permissions to check for the &#x27;resource&#x27;. Permissions with wildcards (such as &#x27;*&#x27; or &#x27;storage.*&#x27;) are not allowed.
      &quot;A String&quot;,
    ],
  }


Returns:
  An object of the form:

    {
    &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
      &quot;A String&quot;,
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(project, region, backendService, body=None, requestId=None)</code>
  <pre>Updates the specified regional BackendService resource with the data included in the request. For more information, see  Backend services overview.

Args:
  project: string, Project ID for this request. (required)
  region: string, Name of the region scoping this request. (required)
  backendService: string, Name of the BackendService resource to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a Backend Service resource.
    # 
    # A backend service defines how Google Cloud load balancers distribute traffic. The backend service configuration contains a set of values, such as the protocol used to connect to backends, various distribution and session settings, health checks, and timeouts. These settings provide fine-grained control over how your load balancer behaves. Most of the settings have default values that allow for easy configuration if you need to get started quickly.
    # 
    # Backend services in Google Compute Engine can be either regionally or globally scoped.
    # 
    # * [Global](/compute/docs/reference/rest/{$api_version}/backendServices) * [Regional](/compute/docs/reference/rest/{$api_version}/regionBackendServices)
    # 
    # For more information, see Backend Services.
    # 
    # (== resource_for {$api_version}.backendService ==)
  &quot;affinityCookieTtlSec&quot;: 42, # 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).
  &quot;backends&quot;: [ # The list of backends that serve this BackendService.
    { # Message containing information of one individual backend.
      &quot;balancingMode&quot;: &quot;A String&quot;, # Specifies the balancing mode for the backend.
          #
          # When choosing a balancing mode, you need to consider the loadBalancingScheme, and protocol for the backend service, as well as the type of backend (instance group or NEG).
          #
          #
          # - If the load balancing mode is CONNECTION, then the load is spread based on how many concurrent connections the backend can handle.
          # You can use the CONNECTION balancing mode if the protocol for the backend service is SSL, TCP, or UDP.
          #
          # If the loadBalancingScheme for the backend service is EXTERNAL (SSL Proxy and TCP Proxy load balancers), you must also specify exactly one of the following parameters: maxConnections (except for regional managed instance groups), maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
          #
          # If the loadBalancingScheme for the backend service is INTERNAL (internal TCP/UDP load balancers), you cannot specify any additional parameters.
          #
          # - If the load balancing mode is RATE, the load is spread based on the rate of HTTP requests per second (RPS).
          # You can use the RATE balancing mode if the protocol for the backend service is HTTP or HTTPS. You must specify exactly one of the following parameters: maxRate (except for regional managed instance groups), maxRatePerInstance, or maxRatePerEndpoint.
          #
          # - If the load balancing mode is UTILIZATION, the load is spread based on the backend utilization of instances in an instance group.
          # You can use the UTILIZATION balancing mode if the loadBalancingScheme of the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED and the backends are instance groups. There are no restrictions on the backend service protocol.
      &quot;capacityScaler&quot;: 3.14, # A multiplier applied to the group&#x27;s maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. Valid range is 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service.
          #
          # This cannot be used for internal load balancing.
      &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
      &quot;failover&quot;: True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
      &quot;group&quot;: &quot;A String&quot;, # The fully-qualified URL of an instance group or network endpoint group (NEG) resource. The type of backend that a backend service supports depends on the backend service&#x27;s loadBalancingScheme.
          #
          #
          # - When the loadBalancingScheme for the backend service is EXTERNAL, INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, the backend can be either an instance group or a NEG. The backends on the backend service must be either all instance groups or all NEGs. You cannot mix instance group and NEG backends on the same backend service.
          #
          #
          # - When the loadBalancingScheme for the backend service is INTERNAL, the backend must be an instance group in the same region as the backend service. NEGs are not supported.
          #
          # You must use the fully-qualified URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported.
      &quot;maxConnections&quot;: 42, # Defines a target maximum number of simultaneous connections that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnectionsPerInstance, or maxConnectionsPerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. If the loadBalancingScheme is INTERNAL, then maxConnections is not supported, even though the backend requires a balancing mode of CONNECTION.
      &quot;maxConnectionsPerEndpoint&quot;: 42, # Defines a target maximum number of simultaneous connections for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a maximum number of target maximum simultaneous connections for the NEG. If the backend&#x27;s balancingMode is CONNECTION, and the backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerInstance.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerEndpoint even though its backends require a balancing mode of CONNECTION.
      &quot;maxConnectionsPerInstance&quot;: 42, # Defines a target maximum number of simultaneous connections for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum number of simultaneous connections for the whole instance group. If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is CONNECTION, and backend is attached to a backend service whose loadBalancingScheme is EXTERNAL, you must specify either this parameter, maxConnections, or maxConnectionsPerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is RATE. Internal TCP/UDP load balancing does not support setting maxConnectionsPerInstance even though its backends require a balancing mode of CONNECTION.
      &quot;maxRate&quot;: 42, # Defines a maximum number of HTTP requests per second (RPS) that the backend can handle. Valid for network endpoint group and instance group backends (except for regional managed instance groups). Must not be defined if the backend is a managed instance group that uses autoscaling based on load balancing.
          #
          # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify maxRate, maxRatePerInstance, or maxRatePerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxRatePerEndpoint&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for an endpoint of a NEG. This is multiplied by the number of endpoints in the NEG to implicitly calculate a target maximum rate for the NEG.
          #
          # If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerInstance.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxRatePerInstance&quot;: 3.14, # Defines a maximum target for requests per second (RPS) for a single VM in a backend instance group. This is multiplied by the number of instances in the instance group to implicitly calculate a target maximum rate for the whole instance group.
          #
          # If the backend&#x27;s balancingMode is UTILIZATION, this is an optional parameter. If the backend&#x27;s balancingMode is RATE, you must specify either this parameter, maxRate (except for regional managed instance groups), or maxRatePerEndpoint.
          #
          # Not available if the backend&#x27;s balancingMode is CONNECTION.
      &quot;maxUtilization&quot;: 3.14, # Defines the maximum average backend utilization of a backend VM in an instance group. The valid range is [0.0, 1.0]. This is an optional parameter if the backend&#x27;s balancingMode is UTILIZATION.
          #
          # This parameter can be used in conjunction with maxRate, maxRatePerInstance, maxConnections (except for regional managed instance groups), or maxConnectionsPerInstance.
    },
  ],
  &quot;cdnPolicy&quot;: { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
    &quot;cacheKeyPolicy&quot;: { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
      &quot;includeHost&quot;: True or False, # If true, requests to different hosts will be cached separately.
      &quot;includeProtocol&quot;: True or False, # If true, http and https requests will be cached separately.
      &quot;includeQueryString&quot;: True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
      &quot;queryStringBlacklist&quot;: [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
        &quot;A String&quot;,
      ],
      &quot;queryStringWhitelist&quot;: [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. &#x27;&amp;&#x27; and &#x27;=&#x27; will be percent encoded and not treated as delimiters.
        &quot;A String&quot;,
      ],
    },
    &quot;signedUrlCacheMaxAgeSec&quot;: &quot;A String&quot;, # Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a &quot;Cache-Control: public, max-age=[TTL]&quot; header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
    &quot;signedUrlKeyNames&quot;: [ # [Output Only] Names of the keys for signing request URLs.
      &quot;A String&quot;,
    ],
  },
  &quot;circuitBreakers&quot;: { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
    &quot;connectTimeout&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The timeout for new network connections to hosts.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;maxConnections&quot;: 42, # The maximum number of connections to the backend service. If not specified, there is no limit.
    &quot;maxPendingRequests&quot;: 42, # The maximum number of pending requests allowed to the backend service. If not specified, there is no limit.
    &quot;maxRequests&quot;: 42, # The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit.
    &quot;maxRequestsPerConnection&quot;: 42, # Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive.
    &quot;maxRetries&quot;: 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1.
  },
  &quot;connectionDraining&quot;: { # Message containing connection draining configuration.
    &quot;drainingTimeoutSec&quot;: 42, # The amount of time in seconds to allow existing connections to persist while on unhealthy backend VMs. Only applicable if the protocol is not UDP. The valid range is [0, 3600].
  },
  &quot;consistentHash&quot;: { # This message defines settings for a consistent hash style load balancer. # 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.
    &quot;httpCookie&quot;: { # The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash. # Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE.
      &quot;name&quot;: &quot;A String&quot;, # Name of the cookie.
      &quot;path&quot;: &quot;A String&quot;, # Path to set for the cookie.
      &quot;ttl&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Lifetime of the cookie.
        &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
        &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
      },
    },
    &quot;httpHeaderName&quot;: &quot;A String&quot;, # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
    &quot;minimumRingSize&quot;: &quot;A String&quot;, # The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node.
  },
  &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Output Only] Creation timestamp in RFC3339 text format.
  &quot;customRequestHeaders&quot;: [ # Headers that the HTTP/S load balancer should add to proxied requests.
    &quot;A String&quot;,
  ],
  &quot;description&quot;: &quot;A String&quot;, # An optional description of this resource. Provide this property when you create the resource.
  &quot;enableCDN&quot;: True or False, # If true, enables Cloud CDN for the backend service. Only applicable if the loadBalancingScheme is EXTERNAL and the protocol is HTTP or HTTPS.
  &quot;failoverPolicy&quot;: { # Applicable only to Failover for Internal TCP/UDP Load Balancing. On failover or failback, this field indicates whether connection draining will be honored. GCP has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes). # Applicable only to Failover for Internal TCP/UDP Load Balancing. Requires at least one backend instance group to be defined as a backup (failover) backend.
    &quot;disableConnectionDrainOnFailover&quot;: True or False, # This can be set to true only if the protocol is TCP.
        #
        # The default is false.
    &quot;dropTrafficIfUnhealthy&quot;: True or False, # Applicable only to Failover for Internal TCP/UDP Load Balancing. If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy. If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy.
        #
        # The default is false.
    &quot;failoverRatio&quot;: 3.14, # Applicable only to Failover for Internal TCP/UDP Load Balancing. The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio.
  },
  &quot;fingerprint&quot;: &quot;A String&quot;, # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet.
      # 
      # To see the latest fingerprint, make a get() request to retrieve a BackendService.
  &quot;healthChecks&quot;: [ # 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. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet NEG backends must not have a health check. A health check must
    &quot;A String&quot;,
  ],
  &quot;iap&quot;: { # Identity-Aware Proxy # The configurations for Identity-Aware Proxy on this resource.
    &quot;enabled&quot;: True or False, # Whether the serving infrastructure will authenticate and authorize all incoming requests. If true, the oauth2ClientId and oauth2ClientSecret fields must be non-empty.
    &quot;oauth2ClientId&quot;: &quot;A String&quot;, # OAuth2 client ID to use for the authentication flow.
    &quot;oauth2ClientInfo&quot;: { # [Input Only] OAuth client info required to generate client id to be used for IAP.
      &quot;applicationName&quot;: &quot;A String&quot;, # Application name to be used in OAuth consent screen.
      &quot;clientName&quot;: &quot;A String&quot;, # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
      &quot;developerEmailAddress&quot;: &quot;A String&quot;, # Developer&#x27;s information to be used in OAuth consent screen.
    },
    &quot;oauth2ClientSecret&quot;: &quot;A String&quot;, # OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field.
    &quot;oauth2ClientSecretSha256&quot;: &quot;A String&quot;, # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
  },
  &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
  &quot;kind&quot;: &quot;compute#backendService&quot;, # [Output Only] Type of resource. Always compute#backendService for backend services.
  &quot;loadBalancingScheme&quot;: &quot;A String&quot;, # Specifies the load balancer type. Choose EXTERNAL for load balancers that receive traffic from external clients. Choose INTERNAL for Internal TCP/UDP Load Balancing. Choose INTERNAL_MANAGED for Internal HTTP(S) Load Balancing. Choose INTERNAL_SELF_MANAGED for Traffic Director. A backend service created for one type of load balancing cannot be used with another. For more information, refer to Choosing a load balancer.
  &quot;localityLbPolicy&quot;: &quot;A String&quot;, # 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.
      # - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.
      # - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824
      # 
      # 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.
      # 
      # If sessionAffinity is not NONE, and this field is not set to &gt;MAGLEV or RING_HASH, session affinity settings will not take effect.
  &quot;logConfig&quot;: { # The available logging options for the load balancer traffic served by this backend service. # 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.
    &quot;enable&quot;: True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
    &quot;sampleRate&quot;: 3.14, # This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0.
  },
  &quot;name&quot;: &quot;A String&quot;, # 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.
  &quot;network&quot;: &quot;A String&quot;, # The URL of the network to which this backend service belongs. This field can only be spcified when the load balancing scheme is set to INTERNAL.
  &quot;outlierDetection&quot;: { # Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service. # 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.
    &quot;baseEjectionTime&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # The base time that a host is ejected for. The real ejection time is equal to the base ejection time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;consecutiveErrors&quot;: 42, # Number of errors before a host is ejected from the connection pool. When the backend host is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5.
    &quot;consecutiveGatewayFailure&quot;: 42, # The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3.
    &quot;enforcingConsecutiveErrors&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0.
    &quot;enforcingConsecutiveGatewayFailure&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
    &quot;enforcingSuccessRate&quot;: 42, # The percentage chance that a host will be actually ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
    &quot;interval&quot;: { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like &quot;day&quot; or &quot;month&quot;. Range is approximately 10,000 years. # Time interval between ejection analysis sweeps. This can result in both new ejections as well as hosts being returned to service. Defaults to 1 second.
      &quot;nanos&quot;: 42, # Span of time that&#x27;s a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
      &quot;seconds&quot;: &quot;A String&quot;, # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
    },
    &quot;maxEjectionPercent&quot;: 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 50%.
    &quot;successRateMinimumHosts&quot;: 42, # The number of hosts in a cluster that must have enough request volume to detect success rate outliers. If the number of hosts is less than this setting, outlier detection via success rate statistics is not performed for any host in the cluster. Defaults to 5.
    &quot;successRateRequestVolume&quot;: 42, # The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this host in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that host. Defaults to 100.
    &quot;successRateStdevFactor&quot;: 42, # This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900.
  },
  &quot;port&quot;: 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
      # 
      # This cannot be used if the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
  &quot;portName&quot;: &quot;A String&quot;, # A named port on a backend instance group representing the port for communication to the backend VMs in that group. Required when the loadBalancingScheme is EXTERNAL, INTERNAL_MANAGED, or INTERNAL_SELF_MANAGED and the backends are instance groups. The named port must be defined on each backend instance group. This parameter has no meaning if the backends are NEGs.
      # 
      # 
      # 
      # Must be omitted when the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).
  &quot;protocol&quot;: &quot;A String&quot;, # The protocol this BackendService uses to communicate with backends.
      # 
      # Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, or UDP. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancer or for Traffic Director for more information.
  &quot;region&quot;: &quot;A String&quot;, # [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.
  &quot;securityPolicy&quot;: &quot;A String&quot;, # [Output Only] The resource URL for the security policy associated with this backend service.
  &quot;securitySettings&quot;: { # The authentication and authorization settings for a BackendService. # This field specifies the security policy that applies to this backend service. 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.
    &quot;authentication&quot;: &quot;A String&quot;, # [Deprecated] Use clientTlsPolicy instead.
    &quot;authenticationPolicy&quot;: { # [Deprecated] The authentication settings for the backend service. The authentication settings for the backend service. # [Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal.
      &quot;origins&quot;: [ # List of authentication methods that can be used for origin authentication. Similar to peers, these will be evaluated in order the first valid one will be used to set origin identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if origin authentication is not required.
        { # [Deprecated] Configuration for the origin authentication method. Configuration for the origin authentication method.
          &quot;jwt&quot;: { # [Deprecated] JWT configuration for origin authentication. JWT configuration for origin authentication.
            &quot;audiences&quot;: [ # A JWT containing any of these audiences will be accepted. The service name will be accepted if audiences is empty. Examples: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com
              &quot;A String&quot;,
            ],
            &quot;issuer&quot;: &quot;A String&quot;, # Identifies the issuer that issued the JWT, which is usually a URL or an email address. Examples: https://securetoken.google.com, 1234567-compute@developer.gserviceaccount.com
            &quot;jwksPublicKeys&quot;: &quot;A String&quot;, # The provider&#x27;s public key set to validate the signature of the JWT.
            &quot;jwtHeaders&quot;: [ # jwt_headers and jwt_params define where to extract the JWT from an HTTP request. If no explicit location is specified, the following default locations are tried in order:
                #
                # 1. The Authorization header using the Bearer schema. See `here `_. Example:
                #
                # Authorization: Bearer .
                #
                # 2. `access_token` query parameter. See `this `_
                #
                # Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations its issuer specified or from the default locations.
                #
                # This field is set if JWT is sent in a request header. This field specifies the header name. For example, if `header=x-goog-iap-jwt-assertion`, the header format will be x-goog-iap-jwt-assertion: .
              { # [Deprecated] This message specifies a header location to extract JWT token. This message specifies a header location to extract JWT token.
                &quot;name&quot;: &quot;A String&quot;, # The HTTP header name.
                &quot;valuePrefix&quot;: &quot;A String&quot;, # The value prefix. The value format is &quot;value_prefix&quot; For example, for &quot;Authorization: Bearer &quot;, value_prefix=&quot;Bearer &quot; with a space at the end.
              },
            ],
            &quot;jwtParams&quot;: [ # This field is set if JWT is sent in a query parameter. This field specifies the query parameter name. For example, if jwt_params[0] is jwt_token, the JWT format in the query parameter is /path?jwt_token=.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;peers&quot;: [ # List of authentication methods that can be used for peer authentication. They will be evaluated in order the first valid one will be used to set peer identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if peer authentication is not required.
        { # [Deprecated] Configuration for the peer authentication method. Configuration for the peer authentication method.
          &quot;mtls&quot;: { # [Deprecated] Configuration for the mutual Tls mode for peer authentication. Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
            &quot;mode&quot;: &quot;A String&quot;, # Specifies if the server TLS is configured to be strict or permissive. This field can be set to one of the following: STRICT: Client certificate must be presented, connection is in TLS. PERMISSIVE: Client certificate can be omitted, connection can be either plaintext or TLS.
          },
        },
      ],
      &quot;principalBinding&quot;: &quot;A String&quot;, # Define whether peer or origin identity should be used for principal. Default value is USE_PEER. If peer (or origin) identity is not available, either because peer/origin authentication is not defined, or failed, principal will be left unset. In other words, binding rule does not affect the decision to accept or reject request. This field can be set to one of the following: USE_PEER: Principal will be set to the identity from peer authentication. USE_ORIGIN: Principal will be set to the identity from origin authentication.
      &quot;serverTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
        &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
          &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
            &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
            &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
          },
          &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
        },
        &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
          &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
          &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
        },
      },
    },
    &quot;authorizationConfig&quot;: { # [Deprecated] Authorization configuration provides service-level and method-level access control for a service. control for a service. # [Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config.
      &quot;policies&quot;: [ # List of RbacPolicies.
        {
          &quot;name&quot;: &quot;A String&quot;, # Name of the RbacPolicy.
          &quot;permissions&quot;: [ # The list of permissions.
            { # [Deprecated] All fields defined in a permission are ANDed.
              &quot;constraints&quot;: [ # Extra custom constraints. The constraints are ANDed together.
                { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                  &quot;key&quot;: &quot;A String&quot;, # Key of the constraint.
                  &quot;values&quot;: [ # A list of allowed values.
                    &quot;A String&quot;,
                  ],
                },
              ],
              &quot;hosts&quot;: [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;methods&quot;: [ # HTTP method.
                &quot;A String&quot;,
              ],
              &quot;notHosts&quot;: [ # Negate of hosts. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notMethods&quot;: [ # Negate of methods. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notPaths&quot;: [ # Negate of paths. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notPorts&quot;: [ # Negate of ports. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;paths&quot;: [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;ports&quot;: [ # Port names or numbers.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;principals&quot;: [ # The list of principals.
            { # [Deprecated] All fields defined in a principal are ANDed.
              &quot;condition&quot;: &quot;A String&quot;, # An expression to specify custom condition.
              &quot;groups&quot;: [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;ips&quot;: [ # IPv4 or IPv6 address or range (In CIDR format)
                &quot;A String&quot;,
              ],
              &quot;namespaces&quot;: [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
              &quot;notGroups&quot;: [ # Negate of groups. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notIps&quot;: [ # Negate of IPs. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notNamespaces&quot;: [ # Negate of namespaces. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;notUsers&quot;: [ # Negate of users. Specifies exclusions.
                &quot;A String&quot;,
              ],
              &quot;properties&quot;: { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: &quot;v1&quot;`. The properties are ANDed together.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;users&quot;: [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                &quot;A String&quot;,
              ],
            },
          ],
        },
      ],
    },
    &quot;clientTlsPolicy&quot;: &quot;A String&quot;, # Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service&#x27;s backends.
        # clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED.
        # If left blank, communications are not encrypted.
    &quot;clientTlsSettings&quot;: { # [Deprecated] The client side authentication settings for connection originating from the backend service. the backend service. # [Deprecated] TLS Settings for the backend service.
      &quot;clientTlsContext&quot;: { # [Deprecated] The TLS settings for the client or server. The TLS settings for the client or server. # Configures the mechanism to obtain client-side security certificates and identity information. This field is only applicable when mode is set to MUTUAL.
        &quot;certificateContext&quot;: { # [Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
          &quot;certificatePaths&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH.
            &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
            &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
          },
          &quot;certificateSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
        },
        &quot;validationContext&quot;: { # [Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate. # Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate.
          &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the CA certificate to validate the client or server certificate.
          &quot;sdsConfig&quot;: { # [Deprecated] The configuration to access the SDS server. The configuration to access the SDS server. # Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS.
            &quot;grpcServiceConfig&quot;: { # [Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
              &quot;callCredentials&quot;: { # [Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                &quot;callCredentialType&quot;: &quot;A String&quot;, # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following:
                    # - GCE_VM: The local GCE VM service account credentials are used to access the SDS server.
                    # - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                &quot;fromPlugin&quot;: { # [Deprecated] Custom authenticator credentials. Custom authenticator credentials. # Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN.
                  &quot;name&quot;: &quot;A String&quot;, # Plugin name.
                  &quot;structConfig&quot;: &quot;A String&quot;, # A text proto that conforms to a Struct type definition interpreted by the plugin.
                },
              },
              &quot;channelCredentials&quot;: { # [Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                &quot;certificates&quot;: { # [Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                  &quot;certificatePath&quot;: &quot;A String&quot;, # The path to the file holding the client or server TLS certificate to use.
                  &quot;privateKeyPath&quot;: &quot;A String&quot;, # The path to the file holding the client or server private key.
                },
                &quot;channelCredentialType&quot;: &quot;A String&quot;, # The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.
              },
              &quot;targetUri&quot;: &quot;A String&quot;, # The target URI of the SDS server.
            },
          },
          &quot;validationSource&quot;: &quot;A String&quot;, # Defines how TLS certificates are obtained.
        },
      },
      &quot;mode&quot;: &quot;A String&quot;, # Indicates whether connections to this port should be secured using TLS. The value of this field determines how TLS is enforced. This can be set to one of the following values: DISABLE: Do not setup a TLS connection to the backends. SIMPLE: Originate a TLS connection to the backends. MUTUAL: Secure connections to the backends using mutual TLS by presenting client certificates for authentication.
      &quot;sni&quot;: &quot;A String&quot;, # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
      &quot;subjectAltNames&quot;: [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate&#x27;s subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
        &quot;A String&quot;,
      ],
    },
    &quot;subjectAltNames&quot;: [ # Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate&#x27;s subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service.
        # Note that the contents of the server certificate&#x27;s subjectAltName field are configured by the Public Key Infrastructure which provisions server identities.
        # Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode).
      &quot;A String&quot;,
    ],
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
  &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
  &quot;sessionAffinity&quot;: &quot;A String&quot;, # Type of session affinity to use. The default is NONE. Session affinity is not applicable if the --protocol is UDP.
      # 
      # When the loadBalancingScheme is EXTERNAL, possible values are NONE, CLIENT_IP, or GENERATED_COOKIE. You can use GENERATED_COOKIE if the protocol is HTTP or HTTPS.
      # 
      # When the loadBalancingScheme is INTERNAL, possible values are NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
      # 
      # When the loadBalancingScheme is INTERNAL_SELF_MANAGED, or INTERNAL_MANAGED, possible values are NONE, CLIENT_IP, GENERATED_COOKIE, HEADER_FIELD, or HTTP_COOKIE.
  &quot;timeoutSec&quot;: 42, # 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.
}

  requestId: string, An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.

For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.

The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).

Returns:
  An object of the form:

    { # Represents an Operation resource.
      #
      # Google Compute Engine has three Operation resources:
      #
      # * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations)
      #
      # You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses.
      #
      # Operations can be global, regional or zonal.
      # - For global operations, use the `globalOperations` resource.
      # - For regional operations, use the `regionOperations` resource.
      # - For zonal operations, use the `zonalOperations` resource.
      #
      # For more information, read  Global, Regional, and Zonal Resources. (== resource_for {$api_version}.globalOperations ==) (== resource_for {$api_version}.regionOperations ==) (== resource_for {$api_version}.zoneOperations ==)
    &quot;clientOperationId&quot;: &quot;A String&quot;, # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # [Deprecated] This field is deprecated.
    &quot;description&quot;: &quot;A String&quot;, # [Output Only] A textual description of the operation, which is set when the operation is created.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    &quot;error&quot;: { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      &quot;errors&quot;: [ # [Output Only] The array of errors encountered while processing this operation.
        {
          &quot;code&quot;: &quot;A String&quot;, # [Output Only] The error type identifier for this error.
          &quot;location&quot;: &quot;A String&quot;, # [Output Only] Indicates the field in the request that caused the error. This property is optional.
          &quot;message&quot;: &quot;A String&quot;, # [Output Only] An optional, human-readable error message.
        },
      ],
    },
    &quot;httpErrorMessage&quot;: &quot;A String&quot;, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`.
    &quot;httpErrorStatusCode&quot;: 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found.
    &quot;id&quot;: &quot;A String&quot;, # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
    &quot;insertTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    &quot;kind&quot;: &quot;compute#operation&quot;, # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
    &quot;name&quot;: &quot;A String&quot;, # [Output Only] Name of the operation.
    &quot;operationType&quot;: &quot;A String&quot;, # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
    &quot;progress&quot;: 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
    &quot;region&quot;: &quot;A String&quot;, # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for the resource.
    &quot;selfLinkWithId&quot;: &quot;A String&quot;, # [Output Only] Server-defined URL for this resource with the resource id.
    &quot;startTime&quot;: &quot;A String&quot;, # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    &quot;status&quot;: &quot;A String&quot;, # [Output Only] The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`.
    &quot;statusMessage&quot;: &quot;A String&quot;, # [Output Only] An optional textual description of the current status of the operation.
    &quot;targetId&quot;: &quot;A String&quot;, # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    &quot;targetLink&quot;: &quot;A String&quot;, # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
    &quot;user&quot;: &quot;A String&quot;, # [Output Only] User who requested the operation, for example: `user@example.com`.
    &quot;warnings&quot;: [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        &quot;code&quot;: &quot;A String&quot;, # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        &quot;data&quot;: [ # [Output Only] Metadata about this warning in key: value format. For example:
            # &quot;data&quot;: [ { &quot;key&quot;: &quot;scope&quot;, &quot;value&quot;: &quot;zones/us-east1-d&quot; }
          {
            &quot;key&quot;: &quot;A String&quot;, # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
            &quot;value&quot;: &quot;A String&quot;, # [Output Only] A warning data value corresponding to the key.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # [Output Only] A human-readable description of the warning code.
      },
    ],
    &quot;zone&quot;: &quot;A String&quot;, # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
  }</pre>
</div>

</body></html>