docs: docs update (#911)

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/google-api-python-client/issues/new/choose) before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕
diff --git a/docs/dyn/spanner_v1.projects.instances.backups.html b/docs/dyn/spanner_v1.projects.instances.backups.html
new file mode 100644
index 0000000..af4f04a
--- /dev/null
+++ b/docs/dyn/spanner_v1.projects.instances.backups.html
@@ -0,0 +1,1255 @@
+<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="spanner_v1.html">Cloud Spanner API</a> . <a href="spanner_v1.projects.html">projects</a> . <a href="spanner_v1.projects.instances.html">instances</a> . <a href="spanner_v1.projects.instances.backups.html">backups</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="spanner_v1.projects.instances.backups.operations.html">operations()</a></code>
+</p>
+<p class="firstline">Returns the operations Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#create">create(parent, body=None, backupId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Starts creating a new Cloud Spanner Backup.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes a pending or completed Backup.</p>
+<p class="toc_element">
+  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets metadata on a pending or completed Backup.</p>
+<p class="toc_element">
+  <code><a href="#getIamPolicy">getIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for a database or backup resource.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent, pageToken=None, pageSize=None, filter=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists completed and pending backups.</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(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates a pending or completed Backup.</p>
+<p class="toc_element">
+  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on a database or backup resource.</p>
+<p class="toc_element">
+  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns permissions that the caller has on the specified database or backup</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="create">create(parent, body=None, backupId=None, x__xgafv=None)</code>
+  <pre>Starts creating a new Cloud Spanner Backup.
+The returned backup long-running operation
+will have a name of the format
+`projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/&lt;backup&gt;/operations/&lt;operation_id&gt;`
+and can be used to track creation of the backup. The
+metadata field type is
+CreateBackupMetadata. The
+response field type is
+Backup, if successful. Cancelling the returned operation will stop the
+creation and delete the backup.
+There can be only one pending backup creation per database. Backup creation
+of different databases can run concurrently.
+
+Args:
+  parent: string, Required. The name of the instance in which the backup will be
+created. This must be the same instance that contains the database the
+backup will be created from. The backup will be stored in the
+location(s) specified in the instance configuration of this
+instance. Values are of the form
+`projects/&lt;project&gt;/instances/&lt;instance&gt;`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A backup of a Cloud Spanner database.
+  &quot;sizeBytes&quot;: &quot;A String&quot;, # Output only. Size of the backup in bytes.
+  &quot;referencingDatabases&quot;: [ # Output only. The names of the restored databases that reference the backup.
+      # The database names are of
+      # the form `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+      # Referencing databases may exist in different instances. The existence of
+      # any referencing database prevents the backup from being deleted. When a
+      # restored database from the backup enters the `READY` state, the reference
+      # to the backup is removed.
+    &quot;A String&quot;,
+  ],
+  &quot;database&quot;: &quot;A String&quot;, # Required for the CreateBackup operation.
+      # Name of the database from which this backup was
+      # created. This needs to be in the same instance as the backup.
+      # Values are of the form
+      # `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The backup will contain an externally consistent
+      # copy of the database at the timestamp specified by
+      # `create_time`. `create_time` is approximately the time the
+      # CreateBackup request is received.
+  &quot;expireTime&quot;: &quot;A String&quot;, # Required for the CreateBackup
+      # operation. The expiration time of the backup, with microseconds
+      # granularity that must be at least 6 hours and at most 366 days
+      # from the time the CreateBackup request is processed. Once the `expire_time`
+      # has passed, the backup is eligible to be automatically deleted by Cloud
+      # Spanner to free the resources used by the backup.
+  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the backup.
+  &quot;name&quot;: &quot;A String&quot;, # Output only for the CreateBackup operation.
+      # Required for the UpdateBackup operation.
+      # 
+      # A globally unique identifier for the backup which cannot be
+      # changed. Values are of the form
+      # `projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/a-z*[a-z0-9]`
+      # The final segment of the name must be between 2 and 60 characters
+      # in length.
+      # 
+      # The backup is stored in the location(s) specified in the instance
+      # configuration of the instance containing the backup, identified
+      # by the prefix of the backup name of the form
+      # `projects/&lt;project&gt;/instances/&lt;instance&gt;`.
+}
+
+  backupId: string, Required. The id of the backup to be created. The `backup_id` appended to
+`parent` forms the full backup name of the form
+`projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/&lt;backup_id&gt;`.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a
+      # network API call.
+    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress.
+        # If `true`, the operation is completed, and either `error` or `response` is
+        # available.
+    &quot;response&quot;: { # The normal response of the operation in case of success.  If the original
+        # method returns no data on success, such as `Delete`, the response is
+        # `google.protobuf.Empty`.  If the original method is standard
+        # `Get`/`Create`/`Update`, the response should be the resource.  For other
+        # methods, the response should have the type `XxxResponse`, where `Xxx`
+        # is the original method name.  For example, if the original method name
+        # is `TakeSnapshot()`, the inferred response type is
+        # `TakeSnapshotResponse`.
+      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+    },
+    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that
+        # originally returns it. If you use the default HTTP mapping, the
+        # `name` should be a resource name ending with `operations/{unique_id}`.
+    &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
+        # different programming environments, including REST APIs and RPC APIs. It is
+        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
+        # three pieces of data: error code, error message, and error details.
+        #
+        # You can find out more about this error model and how to work with it in the
+        # [API Design Guide](https://cloud.google.com/apis/design/errors).
+      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any
+          # user-facing error message should be localized and sent in the
+          # google.rpc.Status.details field, or localized by the client.
+      &quot;details&quot;: [ # A list of messages that carry the error details.  There is a common set of
+          # message types for APIs to use.
+        {
+          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+        },
+      ],
+    },
+    &quot;metadata&quot;: { # Service-specific metadata associated with the operation.  It typically
+        # contains progress information and common metadata such as create time.
+        # Some services might not provide such metadata.  Any method that returns a
+        # long-running operation should document the metadata type, if any.
+      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+    },
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
+  <pre>Deletes a pending or completed Backup.
+
+Args:
+  name: string, Required. Name of the backup to delete.
+Values are of the form
+`projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/&lt;backup&gt;`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A generic empty message that you can re-use to avoid defining duplicated
+      # empty messages in your APIs. A typical example is to use it as the request
+      # or the response type of an API method. For instance:
+      #
+      #     service Foo {
+      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+      #     }
+      #
+      # The JSON representation for `Empty` is empty JSON object `{}`.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(name, x__xgafv=None)</code>
+  <pre>Gets metadata on a pending or completed Backup.
+
+Args:
+  name: string, Required. Name of the backup.
+Values are of the form
+`projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/&lt;backup&gt;`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A backup of a Cloud Spanner database.
+    &quot;sizeBytes&quot;: &quot;A String&quot;, # Output only. Size of the backup in bytes.
+    &quot;referencingDatabases&quot;: [ # Output only. The names of the restored databases that reference the backup.
+        # The database names are of
+        # the form `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+        # Referencing databases may exist in different instances. The existence of
+        # any referencing database prevents the backup from being deleted. When a
+        # restored database from the backup enters the `READY` state, the reference
+        # to the backup is removed.
+      &quot;A String&quot;,
+    ],
+    &quot;database&quot;: &quot;A String&quot;, # Required for the CreateBackup operation.
+        # Name of the database from which this backup was
+        # created. This needs to be in the same instance as the backup.
+        # Values are of the form
+        # `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The backup will contain an externally consistent
+        # copy of the database at the timestamp specified by
+        # `create_time`. `create_time` is approximately the time the
+        # CreateBackup request is received.
+    &quot;expireTime&quot;: &quot;A String&quot;, # Required for the CreateBackup
+        # operation. The expiration time of the backup, with microseconds
+        # granularity that must be at least 6 hours and at most 366 days
+        # from the time the CreateBackup request is processed. Once the `expire_time`
+        # has passed, the backup is eligible to be automatically deleted by Cloud
+        # Spanner to free the resources used by the backup.
+    &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the backup.
+    &quot;name&quot;: &quot;A String&quot;, # Output only for the CreateBackup operation.
+        # Required for the UpdateBackup operation.
+        #
+        # A globally unique identifier for the backup which cannot be
+        # changed. Values are of the form
+        # `projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/a-z*[a-z0-9]`
+        # The final segment of the name must be between 2 and 60 characters
+        # in length.
+        #
+        # The backup is stored in the location(s) specified in the instance
+        # configuration of the instance containing the backup, identified
+        # by the prefix of the backup name of the form
+        # `projects/&lt;project&gt;/instances/&lt;instance&gt;`.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getIamPolicy">getIamPolicy(resource, body=None, x__xgafv=None)</code>
+  <pre>Gets the access control policy for a database or backup resource.
+Returns an empty policy if a database or backup exists but does not have a
+policy set.
+
+Authorization requires `spanner.databases.getIamPolicy` permission on
+resource.
+For backups, authorization requires `spanner.backups.getIamPolicy`
+permission on resource.
+
+Args:
+  resource: string, REQUIRED: The Cloud Spanner resource for which the policy is being retrieved. The format is `projects/&lt;project ID&gt;/instances/&lt;instance ID&gt;` for instance resources and `projects/&lt;project ID&gt;/instances/&lt;instance ID&gt;/databases/&lt;database ID&gt;` for database resources. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for `GetIamPolicy` method.
+    &quot;options&quot;: { # Encapsulates settings provided to GetIamPolicy. # OPTIONAL: A `GetPolicyOptions` object for specifying options to
+        # `GetIamPolicy`.
+      &quot;requestedPolicyVersion&quot;: 42, # Optional. The policy format version to be returned.
+          #
+          # Valid values are 0, 1, and 3. Requests specifying an invalid value will be
+          # rejected.
+          #
+          # Requests for policies with any conditional bindings must specify version 3.
+          # Policies without any conditional bindings may specify any valid value or
+          # leave the field unset.
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Identity and Access Management (IAM) policy, which specifies access
+      # controls for Google Cloud resources.
+      #
+      #
+      # A `Policy` is a collection of `bindings`. A `binding` binds one or more
+      # `members` to a single `role`. Members can be user accounts, service accounts,
+      # Google groups, and domains (such as G Suite). A `role` is a named list of
+      # permissions; each `role` can be an IAM predefined role or a user-created
+      # custom role.
+      #
+      # Optionally, a `binding` can specify a `condition`, which is a logical
+      # expression that allows access to a resource only if the expression evaluates
+      # to `true`. A condition can add constraints based on attributes of the
+      # request, the resource, or both.
+      #
+      # **JSON example:**
+      #
+      #     {
+      #       &quot;bindings&quot;: [
+      #         {
+      #           &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;,
+      #           &quot;members&quot;: [
+      #             &quot;user:mike@example.com&quot;,
+      #             &quot;group:admins@example.com&quot;,
+      #             &quot;domain:google.com&quot;,
+      #             &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot;
+      #           ]
+      #         },
+      #         {
+      #           &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;,
+      #           &quot;members&quot;: [&quot;user:eve@example.com&quot;],
+      #           &quot;condition&quot;: {
+      #             &quot;title&quot;: &quot;expirable access&quot;,
+      #             &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;,
+      #             &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;,
+      #           }
+      #         }
+      #       ],
+      #       &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;,
+      #       &quot;version&quot;: 3
+      #     }
+      #
+      # **YAML example:**
+      #
+      #     bindings:
+      #     - members:
+      #       - user:mike@example.com
+      #       - group:admins@example.com
+      #       - domain:google.com
+      #       - serviceAccount:my-project-id@appspot.gserviceaccount.com
+      #       role: roles/resourcemanager.organizationAdmin
+      #     - members:
+      #       - user:eve@example.com
+      #       role: roles/resourcemanager.organizationViewer
+      #       condition:
+      #         title: expirable access
+      #         description: Does not grant access after Sep 2020
+      #         expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)
+      #     - etag: BwWWja0YfJA=
+      #     - version: 3
+      #
+      # For a description of IAM and its features, see the
+      # [IAM documentation](https://cloud.google.com/iam/docs/).
+    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # **Important:** If you use IAM Conditions, you must include the `etag` field
+        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+        # you to overwrite a version `3` policy with a version `1` policy, and all of
+        # the conditions in the version `3` policy are lost.
+    &quot;version&quot;: 42, # Specifies the format of the policy.
+        #
+        # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
+        # are rejected.
+        #
+        # Any operation that affects conditional role bindings must specify version
+        # `3`. This requirement applies to the following operations:
+        #
+        # * Getting a policy that includes a conditional role binding
+        # * Adding a conditional role binding to a policy
+        # * Changing a conditional role binding in a policy
+        # * Removing any role binding, with or without a condition, from a policy
+        #   that includes conditions
+        #
+        # **Important:** If you use IAM Conditions, you must include the `etag` field
+        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+        # you to overwrite a version `3` policy with a version `1` policy, and all of
+        # the conditions in the version `3` policy are lost.
+        #
+        # If a policy does not include any conditions, operations on that policy may
+        # specify any valid version or leave the field unset.
+    &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a
+        # `condition` that determines how and when the `bindings` are applied. Each
+        # of the `bindings` must contain at least one member.
+      { # Associates `members` with a `role`.
+        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
+            # NOTE: An unsatisfied condition will not allow user access via current
+            # binding. Different bindings, including their conditions, are examined
+            # independently.
+            # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+            # are documented at https://github.com/google/cel-spec.
+            #
+            # Example (Comparison):
+            #
+            #     title: &quot;Summary size limit&quot;
+            #     description: &quot;Determines if a summary is less than 100 chars&quot;
+            #     expression: &quot;document.summary.size() &lt; 100&quot;
+            #
+            # Example (Equality):
+            #
+            #     title: &quot;Requestor is owner&quot;
+            #     description: &quot;Determines if requestor is the document owner&quot;
+            #     expression: &quot;document.owner == request.auth.claims.email&quot;
+            #
+            # Example (Logic):
+            #
+            #     title: &quot;Public documents&quot;
+            #     description: &quot;Determine whether the document should be publicly visible&quot;
+            #     expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot;
+            #
+            # Example (Data Manipulation):
+            #
+            #     title: &quot;Notification string&quot;
+            #     description: &quot;Create a notification string with a timestamp.&quot;
+            #     expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot;
+            #
+            # The exact variables and functions that may be referenced within an expression
+            # are determined by the service that evaluates it. See the service
+            # documentation for additional information.
+          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
+              # reporting, e.g. a file name and a position in the file.
+          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
+              # its purpose. This can be used e.g. in UIs which allow to enter the
+              # expression.
+          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
+              # describes the expression, e.g. when hovered over it in a UI.
+          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
+              # syntax.
+        },
+        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@example.com` .
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique
+            #    identifier) representing a user that has been recently deleted. For
+            #    example, `alice@example.com?uid=123456789012345678901`. If the user is
+            #    recovered, this value reverts to `user:{emailid}` and the recovered user
+            #    retains the role in the binding.
+            #
+            # * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus
+            #    unique identifier) representing a service account that has been recently
+            #    deleted. For example,
+            #    `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
+            #    If the service account is undeleted, this value reverts to
+            #    `serviceAccount:{emailid}` and the undeleted service account retains the
+            #    role in the binding.
+            #
+            # * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique
+            #    identifier) representing a Google group that has been recently
+            #    deleted. For example, `admins@example.com?uid=123456789012345678901`. If
+            #    the group is recovered, this value reverts to `group:{emailid}` and the
+            #    recovered group retains the role in the binding.
+            #
+            #
+            # * `domain:{domain}`: The G Suite domain (primary) that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
+          &quot;A String&quot;,
+        ],
+        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(parent, pageToken=None, pageSize=None, filter=None, x__xgafv=None)</code>
+  <pre>Lists completed and pending backups.
+Backups returned are ordered by `create_time` in descending order,
+starting from the most recent `create_time`.
+
+Args:
+  parent: string, Required. The instance to list backups from.  Values are of the
+form `projects/&lt;project&gt;/instances/&lt;instance&gt;`. (required)
+  pageToken: string, If non-empty, `page_token` should contain a
+next_page_token from a
+previous ListBackupsResponse to the same `parent` and with the same
+`filter`.
+  pageSize: integer, Number of backups to be returned in the response. If 0 or
+less, defaults to the server&#x27;s maximum allowed page size.
+  filter: string, An expression that filters the list of returned backups.
+
+A filter expression consists of a field name, a comparison operator, and a
+value for filtering.
+The value must be a string, a number, or a boolean. The comparison operator
+must be one of: `&lt;`, `&gt;`, `&lt;=`, `&gt;=`, `!=`, `=`, or `:`.
+Colon `:` is the contains operator. Filter rules are not case sensitive.
+
+The following fields in the Backup are eligible for filtering:
+
+  * `name`
+  * `database`
+  * `state`
+  * `create_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
+  * `expire_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
+  * `size_bytes`
+
+You can combine multiple expressions by enclosing each expression in
+parentheses. By default, expressions are combined with AND logic, but
+you can specify AND, OR, and NOT logic explicitly.
+
+Here are a few examples:
+
+  * `name:Howl` - The backup&#x27;s name contains the string &quot;howl&quot;.
+  * `database:prod`
+         - The database&#x27;s name contains the string &quot;prod&quot;.
+  * `state:CREATING` - The backup is pending creation.
+  * `state:READY` - The backup is fully created and ready for use.
+  * `(name:howl) AND (create_time &lt; \&quot;2018-03-28T14:50:00Z\&quot;)`
+         - The backup name contains the string &quot;howl&quot; and `create_time`
+             of the backup is before 2018-03-28T14:50:00Z.
+  * `expire_time &lt; \&quot;2018-03-28T14:50:00Z\&quot;`
+         - The backup `expire_time` is before 2018-03-28T14:50:00Z.
+  * `size_bytes &gt; 10000000000` - The backup&#x27;s size is greater than 10GB
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # The response for ListBackups.
+    &quot;backups&quot;: [ # The list of matching backups. Backups returned are ordered by `create_time`
+        # in descending order, starting from the most recent `create_time`.
+      { # A backup of a Cloud Spanner database.
+        &quot;sizeBytes&quot;: &quot;A String&quot;, # Output only. Size of the backup in bytes.
+        &quot;referencingDatabases&quot;: [ # Output only. The names of the restored databases that reference the backup.
+            # The database names are of
+            # the form `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+            # Referencing databases may exist in different instances. The existence of
+            # any referencing database prevents the backup from being deleted. When a
+            # restored database from the backup enters the `READY` state, the reference
+            # to the backup is removed.
+          &quot;A String&quot;,
+        ],
+        &quot;database&quot;: &quot;A String&quot;, # Required for the CreateBackup operation.
+            # Name of the database from which this backup was
+            # created. This needs to be in the same instance as the backup.
+            # Values are of the form
+            # `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The backup will contain an externally consistent
+            # copy of the database at the timestamp specified by
+            # `create_time`. `create_time` is approximately the time the
+            # CreateBackup request is received.
+        &quot;expireTime&quot;: &quot;A String&quot;, # Required for the CreateBackup
+            # operation. The expiration time of the backup, with microseconds
+            # granularity that must be at least 6 hours and at most 366 days
+            # from the time the CreateBackup request is processed. Once the `expire_time`
+            # has passed, the backup is eligible to be automatically deleted by Cloud
+            # Spanner to free the resources used by the backup.
+        &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the backup.
+        &quot;name&quot;: &quot;A String&quot;, # Output only for the CreateBackup operation.
+            # Required for the UpdateBackup operation.
+            #
+            # A globally unique identifier for the backup which cannot be
+            # changed. Values are of the form
+            # `projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/a-z*[a-z0-9]`
+            # The final segment of the name must be between 2 and 60 characters
+            # in length.
+            #
+            # The backup is stored in the location(s) specified in the instance
+            # configuration of the instance containing the backup, identified
+            # by the prefix of the backup name of the form
+            # `projects/&lt;project&gt;/instances/&lt;instance&gt;`.
+      },
+    ],
+    &quot;nextPageToken&quot;: &quot;A String&quot;, # `next_page_token` can be sent in a subsequent
+        # ListBackups call to fetch more
+        # of the matching backups.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
+  <pre>Updates a pending or completed Backup.
+
+Args:
+  name: string, Output only for the CreateBackup operation.
+Required for the UpdateBackup operation.
+
+A globally unique identifier for the backup which cannot be
+changed. Values are of the form
+`projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/a-z*[a-z0-9]`
+The final segment of the name must be between 2 and 60 characters
+in length.
+
+The backup is stored in the location(s) specified in the instance
+configuration of the instance containing the backup, identified
+by the prefix of the backup name of the form
+`projects/&lt;project&gt;/instances/&lt;instance&gt;`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A backup of a Cloud Spanner database.
+  &quot;sizeBytes&quot;: &quot;A String&quot;, # Output only. Size of the backup in bytes.
+  &quot;referencingDatabases&quot;: [ # Output only. The names of the restored databases that reference the backup.
+      # The database names are of
+      # the form `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+      # Referencing databases may exist in different instances. The existence of
+      # any referencing database prevents the backup from being deleted. When a
+      # restored database from the backup enters the `READY` state, the reference
+      # to the backup is removed.
+    &quot;A String&quot;,
+  ],
+  &quot;database&quot;: &quot;A String&quot;, # Required for the CreateBackup operation.
+      # Name of the database from which this backup was
+      # created. This needs to be in the same instance as the backup.
+      # Values are of the form
+      # `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The backup will contain an externally consistent
+      # copy of the database at the timestamp specified by
+      # `create_time`. `create_time` is approximately the time the
+      # CreateBackup request is received.
+  &quot;expireTime&quot;: &quot;A String&quot;, # Required for the CreateBackup
+      # operation. The expiration time of the backup, with microseconds
+      # granularity that must be at least 6 hours and at most 366 days
+      # from the time the CreateBackup request is processed. Once the `expire_time`
+      # has passed, the backup is eligible to be automatically deleted by Cloud
+      # Spanner to free the resources used by the backup.
+  &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the backup.
+  &quot;name&quot;: &quot;A String&quot;, # Output only for the CreateBackup operation.
+      # Required for the UpdateBackup operation.
+      # 
+      # A globally unique identifier for the backup which cannot be
+      # changed. Values are of the form
+      # `projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/a-z*[a-z0-9]`
+      # The final segment of the name must be between 2 and 60 characters
+      # in length.
+      # 
+      # The backup is stored in the location(s) specified in the instance
+      # configuration of the instance containing the backup, identified
+      # by the prefix of the backup name of the form
+      # `projects/&lt;project&gt;/instances/&lt;instance&gt;`.
+}
+
+  updateMask: string, Required. A mask specifying which fields (e.g. `expire_time`) in the
+Backup resource should be updated. This mask is relative to the Backup
+resource, not to the request message. The field mask must always be
+specified; this prevents any future fields from being erased accidentally
+by clients that do not know about them.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A backup of a Cloud Spanner database.
+    &quot;sizeBytes&quot;: &quot;A String&quot;, # Output only. Size of the backup in bytes.
+    &quot;referencingDatabases&quot;: [ # Output only. The names of the restored databases that reference the backup.
+        # The database names are of
+        # the form `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+        # Referencing databases may exist in different instances. The existence of
+        # any referencing database prevents the backup from being deleted. When a
+        # restored database from the backup enters the `READY` state, the reference
+        # to the backup is removed.
+      &quot;A String&quot;,
+    ],
+    &quot;database&quot;: &quot;A String&quot;, # Required for the CreateBackup operation.
+        # Name of the database from which this backup was
+        # created. This needs to be in the same instance as the backup.
+        # Values are of the form
+        # `projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;`.
+    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The backup will contain an externally consistent
+        # copy of the database at the timestamp specified by
+        # `create_time`. `create_time` is approximately the time the
+        # CreateBackup request is received.
+    &quot;expireTime&quot;: &quot;A String&quot;, # Required for the CreateBackup
+        # operation. The expiration time of the backup, with microseconds
+        # granularity that must be at least 6 hours and at most 366 days
+        # from the time the CreateBackup request is processed. Once the `expire_time`
+        # has passed, the backup is eligible to be automatically deleted by Cloud
+        # Spanner to free the resources used by the backup.
+    &quot;state&quot;: &quot;A String&quot;, # Output only. The current state of the backup.
+    &quot;name&quot;: &quot;A String&quot;, # Output only for the CreateBackup operation.
+        # Required for the UpdateBackup operation.
+        #
+        # A globally unique identifier for the backup which cannot be
+        # changed. Values are of the form
+        # `projects/&lt;project&gt;/instances/&lt;instance&gt;/backups/a-z*[a-z0-9]`
+        # The final segment of the name must be between 2 and 60 characters
+        # in length.
+        #
+        # The backup is stored in the location(s) specified in the instance
+        # configuration of the instance containing the backup, identified
+        # by the prefix of the backup name of the form
+        # `projects/&lt;project&gt;/instances/&lt;instance&gt;`.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</code>
+  <pre>Sets the access control policy on a database or backup resource.
+Replaces any existing policy.
+
+Authorization requires `spanner.databases.setIamPolicy`
+permission on resource.
+For backups, authorization requires `spanner.backups.setIamPolicy`
+permission on resource.
+
+Args:
+  resource: string, REQUIRED: The Cloud Spanner resource for which the policy is being set. The format is `projects/&lt;project ID&gt;/instances/&lt;instance ID&gt;` for instance resources and `projects/&lt;project ID&gt;/instances/&lt;instance ID&gt;/databases/&lt;database ID&gt;` for databases resources. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for `SetIamPolicy` method.
+    &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # controls for Google Cloud resources.
+        #
+        #
+        # A `Policy` is a collection of `bindings`. A `binding` binds one or more
+        # `members` to a single `role`. Members can be user accounts, service accounts,
+        # Google groups, and domains (such as G Suite). A `role` is a named list of
+        # permissions; each `role` can be an IAM predefined role or a user-created
+        # custom role.
+        #
+        # Optionally, a `binding` can specify a `condition`, which is a logical
+        # expression that allows access to a resource only if the expression evaluates
+        # to `true`. A condition can add constraints based on attributes of the
+        # request, the resource, or both.
+        #
+        # **JSON example:**
+        #
+        #     {
+        #       &quot;bindings&quot;: [
+        #         {
+        #           &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;,
+        #           &quot;members&quot;: [
+        #             &quot;user:mike@example.com&quot;,
+        #             &quot;group:admins@example.com&quot;,
+        #             &quot;domain:google.com&quot;,
+        #             &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot;
+        #           ]
+        #         },
+        #         {
+        #           &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;,
+        #           &quot;members&quot;: [&quot;user:eve@example.com&quot;],
+        #           &quot;condition&quot;: {
+        #             &quot;title&quot;: &quot;expirable access&quot;,
+        #             &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;,
+        #             &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;,
+        #           }
+        #         }
+        #       ],
+        #       &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;,
+        #       &quot;version&quot;: 3
+        #     }
+        #
+        # **YAML example:**
+        #
+        #     bindings:
+        #     - members:
+        #       - user:mike@example.com
+        #       - group:admins@example.com
+        #       - domain:google.com
+        #       - serviceAccount:my-project-id@appspot.gserviceaccount.com
+        #       role: roles/resourcemanager.organizationAdmin
+        #     - members:
+        #       - user:eve@example.com
+        #       role: roles/resourcemanager.organizationViewer
+        #       condition:
+        #         title: expirable access
+        #         description: Does not grant access after Sep 2020
+        #         expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)
+        #     - etag: BwWWja0YfJA=
+        #     - version: 3
+        #
+        # For a description of IAM and its features, see the
+        # [IAM documentation](https://cloud.google.com/iam/docs/).
+      &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # **Important:** If you use IAM Conditions, you must include the `etag` field
+          # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+          # you to overwrite a version `3` policy with a version `1` policy, and all of
+          # the conditions in the version `3` policy are lost.
+      &quot;version&quot;: 42, # Specifies the format of the policy.
+          #
+          # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
+          # are rejected.
+          #
+          # Any operation that affects conditional role bindings must specify version
+          # `3`. This requirement applies to the following operations:
+          #
+          # * Getting a policy that includes a conditional role binding
+          # * Adding a conditional role binding to a policy
+          # * Changing a conditional role binding in a policy
+          # * Removing any role binding, with or without a condition, from a policy
+          #   that includes conditions
+          #
+          # **Important:** If you use IAM Conditions, you must include the `etag` field
+          # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+          # you to overwrite a version `3` policy with a version `1` policy, and all of
+          # the conditions in the version `3` policy are lost.
+          #
+          # If a policy does not include any conditions, operations on that policy may
+          # specify any valid version or leave the field unset.
+      &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a
+          # `condition` that determines how and when the `bindings` are applied. Each
+          # of the `bindings` must contain at least one member.
+        { # Associates `members` with a `role`.
+          &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
+              # NOTE: An unsatisfied condition will not allow user access via current
+              # binding. Different bindings, including their conditions, are examined
+              # independently.
+              # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+              # are documented at https://github.com/google/cel-spec.
+              #
+              # Example (Comparison):
+              #
+              #     title: &quot;Summary size limit&quot;
+              #     description: &quot;Determines if a summary is less than 100 chars&quot;
+              #     expression: &quot;document.summary.size() &lt; 100&quot;
+              #
+              # Example (Equality):
+              #
+              #     title: &quot;Requestor is owner&quot;
+              #     description: &quot;Determines if requestor is the document owner&quot;
+              #     expression: &quot;document.owner == request.auth.claims.email&quot;
+              #
+              # Example (Logic):
+              #
+              #     title: &quot;Public documents&quot;
+              #     description: &quot;Determine whether the document should be publicly visible&quot;
+              #     expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot;
+              #
+              # Example (Data Manipulation):
+              #
+              #     title: &quot;Notification string&quot;
+              #     description: &quot;Create a notification string with a timestamp.&quot;
+              #     expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot;
+              #
+              # The exact variables and functions that may be referenced within an expression
+              # are determined by the service that evaluates it. See the service
+              # documentation for additional information.
+            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
+                # reporting, e.g. a file name and a position in the file.
+            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
+                # its purpose. This can be used e.g. in UIs which allow to enter the
+                # expression.
+            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
+                # describes the expression, e.g. when hovered over it in a UI.
+            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
+                # syntax.
+          },
+          &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@example.com` .
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique
+              #    identifier) representing a user that has been recently deleted. For
+              #    example, `alice@example.com?uid=123456789012345678901`. If the user is
+              #    recovered, this value reverts to `user:{emailid}` and the recovered user
+              #    retains the role in the binding.
+              #
+              # * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus
+              #    unique identifier) representing a service account that has been recently
+              #    deleted. For example,
+              #    `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
+              #    If the service account is undeleted, this value reverts to
+              #    `serviceAccount:{emailid}` and the undeleted service account retains the
+              #    role in the binding.
+              #
+              # * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique
+              #    identifier) representing a Google group that has been recently
+              #    deleted. For example, `admins@example.com?uid=123456789012345678901`. If
+              #    the group is recovered, this value reverts to `group:{emailid}` and the
+              #    recovered group retains the role in the binding.
+              #
+              #
+              # * `domain:{domain}`: The G Suite domain (primary) that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
+            &quot;A String&quot;,
+          ],
+          &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+        },
+      ],
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Identity and Access Management (IAM) policy, which specifies access
+      # controls for Google Cloud resources.
+      #
+      #
+      # A `Policy` is a collection of `bindings`. A `binding` binds one or more
+      # `members` to a single `role`. Members can be user accounts, service accounts,
+      # Google groups, and domains (such as G Suite). A `role` is a named list of
+      # permissions; each `role` can be an IAM predefined role or a user-created
+      # custom role.
+      #
+      # Optionally, a `binding` can specify a `condition`, which is a logical
+      # expression that allows access to a resource only if the expression evaluates
+      # to `true`. A condition can add constraints based on attributes of the
+      # request, the resource, or both.
+      #
+      # **JSON example:**
+      #
+      #     {
+      #       &quot;bindings&quot;: [
+      #         {
+      #           &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;,
+      #           &quot;members&quot;: [
+      #             &quot;user:mike@example.com&quot;,
+      #             &quot;group:admins@example.com&quot;,
+      #             &quot;domain:google.com&quot;,
+      #             &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot;
+      #           ]
+      #         },
+      #         {
+      #           &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;,
+      #           &quot;members&quot;: [&quot;user:eve@example.com&quot;],
+      #           &quot;condition&quot;: {
+      #             &quot;title&quot;: &quot;expirable access&quot;,
+      #             &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;,
+      #             &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;,
+      #           }
+      #         }
+      #       ],
+      #       &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;,
+      #       &quot;version&quot;: 3
+      #     }
+      #
+      # **YAML example:**
+      #
+      #     bindings:
+      #     - members:
+      #       - user:mike@example.com
+      #       - group:admins@example.com
+      #       - domain:google.com
+      #       - serviceAccount:my-project-id@appspot.gserviceaccount.com
+      #       role: roles/resourcemanager.organizationAdmin
+      #     - members:
+      #       - user:eve@example.com
+      #       role: roles/resourcemanager.organizationViewer
+      #       condition:
+      #         title: expirable access
+      #         description: Does not grant access after Sep 2020
+      #         expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)
+      #     - etag: BwWWja0YfJA=
+      #     - version: 3
+      #
+      # For a description of IAM and its features, see the
+      # [IAM documentation](https://cloud.google.com/iam/docs/).
+    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # **Important:** If you use IAM Conditions, you must include the `etag` field
+        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+        # you to overwrite a version `3` policy with a version `1` policy, and all of
+        # the conditions in the version `3` policy are lost.
+    &quot;version&quot;: 42, # Specifies the format of the policy.
+        #
+        # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
+        # are rejected.
+        #
+        # Any operation that affects conditional role bindings must specify version
+        # `3`. This requirement applies to the following operations:
+        #
+        # * Getting a policy that includes a conditional role binding
+        # * Adding a conditional role binding to a policy
+        # * Changing a conditional role binding in a policy
+        # * Removing any role binding, with or without a condition, from a policy
+        #   that includes conditions
+        #
+        # **Important:** If you use IAM Conditions, you must include the `etag` field
+        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+        # you to overwrite a version `3` policy with a version `1` policy, and all of
+        # the conditions in the version `3` policy are lost.
+        #
+        # If a policy does not include any conditions, operations on that policy may
+        # specify any valid version or leave the field unset.
+    &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a
+        # `condition` that determines how and when the `bindings` are applied. Each
+        # of the `bindings` must contain at least one member.
+      { # Associates `members` with a `role`.
+        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
+            # NOTE: An unsatisfied condition will not allow user access via current
+            # binding. Different bindings, including their conditions, are examined
+            # independently.
+            # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+            # are documented at https://github.com/google/cel-spec.
+            #
+            # Example (Comparison):
+            #
+            #     title: &quot;Summary size limit&quot;
+            #     description: &quot;Determines if a summary is less than 100 chars&quot;
+            #     expression: &quot;document.summary.size() &lt; 100&quot;
+            #
+            # Example (Equality):
+            #
+            #     title: &quot;Requestor is owner&quot;
+            #     description: &quot;Determines if requestor is the document owner&quot;
+            #     expression: &quot;document.owner == request.auth.claims.email&quot;
+            #
+            # Example (Logic):
+            #
+            #     title: &quot;Public documents&quot;
+            #     description: &quot;Determine whether the document should be publicly visible&quot;
+            #     expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot;
+            #
+            # Example (Data Manipulation):
+            #
+            #     title: &quot;Notification string&quot;
+            #     description: &quot;Create a notification string with a timestamp.&quot;
+            #     expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot;
+            #
+            # The exact variables and functions that may be referenced within an expression
+            # are determined by the service that evaluates it. See the service
+            # documentation for additional information.
+          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
+              # reporting, e.g. a file name and a position in the file.
+          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
+              # its purpose. This can be used e.g. in UIs which allow to enter the
+              # expression.
+          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
+              # describes the expression, e.g. when hovered over it in a UI.
+          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
+              # syntax.
+        },
+        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@example.com` .
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique
+            #    identifier) representing a user that has been recently deleted. For
+            #    example, `alice@example.com?uid=123456789012345678901`. If the user is
+            #    recovered, this value reverts to `user:{emailid}` and the recovered user
+            #    retains the role in the binding.
+            #
+            # * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus
+            #    unique identifier) representing a service account that has been recently
+            #    deleted. For example,
+            #    `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
+            #    If the service account is undeleted, this value reverts to
+            #    `serviceAccount:{emailid}` and the undeleted service account retains the
+            #    role in the binding.
+            #
+            # * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique
+            #    identifier) representing a Google group that has been recently
+            #    deleted. For example, `admins@example.com?uid=123456789012345678901`. If
+            #    the group is recovered, this value reverts to `group:{emailid}` and the
+            #    recovered group retains the role in the binding.
+            #
+            #
+            # * `domain:{domain}`: The G Suite domain (primary) that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
+          &quot;A String&quot;,
+        ],
+        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</code>
+  <pre>Returns permissions that the caller has on the specified database or backup
+resource.
+
+Attempting this RPC on a non-existent Cloud Spanner database will
+result in a NOT_FOUND error if the user has
+`spanner.databases.list` permission on the containing Cloud
+Spanner instance. Otherwise returns an empty set of permissions.
+Calling this method on a backup that does not exist will
+result in a NOT_FOUND error if the user has
+`spanner.backups.list` permission on the containing instance.
+
+Args:
+  resource: string, REQUIRED: The Cloud Spanner resource for which permissions are being tested. The format is `projects/&lt;project ID&gt;/instances/&lt;instance ID&gt;` for instance resources and `projects/&lt;project ID&gt;/instances/&lt;instance ID&gt;/databases/&lt;database ID&gt;` for database resources. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for `TestIamPermissions` method.
+    &quot;permissions&quot;: [ # REQUIRED: The set of permissions to check for &#x27;resource&#x27;.
+        # Permissions with wildcards (such as &#x27;*&#x27;, &#x27;spanner.*&#x27;, &#x27;spanner.instances.*&#x27;) are not allowed.
+      &quot;A String&quot;,
+    ],
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for `TestIamPermissions` method.
+    &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
+      &quot;A String&quot;,
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file