<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.databaseOperations.html">databaseOperations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, filter=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists database longrunning-operations.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, filter=None, x__xgafv=None)</code>
  <pre>Lists database longrunning-operations.
A database operation has a name of the form
`projects/&lt;project&gt;/instances/&lt;instance&gt;/databases/&lt;database&gt;/operations/&lt;operation&gt;`.
The long-running operation
metadata field type
`metadata.type_url` describes the type of the metadata. Operations returned
include those that have completed/failed/canceled within the last 7 days,
and pending operations.

Args:
  parent: string, Required. The instance of the database operations.
Values are of the form `projects/&lt;project&gt;/instances/&lt;instance&gt;`. (required)
  pageSize: integer, Number of operations to be returned in the response. If 0 or
less, defaults to the server&#x27;s maximum allowed page size.
  pageToken: string, If non-empty, `page_token` should contain a
next_page_token
from a previous ListDatabaseOperationsResponse to the
same `parent` and with the same `filter`.
  filter: string, An expression that filters the list of returned operations.

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 Operation
are eligible for filtering:

  * `name` - The name of the long-running operation
  * `done` - False if the operation is in progress, else true.
  * `metadata.@type` - the type of metadata. For example, the type string
     for RestoreDatabaseMetadata is
     `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`.
  * `metadata.&lt;field_name&gt;` - any field in metadata.value.
  * `error` - Error associated with the long-running operation.
  * `response.@type` - the type of response.
  * `response.&lt;field_name&gt;` - any field in response.value.

You can combine multiple expressions by enclosing each expression in
parentheses. By default, expressions are combined with AND logic. However,
you can specify AND, OR, and NOT logic explicitly.

Here are a few examples:

  * `done:true` - The operation is complete.
  * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` &lt;br/&gt;
    `(metadata.source_type:BACKUP) AND` &lt;br/&gt;
    `(metadata.backup_info.backup:backup_howl) AND` &lt;br/&gt;
    `(metadata.name:restored_howl) AND` &lt;br/&gt;
    `(metadata.progress.start_time &lt; \&quot;2018-03-28T14:50:00Z\&quot;) AND` &lt;br/&gt;
    `(error:*)` - Return operations where:
    * The operation&#x27;s metadata type is RestoreDatabaseMetadata.
    * The database is restored from a backup.
    * The backup name contains &quot;backup_howl&quot;.
    * The restored database&#x27;s name contains &quot;restored_howl&quot;.
    * The operation started before 2018-03-28T14:50:00Z.
    * The operation resulted in an error.
  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
      # ListDatabaseOperations.
    &quot;operations&quot;: [ # The list of matching database long-running
        # operations. Each operation&#x27;s name will be
        # prefixed by the database&#x27;s name. The operation&#x27;s
        # metadata field type
        # `metadata.type_url` describes the type of the metadata.
      { # This resource represents a long-running operation that is the result of a
          # network API call.
        &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;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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        },
        &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.
        },
        &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;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;nextPageToken&quot;: &quot;A String&quot;, # `next_page_token` can be sent in a subsequent
        # ListDatabaseOperations
        # call to fetch more of the matching metadata.
  }</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>

</body></html>