<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)</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, requestId=None)</a></code></p>
<p class="firstline">Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read  Restrictions and Guidelines for more information.</p>
<p class="toc_element">
  <code><a href="#list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=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, requestId=None)</a></code></p>
<p class="firstline">Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information. 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)</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, requestId=None)</a></code></p>
<p class="firstline">Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.</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.
      #
      # 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 v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)
    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    "clientOperationId": "A String", # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    "creationTimestamp": "A String", # [Deprecated] This field is deprecated.
    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
    "progress": 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.
    "httpErrorStatusCode": 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.
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        "message": "A String", # [Output Only] A human-readable description of the warning code.
        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
          {
            "value": "A String", # [Output Only] A warning data value corresponding to the key.
            "key": "A String", # [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).
          },
        ],
      },
    ],
    "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
    "targetLink": "A String", # [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.
  }</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:

    { # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)
      "connectionDraining": { # Message containing connection draining configuration.
        "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
      },
      "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
          #
          # Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.
          #
          # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
      "localityLbPolicy": "A String", # 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, refer to 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.
      "securitySettings": { # 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.
        "authorizationConfig": { # Authorization configuration provides service-level and method-level access control for a service. # Authorization config defines the Role Based Access Control (RBAC) config.
          "policies": [ # List of RbacPolicies.
            {
              "principals": [ # The list of principals.
                { # All fields defined in a principal are ANDed.
                  "notGroups": [ # Negate of groups. Specifies exclusions.
                    "A String",
                  ],
                  "groups": [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                    "A String",
                  ],
                  "notNamespaces": [ # Negate of namespaces. Specifies exclusions.
                    "A String",
                  ],
                  "properties": { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: ?v1?`. The properties are ANDed together.
                    "a_key": "A String",
                  },
                  "ips": [ # IPv4 or IPv6 address or range (In CIDR format)
                    "A String",
                  ],
                  "notUsers": [ # Negate of users. Specifies exclusions.
                    "A String",
                  ],
                  "namespaces": [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                    "A String",
                  ],
                  "notIps": [ # Negate of IPs. Specifies exclusions.
                    "A String",
                  ],
                  "condition": "A String", # An expression to specify custom condition.
                  "users": [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                    "A String",
                  ],
                },
              ],
              "name": "A String", # Name of the RbacPolicy.
              "permissions": [ # The list of permissions.
                { # All fields defined in a permission are ANDed.
                  "notHosts": [ # Negate of hosts. Specifies exclusions.
                    "A String",
                  ],
                  "notPaths": [ # Negate of paths. Specifies exclusions.
                    "A String",
                  ],
                  "methods": [ # HTTP method.
                    "A String",
                  ],
                  "paths": [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                    "A String",
                  ],
                  "ports": [ # Port names or numbers.
                    "A String",
                  ],
                  "hosts": [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                    "A String",
                  ],
                  "notPorts": [ # Negate of ports. Specifies exclusions.
                    "A String",
                  ],
                  "notMethods": [ # Negate of methods. Specifies exclusions.
                    "A String",
                  ],
                  "constraints": [ # Extra custom constraints. The constraints are ANDed together.
                    { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                      "values": [ # A list of allowed values.
                        "A String",
                      ],
                      "key": "A String", # Key of the constraint.
                    },
                  ],
                },
              ],
            },
          ],
        },
        "clientTlsSettings": { # The client side authentication settings for connection originating from the backend service. # TLS Settings for the backend service.
          "sni": "A String", # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
          "subjectAltNames": [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate's subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
            "A String",
          ],
          "clientTlsContext": { # 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.
            "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
              "sdsConfig": { # 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.
                "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                  "targetUri": "A String", # The target URI of the SDS server.
                  "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                    "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                      "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                      "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                    },
                    "channelCredentialType": "A String", # 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.
                  },
                  "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                    "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                    "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                      "name": "A String", # Plugin name.
                      "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                    },
                  },
                },
              },
              "certificatePaths": { # 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.
                "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
              },
              "certificateSource": "A String", # Defines how TLS certificates are obtained.
            },
            "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
              "validationSource": "A String", # Defines how TLS certificates are obtained.
              "sdsConfig": { # 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.
                "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                  "targetUri": "A String", # The target URI of the SDS server.
                  "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                    "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                      "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                      "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                    },
                    "channelCredentialType": "A String", # 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.
                  },
                  "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                    "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                    "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                      "name": "A String", # Plugin name.
                      "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                    },
                  },
                },
              },
              "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
            },
          },
          "mode": "A String", # 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.
        },
        "authenticationPolicy": { # The authentication settings for the backend service. # Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal.
          "serverTlsContext": { # The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
            "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
              "sdsConfig": { # 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.
                "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                  "targetUri": "A String", # The target URI of the SDS server.
                  "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                    "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                      "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                      "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                    },
                    "channelCredentialType": "A String", # 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.
                  },
                  "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                    "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                    "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                      "name": "A String", # Plugin name.
                      "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                    },
                  },
                },
              },
              "certificatePaths": { # 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.
                "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
              },
              "certificateSource": "A String", # Defines how TLS certificates are obtained.
            },
            "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
              "validationSource": "A String", # Defines how TLS certificates are obtained.
              "sdsConfig": { # 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.
                "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                  "targetUri": "A String", # The target URI of the SDS server.
                  "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                    "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                      "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                      "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                    },
                    "channelCredentialType": "A String", # 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.
                  },
                  "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                    "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                    "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                      "name": "A String", # Plugin name.
                      "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                    },
                  },
                },
              },
              "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
            },
          },
          "peers": [ # 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.
            { # Configuration for the peer authentication method.
              "mtls": { # Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
                "mode": "A String", # 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.
              },
            },
          ],
          "principalBinding": "A String", # 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.
          "origins": [ # 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.
            { # Configuration for the origin authentication method.
              "jwt": { # JWT configuration for origin authentication.
                "jwtParams": [ # 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=.
                  "A String",
                ],
                "jwtHeaders": [ # 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: .
                  { # This message specifies a header location to extract JWT token.
                    "valuePrefix": "A String", # The value prefix. The value format is "value_prefix" For example, for "Authorization: Bearer ", value_prefix="Bearer " with a space at the end.
                    "name": "A String", # The HTTP header name.
                  },
                ],
                "audiences": [ # 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
                  "A String",
                ],
                "jwksPublicKeys": "A String", # The provider?s public key set to validate the signature of the JWT.
                "issuer": "A String", # 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
              },
            },
          ],
        },
      },
      "loadBalancingScheme": "A String", # Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.
      "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.
          #
          # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
        "A String",
      ],
      "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
          #
          # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
          #
          # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
          #
          # When the protocol is UDP, this field is not used.
      "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
      "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
        "signedUrlKeyNames": [ # [Output Only] Names of the keys for signing request URLs.
          "A String",
        ],
        "signedUrlCacheMaxAgeSec": "A String", # 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 "Cache-Control: public, max-age=[TTL]" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
        "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
          "includeQueryString": 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.
          "includeHost": True or False, # If true, requests to different hosts will be cached separately.
          "queryStringBlacklist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
            "A String",
          ],
          "queryStringWhitelist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
            "A String",
          ],
          "includeProtocol": True or False, # If true, http and https requests will be cached separately.
        },
      },
      "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
          #
          # When the load balancing scheme is INTERNAL, this field is not used.
      "outlierDetection": { # Settings controlling eviction of unhealthy hosts from the load balancing pool. # Settings controlling eviction of unhealthy hosts from the load balancing pool. 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.
        "interval": { # 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 "day" or "month". Range is approximately 10,000 years. # Time interval between ejection sweep analysis. This can result in both new ejections as well as hosts being returned to service. Defaults to 10 seconds.
          "nanos": 42, # Span of time that'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.
          "seconds": "A String", # 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
        },
        "enforcingConsecutiveErrors": 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 100.
        "successRateRequestVolume": 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.
        "baseEjectionTime": { # 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 "day" or "month". Range is approximately 10,000 years. # The base time that a host is ejected for. The real time is equal to the base time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
          "nanos": 42, # Span of time that'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.
          "seconds": "A String", # 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
        },
        "enforcingConsecutiveGatewayFailure": 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 0.
        "successRateMinimumHosts": 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.
        "consecutiveErrors": 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.
        "successRateStdevFactor": 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.
        "maxEjectionPercent": 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 10%.
        "consecutiveGatewayFailure": 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 5.
        "enforcingSuccessRate": 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.
      },
      "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. 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 for TTL is one day.
          #
          # When the load balancing scheme is INTERNAL, this field is not used.
      "consistentHash": { # 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.
        "httpCookie": { # 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.
          "path": "A String", # Path to set for the cookie.
          "name": "A String", # Name of the cookie.
          "ttl": { # 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 "day" or "month". Range is approximately 10,000 years. # Lifetime of the cookie.
            "nanos": 42, # Span of time that'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.
            "seconds": "A String", # 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
          },
        },
        "minimumRingSize": "A String", # 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.
        "httpHeaderName": "A String", # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
      },
      "circuitBreakers": { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
        "connectTimeout": { # 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 "day" or "month". Range is approximately 10,000 years. # The timeout for new network connections to hosts.
          "nanos": 42, # Span of time that'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.
          "seconds": "A String", # 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
        },
        "maxPendingRequests": 42, # The maximum number of pending requests allowed to the backend cluster. If not specified, the default is 1024.
        "maxRequests": 42, # The maximum number of parallel requests that allowed to the backend cluster. If not specified, the default is 1024.
        "maxConnections": 42, # The maximum number of connections to the backend cluster. If not specified, the default is 1024.
        "maxRetries": 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 3.
        "maxRequestsPerConnection": 42, # Maximum requests for a single backend connection. 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.
      },
      "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
          #
          # This cannot be used for internal load balancing.
      "backends": [ # The list of backends that serve this BackendService.
        { # Message containing information of one individual backend.
          "group": "A String", # The fully-qualified URL of an Instance Group or Network Endpoint Group resource. In case of instance group this defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
              #
              # For Network Endpoint Groups this defines list of endpoints. All endpoints of Network Endpoint Group must be hosted on instances located in the same zone as the Network Endpoint Group.
              #
              # Backend service can not contain mix of Instance Group and Network Endpoint Group backends.
              #
              # Note that you must specify an Instance Group or Network Endpoint Group resource using the fully-qualified URL, rather than a partial URL.
              #
              # When the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService. Network Endpoint Groups are not supported for INTERNAL load balancing scheme.
          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
          "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
              #
              # This cannot be used for internal load balancing.
          "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
          "maxConnectionsPerEndpoint": 42, # The max number of simultaneous connections that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set.
              #
              # This cannot be used for internal load balancing.
          "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
              #
              # This cannot be used for internal load balancing.
          "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
              #
              # This cannot be used for internal load balancing.
          "maxRatePerEndpoint": 3.14, # The max requests per second (RPS) that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint must be set.
              #
              # This cannot be used for internal load balancing.
          "capacityScaler": 3.14, # A multiplier applied to the group'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,1.0].
              #
              # This cannot be used for internal load balancing.
          "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
              #
              # This cannot be used for internal load balancing.
          "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
              #
              # This cannot be used for internal load balancing.
          "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
              #
              # For Internal Load Balancing, the default and only supported mode is CONNECTION.
        },
      ],
      "iap": { # Identity-Aware Proxy
        "oauth2ClientId": "A String",
        "oauth2ClientInfo": { # [Input Only] OAuth client info required to generate client id to be used for IAP.
          "applicationName": "A String", # Application name to be used in OAuth consent screen.
          "clientName": "A String", # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
          "developerEmailAddress": "A String", # Developer's information to be used in OAuth consent screen.
        },
        "enabled": True or False,
        "oauth2ClientSecret": "A String",
        "oauth2ClientSecretSha256": "A String", # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
      },
      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
      "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
        "A String",
      ],
      "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
      "securityPolicy": "A String", # [Output Only] The resource URL for the security policy associated with this backend service.
      "fingerprint": "A String", # 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.
      "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
          #
          # When the load balancing scheme is INTERNAL, this field is not used.
      "logConfig": { # 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.
        "sampleRate": 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.
        "enable": True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
      },
      "network": "A String", # 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.
      "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
      "name": "A String", # 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.
      "region": "A String", # [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.
      "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
      "failoverPolicy": {
        "dropTrafficIfUnhealthy": True or False, # This option is used only when no healthy VMs are detected in the primary and backup instance groups. When set to true, traffic is dropped. When set to false, new connections are sent across all VMs in the primary group.
            #
            # The default is false.
        "failoverRatio": 3.14, # The value of the field must be in [0, 1]. If the ratio of the healthy VMs in the primary backend is at or below this number, traffic arriving at the load-balanced IP will be directed to the failover backend.
            #
            # In case where 'failoverRatio' is not set or all the VMs in the backup backend are unhealthy, the traffic will be directed back to the primary backend in the "force" mode, where traffic will be spread to the healthy VMs with the best effort, or to all VMs when no VM is healthy.
            #
            # This field is only used with l4 load balancing.
        "disableConnectionDrainOnFailover": True or False, # On failover or failback, this field indicates whether connection drain will be honored. Setting this to true has the following effect: connections to the old active pool are not drained. Connections to the new active pool use the timeout of 10 min (currently fixed). Setting to false has the following effect: both old and new connections will have a drain timeout of 10 min.
            #
            # This can be set to true only if the protocol is TCP.
            #
            # The default is false.
      },
      "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
    }</pre>
</div>

<div class="method">
    <code class="details" id="getHealth">getHealth(project, region, backendService, body)</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. (required)
    The object takes the form of:

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


Returns:
  An object of the form:

    {
    "kind": "compute#backendServiceGroupHealth", # [Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.
    "healthStatus": [ # Health state of the backend instances or endpoints in requested instance or network endpoint group, determined based on configured health checks.
      {
        "instance": "A String", # URL of the instance resource.
        "healthState": "A String", # Health state of the instance.
        "ipAddress": "A String", # The IP address represented by this resource.
        "annotations": { # Metadata defined as annotations for network endpoint.
          "a_key": "A String",
        },
        "port": 42, # The port on the instance.
      },
    ],
    "annotations": { # Metadata defined as annotations on the network endpoint group.
      "a_key": "A String",
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, region, body, requestId=None)</code>
  <pre>Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read  Restrictions and Guidelines for more information.

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

{ # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)
    "connectionDraining": { # Message containing connection draining configuration.
      "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
    },
    "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
        # 
        # Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.
        # 
        # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
    "localityLbPolicy": "A String", # 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, refer to 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.
    "securitySettings": { # 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.
      "authorizationConfig": { # Authorization configuration provides service-level and method-level access control for a service. # Authorization config defines the Role Based Access Control (RBAC) config.
        "policies": [ # List of RbacPolicies.
          {
            "principals": [ # The list of principals.
              { # All fields defined in a principal are ANDed.
                "notGroups": [ # Negate of groups. Specifies exclusions.
                  "A String",
                ],
                "groups": [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notNamespaces": [ # Negate of namespaces. Specifies exclusions.
                  "A String",
                ],
                "properties": { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: ?v1?`. The properties are ANDed together.
                  "a_key": "A String",
                },
                "ips": [ # IPv4 or IPv6 address or range (In CIDR format)
                  "A String",
                ],
                "notUsers": [ # Negate of users. Specifies exclusions.
                  "A String",
                ],
                "namespaces": [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notIps": [ # Negate of IPs. Specifies exclusions.
                  "A String",
                ],
                "condition": "A String", # An expression to specify custom condition.
                "users": [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
              },
            ],
            "name": "A String", # Name of the RbacPolicy.
            "permissions": [ # The list of permissions.
              { # All fields defined in a permission are ANDed.
                "notHosts": [ # Negate of hosts. Specifies exclusions.
                  "A String",
                ],
                "notPaths": [ # Negate of paths. Specifies exclusions.
                  "A String",
                ],
                "methods": [ # HTTP method.
                  "A String",
                ],
                "paths": [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "ports": [ # Port names or numbers.
                  "A String",
                ],
                "hosts": [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notPorts": [ # Negate of ports. Specifies exclusions.
                  "A String",
                ],
                "notMethods": [ # Negate of methods. Specifies exclusions.
                  "A String",
                ],
                "constraints": [ # Extra custom constraints. The constraints are ANDed together.
                  { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                    "values": [ # A list of allowed values.
                      "A String",
                    ],
                    "key": "A String", # Key of the constraint.
                  },
                ],
              },
            ],
          },
        ],
      },
      "clientTlsSettings": { # The client side authentication settings for connection originating from the backend service. # TLS Settings for the backend service.
        "sni": "A String", # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
        "subjectAltNames": [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate's subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
          "A String",
        ],
        "clientTlsContext": { # 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.
          "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePaths": { # 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.
              "privateKeyPath": "A String", # The path to the file holding the client or server private key.
              "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
            },
            "certificateSource": "A String", # Defines how TLS certificates are obtained.
          },
          "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
            "validationSource": "A String", # Defines how TLS certificates are obtained.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
          },
        },
        "mode": "A String", # 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.
      },
      "authenticationPolicy": { # The authentication settings for the backend service. # Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal.
        "serverTlsContext": { # The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
          "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePaths": { # 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.
              "privateKeyPath": "A String", # The path to the file holding the client or server private key.
              "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
            },
            "certificateSource": "A String", # Defines how TLS certificates are obtained.
          },
          "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
            "validationSource": "A String", # Defines how TLS certificates are obtained.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
          },
        },
        "peers": [ # 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.
          { # Configuration for the peer authentication method.
            "mtls": { # Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
              "mode": "A String", # 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.
            },
          },
        ],
        "principalBinding": "A String", # 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.
        "origins": [ # 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.
          { # Configuration for the origin authentication method.
            "jwt": { # JWT configuration for origin authentication.
              "jwtParams": [ # 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=.
                "A String",
              ],
              "jwtHeaders": [ # 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: .
                { # This message specifies a header location to extract JWT token.
                  "valuePrefix": "A String", # The value prefix. The value format is "value_prefix" For example, for "Authorization: Bearer ", value_prefix="Bearer " with a space at the end.
                  "name": "A String", # The HTTP header name.
                },
              ],
              "audiences": [ # 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
                "A String",
              ],
              "jwksPublicKeys": "A String", # The provider?s public key set to validate the signature of the JWT.
              "issuer": "A String", # 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
            },
          },
        ],
      },
    },
    "loadBalancingScheme": "A String", # Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.
    "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.
        # 
        # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
      "A String",
    ],
    "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
        # 
        # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
        # 
        # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
        # 
        # When the protocol is UDP, this field is not used.
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
      "signedUrlKeyNames": [ # [Output Only] Names of the keys for signing request URLs.
        "A String",
      ],
      "signedUrlCacheMaxAgeSec": "A String", # 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 "Cache-Control: public, max-age=[TTL]" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
        "includeQueryString": 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.
        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
        "queryStringBlacklist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
          "A String",
        ],
        "queryStringWhitelist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
          "A String",
        ],
        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
      },
    },
    "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "outlierDetection": { # Settings controlling eviction of unhealthy hosts from the load balancing pool. # Settings controlling eviction of unhealthy hosts from the load balancing pool. 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.
      "interval": { # 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 "day" or "month". Range is approximately 10,000 years. # Time interval between ejection sweep analysis. This can result in both new ejections as well as hosts being returned to service. Defaults to 10 seconds.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "enforcingConsecutiveErrors": 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 100.
      "successRateRequestVolume": 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.
      "baseEjectionTime": { # 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 "day" or "month". Range is approximately 10,000 years. # The base time that a host is ejected for. The real time is equal to the base time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "enforcingConsecutiveGatewayFailure": 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 0.
      "successRateMinimumHosts": 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.
      "consecutiveErrors": 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.
      "successRateStdevFactor": 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.
      "maxEjectionPercent": 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 10%.
      "consecutiveGatewayFailure": 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 5.
      "enforcingSuccessRate": 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.
    },
    "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. 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 for TTL is one day.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "consistentHash": { # 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.
      "httpCookie": { # 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.
        "path": "A String", # Path to set for the cookie.
        "name": "A String", # Name of the cookie.
        "ttl": { # 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 "day" or "month". Range is approximately 10,000 years. # Lifetime of the cookie.
          "nanos": 42, # Span of time that'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.
          "seconds": "A String", # 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
        },
      },
      "minimumRingSize": "A String", # 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.
      "httpHeaderName": "A String", # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
    },
    "circuitBreakers": { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
      "connectTimeout": { # 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 "day" or "month". Range is approximately 10,000 years. # The timeout for new network connections to hosts.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "maxPendingRequests": 42, # The maximum number of pending requests allowed to the backend cluster. If not specified, the default is 1024.
      "maxRequests": 42, # The maximum number of parallel requests that allowed to the backend cluster. If not specified, the default is 1024.
      "maxConnections": 42, # The maximum number of connections to the backend cluster. If not specified, the default is 1024.
      "maxRetries": 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 3.
      "maxRequestsPerConnection": 42, # Maximum requests for a single backend connection. 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.
    },
    "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
        # 
        # This cannot be used for internal load balancing.
    "backends": [ # The list of backends that serve this BackendService.
      { # Message containing information of one individual backend.
        "group": "A String", # The fully-qualified URL of an Instance Group or Network Endpoint Group resource. In case of instance group this defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
            #
            # For Network Endpoint Groups this defines list of endpoints. All endpoints of Network Endpoint Group must be hosted on instances located in the same zone as the Network Endpoint Group.
            #
            # Backend service can not contain mix of Instance Group and Network Endpoint Group backends.
            #
            # Note that you must specify an Instance Group or Network Endpoint Group resource using the fully-qualified URL, rather than a partial URL.
            #
            # When the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService. Network Endpoint Groups are not supported for INTERNAL load balancing scheme.
        "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
        "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
            #
            # This cannot be used for internal load balancing.
        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
        "maxConnectionsPerEndpoint": 42, # The max number of simultaneous connections that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set.
            #
            # This cannot be used for internal load balancing.
        "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxRatePerEndpoint": 3.14, # The max requests per second (RPS) that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint must be set.
            #
            # This cannot be used for internal load balancing.
        "capacityScaler": 3.14, # A multiplier applied to the group'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,1.0].
            #
            # This cannot be used for internal load balancing.
        "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
            #
            # For Internal Load Balancing, the default and only supported mode is CONNECTION.
      },
    ],
    "iap": { # Identity-Aware Proxy
      "oauth2ClientId": "A String",
      "oauth2ClientInfo": { # [Input Only] OAuth client info required to generate client id to be used for IAP.
        "applicationName": "A String", # Application name to be used in OAuth consent screen.
        "clientName": "A String", # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
        "developerEmailAddress": "A String", # Developer's information to be used in OAuth consent screen.
      },
      "enabled": True or False,
      "oauth2ClientSecret": "A String",
      "oauth2ClientSecretSha256": "A String", # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
    },
    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
      "A String",
    ],
    "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
    "securityPolicy": "A String", # [Output Only] The resource URL for the security policy associated with this backend service.
    "fingerprint": "A String", # 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.
    "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "logConfig": { # 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.
      "sampleRate": 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.
      "enable": True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
    },
    "network": "A String", # 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.
    "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
    "name": "A String", # 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.
    "region": "A String", # [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.
    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
    "failoverPolicy": {
      "dropTrafficIfUnhealthy": True or False, # This option is used only when no healthy VMs are detected in the primary and backup instance groups. When set to true, traffic is dropped. When set to false, new connections are sent across all VMs in the primary group.
          #
          # The default is false.
      "failoverRatio": 3.14, # The value of the field must be in [0, 1]. If the ratio of the healthy VMs in the primary backend is at or below this number, traffic arriving at the load-balanced IP will be directed to the failover backend.
          #
          # In case where 'failoverRatio' is not set or all the VMs in the backup backend are unhealthy, the traffic will be directed back to the primary backend in the "force" mode, where traffic will be spread to the healthy VMs with the best effort, or to all VMs when no VM is healthy.
          #
          # This field is only used with l4 load balancing.
      "disableConnectionDrainOnFailover": True or False, # On failover or failback, this field indicates whether connection drain will be honored. Setting this to true has the following effect: connections to the old active pool are not drained. Connections to the new active pool use the timeout of 10 min (currently fixed). Setting to false has the following effect: both old and new connections will have a drain timeout of 10 min.
          #
          # This can be set to true only if the protocol is TCP.
          #
          # The default is false.
    },
    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
  }

  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.
      #
      # 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 v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)
    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    "clientOperationId": "A String", # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    "creationTimestamp": "A String", # [Deprecated] This field is deprecated.
    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
    "progress": 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.
    "httpErrorStatusCode": 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.
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        "message": "A String", # [Output Only] A human-readable description of the warning code.
        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
          {
            "value": "A String", # [Output Only] A warning data value corresponding to the key.
            "key": "A String", # [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).
          },
        ],
      },
    ],
    "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
    "targetLink": "A String", # [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.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=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)
  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="creationTimestamp desc". 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.
  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)
  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.
  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 =, !=, >, or <.

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 = "Intel Skylake"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true).

Returns:
  An object of the form:

    { # Contains a list of BackendService resources.
    "nextPageToken": "A String", # [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.
    "kind": "compute#backendServiceList", # [Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.
    "items": [ # A list of BackendService resources.
      { # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)
          "connectionDraining": { # Message containing connection draining configuration.
            "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
          },
          "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
              #
              # Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.
              #
              # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
          "localityLbPolicy": "A String", # 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, refer to 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.
          "securitySettings": { # 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.
            "authorizationConfig": { # Authorization configuration provides service-level and method-level access control for a service. # Authorization config defines the Role Based Access Control (RBAC) config.
              "policies": [ # List of RbacPolicies.
                {
                  "principals": [ # The list of principals.
                    { # All fields defined in a principal are ANDed.
                      "notGroups": [ # Negate of groups. Specifies exclusions.
                        "A String",
                      ],
                      "groups": [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                        "A String",
                      ],
                      "notNamespaces": [ # Negate of namespaces. Specifies exclusions.
                        "A String",
                      ],
                      "properties": { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: ?v1?`. The properties are ANDed together.
                        "a_key": "A String",
                      },
                      "ips": [ # IPv4 or IPv6 address or range (In CIDR format)
                        "A String",
                      ],
                      "notUsers": [ # Negate of users. Specifies exclusions.
                        "A String",
                      ],
                      "namespaces": [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                        "A String",
                      ],
                      "notIps": [ # Negate of IPs. Specifies exclusions.
                        "A String",
                      ],
                      "condition": "A String", # An expression to specify custom condition.
                      "users": [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                        "A String",
                      ],
                    },
                  ],
                  "name": "A String", # Name of the RbacPolicy.
                  "permissions": [ # The list of permissions.
                    { # All fields defined in a permission are ANDed.
                      "notHosts": [ # Negate of hosts. Specifies exclusions.
                        "A String",
                      ],
                      "notPaths": [ # Negate of paths. Specifies exclusions.
                        "A String",
                      ],
                      "methods": [ # HTTP method.
                        "A String",
                      ],
                      "paths": [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                        "A String",
                      ],
                      "ports": [ # Port names or numbers.
                        "A String",
                      ],
                      "hosts": [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                        "A String",
                      ],
                      "notPorts": [ # Negate of ports. Specifies exclusions.
                        "A String",
                      ],
                      "notMethods": [ # Negate of methods. Specifies exclusions.
                        "A String",
                      ],
                      "constraints": [ # Extra custom constraints. The constraints are ANDed together.
                        { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                          "values": [ # A list of allowed values.
                            "A String",
                          ],
                          "key": "A String", # Key of the constraint.
                        },
                      ],
                    },
                  ],
                },
              ],
            },
            "clientTlsSettings": { # The client side authentication settings for connection originating from the backend service. # TLS Settings for the backend service.
              "sni": "A String", # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
              "subjectAltNames": [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate's subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
                "A String",
              ],
              "clientTlsContext": { # 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.
                "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
                  "sdsConfig": { # 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.
                    "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                      "targetUri": "A String", # The target URI of the SDS server.
                      "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                        "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                          "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                          "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                        },
                        "channelCredentialType": "A String", # 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.
                      },
                      "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                        "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                        "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                          "name": "A String", # Plugin name.
                          "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                        },
                      },
                    },
                  },
                  "certificatePaths": { # 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.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "certificateSource": "A String", # Defines how TLS certificates are obtained.
                },
                "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
                  "validationSource": "A String", # Defines how TLS certificates are obtained.
                  "sdsConfig": { # 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.
                    "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                      "targetUri": "A String", # The target URI of the SDS server.
                      "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                        "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                          "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                          "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                        },
                        "channelCredentialType": "A String", # 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.
                      },
                      "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                        "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                        "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                          "name": "A String", # Plugin name.
                          "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                        },
                      },
                    },
                  },
                  "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
                },
              },
              "mode": "A String", # 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.
            },
            "authenticationPolicy": { # The authentication settings for the backend service. # Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal.
              "serverTlsContext": { # The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
                "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
                  "sdsConfig": { # 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.
                    "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                      "targetUri": "A String", # The target URI of the SDS server.
                      "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                        "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                          "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                          "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                        },
                        "channelCredentialType": "A String", # 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.
                      },
                      "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                        "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                        "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                          "name": "A String", # Plugin name.
                          "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                        },
                      },
                    },
                  },
                  "certificatePaths": { # 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.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "certificateSource": "A String", # Defines how TLS certificates are obtained.
                },
                "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
                  "validationSource": "A String", # Defines how TLS certificates are obtained.
                  "sdsConfig": { # 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.
                    "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                      "targetUri": "A String", # The target URI of the SDS server.
                      "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                        "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                          "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                          "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                        },
                        "channelCredentialType": "A String", # 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.
                      },
                      "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                        "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                        "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                          "name": "A String", # Plugin name.
                          "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                        },
                      },
                    },
                  },
                  "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
                },
              },
              "peers": [ # 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.
                { # Configuration for the peer authentication method.
                  "mtls": { # Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
                    "mode": "A String", # 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.
                  },
                },
              ],
              "principalBinding": "A String", # 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.
              "origins": [ # 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.
                { # Configuration for the origin authentication method.
                  "jwt": { # JWT configuration for origin authentication.
                    "jwtParams": [ # 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=.
                      "A String",
                    ],
                    "jwtHeaders": [ # 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: .
                      { # This message specifies a header location to extract JWT token.
                        "valuePrefix": "A String", # The value prefix. The value format is "value_prefix" For example, for "Authorization: Bearer ", value_prefix="Bearer " with a space at the end.
                        "name": "A String", # The HTTP header name.
                      },
                    ],
                    "audiences": [ # 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
                      "A String",
                    ],
                    "jwksPublicKeys": "A String", # The provider?s public key set to validate the signature of the JWT.
                    "issuer": "A String", # 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
                  },
                },
              ],
            },
          },
          "loadBalancingScheme": "A String", # Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.
          "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.
              #
              # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
            "A String",
          ],
          "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
              #
              # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
              #
              # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
              #
              # When the protocol is UDP, this field is not used.
          "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
          "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
            "signedUrlKeyNames": [ # [Output Only] Names of the keys for signing request URLs.
              "A String",
            ],
            "signedUrlCacheMaxAgeSec": "A String", # 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 "Cache-Control: public, max-age=[TTL]" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
            "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
              "includeQueryString": 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.
              "includeHost": True or False, # If true, requests to different hosts will be cached separately.
              "queryStringBlacklist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
                "A String",
              ],
              "queryStringWhitelist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
                "A String",
              ],
              "includeProtocol": True or False, # If true, http and https requests will be cached separately.
            },
          },
          "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
              #
              # When the load balancing scheme is INTERNAL, this field is not used.
          "outlierDetection": { # Settings controlling eviction of unhealthy hosts from the load balancing pool. # Settings controlling eviction of unhealthy hosts from the load balancing pool. 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.
            "interval": { # 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 "day" or "month". Range is approximately 10,000 years. # Time interval between ejection sweep analysis. This can result in both new ejections as well as hosts being returned to service. Defaults to 10 seconds.
              "nanos": 42, # Span of time that'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.
              "seconds": "A String", # 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
            },
            "enforcingConsecutiveErrors": 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 100.
            "successRateRequestVolume": 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.
            "baseEjectionTime": { # 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 "day" or "month". Range is approximately 10,000 years. # The base time that a host is ejected for. The real time is equal to the base time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
              "nanos": 42, # Span of time that'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.
              "seconds": "A String", # 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
            },
            "enforcingConsecutiveGatewayFailure": 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 0.
            "successRateMinimumHosts": 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.
            "consecutiveErrors": 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.
            "successRateStdevFactor": 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.
            "maxEjectionPercent": 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 10%.
            "consecutiveGatewayFailure": 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 5.
            "enforcingSuccessRate": 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.
          },
          "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. 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 for TTL is one day.
              #
              # When the load balancing scheme is INTERNAL, this field is not used.
          "consistentHash": { # 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.
            "httpCookie": { # 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.
              "path": "A String", # Path to set for the cookie.
              "name": "A String", # Name of the cookie.
              "ttl": { # 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 "day" or "month". Range is approximately 10,000 years. # Lifetime of the cookie.
                "nanos": 42, # Span of time that'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.
                "seconds": "A String", # 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
              },
            },
            "minimumRingSize": "A String", # 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.
            "httpHeaderName": "A String", # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
          },
          "circuitBreakers": { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
            "connectTimeout": { # 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 "day" or "month". Range is approximately 10,000 years. # The timeout for new network connections to hosts.
              "nanos": 42, # Span of time that'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.
              "seconds": "A String", # 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
            },
            "maxPendingRequests": 42, # The maximum number of pending requests allowed to the backend cluster. If not specified, the default is 1024.
            "maxRequests": 42, # The maximum number of parallel requests that allowed to the backend cluster. If not specified, the default is 1024.
            "maxConnections": 42, # The maximum number of connections to the backend cluster. If not specified, the default is 1024.
            "maxRetries": 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 3.
            "maxRequestsPerConnection": 42, # Maximum requests for a single backend connection. 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.
          },
          "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
              #
              # This cannot be used for internal load balancing.
          "backends": [ # The list of backends that serve this BackendService.
            { # Message containing information of one individual backend.
              "group": "A String", # The fully-qualified URL of an Instance Group or Network Endpoint Group resource. In case of instance group this defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
                  #
                  # For Network Endpoint Groups this defines list of endpoints. All endpoints of Network Endpoint Group must be hosted on instances located in the same zone as the Network Endpoint Group.
                  #
                  # Backend service can not contain mix of Instance Group and Network Endpoint Group backends.
                  #
                  # Note that you must specify an Instance Group or Network Endpoint Group resource using the fully-qualified URL, rather than a partial URL.
                  #
                  # When the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService. Network Endpoint Groups are not supported for INTERNAL load balancing scheme.
              "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
              "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
                  #
                  # This cannot be used for internal load balancing.
              "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
              "maxConnectionsPerEndpoint": 42, # The max number of simultaneous connections that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set.
                  #
                  # This cannot be used for internal load balancing.
              "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
                  #
                  # This cannot be used for internal load balancing.
              "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
                  #
                  # This cannot be used for internal load balancing.
              "maxRatePerEndpoint": 3.14, # The max requests per second (RPS) that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint must be set.
                  #
                  # This cannot be used for internal load balancing.
              "capacityScaler": 3.14, # A multiplier applied to the group'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,1.0].
                  #
                  # This cannot be used for internal load balancing.
              "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
                  #
                  # This cannot be used for internal load balancing.
              "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
                  #
                  # This cannot be used for internal load balancing.
              "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
                  #
                  # For Internal Load Balancing, the default and only supported mode is CONNECTION.
            },
          ],
          "iap": { # Identity-Aware Proxy
            "oauth2ClientId": "A String",
            "oauth2ClientInfo": { # [Input Only] OAuth client info required to generate client id to be used for IAP.
              "applicationName": "A String", # Application name to be used in OAuth consent screen.
              "clientName": "A String", # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
              "developerEmailAddress": "A String", # Developer's information to be used in OAuth consent screen.
            },
            "enabled": True or False,
            "oauth2ClientSecret": "A String",
            "oauth2ClientSecretSha256": "A String", # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
          },
          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
          "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
            "A String",
          ],
          "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
          "securityPolicy": "A String", # [Output Only] The resource URL for the security policy associated with this backend service.
          "fingerprint": "A String", # 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.
          "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
              #
              # When the load balancing scheme is INTERNAL, this field is not used.
          "logConfig": { # 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.
            "sampleRate": 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.
            "enable": True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
          },
          "network": "A String", # 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.
          "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
          "name": "A String", # 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.
          "region": "A String", # [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.
          "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
          "failoverPolicy": {
            "dropTrafficIfUnhealthy": True or False, # This option is used only when no healthy VMs are detected in the primary and backup instance groups. When set to true, traffic is dropped. When set to false, new connections are sent across all VMs in the primary group.
                #
                # The default is false.
            "failoverRatio": 3.14, # The value of the field must be in [0, 1]. If the ratio of the healthy VMs in the primary backend is at or below this number, traffic arriving at the load-balanced IP will be directed to the failover backend.
                #
                # In case where 'failoverRatio' is not set or all the VMs in the backup backend are unhealthy, the traffic will be directed back to the primary backend in the "force" mode, where traffic will be spread to the healthy VMs with the best effort, or to all VMs when no VM is healthy.
                #
                # This field is only used with l4 load balancing.
            "disableConnectionDrainOnFailover": True or False, # On failover or failback, this field indicates whether connection drain will be honored. Setting this to true has the following effect: connections to the old active pool are not drained. Connections to the new active pool use the timeout of 10 min (currently fixed). Setting to false has the following effect: both old and new connections will have a drain timeout of 10 min.
                #
                # This can be set to true only if the protocol is TCP.
                #
                # The default is false.
          },
          "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
        },
    ],
    "warning": { # [Output Only] Informational warning message.
      "message": "A String", # [Output Only] A human-readable description of the warning code.
      "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
      "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
          # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
        {
          "value": "A String", # [Output Only] A warning data value corresponding to the key.
          "key": "A String", # [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).
        },
      ],
    },
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
  }</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 'execute()' 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, requestId=None)</code>
  <pre>Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information. 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. (required)
    The object takes the form of:

{ # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)
    "connectionDraining": { # Message containing connection draining configuration.
      "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
    },
    "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
        # 
        # Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.
        # 
        # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
    "localityLbPolicy": "A String", # 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, refer to 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.
    "securitySettings": { # 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.
      "authorizationConfig": { # Authorization configuration provides service-level and method-level access control for a service. # Authorization config defines the Role Based Access Control (RBAC) config.
        "policies": [ # List of RbacPolicies.
          {
            "principals": [ # The list of principals.
              { # All fields defined in a principal are ANDed.
                "notGroups": [ # Negate of groups. Specifies exclusions.
                  "A String",
                ],
                "groups": [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notNamespaces": [ # Negate of namespaces. Specifies exclusions.
                  "A String",
                ],
                "properties": { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: ?v1?`. The properties are ANDed together.
                  "a_key": "A String",
                },
                "ips": [ # IPv4 or IPv6 address or range (In CIDR format)
                  "A String",
                ],
                "notUsers": [ # Negate of users. Specifies exclusions.
                  "A String",
                ],
                "namespaces": [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notIps": [ # Negate of IPs. Specifies exclusions.
                  "A String",
                ],
                "condition": "A String", # An expression to specify custom condition.
                "users": [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
              },
            ],
            "name": "A String", # Name of the RbacPolicy.
            "permissions": [ # The list of permissions.
              { # All fields defined in a permission are ANDed.
                "notHosts": [ # Negate of hosts. Specifies exclusions.
                  "A String",
                ],
                "notPaths": [ # Negate of paths. Specifies exclusions.
                  "A String",
                ],
                "methods": [ # HTTP method.
                  "A String",
                ],
                "paths": [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "ports": [ # Port names or numbers.
                  "A String",
                ],
                "hosts": [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notPorts": [ # Negate of ports. Specifies exclusions.
                  "A String",
                ],
                "notMethods": [ # Negate of methods. Specifies exclusions.
                  "A String",
                ],
                "constraints": [ # Extra custom constraints. The constraints are ANDed together.
                  { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                    "values": [ # A list of allowed values.
                      "A String",
                    ],
                    "key": "A String", # Key of the constraint.
                  },
                ],
              },
            ],
          },
        ],
      },
      "clientTlsSettings": { # The client side authentication settings for connection originating from the backend service. # TLS Settings for the backend service.
        "sni": "A String", # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
        "subjectAltNames": [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate's subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
          "A String",
        ],
        "clientTlsContext": { # 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.
          "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePaths": { # 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.
              "privateKeyPath": "A String", # The path to the file holding the client or server private key.
              "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
            },
            "certificateSource": "A String", # Defines how TLS certificates are obtained.
          },
          "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
            "validationSource": "A String", # Defines how TLS certificates are obtained.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
          },
        },
        "mode": "A String", # 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.
      },
      "authenticationPolicy": { # The authentication settings for the backend service. # Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal.
        "serverTlsContext": { # The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
          "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePaths": { # 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.
              "privateKeyPath": "A String", # The path to the file holding the client or server private key.
              "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
            },
            "certificateSource": "A String", # Defines how TLS certificates are obtained.
          },
          "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
            "validationSource": "A String", # Defines how TLS certificates are obtained.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
          },
        },
        "peers": [ # 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.
          { # Configuration for the peer authentication method.
            "mtls": { # Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
              "mode": "A String", # 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.
            },
          },
        ],
        "principalBinding": "A String", # 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.
        "origins": [ # 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.
          { # Configuration for the origin authentication method.
            "jwt": { # JWT configuration for origin authentication.
              "jwtParams": [ # 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=.
                "A String",
              ],
              "jwtHeaders": [ # 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: .
                { # This message specifies a header location to extract JWT token.
                  "valuePrefix": "A String", # The value prefix. The value format is "value_prefix" For example, for "Authorization: Bearer ", value_prefix="Bearer " with a space at the end.
                  "name": "A String", # The HTTP header name.
                },
              ],
              "audiences": [ # 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
                "A String",
              ],
              "jwksPublicKeys": "A String", # The provider?s public key set to validate the signature of the JWT.
              "issuer": "A String", # 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
            },
          },
        ],
      },
    },
    "loadBalancingScheme": "A String", # Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.
    "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.
        # 
        # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
      "A String",
    ],
    "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
        # 
        # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
        # 
        # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
        # 
        # When the protocol is UDP, this field is not used.
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
      "signedUrlKeyNames": [ # [Output Only] Names of the keys for signing request URLs.
        "A String",
      ],
      "signedUrlCacheMaxAgeSec": "A String", # 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 "Cache-Control: public, max-age=[TTL]" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
        "includeQueryString": 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.
        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
        "queryStringBlacklist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
          "A String",
        ],
        "queryStringWhitelist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
          "A String",
        ],
        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
      },
    },
    "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "outlierDetection": { # Settings controlling eviction of unhealthy hosts from the load balancing pool. # Settings controlling eviction of unhealthy hosts from the load balancing pool. 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.
      "interval": { # 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 "day" or "month". Range is approximately 10,000 years. # Time interval between ejection sweep analysis. This can result in both new ejections as well as hosts being returned to service. Defaults to 10 seconds.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "enforcingConsecutiveErrors": 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 100.
      "successRateRequestVolume": 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.
      "baseEjectionTime": { # 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 "day" or "month". Range is approximately 10,000 years. # The base time that a host is ejected for. The real time is equal to the base time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "enforcingConsecutiveGatewayFailure": 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 0.
      "successRateMinimumHosts": 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.
      "consecutiveErrors": 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.
      "successRateStdevFactor": 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.
      "maxEjectionPercent": 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 10%.
      "consecutiveGatewayFailure": 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 5.
      "enforcingSuccessRate": 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.
    },
    "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. 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 for TTL is one day.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "consistentHash": { # 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.
      "httpCookie": { # 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.
        "path": "A String", # Path to set for the cookie.
        "name": "A String", # Name of the cookie.
        "ttl": { # 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 "day" or "month". Range is approximately 10,000 years. # Lifetime of the cookie.
          "nanos": 42, # Span of time that'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.
          "seconds": "A String", # 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
        },
      },
      "minimumRingSize": "A String", # 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.
      "httpHeaderName": "A String", # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
    },
    "circuitBreakers": { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
      "connectTimeout": { # 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 "day" or "month". Range is approximately 10,000 years. # The timeout for new network connections to hosts.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "maxPendingRequests": 42, # The maximum number of pending requests allowed to the backend cluster. If not specified, the default is 1024.
      "maxRequests": 42, # The maximum number of parallel requests that allowed to the backend cluster. If not specified, the default is 1024.
      "maxConnections": 42, # The maximum number of connections to the backend cluster. If not specified, the default is 1024.
      "maxRetries": 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 3.
      "maxRequestsPerConnection": 42, # Maximum requests for a single backend connection. 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.
    },
    "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
        # 
        # This cannot be used for internal load balancing.
    "backends": [ # The list of backends that serve this BackendService.
      { # Message containing information of one individual backend.
        "group": "A String", # The fully-qualified URL of an Instance Group or Network Endpoint Group resource. In case of instance group this defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
            #
            # For Network Endpoint Groups this defines list of endpoints. All endpoints of Network Endpoint Group must be hosted on instances located in the same zone as the Network Endpoint Group.
            #
            # Backend service can not contain mix of Instance Group and Network Endpoint Group backends.
            #
            # Note that you must specify an Instance Group or Network Endpoint Group resource using the fully-qualified URL, rather than a partial URL.
            #
            # When the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService. Network Endpoint Groups are not supported for INTERNAL load balancing scheme.
        "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
        "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
            #
            # This cannot be used for internal load balancing.
        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
        "maxConnectionsPerEndpoint": 42, # The max number of simultaneous connections that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set.
            #
            # This cannot be used for internal load balancing.
        "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxRatePerEndpoint": 3.14, # The max requests per second (RPS) that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint must be set.
            #
            # This cannot be used for internal load balancing.
        "capacityScaler": 3.14, # A multiplier applied to the group'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,1.0].
            #
            # This cannot be used for internal load balancing.
        "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
            #
            # For Internal Load Balancing, the default and only supported mode is CONNECTION.
      },
    ],
    "iap": { # Identity-Aware Proxy
      "oauth2ClientId": "A String",
      "oauth2ClientInfo": { # [Input Only] OAuth client info required to generate client id to be used for IAP.
        "applicationName": "A String", # Application name to be used in OAuth consent screen.
        "clientName": "A String", # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
        "developerEmailAddress": "A String", # Developer's information to be used in OAuth consent screen.
      },
      "enabled": True or False,
      "oauth2ClientSecret": "A String",
      "oauth2ClientSecretSha256": "A String", # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
    },
    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
      "A String",
    ],
    "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
    "securityPolicy": "A String", # [Output Only] The resource URL for the security policy associated with this backend service.
    "fingerprint": "A String", # 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.
    "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "logConfig": { # 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.
      "sampleRate": 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.
      "enable": True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
    },
    "network": "A String", # 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.
    "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
    "name": "A String", # 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.
    "region": "A String", # [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.
    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
    "failoverPolicy": {
      "dropTrafficIfUnhealthy": True or False, # This option is used only when no healthy VMs are detected in the primary and backup instance groups. When set to true, traffic is dropped. When set to false, new connections are sent across all VMs in the primary group.
          #
          # The default is false.
      "failoverRatio": 3.14, # The value of the field must be in [0, 1]. If the ratio of the healthy VMs in the primary backend is at or below this number, traffic arriving at the load-balanced IP will be directed to the failover backend.
          #
          # In case where 'failoverRatio' is not set or all the VMs in the backup backend are unhealthy, the traffic will be directed back to the primary backend in the "force" mode, where traffic will be spread to the healthy VMs with the best effort, or to all VMs when no VM is healthy.
          #
          # This field is only used with l4 load balancing.
      "disableConnectionDrainOnFailover": True or False, # On failover or failback, this field indicates whether connection drain will be honored. Setting this to true has the following effect: connections to the old active pool are not drained. Connections to the new active pool use the timeout of 10 min (currently fixed). Setting to false has the following effect: both old and new connections will have a drain timeout of 10 min.
          #
          # This can be set to true only if the protocol is TCP.
          #
          # The default is false.
    },
    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
  }

  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.
      #
      # 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 v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)
    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    "clientOperationId": "A String", # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    "creationTimestamp": "A String", # [Deprecated] This field is deprecated.
    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
    "progress": 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.
    "httpErrorStatusCode": 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.
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        "message": "A String", # [Output Only] A human-readable description of the warning code.
        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
          {
            "value": "A String", # [Output Only] A warning data value corresponding to the key.
            "key": "A String", # [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).
          },
        ],
      },
    ],
    "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
    "targetLink": "A String", # [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.
  }</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(project, region, resource, body)</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. (required)
    The object takes the form of:

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


Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="update">update(project, region, backendService, body, requestId=None)</code>
  <pre>Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.

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. (required)
    The object takes the form of:

{ # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)
    "connectionDraining": { # Message containing connection draining configuration.
      "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
    },
    "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
        # 
        # Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.
        # 
        # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
    "localityLbPolicy": "A String", # 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, refer to 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.
    "securitySettings": { # 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.
      "authorizationConfig": { # Authorization configuration provides service-level and method-level access control for a service. # Authorization config defines the Role Based Access Control (RBAC) config.
        "policies": [ # List of RbacPolicies.
          {
            "principals": [ # The list of principals.
              { # All fields defined in a principal are ANDed.
                "notGroups": [ # Negate of groups. Specifies exclusions.
                  "A String",
                ],
                "groups": [ # The groups the principal belongs to. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notNamespaces": [ # Negate of namespaces. Specifies exclusions.
                  "A String",
                ],
                "properties": { # A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: ?v1?`. The properties are ANDed together.
                  "a_key": "A String",
                },
                "ips": [ # IPv4 or IPv6 address or range (In CIDR format)
                  "A String",
                ],
                "notUsers": [ # Negate of users. Specifies exclusions.
                  "A String",
                ],
                "namespaces": [ # The namespaces. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notIps": [ # Negate of IPs. Specifies exclusions.
                  "A String",
                ],
                "condition": "A String", # An expression to specify custom condition.
                "users": [ # The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
              },
            ],
            "name": "A String", # Name of the RbacPolicy.
            "permissions": [ # The list of permissions.
              { # All fields defined in a permission are ANDed.
                "notHosts": [ # Negate of hosts. Specifies exclusions.
                  "A String",
                ],
                "notPaths": [ # Negate of paths. Specifies exclusions.
                  "A String",
                ],
                "methods": [ # HTTP method.
                  "A String",
                ],
                "paths": [ # HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "ports": [ # Port names or numbers.
                  "A String",
                ],
                "hosts": [ # Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported.
                  "A String",
                ],
                "notPorts": [ # Negate of ports. Specifies exclusions.
                  "A String",
                ],
                "notMethods": [ # Negate of methods. Specifies exclusions.
                  "A String",
                ],
                "constraints": [ # Extra custom constraints. The constraints are ANDed together.
                  { # Custom constraint that specifies a key and a list of allowed values for Istio attributes.
                    "values": [ # A list of allowed values.
                      "A String",
                    ],
                    "key": "A String", # Key of the constraint.
                  },
                ],
              },
            ],
          },
        ],
      },
      "clientTlsSettings": { # The client side authentication settings for connection originating from the backend service. # TLS Settings for the backend service.
        "sni": "A String", # SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL.
        "subjectAltNames": [ # A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate's subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL.
          "A String",
        ],
        "clientTlsContext": { # 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.
          "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePaths": { # 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.
              "privateKeyPath": "A String", # The path to the file holding the client or server private key.
              "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
            },
            "certificateSource": "A String", # Defines how TLS certificates are obtained.
          },
          "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
            "validationSource": "A String", # Defines how TLS certificates are obtained.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
          },
        },
        "mode": "A String", # 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.
      },
      "authenticationPolicy": { # The authentication settings for the backend service. # Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal.
        "serverTlsContext": { # The TLS settings for the client or server. # Configures the mechanism to obtain server-side security certificates and identity information.
          "certificateContext": { # Defines the mechanism to obtain the client or server certificate. # Defines the mechanism to obtain the client or server certificate.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePaths": { # 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.
              "privateKeyPath": "A String", # The path to the file holding the client or server private key.
              "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
            },
            "certificateSource": "A String", # Defines how TLS certificates are obtained.
          },
          "validationContext": { # Defines the mechanism to obtain the Certificate Authority certificate to 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.
            "validationSource": "A String", # Defines how TLS certificates are obtained.
            "sdsConfig": { # 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.
              "grpcServiceConfig": { # gRPC config to access the SDS server. # The configuration to access the SDS server over GRPC.
                "targetUri": "A String", # The target URI of the SDS server.
                "channelCredentials": { # gRPC channel credentials to access the SDS server. # The channel credentials to access the SDS server.
                  "certificates": { # The paths to the mounted TLS Certificates and private key. # The call credentials to access the SDS server.
                    "privateKeyPath": "A String", # The path to the file holding the client or server private key.
                    "certificatePath": "A String", # The path to the file holding the client or server TLS certificate to use.
                  },
                  "channelCredentialType": "A String", # 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.
                },
                "callCredentials": { # gRPC call credentials to access the SDS server. # The call credentials to access the SDS server.
                  "callCredentialType": "A String", # The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: ACCESS_TOKEN: An access token is used as call credentials for the SDS server. GCE_VM: The local GCE VM service account credentials are used to access the SDS server. JWT_SERVICE_TOKEN: The user provisioned service account credentials are used to access the SDS server. FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.
                  "fromPlugin": { # Custom authenticator credentials. # Custom authenticator credentials.
                    "name": "A String", # Plugin name.
                    "structConfig": "A String", # A text proto that conforms to a Struct type definition interpreted by the plugin.
                  },
                },
              },
            },
            "certificatePath": "A String", # The path to the file holding the CA certificate to validate the client or server certificate.
          },
        },
        "peers": [ # 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.
          { # Configuration for the peer authentication method.
            "mtls": { # Configuration for the mutual Tls mode for peer authentication. # Set if mTLS is used for peer authentication.
              "mode": "A String", # 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.
            },
          },
        ],
        "principalBinding": "A String", # 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.
        "origins": [ # 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.
          { # Configuration for the origin authentication method.
            "jwt": { # JWT configuration for origin authentication.
              "jwtParams": [ # 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=.
                "A String",
              ],
              "jwtHeaders": [ # 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: .
                { # This message specifies a header location to extract JWT token.
                  "valuePrefix": "A String", # The value prefix. The value format is "value_prefix" For example, for "Authorization: Bearer ", value_prefix="Bearer " with a space at the end.
                  "name": "A String", # The HTTP header name.
                },
              ],
              "audiences": [ # 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
                "A String",
              ],
              "jwksPublicKeys": "A String", # The provider?s public key set to validate the signature of the JWT.
              "issuer": "A String", # 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
            },
          },
        ],
      },
    },
    "loadBalancingScheme": "A String", # Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.
    "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.
        # 
        # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
      "A String",
    ],
    "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
        # 
        # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
        # 
        # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
        # 
        # When the protocol is UDP, this field is not used.
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
      "signedUrlKeyNames": [ # [Output Only] Names of the keys for signing request URLs.
        "A String",
      ],
      "signedUrlCacheMaxAgeSec": "A String", # 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 "Cache-Control: public, max-age=[TTL]" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.
      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
        "includeQueryString": 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.
        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
        "queryStringBlacklist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
          "A String",
        ],
        "queryStringWhitelist": [ # 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. '&' and '=' will be percent encoded and not treated as delimiters.
          "A String",
        ],
        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
      },
    },
    "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "outlierDetection": { # Settings controlling eviction of unhealthy hosts from the load balancing pool. # Settings controlling eviction of unhealthy hosts from the load balancing pool. 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.
      "interval": { # 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 "day" or "month". Range is approximately 10,000 years. # Time interval between ejection sweep analysis. This can result in both new ejections as well as hosts being returned to service. Defaults to 10 seconds.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "enforcingConsecutiveErrors": 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 100.
      "successRateRequestVolume": 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.
      "baseEjectionTime": { # 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 "day" or "month". Range is approximately 10,000 years. # The base time that a host is ejected for. The real time is equal to the base time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "enforcingConsecutiveGatewayFailure": 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 0.
      "successRateMinimumHosts": 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.
      "consecutiveErrors": 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.
      "successRateStdevFactor": 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.
      "maxEjectionPercent": 42, # Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 10%.
      "consecutiveGatewayFailure": 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 5.
      "enforcingSuccessRate": 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.
    },
    "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. 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 for TTL is one day.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "consistentHash": { # 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.
      "httpCookie": { # 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.
        "path": "A String", # Path to set for the cookie.
        "name": "A String", # Name of the cookie.
        "ttl": { # 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 "day" or "month". Range is approximately 10,000 years. # Lifetime of the cookie.
          "nanos": 42, # Span of time that'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.
          "seconds": "A String", # 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
        },
      },
      "minimumRingSize": "A String", # 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.
      "httpHeaderName": "A String", # The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.
    },
    "circuitBreakers": { # Settings controlling the volume of connections to a backend service. # Settings controlling the volume of connections to a 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.
      "connectTimeout": { # 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 "day" or "month". Range is approximately 10,000 years. # The timeout for new network connections to hosts.
        "nanos": 42, # Span of time that'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.
        "seconds": "A String", # 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
      },
      "maxPendingRequests": 42, # The maximum number of pending requests allowed to the backend cluster. If not specified, the default is 1024.
      "maxRequests": 42, # The maximum number of parallel requests that allowed to the backend cluster. If not specified, the default is 1024.
      "maxConnections": 42, # The maximum number of connections to the backend cluster. If not specified, the default is 1024.
      "maxRetries": 42, # The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 3.
      "maxRequestsPerConnection": 42, # Maximum requests for a single backend connection. 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.
    },
    "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
        # 
        # This cannot be used for internal load balancing.
    "backends": [ # The list of backends that serve this BackendService.
      { # Message containing information of one individual backend.
        "group": "A String", # The fully-qualified URL of an Instance Group or Network Endpoint Group resource. In case of instance group this defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
            #
            # For Network Endpoint Groups this defines list of endpoints. All endpoints of Network Endpoint Group must be hosted on instances located in the same zone as the Network Endpoint Group.
            #
            # Backend service can not contain mix of Instance Group and Network Endpoint Group backends.
            #
            # Note that you must specify an Instance Group or Network Endpoint Group resource using the fully-qualified URL, rather than a partial URL.
            #
            # When the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService. Network Endpoint Groups are not supported for INTERNAL load balancing scheme.
        "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
        "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
            #
            # This cannot be used for internal load balancing.
        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
        "maxConnectionsPerEndpoint": 42, # The max number of simultaneous connections that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set.
            #
            # This cannot be used for internal load balancing.
        "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxRatePerEndpoint": 3.14, # The max requests per second (RPS) that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint must be set.
            #
            # This cannot be used for internal load balancing.
        "capacityScaler": 3.14, # A multiplier applied to the group'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,1.0].
            #
            # This cannot be used for internal load balancing.
        "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
            #
            # This cannot be used for internal load balancing.
        "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
            #
            # For Internal Load Balancing, the default and only supported mode is CONNECTION.
      },
    ],
    "iap": { # Identity-Aware Proxy
      "oauth2ClientId": "A String",
      "oauth2ClientInfo": { # [Input Only] OAuth client info required to generate client id to be used for IAP.
        "applicationName": "A String", # Application name to be used in OAuth consent screen.
        "clientName": "A String", # Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend.
        "developerEmailAddress": "A String", # Developer's information to be used in OAuth consent screen.
      },
      "enabled": True or False,
      "oauth2ClientSecret": "A String",
      "oauth2ClientSecretSha256": "A String", # [Output Only] SHA256 hash value for the field oauth2_client_secret above.
    },
    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
      "A String",
    ],
    "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
    "securityPolicy": "A String", # [Output Only] The resource URL for the security policy associated with this backend service.
    "fingerprint": "A String", # 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.
    "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
        # 
        # When the load balancing scheme is INTERNAL, this field is not used.
    "logConfig": { # 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.
      "sampleRate": 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.
      "enable": True or False, # This field denotes whether to enable logging for the load balancer traffic served by this backend service.
    },
    "network": "A String", # 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.
    "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
    "name": "A String", # 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.
    "region": "A String", # [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.
    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
    "failoverPolicy": {
      "dropTrafficIfUnhealthy": True or False, # This option is used only when no healthy VMs are detected in the primary and backup instance groups. When set to true, traffic is dropped. When set to false, new connections are sent across all VMs in the primary group.
          #
          # The default is false.
      "failoverRatio": 3.14, # The value of the field must be in [0, 1]. If the ratio of the healthy VMs in the primary backend is at or below this number, traffic arriving at the load-balanced IP will be directed to the failover backend.
          #
          # In case where 'failoverRatio' is not set or all the VMs in the backup backend are unhealthy, the traffic will be directed back to the primary backend in the "force" mode, where traffic will be spread to the healthy VMs with the best effort, or to all VMs when no VM is healthy.
          #
          # This field is only used with l4 load balancing.
      "disableConnectionDrainOnFailover": True or False, # On failover or failback, this field indicates whether connection drain will be honored. Setting this to true has the following effect: connections to the old active pool are not drained. Connections to the new active pool use the timeout of 10 min (currently fixed). Setting to false has the following effect: both old and new connections will have a drain timeout of 10 min.
          #
          # This can be set to true only if the protocol is TCP.
          #
          # The default is false.
    },
    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
  }

  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.
      #
      # 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 v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)
    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
    "clientOperationId": "A String", # [Output Only] The value of `requestId` if you provided it in the request. Not present otherwise.
    "creationTimestamp": "A String", # [Deprecated] This field is deprecated.
    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only applicable when performing per-zone operations.
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
    "progress": 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.
    "httpErrorStatusCode": 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.
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        "message": "A String", # [Output Only] A human-readable description of the warning code.
        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
          {
            "value": "A String", # [Output Only] A warning data value corresponding to the key.
            "key": "A String", # [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).
          },
        ],
      },
    ],
    "selfLinkWithId": "A String", # [Output Only] Server-defined URL for this resource with the resource id.
    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
    "targetLink": "A String", # [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.
  }</pre>
</div>

</body></html>